I think everyone can agree that thorough testing can make or break a new software release. However, anyone with experience in development knows this is not an easy task. Especially within an agile environment when time can be limited. Testing is time-consuming, it can be expensive, and it can be subject to human error. Here's the truth, bugs will slip through despite the best manual testing process.

If you automate a process that has errors, all you've done is automate the generation of those errors.- W.L.W. Borowiecki

Enter automated testing; when implemented correctly, it's the best way to increase the effectiveness, efficiency, and coverage of your software testing. Automation translates the manual steps taken by a tester and creates repeatable scripts. Automation frees up more time and energy to focus on other tasks and reduces the time of your test cycle. Beyond that, using the best practices in this article can get you the best return on investment. It will shorten your test cycles and freedom from repeatable tasks, all while improving software quality.

However, automation doesn't have all the answers. There still needs that human element, as there's a cost to automation. That brings us to the second point of this article. When is the right time to automate a test?

When is manual testing the correct answer?

  • Subjective Testing: Some tests require subjectiveness. In a way, they have a personality. These are things like usability or look-and-feel
  • New/Changing Functionality: Ever-changing or evolving features can lead to technical debt, a waste of time, especially if it is frequent
  • Strategic Development: There may be features that require special attention. Something that hands-on manual testing may be a requirement
  • Complex Functionality: For complex tests, you need to consider technical debt. Is it worthwhile to automate, especially if the test will be infrequent? You need to think about your return on investment.

When is automated testing the correct answer?

  • Regression Testing: This type of testing is when you're re-testing an existing feature that hasn't been changed but is being carried forward to a new version
  • Smoke Testing: For making a quick high-level assessment of the quality of a build and making go/no-go decisions on deeper testing
  • Static & Repetitive Tests: For automating testing tasks that are repetitive and relatively unchanging from one test cycle to the next
  • Data-Driven Testing: For testing application functions where the same processes are being validated with many different inputs and large data sets (i.e., login, search)
  • Load & Performance Testing: No truly viable manual alternative exists

Conclusion

No testing process can be comprehensive with manual or automated testing alone. Both testing types have their weaknesses, and I hope the points addressed in this article help guide you to successful test automation implementation. My last word of advice is that the most important thing is to have a well-thought-out, well-defined purpose and objective.