Testing takes time, a lot of time. And it’s never enough. Everything can’t be tested all the time or all at once, but what we can do is use our time and energy wisely. Even small tweaks made to test processes can save hours and days in the long run. This post is about highlighting some of the major QA time killers and offering practical ways to avoid, or overcome them. Some time wasters are super-obvious and others are not so evident – but trust me they are killing your efficiency. Here, we explain why.
Organize Regression Tests
Regression testing is one of the most time consuming tests we run, so let’s start here. The goal in regression testing is to make sure that recent changes (no matter how big or small) have not unexpectedly impacted the software’s functionality. Some form of regression testing needs to be executed prior to each release to production but exactly how much, depends on the changes made to the release candidate.
Regression testing is a great candidate for making test efficiency improvements because of the frequency at which it is executed. This is also why regression tests are the first tests to be considered as automation candidates. So, making these manual tests quicker and easier to run can save a bunch of time and energy in the long run. Here’s how to shave time off of regression tests.
1. Order test cases by feature and take a look at the flow of your tests
If you are testing part of one feature, then jumping to another feature before going back to the first, you can avoid extra taps or clicks by grouping tests together more effectively. Be certain theses moves make sense, though. If the software is designed for a user to toggle between features, then it might make sense to test that same path as well, but during regression testing, this might not be necessary because those scenarios could be tested as part of other test cases.
2. Order tests by build type and/or environment
Some testing may require a debug build or a separate environment in order to use testing tools for those features not exposed to the end-user. If the goal is to approve a build for release, you will want to reserve the debug build for only the tests that require it. So, group your tests by those that require a debug build and those that don’t. This will eliminate the need to jump between the two builds or environments. Not doing so can be especially time consuming if you need to do things like clear data or uninstall and reinstall.
3. Order by hardware or browser
You probably get the idea by now. It might not seem like it takes long to switch between a phone and a tablet while testing a mobile app, but the time it takes to unlock the device navigate to the screen you are testing etc., will add up. Shaving minutes or even seconds off tests that are repeated often will multiply into substantial time savings over the course of a year.
Improve Requirement Clarity
The importance of concise, understandable, quality requirements is key to software development efficiency. The quality of requirement communication will determine the level of harmonious understanding between tester and developer (and ultimately product.) When requirements are vague and left open to interpretation it can lead to time-wasting questions, development re-work and then additional testing. Requirement questions and clarifications at the time of testing are big time wasters for QA. Instead of verifying the functionality and moving on to the next item, there is a back and forth between product-QA-development that eventually depletes everyone’s time and energy.
So, how can we avoid this situation? Of course, getting the work done right is most critical and if in doubt, questions must always be asked. But, to avoid these scenarios late in the day, QA can be proactive by anticipating these questions during the review of requirements. If a requirement appears vague or leaves out any necessary details, bring it up before development begins. Make sure development, product and QA are on the same page. The time saved by clarifying requirements up-front could end up being the difference between meeting and missing a deadline. Or even worse – rushing a bad product out the door!
We’ve all been there. You encounter a bug and can’t reproduce it or someone else reports seeing a bug and you spend all day chasing it down. Sometimes, procedures like this are absolutely necessary. Perhaps there is a crash that you know will affect a lot of users. In those cases it’s perfectly understandable to drop everything and figure it out because you know this is going to be a gating issue. (You won’t release until it’s fixed.)
Other rabbit holes will be less necessary to go down. Before spending too much time tracking down steps to reproduce a bug or figuring out the root cause of an issue, take a moment to prioritize. How widespread is the issue? How critical is the issue? Is it only an issue on OS versions that are used by a low percentage of users? Reflect on questions such as these before digging too deep (spending too much time on the issue.) Spending too much time on a lower level enquiry may prevent proper time being spent finding a bug that is more critical. In these cases, make a note to return. Finish other test cases then come back to it. You might just figure it out after you leave it for a while.
It’s not uncommon for QA to be sent down one of these rabbit holes after a high level executive, such as a CEO, encounters a bug (or the CEO’s cousin’s nephew’s 2nd aunt) and requests it be looked into. It may be worth looking at, but the same questions should be asked regardless of the rank of the person reporting the issue. In too many cases I’ve seen QA’s time wasted to satisfy a client or high-ranking executive. In these cases, the end result can be a lower quality product because of this ultimate time waste. At the end of the day, the level of quality will be be a direct result of where time has been spent.
Distractions and interruptions are obvious time killers. I’m pretty sure everyone in about every industry could tell you that. Software testers are certainly not immune, and avoiding distractions while testing software may be one of the greatest challenges you face. If you aren’t careful, half of the day can be wasted away because of useless distractions. You have a browser with twenty tabs open, Slack open on a second monitor, a smart watch on your wrist, several mobile devices (including your personal device) sitting on your desk and of course all the interwebs you could possibly want in front of you on all of your connected gadgets.
Here are some tips for avoiding those distractions and completing tasks more efficiently.
1. Try using just one monitor
If only one monitor is required for a particular task, shut down the other monitor or just disconnect the external monitor and use the laptop. At times when we pause to think about the current task, we gaze over at the other monitor and spot an email or Slack message that just came in. You might not even read it because you know it’s unimportant, but suddenly ….. “where was I?” It doesn’t take much to derail our train of thought. Along the same lines as using one monitor, you can also close your tabs or put the application you are currently working on in full screen mode. The idea is to narrow our vision to one task until it is completed. Then, you can respond to your text or look up the population of Uruguay.
2. Disable notifications
I have spent the majority of my career testing mobile apps on Android and iOS phones and tablets. It’s not unusual to have several devices of each platform on my desk. While testing an application, notifications become a huge distraction. Take the time to disable notifications from other apps when possible. Or, simply put the other devices in airplane mode until you need them. Just remember to turn notifications back on when you need to make sure the devices are in a real world state.
3. Try the Pomodoro technique
This time-management method uses work intervals that are separated by breaks. Normally 25 minutes is used as a work interval followed by a small break, but the time can be set to whatever suits you. The point is to increase efficiency by focusing on one task for a set amount of time. Set a timer to 25 or 30 minutes (you can download pomodoro timers from most app stores) and focus solely on that task for the set amount of time. It’s amazing what can be done when you dedicate yourself to blocking out distractions for even half an hour. Chances are, emails and Slack messages can wait until the period is up. Personally, I don’t use this all day everyday, but when I notice I am having a particularly difficult time focusing and getting tasks completed, this is the method I turn to. Distractions and interruptions be gone! For half an hour at least.
Time is our most valuable resource in all aspects of our life. I’m sure everyone reading this has heard or read a quote about the value of time. In the software testing world it’s no different. Recognize the unnecessary time killers in your work environment and act to eliminate them. By doing so, you’ll find yourself being more productive, organized, less distracted and delivering a higher quality product in less time.