This is a guest post by Erik Dietrich, founder of DaedTech LLC.
Are you feeling spread thin when it comes time to test your application? Is your team missing deadlines and pushing back releases to validate your product? This is a common feeling. It manifests itself in many ways.
For example, picture the following scenario. Your team is understaffed. You can’t get through testing fast enough to get features out quickly. It’s all hands on deck—the testers, developers, analysts, and managers are all stepping in to help test new features. Deadlines slip and morale drops as testing takes center stage.
Or how about this. Your team is writing software with a hard deadline. Regulations are changing and you need to be ready. But as usual, development took longer than expected. Your QA team wanted two weeks to test, but they’re only going to get three days. And even after pulling extra hours, you’re still behind.
So now you know you’re not alone. But where do you go from here?
The short answer to your problem is “automate.” To which your response will probably be, “But we don’t have time to automate! We don’t even have time to test!”
OK, let’s look at the long answer then.
Get TestRail FREE for 30 days!
Manage Your Testing
You have your unit tests that run on the developers’ machines, contract tests, and tests that run in some other system. Acceptance and regression tests are handled by your offshore team using SoapUI and reported back weekly. The QA team performs manual acceptance and UI testing based off their Excel sheet.
All the results are collated, reviewed, and shown to management. Plans to enhance testing and add new feature testing are discussed, put in a separate document, and reviewed by the appropriate people.
Then when issues are found, you capture that data in yet another system like Jira, Pivotal Tracker, or Zendesk. Sometimes you track it in more than one system. Therefore, your team spends hours each week going from one system to another trying to keep tabs on it all.
I hope that illustrates the point that all these systems and all this back and forth cause waste. Take a hard look at what’s really going on with each feature and test. Find spots where things are repeated and recommunicated. When you have a clear picture, look for solutions that will let you manage all your tests in one place. Make sure it’s visible and integrates well with your existing systems.
Automate Your Tests
If the testing process itself takes a lot of time and effort, one of your first steps might be to automate it.
Therefore, review all manual tests and look for streamlining opportunities. Take a look at what tools are available to help your team get the repetitive grunt work done quickly and easily.
However, don’t fall into the trap of testing everything from the UI. Keep the testing pyramid in mind. And note that the acceptance test doesn’t need to be at the UI level. It can be at the API or boundary level. Having too many tests at the top of the pyramid will slow you down. The tests will be flakier, run more slowly, and be harder to maintain. If you notice your tests are slowing down, it’s time to see if the focus is on the right functionality.
Once you automate your tests, the next step is easier. This is a great example of how you can make the change easy, then make the easy change.
Test Early, Test Often
With software testing, the sooner the better. This is why test-driven development (TDD) pushes testing first. TDD ensures you’re testing before the code is even written. Though even if you don’t want to take on something like TDD, don’t wait to test everything at the end. Make sure to test features as soon as they’re ready.
And the more often you test, the more processes you’ll be forced to automate. Making frequent testing an easy process will ensure you’ve got a streamlined and efficient way to run these tests.
Prioritization comes in two spots. On one side you’ll have to prioritize which tests need attention first. On the other, you’ll have to prioritize which issues to fix first.
For the first half, again we have two things to consider:
- What features are a priority
- What types of tests are a priority
After that, prioritize bugs and changes that come out of testing. Make sure everyone knows the difference between a minor formatting bug and a major “all hands on deck” bug that needs to be the top priority. Be explicit about prioritization rules. Don’t leave it to assumptions.
Adopt the Right Tools
The QA team needs tools to be more efficient. And sometimes they need training. Don’t just throw out new tools and expect the team to use them efficiently. Take time to learn the tools, share that knowledge, and find the most effective ways to test with them.
Fix Small Inefficiencies
Sometimes test teams get into a rut. They perform the same tests day after day. Eventually, they stop seeing inefficiencies and parts of the operation that could be improved.
Have someone sit with a tester for a day or two. Better yet, have someone outside the regular work group watch what testing involves for a few days. The visitor should note anything that seems repetitive or redundant. Those steps are the first places you can look for automation opportunities.
Also, encourage testers who know all the shortcuts and tricks to the tools they use to share that knowledge with others. Testing is a skill that requires knowledge of the tools and practice using them. It can’t be left to those who hunt and peck their way to a result.
Another opportunity for streamlining is test data. From what I’ve seen, setting up test data often takes longer than the actual test. If this is the case for your team, work on automating this data entry. Or figure out how to get around it.
Many opportunities exist for improvement and automation. It’s up to you and your team to find them.
Come Back to the Short Answer
Now let’s come back around to the short answer of “automate.” Is that the silver bullet? Yes, if you know where to aim and focus your efforts.
You can’t go from no automation to having everything fully automated and efficient overnight. Take time to review inefficiencies in your process and start working on improving them.
In addition, when looking at automation, look beyond just the tests themselves. Are there other processes that can be automated? Consider tests that report and monitor themselves. Or tickets that close themselves after a successful test. When we talk about test automation, it shouldn’t just be the tests that we’re automating, but the whole process of ensuring a quality product.
This is a guest post by Erik Dietrich, founder of DaedTech LLC, programmer, architect, IT management consultant, author, and technologist.
Test Automation – Anywhere, Anytime