The Software Testing Lifecycle
It is more than just an assurance of operability, as procedures such as regression testing and nonfunctional testing can create a multidimensional picture of how a given application operates within its intended environment.
Software testing ensures that software meets the design and development guidelines, performs its functions accurately and within the required time frame while responding correctly to all inputs. Software testing moves from testing modules as they are developed, onto testing the integration of these modules as an increasingly completed application, leading to final integration and establishing that the completed software is sufficiently usable, was properly in its intended environments and delivers the results desired by the stakeholders involved.
Software testing itself follows a basic pattern that consists of a number of different phrases. Each of these phases exists to move testing operations forward. In a sense, they mirror the software development cycle in that effective software testing begins not at the end of the development cycle but at the beginning as requirements are established. From there, the software testing team works in parallel with the software development team, moving forward as the development cycle matures.
And so software testing is not separate from the development cycle, but is in reality an integral part of it. It establishes the validity of the development cycle at various points within that cycle and so ensures that development is on the right track and successfully moving forward. Each phase of the software testing lifecycle enters at a different point in the software development cycle.
The software testing lifecycle is composed of six basic phases. These are:
It begins immediately after the requirements for the new application are determined. The quality assurance team goes over the documented requirements to determine what the functions of the application are that will be tested, as well as nonfunctional elements that require testing. This may require interfacing with certain stakeholders regarding certain parts of the application in order to get a clear understanding of exactly how the application is intended to function and the environment it is intended to function in. The deliverables of this phase are an automation feasibility report, if required, and an accurate list of the testable requirements.
Building a testing strategy
This is perhaps the most important part of the software testing lifecycle. It is where the amount of cost and effort in testing is estimated based on a testing plan that details what tests will be run at what points in the development cycle. This includes the documentation of the testing plan itself as well as testing effort estimation and the delineation of an operational time frame.
The testing strategy includes, but is not limited to, assigning responsibilities as well as defining what the control procedures will be and preparing test schedules. It will also contain a testing overview that will define the testing environment, give an estimation of the necessary resources and resource planning, and also define the scope and objectives of testing as well as listing what types of tests will be conducted. The deliverables of this phase are testing plan and effort estimation documents.
Development of test cases
Once planning and testing strategies have been laid out, the next step is to develop test cases based on the requirements documentation. An automation feasibility report should have been issued during the testing strategy phase. This will determine how many tests can be automated and how many must be manually done. This phase includes preparing data that will be used in executing test cases, and preparing automated scripts when necessary, as well as ensuring that there are no missing or ill defined requirements that could cause unnecessary testing or inhibit the development of accurate tests. The deliverables here are testing data, test cases and the necessary testing automation scripts.
Setup of the testing environment
An accurate testing environment is vital to the software testing lifecycle. Setting up the testing environment consists of compiling a list of the hardware and software needed to meet the testing requirements. This is then followed by setting up the hardware and software and engaging in smoke tests to gauge the testing environment. The deliverables of testing environment setup are an environment ready to begin testing and the results of the smoke tests.
Requirements have been analyzed, a test strategy has been developed, test cases have been written, and setup is now complete. Testing can begin. Test cases are then marked as passed or failed. Those tests that fail are reported to the development team through the established bug tracking system and the bugs themselves are labeled for correction and additional testing. Ideally, failed test cases should indicate the nature of the bug or bugs. This means that sufficient test case scenarios must be developed in order to cover possible operational flaws. And defect reports and test case execution reports are then presented as deliverables.
End of testing cycle
When all tests have been run the testing cycle is then evaluated by the testing team members based on the criteria that had been laid out for cycle completion. This includes the vital business objectives and software operation and depends heavily on the quality of the testing involved, as well as the quality of the testers involved. The end of the testing cycle is the time for learning what went right and what went wrong. Such knowledge improves future testing capabilities by maximizing successful actions and minimizing unsuccessful actions. It is more than just the deliverables of the test closure report and testing metrics, it also helps build the platform from which the next testing cycle for the next product will be launched.