To address these requirements, agile methods and DevOps principles are being adopted. This is certainly a good thing but this drive cannot be addressed without implementing automation in the application lifecycle (ALM).
On the testing front, it is now nearly impossible to develop software without any kind of automation. With the fast cadence of agile, you have to be able to test your changes very rapidly (.i.e. within two weeks) but also be able to feed that information back to developers as soon as possible (this is what we call a Shift-Left attitude). Done right, test automation is a very cost-effective solution which can be performed at different levels. For instance, you can perform:
To test the functionalities at the code level to ensure that code changes do not break existing features.
Service Layer Testing tests the business logic and make sure it meets the requirements. If you are used to manual testing, you probably expect to have a user interface in order to test the application. However, in the software world testing can be done by interacting with the application via its API. The service layer provides a very well defined semantic which can be used for testing the business logic of an application. By taking advantage of this, you can create a set of automated tests that can reliably validate this area of your application and be very cost effective.
Before shipping software, your application always has to be tested functionally. To achieve that, you need to manually interact with the User Interface, perform common scenarios, and ensure you get the correct outcome. However, this is very labour intensive and expensive in terms of manual resources as your regression suite will continuously grow as your product evolves. To circumvent those limitations, a subset of your manual tests should be automated. This is achieved by using specialized software that is capable of interacting with your application. Despite its up-front cost, test automation has a good ROI as those tests can be re-executed as often as desired without any manual intervention. Some tests are more suited for test automation such as: Simple tests: as they can be easily automated with a very good ROI. Iterative tests: by repeating the same tests with data variations (data-driven tests). Smoke tests: tests that will be executed very often. Stable tests: tests where the UI never changes.
Writing automated tests is a specialist skill. A developer in test must have competencies in both software development and testing as test scripts are nothing but code. As a consequence, the same development principles must be applied to writing test scripts such as: Abstraction, Reusability, Maintainability and Understandability. To meet those principles, it is recommended to implement a test automation framework on top of the testing tool. This ensures that best practices are being applied. This also minimizes costs when maintenance needs to be performed.
Mobile devices such as smartphones have become so important that they are now the main tool of interaction with the Internet. Ever increasingly, native applications are becoming available on those devices even before desktop ones. However, due to the competing operating systems from various vendors and also to the various form factors, the amount of testing required is phenomenal. Unless you want to restrict support to just a few models (but you will also restrict your client’s reach), you will have to test the application across tens of devices, each having different operating systems, screen ratios & resolution and capabilities. Using a mobile device test lab with real devices or a cloud-based solution will help achieve your testing goals.
Web-based applications are client/server applications designed to work inside a browser. With so many browser editions and versions on the market (Internet Explorer, Safari, Firefox, Chrome, etc.), it is impossible to test them all. This proves even more difficult when we consider all the various mobile devices (Android, Apple, Windows Phone to name a few) that may potentially run the application. In these circumstances, test automation can greatly help as you can write the automated test once and test it across the various browsers and mobile devices.