As the software industry grows exponentially, the need for efficiency will also grow at a similar pace. Organizations have adopted rapid software development models that quickly deliver working software at scale. For these rapid iterative models to succeed, it is crucial to have an effective and efficient safety net, i.e., testing. Therefore, software testing efficiency and effectiveness are also essential to delivering quality at scale.
This article covers some ideas, strategies, and tips to help you test more in less time. Using my personal experience, I will provide you with some hacks and useful resources for effective testing planning.
Test Environment Readiness
One of the most important yet often overlooked aspects of testing is the test environment. Considering the wide range of possibilities supported by software applications today, it is imperative that testers and developers identify and understand the test environments that are critical to their customer base. Unfortunately, a common mistake that software testers often make is not selecting or aligning to a suitable test environment.
Following are some steps that can boost your testing environment readiness:
- Know your test environment: Most of us would know the high-level details of the platforms we are working on. However, considering the complexity of software technologies, we cannot ignore even the tiniest of details. Here are some examples:
- What is the screen resolution we are testing on? Is it close to the resolution of a typical customer machine?
- Are the cookies ON? What if we intentionally turn them OFF?
- What’s the version of your browser engine? Is it updated? Are there any changes in the latest release that may affect your app?
Here are some ways to determine your in-depth test environment details:
- Windows PC: Run > dxdiag
- Web Browser:
- Support Details.com
- Chrome: Help > Report an Issue > System Information > Expand All
Tip: Every platform provides a way for you to find out the relevant details of the environment. If you work on something new, try to look up this information.
- Sync your test environment: Cloning the exact test environment might not be possible in some cases. However, it is always a good idea to sync your test environment with your customer’s production environment.
- Track the customer usage environment from the app insights/analytics.
- Check with your sales/marketing team to know about the actual customer environment.
- Request the IT team for a suitable test environment setup.
- Find quick ways to reset it / restore it: Once you know and set up your test environment, look for ways to reset/restore it quickly. Testers often overlook the environment setup time.; it will take a significant amount of your time.
- Leverage your automation tools/skills to develop test environment setup scripts. IAAC (infrastructure as a code) is an amazing way to instantly create your test environment.
- Use automation hooks to automatically set up, and teardown various test environment states.
- Find and use tools such as Clear Cache Extension to quickly reset your test environment. You will save a lot of time with such tools.
Reuse Good Ideas
Ideas are at the heart of testing. Designing test scenarios, cases, ideas, etc., takes up a significant portion of our testing time. However, it’s not always necessary to reinvent the wheel when you can easily reuse some good ideas. Over time, most of these reusable testing ideas have proved helpful. You can check out and leverage the following reusable test idea catalogs:
- abhivaikar/howtheytest: a collection of curated public resources about how popular software companies test their software.
- Test Heuristics Cheat Sheet: powerful testing cheat sheet from the Ministry of Testing; is filled with data type attacks, web tests, api tests, heuristics, frameworks, and a lot of testing wisdom.
- Testing Mnemonics List: Mnemonics are a learning aid to construct test ideas quickly. Here, you will find all the popular software testing mnemonics.
- Software Testing MindMaps by Test Insane: crowdsourced collection of testing ideas for various popular use cases and contexts in the form of mind maps.
- Consistency Oracles: An oracle is a way to recognize a problem. We can use consistency as an oracle to discover quick issues with the product and generate testing ideas. A few of the popular consistency oracles are:
- History of the product: Is the product consistent with its history (previous releases, functionalities, etc.)?
- Comparable products: Is the product consistent with other comparable products? These similar products could be from some competitor or something within our product line.
- Claims: Is the product consistent with the claims that have been made for it? These claims could be from the product marketing material or could also be an organization-wide claim.
- Product: Is every component of your product consistent with the other components? There could be various parameters to evaluate product consistency. Ex: Font Size, Colors, Page Design, Layout, Forms, etc.
Research / Ask for Information
A major difference between professional testers and amateurs is the way they absorb and process information. While amateurs wait for information to come to them, professionals work to find it proactively through research and investigation. To make your testing process more efficient, you should investigate/search for the following:
- Existing bugs: The more you know about the existing bugs (closed or open), the better you can anticipate the upcoming risks/pitfalls.
- Design/Flowcharts: Design diagrams and flowcharts are a great resource for investigating deeper into the product vulnerabilities, gaps, inconsistencies, etc.
- Developer time: Developers can help pinpoint complex bugs as they are familiar with the product architecture. Check if you can get some of their time to assist you.
- Competitor analysis/Info/Reviews: Finding and reporting bugs is good, but what if you can prevent the bugs in the first place? Preventing the pitfalls from your competitor apps is a great step towards developing quality software. This information often goes unnoticed, but if analyzed and utilized well, it can be a great accelerator for testing and the product.
- Testability: A testable code is the secret ingredient behind any good testing solution. Testability can save you time and effort. Always pay sufficient attention to testability.
- User concerns/Tech support records: If you are testing any application which already exists in the market, you can take user interviews or ask for tech support records to know about the frequent customer concerns.
From my personal experience, here are some tips to help you be better at testing more in less:
- Try things before you need to use them.
- Apply the rule of three when thinking of test ideas:
- If we cannot think of three ways our solution can fail, then it’s not a solution.
- If we cannot create three solutions for a problem, then we have not thought enough.
- If we cannot interpret what we’re reading in three ways, then we cannot fully understand what the document is trying to convey.
- Create your personalized testing cheat sheet & toolkit. Add your test idea catalogs, favorite resources, and tools to it. It can act as your personalized checklist of basic test ideas.
- Practice testing in time-bound sessions. Testing is a performing art; you can get good at it with deliberate practice. Watch out for opportunities to practice your testing skills. You can practice time bound testing in:
- Testing Hackathons
- Weekend Testing Clubs, etc.
“While we may understand the problem, it is critical for us to change our thinking, our practices, and continuously evolve to stay ahead of the problems we face.”
For all our visual readers, I have summarized this entire article in the form of this mind map.
Thank you for reading this article. I hope these ideas and tips will help you be a more effective and efficient tester.