5 Pillars of Software Testing Mastery: My 5-Year Roadmap to Success

Abiola Rasaq
5 min readNov 6, 2023

As my five-year journey in software testing comes to a close and the sixth year begins, I want to take some time to document the roadmap to achieving what has worked for me so far. I call it the “5 Pillars of Software Testing Mastery.” These are five pillars that have helped me stand out in my career as a software tester. These are not just “concepts”; they are practical strategies that you can incorporate into your testing activities from end-to-end functional tests to automation. Let’s dive in!

1. Understanding Test Basis

The test basis defines the scope of what needs to be tested. This includes requirement documents, such as Business Requirement Documents (BRDs), Product Requirement Documents (PRDs), use cases, design specifications, and user stories. Requirement documents set the criteria against which the software’s functionality and behavior are evaluated. As a Tester you can use these criteria to verify that the software complies with the specified requirements. It’s crucial for testers to understand these documents and create a clear link or traceability between your test findings and the requirements. This link provides proof that you’ve covered all aspects of the product as specified in the document. Thoroughly understanding the requirement document enables you to create test cases that cover both functional and non-functional aspects of the software, enhancing test coverage and completeness. Think of these documents as the “bible” for your product.

2. Test Planning and Strategy

I know your mind might be drifting to the world of test plan documentation, and you might think this is just another piece of theoretical and boring stuff. But hang in there with me. Success can be achieved only when there are clearly defined goals and a plan for what that success should look like. If not, everything can be tagged as success. Before embarking on any testing activity, you must understand the goals of the Application Under Test and the role of quality in achieving those goals. You also need to comprehend what’s critical, what will be tested, how, when, and where. These details are crucial not only for manual testing but also for automation. Your strategy and planning process will help you identify the right tools for the job, considering your company’s internal software architecture. So you do not have to jump on the wagon of every tool you see in the market. For example, trendy tools might not align with your company’s workflow, so it’s essential to choose wisely. Why waste time on it?. When it comes to testing Application Programming Interface (APIs) for instance, questions like, “Where is the documentation housed? What are we trying to achieve? Is there a third party involved? What is to be tested? At what point is the integration happening? How do I get access to the database? Do we use swagger? Or Postman? etc. must be addressed. This clarity allows you to gauge your success in testing the API. Voilà!

3. Writing Detailed Test Cases/Scripts

I call well-written and documented test procedures the backbone of effective testing. Don’t just write test cases to fill up lines, write test cases that uncover defects. Here’s my theory: “When you execute a test case/script, and it passes, that test has failed to find any defects.” Remember, every test case/script is like a detective on a mission to find a bug. We know there’s always a bug, the question is, where is it? Ensure your test cases cover the most critical aspects of the application under test. Failing to do so sets you up for trouble. Also, consider reusability, especially in Agile and DevOps environments. In my five-years journey I have tested over 100 application updates on mobile applications only! (Thanks to the Nigerian FinTech space) So reusing test cases or scripts allows me to save valuable time and resources. Instead of creating new tests from scratch for each software update, I can leverage existing cases and scripts. Reusability ensures that test coverage is maintained and testing cycles are completed more efficiently, making the testing process cost-effective and productive. But beware of Pesticide Paradox! oftentimes, old test cases fail to catch new defects which is why it’s crucial to regularly update your tests to keep them relevant and effective.

4. Proper Test Documentation

I can’t emphasize enough the importance of maintaining an up-to-date and well-documented test repository. See my article on the importance of keeping an up-to-date test repository here. Your test repository is a valuable resource for knowledge sharing and collaboration. Proper documentation includes effective defect reporting, which is essential because finding defects is a core aspect of software testing. When reporting defects, describe them clearly, label them correctly (functional, design, content, etc.), state the environment and its specifications, document clear steps to reproduce, and include necessary screenshots and screen recordings. These facts back up your claim that a defect exists. Having a clearly documented automation script saves you from drama like, you can’t leave a company because you are the only one who understands your documents and automation code. Even I would not want to work with such a team with messy and all over the place automation scripts. Clear documentation is crucial for knowledge transfer among team members, reducing the risk of key-man dependencies. Test cases for different products or updates should be saved in separate folders or repositories for a clean and high-quality work environment.

5. Communication

Effective communication is key in software testing. Testers often bring “not-so-great” news to the table, such as “There’s a bug here.” However, effective communication is essential to maintain a productive and positive working relationship with developers. Testers and developers share the same mission “delivering functional and quality solutions to customers”. So, why create unnecessary friction? Be respectful, kind, constructive, and reasonable in your communication, but above all never compromise quality. Clear and respectful communication reduces misunderstandings between testers and developers and ensures that developers accurately understand the testing team’s findings and expectations. Good communication enables productive discussions, issue resolution, and collaboration to improve software quality.

As a bonus point, remember that “it’s okay not to know everything”. In the ever-evolving field of technology and quality assurance, there will always be something new to learn. Spoiler Alert “You will never know everything!”. Embrace your mistakes, errors, and failures, as they are part of the learning process. Give yourself the grace to grow, and you’ll eventually gain confidence in your skills.

Thank you for reading this article, and please feel free to reach out if you have any questions or feedback. You can also follow me on Instagram, Twitter and Linkedin for more insights and updates.

--

--