The Evolution of Software Testing
– Muthu Sellappagounder, Project Manager, Dovel Technologies
The move to cloud has fundamentally changed how software testing is done in terms of how the test environment can be scaled as needed in a cloud environment and making it possible to execute testing throughout lifecycle of development. Tools and techniques have evolved to meet this new development stack. In this post we’ll detail the current methods and trends to give you a better understanding of which testing is best for your project given your infrastructure and development methodology.
DevOps and Continuous Integration Testing (CI)
In uniting the development team with the operations team, a DevOps environment is one of constant communication and iterative improvements. With this cyclical development, automation is critical so that test cases are executed as the code is checked in and the build is deployed. Continuous Integration (CI) merges all developer working copies into a shared mainline for testing several times a day. CI testing applies a lean workflow using automation tools. These tools watch for code changes and immediately run applicable tests. Any failed test cases are reported to development team for fixing.
Agile Software Testing
The role of tester in an Agile team extends beyond the traditional “tester” role of logging defects. An Agile tester is a part of the development team, looped into all development planning and activities with close coordination with the product owner. In Agile, testing is a part of the development lifecycle from the beginning to ensure that quality is built in from the start. By end of each sprint, based on the test results, the end users can see the actual product and provide feedback for improvements. This testing can be manual, automatic, or a combination of both.
Behavior-Driven Development (BDD)
Behavior-driven development (BDD) emerged from test-driven development (TDD), a practice where you first write a test that fails before writing new functional code. Similarly, with BDD, the test is written first, what do you want people to do (or not to do), and then code is developed to get that outcome. These tests are written in plain, descriptive language, not code. This approach brings the business team closer to the testing, designing tests around defined behavior and outcomes. This practice requires collaboration between business stakeholders, business analysts, QA teams, and developers. A number of frameworks including Cucumber or JBehave can be used as the bridge between business and technical language
Cloud-Based Performance Testing
The benefit to cloud-based testing is the ability to test applications at scale. No longer are you confined to the size and scope of the development environment. Real-world use can be simulated for better performance testing. Cloud-based testing also allows for testing from anywhere in the world, providing a real look at how users in different locations will access and interact with the application. Cloud-based performance testing allows the simulation of the real peak load before launching any new application.
Web Services Testing
Web Services is the mechanism that two applications or machines use to communicate and exchange data. Since applications rarely operate in a vacuum, it is critical to also test the web service to ensure there is acceptable performance metrics between dependent applications. Key things to look for include response time, response data validation, scalability and transaction volume, and security. Automation is key to effective web services testing and as such there are a number of tools on the market using SOAP, REST, and HTTP protocols. The primary goal for web services testing is to determine if the application is getting correct data from other systems with in the specified time.
Mobile Applications Testing
Mobile application testing is not testing on devices, rather it is testing applications and how they perform on mobile devices. The app itself may not be mobile, but it does need to be accessed on mobile devices via mobile browsers or within native apps. The focus of this testing is installation, performance, functionality, security, network usage, and battery usage. This can be automated or performed manually with real or emulated devices.
As IT infrastructure and software development has evolved so have the options for testing. There is no one right way to test, the tactics and methodology depend heavily on the development style and cycle as well as the use case for the application. With that said, Continuous Integration Testing is standing out as the leading approach because it provides the benefits of early testing for any changes and allows for fixes in very early during development cycle.