Software testing is a process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation and evaluation of software products and related work products to determine, that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. ~ Foundation of Software Testing by Dorothy Graham, Erik van Veenendal, Isabel Evans, Rex Black.
The above mentioned definition of software testing gives out clear pointers about what is software testing exactly. Software testing is an activity that is carried out to ensure that the software product is not only defect free, but it also meets the requirements of the end user. There has to be an automated and/or manual software testing process in place, so that the testing activities can be carried out smoothly and equal importance is laid on every aspect of the testing process. Some of the steps in the software testing process may differ based on the method used to develop the software.
What is Manual Testing Process?
The software testing process as we see today has taken a number of years to evolve. The basic steps in the manual testing process are:
- Planning and Control
- Analysis and Design
- Implementation and Execution
- Evaluating Exit Criteria and Reporting
- Closure Activities
It is seen, that whatever be the level of software testing, that has been carried out, the main activities remain more or less the same, most of the time. The difference that is often seen is in terms of formality observed through the different stages and at different levels of testing process. The change is normally seen, when the software testing process moves to the advanced stages. It is often due to the fact that some tasks of the process become more relevant during the advanced stages. The process has a logical sequence to it, however, sometimes the activities of the process may either overlap or they may take place simultaneously or activities may be repeated.
Planning and Control
The planning and control stage has an important role to play in the automated as well as manual software testing process.
- The aim of this stage is to identify the scope and risk of the process and determine the aim of the testing process.
- It is in this stage that the approach to be utilized for testing process is determined. The test approach includes deciding the techniques, test items, coverage, etc., to be used for the testing process.
- The testing team to be assigned to the project is decided upon as well. Along with the team, the other resources necessary for the testing process are also determined.
- Test analysis and design tasks are scheduled along with test implementation, execution and evaluation.
- An important part of this stage is determining the exit criteria. It is the exit criteria, which helps in determining the tasks and checks that have to be completed for a particular stage, before it can be declared that the testing activity is finished.
- There is constant monitoring during the testing phase to ensure that the project does not deviate from its original plan. In case of variance in planned and the actual results, measures are taken to control damage.
- The reviews and testing process is measured and the results analysis is a part of this stage.
- The testing activity and the document writing process for the same are monitored, along with the test coverage and exit criteria.
- The stakeholders along with the senior managers are intimated about the progress of the testing process.
- In case of variance or any other problem, measures are taken to put the things right.
- The decisions about under what circumstances, continue further with the testing process, stop the testing process, deliver the software or postpone the delivery till the defects in the software are fixed, are made.
Analysis and Design
It is in this stage, that the requirements and objectives are converted into test conditions and test design. Test procedure is also decided upon in this stage itself.
- The test basis, which include product risk analysis, requirements, software architecture, design specifications, interfaces, etc., are reviewed during this activity.
- Tests are designed and written and readied even before the actual piece of software has been developed. Different software testing methodologies are used for designing the tests.
- Along with writing the test cases, the different test conditions for each of the test items are identified. This also ensures that the module behavior and structure is well understood by the testing team.
- When the test cases are being designed, it is here that the testability of the requirements are accessed.
Implementation and Execution
At this point, the test cases are created considering the different test conditions along with the test design. Test data is generated, so that the software can be checked for errors. If automation testing is carried out, then the scripts for the automation process are generated at this stage.
- The aim of the implementation activity is to develop the tests from the design.
- It is at this stage that the tests are prioritized according to their importance to the end user and for the particular release. In some cases, certain test cases although important may be prioritized for a later stage, due to paucity of time for the current release.
- Once the test cases have been prioritized, a test suite is created. In a test suite, all the prioritized test cases that logically form a single group are put together.
- Before the tests can be carried out, the environment on which the tests have to be carried out is implemented. In other words, the software has to be installed for the testers to carry out the tests.
- The test cases and/or test suites are executed and the results of the tests are recorded.
- The actual and the expected results are compared and the variance is reported, along with the test data used.
- After the defect has been fixed, retests are carried out to ensure that the defects in the software are indeed fixed. Along withe the retests, regression tests are carried out to ensure no new defects were introduced into the software, due to the changes made to the software.
Evaluating Exit Criteria and Reporting
After the tests have been carried out, it is checked if the defined objectives tallies with the test execution. It is with the exit criteria that it can be decided whether the testing activity needs to be carried out further or it can be declared finished. Evaluation is carried out to check, if more testing activity needs to be carried out on the software. A report has to be written out for the stakeholders, so that they are aware about the actual status of the software.
This is an important stage for the testing team. It is in this phase that data for the test activities that were carried out is compiled. It helps in gathering information to ensure that the mistakes made during this testing activity are not repeated in future. In the closure activity stage, the actual deliverable is checked against the planned deliverable. The testware used for the testing activities are finalized and preserved for later use. In some cases, the testware has to be handed over to the organization that is going to support the software. The entire testing activity is examined to know the positives and the negative outcomes from the entire experience and use it for software testing process improvement in the next projects.
This, in short, was the process of testing a software manually. The actual software testing process followed varies from one organization to another and also depends on the software development methodology used. In some cases, the testing activity may be outsourced to a third party in such cases, the process may differ slightly.