12

I understand and practice most normal testing methodologies, however for systems with several distinct interacting processes testing obviously becomes a lot harder. Unit testing is often not possible, or preventively difficult.

I am interested in the tools, techniques, and idea's for automated testing of large distributed systems.


I have found the following video presentation from a google engineer about some of their testing techniques. Do know of any other similar presentations?

5
  • 2
    Just because the system is distributed should not make unit testing impossible. Using a mocking framework you can mock out dependencies (if the code is written well enough) and isolate different parts of the system. May 11, 2011 at 9:16
  • @Peter, exactly. I would say integration testing, especially defect isolating might be harder.
    – dzieciou
    Dec 1, 2012 at 16:18
  • @Brian: The link you mention looks great, but could you list to the community what techniques they mention, so people understand better the context of your question without listening to 50min presentation?
    – dzieciou
    Dec 1, 2012 at 16:26
  • @Brian: The mentioned presentation looks like about testing mainly browser-system interaction despite the fact Google Checkout system has much more interaction place worth testing (Web services, payment services). One of the comment under presentation confirms my impression: "Nothing? much about distributed system testing as the title suggest. The video is all about how selenium and google checkout works at basic functional level....". What kind of system do you want to test?
    – dzieciou
    Dec 1, 2012 at 16:34
  • FYI, link to the presentation is dead, and using Web Archive is insufficient for video retrieval. Dec 18, 2015 at 5:35

1 Answer 1

7

You will find that testing a distributed system is best done by testing each of the components first in isolation through unit tests and then a smaller set of integrated tests to prove that the deployed application works as intended.

You say "Unit testing is often not possible, or preventively difficult." this is worrying, as you really need to think about the testability of the application as it is developed. Particular with a distributed system it is important to architect the application in a way that it encourages unit tests to be written. For example each component should provide an interface that can be mocked when performing unit tests. Your unit tests should then prove that each component functions correctly when not relying on other components within your application.

After you are confident in this then you can preform integration testing to ensure that each component when integrated functions as expected.

1
  • The only main issue I see with this advice is code availability/developer communication. Blackbox automated testers won't often have the leisure to leverage such demands, even if reasonable and recommended. For white/grey, I agree mostly. The OP is unclear about level of access. but I'm glad this answer was suitable enough, as it conveys good testing philosophies. Dec 18, 2015 at 5:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.