In continuous delivery, you want to bring your changes as fast as possible to your development, testing, and ultimately production systems. To develop and deploy often, you also need to always keep testing up. And to keep the quality of your software high automated software testing is inevitable.
In agile software development and agile software testing, we know many levels and forms of testing. From small and simple unit tests, up to interface tests with multiple systems involved. It does not matter if you want to test the user interface or an automated API, most of it can be automated, and entire peripheral systems can be emulated for testing purposes.
On the other hand, it’s not possible to automate the testing of the user experience and UI/UX design. If only your developers and testing framework understand how to use it, bug-free software is still not very effective.
Also, the user acceptance test is hard to automate. If your customer really got all the wanted features in the correct form is in the end the decision of the customer itself.
With testing in general you want to build yourself a safety net. With it, you can minimize the number of bugs that make it into your builds and get deployed to your environments.
When automating your testing you do the same but faster, cheaper, scalable and at lower risk:
- Faster: You get almost instant feedback from your testing framework. Automated unit and integration tests find bugs already before they even make it into a build. Bug fixing
is done when you develop, not weeks later when the testing teams find something.
- Cheaper: Here we must compare initial costs vs. running costs. Manual testing can start almost immediately but building up automated testing takes months.
So the best option is to build up the automated testing as you build up your software and its features. But even if your software is already productive and you still have to automate testing, in the long run, automation will always be cheaper than hiring more and more manual testers.
- Scalability: the testing framework does not care how many changes or new features you want it to test. Using cloud-based testing environments you can run as many tests as needed whenever you need them.
- Lower risk: automated testing documents every run and every finding. The test runs are always the same and nothing gets skipped or forgotten.
So what levels you are going to test depends on your testing strategy. First, you need to know what you want to test, and then, you decide what is going to be tested manually and what is tested with test automation.
One approach is to look at your known bug list and analyze how you could have detected them earlier and even avoided them in the first place. If you have a lot of obvious and small bugs on the function level, probably the best way is to improve the unit and integration testing. If you have trouble e.g. in communication with other systems you need to build up a complex multi-system testing environment and automate the interface testing.
In summary, there is no testing strategy that fits all, and testing everything on every level is impossible. But automation and continuous delivery can help you on almost every testing level to improve the quality of your software and allow you to deploy more often and at lower risk.
The easiest way to automate your testing is with TestResults.io. Book your demo now.