May I ask what the context for this question is?
I have always be puzzled by learning methodologies, one where the trainer shows in detail how to use a tool and slowly steps through every single feature, missing nothing, and others where the trainer merely shows you how to get started and read the help-docs and then skips to showing you how to do the insightful cool tricks. I’m a fan of the latter.
It’s pretty common for people to get homework questions onto internet forums, but as usual along with the cynics, you will get a few academic answers simply because it’s better to answer a question, than to question the question. That way the question can still be refined, and we can avoid people using us to help them get through school by sticking with answering in a way that builds learning. Let me drop my tester’s hat, and put my training hat on.
Looking at any system and doing any negative testing alone is merely a “class” of failure cases, which we all know are as infinite as there are environments the system can deploy into. The key is to know which environments and cases are ones the business is interested in, and which ones present risk to the business. For example you will find loads of negative outcomes, where the risk to business is low because the user ultimately has poor connectivity. So deciding what is worth testing and what is not will save a lot of time.
For this reason alone I always focus on positive cases first, to validate that the developers at least wrote an app that delivers shareholder value when everyone is playing nicely. I then use my favorite heuristic for negative tests. Look at the technology stack. Depending on what frameworks were used here the fact that there are 3 interfaces, tells me that system defects will be easy enough to find based on popular flaws in the frameworks that implement the interfaces. Certain technology stacks will always exhibit the same kinds of bugs, that’s just because of the way they are typically deployed. We are not even talking about deployment yet. As for tests covering the components, those are unit tests, and are the job of the coder and are not system level testing concerns. Bigger risks to this business exist in the security sphere, than this simple diagram can show.
- Given this diagram and some of the implied logic, what are the negative test plans you would run?
- Given that all of the systems can gracefully handle all errors in communication between them ̣(eg: if the client requests rewards , but on message is returned it know how to handle the time-out ), what is the most important case you would test? and what is the initial conditions you would set to test it?
thank you for your support
Where did you get this question from? Is it an interview or homework assignment?