It’s hard to believe it now – but there was a time when software development did not automatically mean Agile. For some out there it may be even harder to believe that models other than Agile exist even today – but it is true! For instance, several software experts still turn to models like Iterative Waterfall in cases where the requirements are reasonably clearly defined. The point to be made is that the model is only an efficient way to deliver the business requirements not the end in itself, and we look at the process of software testing and specifically at test automation also in this light.
One definition of Software testing that we like, calls it the detailed process of evaluating a system with an intent to find if it satisfies the business requirements and to identify any gaps, bugs, or missing requirements. One reason we like this definition is it applies irrespective of the software development methodology you adopt. Some believe that software testing is a single step process, but we think it’s actually a series of activities which are methodologically executed to help certify the end product. That’s why it’s called the Software Testing Life Cycle (STLC)!
One way is to break up the different stages in the STLC into Requirement Analysis, Test Planning, Test Case Design and Development, Test Environment Creation, and Test Execution and Closure. With the software delivery challenges like stringent timelines, minimal resources, budget constraints, and the need for high quality, organizations and test managers are turning to automated testing, even more, a part of their test strategy. Automation testing is also known to save costs, increase test coverage, and improve test accuracy.
Let’s see how automation fits into the various stages of the STLC:
Requirement Analysis –
During this phase, the test team studies and understands the requirements from a testing point of view. The software could have both Functional as well as Non-Functional requirements. A high-level test automation feasibility could be started at this stage. The potential benefits of automated testing are weighed and long-term return on investment (ROI) is calculated.
Test planning –
Automation plays a critical role in the test planning phase. At this stage, the detailed analysis of the test requirements is done to the scope and identify those suitable candidates for automation. The right automation testing tool is finalized and accordingly, the recruitment plans for selecting the tool experts may be chalked out. The detailed automated testing process is created which includes the development of automated test design and development standards. It is also important to plan for the training of the test team on the automated testing process, test design, development, and execution. In addition, the automation plans for unit, integration, system, and user acceptance tests are created.
Test Case Design and Development –
The test design phase addresses the need to define the number of tests that need to be executed and the testing approach. Design standards also need to be defined and followed. Test procedure design implies creating rational groups of test procedures and defining a standard way of naming the entire suite procedures. With a test procedure definition in place, each procedure is then identified as either an automated or a manual test. It is crucial to identify the final automation candidates at this stage. Once the design is finalized the test development will be driven based on the design. Automated tests need to be reusable and maintainable. To ensure this, the test development standards need to be clearly defined and followed. Test design and development activities are usually iterative and incremental. They also can be managed in an Agile mode. These test procedures are created while integration testing is underway with the objective of reapplying them during the phase of system testing.
Test Environment Creation –
Test development is preceded by several setup activities. The test environment includes the technical environment, which further includes resources like facility, hardware, and software necessary to support automated test development and execution. For test automation, it is important that the automation test tool is compatible with the application and innovate ideas and workaround solutions need to be implemented in case such a conflict arises. The overall operational readiness of the technical environment needs to be analyzed. The hardware supporting the automation test environment must be sufficient to ensure there are no performance issues. The automation test environment design also needs to consider load test scenarios.
Test Execution and Closure –
During the execution phase, it is crucial to ensure that automation testing is as per the test execution schedule. The documentation and tracking of defect reports are greatly facilitated by an automated defect-tracking tool. Having an automated tracking tool is beneficial as it helps in avoiding manual misses, saves time, and is more accurate. The test automation tools are also used to track the overall test progress status and are used for generating management reporting. Automating test tools provide reports for the test coverage, progress, and the quality of the test effort. Following the automated test execution, test program reviews are finally done. Various test metrics are gathered during the entire automated testing process. These metrics are not just used to measure progress but also certify the test coverage and ensure high-quality software. At this stage, data is captured to measure the benefits of automation throughout the test lifecycle. Test surveys can be created to gather the overall feedback for the automation test tools from usability, performance, effectiveness, and ROI perspective.
Automated testing is critical in all phases of the testing lifecycle. The right selection of automation tool, testing process, and team, are all critically important factors for the automation to be successful. All in all, manual and automation methods go hand-in-hand for a successful test project – and that holds true whether you follow the Agile, Waterfall or any other model of software development.