How I Found a Way to Maximize Test Coverage by Minimizing Test Documentation
How would you like to learn a technique in ten minutes to become a more creative tester? What if I told you, that by just rethinking the way you document your tests, you can bring yourself one step closer to this goal?
That would be pretty epic, right?
Stick around if you are a passionate tester, you love experimenting and you want to know how I achieved maximum test coverage with minimal documentation.
Four essential testing steps
An important aspect of this paragraph is that software testing is all about ideas that help us evaluate and verify application behavior per requirements. We all have to keep in mind that the actions taken before software test execution, affect the actual quality of the testing. And now you are wondering, what are those actions taken before actual test execution on any kind of application?
Well, we all know that great critical, analytical skills and thinking out of the box are a must for a tester. Assuring the quality of various developments requires testers to become real users for some time and try the most creative scenarios. Right here I have questioned myself, what are those actions and how can a manual tester who runs script-based tests regularly become more creative to perform good testing?
Okay, let me list out some tips I used, that set my mind at ease and free from distractions.
- First, understand and learn all the ins and outs of the software you are testing. Take your time and learn how the application is used by customers, and what business scenarios stand behind their requirements. Understand what is the architecture of the system and how data flows from an end-user through all modules of the system.
- “What if” should become the key question of software application research. Imagine you are finding yourself in the middle of Airpods testing. How will it act if an iPhone it is paired to runs out of battery, or what if I pair it to an android device, etc? Turn every question you had while ad-hoc testing into an idea to expand testing scenarios.
- Read specifications/user stories in detail and look for “should”, “always” and “never” words that indicate conditions and rules. Now, look at what happens at the edges of those rules. What happens just inside a limit, exactly on the limit, outside it?
- Play with roles and personas. What would happen if I put this into the hands of a 5-year-old? What would happen if someone who knows absolutely nothing about the software used it, etc? That means you should try every possible scenario that comes to your mind. The idea is if the system allows you to do something, do it, whether it is specified in the requirements or not.
Any given application can be tested in various ways. If you try it out, each individual will propose a different approach and idea. As a tester, try to analyze and think out of the box to gain confidence and provide information about the level of quality to prevent defects. Trying the above-mentioned points on real household objects, for example, refrigerator, washing machine, TV and generating hundreds of ideas will be a big help. I promise it will help you out when you start working on an actual application/software.
Mind mapping in testing
We can observe that by trying the above-mentioned tips you might find yourself generating a lot of ideas, your mind becomes crowded and you don’t know which idea to start with. You don’t think of remembering all the ideas, right? We are all human beings; we don’t have a perfect memory to remember every single idea and scenario. Writing scripts and scenarios may be a solution here, but let’s face the fact that some projects are not worth or suitable for automation or huge documentation.
Formerly I worked on 3–4 projects simultaneously and did not have sufficient time to write and document all the cases and scenarios for all of them. I had hundreds of flows to test and neither of the projects was even analogous to the other one. So that made my testing ten times harder because immense testing was required with few resources in a short time. I found myself in the middle of hundreds of ideas and flows with no time to document all into cases and scenarios. That was a part of the bitter reality because not all of my perceptions of the perfect testing process matched those of reality․ So the need to integrate a more affordable, fast-documented version made me experiment a bit. However, it should be noted that before starting the test execution, we should have a clear picture of the plan in advance of how we should move forward with testing. With this in mind, I discovered a new approach for me that helped with testing in an effective manner. Right here I came across “Mind Mapping” on the actual test flow.
Mind mapping shows a graphical representation of the testing component to the core and provides a creative way to plan the testing․ So basically what you need to do first of all — is try to understand and learn all the ins and outs of the application part you are testing as I said above. This means that you need to break the Application Under Test (AUT) into smaller functional modules to ensure maximum testing coverage.
To show you what I mean, let’s assume you have divided your website application into modules, and “online payment” is one of the modules you need to check if the user is able to choose and purchase the product with no problems. You can break this into smaller parts for writing test ideas: parts like UI testing, security testing, functional testing of the User information form, etc. And draw the exact flow of how it’s determined to work. Let us consider a visual example of where I am going with functional and security testing.
It’s an online payment flow where the user is directed to the virtual terminal page where the card details should be submitted. The user clicks on the “Pay” button and the payment gateway picks up the online payment transaction information, sends it to the payment processor, then to the relevant card network, the merchant. The merchant forwards data to the issuing bank, if everything checks up at this stage, the online payment transaction is authorized and the issuing bank immediately debits the customer’s card. The issuing bank sends a confirmation of the payment authorization to the merchant. Which then, confirms the validity of the online payment transaction to the payment processor and the payment gateway. The payment gateway delivers the successful purchase info to the customer.
As demonstrated you can see that I included the steps that originate the payment flow. I have added “IFs” that will help me out with the corner cases so that I will not miss anything. In this particular example some steps processed are not even visible to the user, but writing each step helps you get the whole idea of how the architecture works to conduct logical testing. After drawing the positive flow, which is how it’s meant to work per requirements, apply form field types, and size tests (like negative and validation tests on input fields) and write all the ideas that come to your mind for maximum coverage. By way of the illustration, we can consider the second step which is “User clicks on “Pay” button” and start adding ideas, such as: “Verify that the time taken to reach the payment gateway from the application’s page is the same as specified”, “ Test with different payment methods”, etc.
Above figured, adding test ideas to each step to get all the scenarios covered in one sentence will help you understand what you want to check in each step. And you can apply this to the whole flow for each step.
Writing down a central idea and thinking of new and related cases which reflect the main idea gives rise to generating ideas with creative thinking. By focusing on key steps written down and looking for details in them, you can map ideas in a way that will help you to better understand and carry on testing.
Free mind mapping tools allow you to arrange information in a logical manner with sub-topics nested under the main topics which can be expanded and collapsed. Mind Mapping tools you can use:
Tip: The applications also give you to try to add more details to the maps you’ve created, like adding notes, marking them, customizing, and sharing. So it’s a great tool to boost creativity in testing.
In the world of testing, documenting every test case with detailed written steps makes creating documents a lengthy and overall hard process.
On the whole, I will use more than 6–8 steps to describe the one-line step of my mind map. It takes me time to write down test data, and the length of documentation will extend when I add scenarios for the other ideas too. Using mind maps to keep details in a visually grouped way reduces documenting time and speeds up the overall testing process. You basically shave hours off the time dedicated to creating test cases. The process of reading every line on multiple tabs of a spreadsheet or looking through every test case in a testing tool ends up being generally overlooked.
In satisfactory conclusion, our brains are more capable of recalling visuals than written words. A visual image brings quick clarity in ways that words can not. Mind Mapping is a way that takes advantage of this fact to organize and present information. It is good for better test planning to visualize the tasks that need to be done as part of the testing, testing traceability to include requirements, and monitoring testing progress to track the progress of testing and overcome this pesticide paradox.
Mind maps are never going to replace the creation of detailed test cases but some projects demand a creative alternative and can improve certain aspects of your testing.