Software testing is a process consisting of all life cycle activities, static and dynamic, concerned with planning, preparation and evaluation of software and related products to assure that they meet the requirements and fit for the purpose and detect defects. ~ Foundations of Software Testing, Dorothy Graham, Erik van Veenendal, Isabel Evans, Rex Black.
The mentioned definition of software testing clearly explains 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
Whenever any level of software testing is to be carried out, the main activities remain more or less the same, most of the time. The difference 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.
- The approach to be utilized for testing process is determined in this process. The test approach includes deciding the techniques, test items, coverage, etc., to be used for the testing process.
- The team to be assigned for the project is decided 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 the 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 declaring the testing activity to be complete.
- 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 the 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 set 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 taken.
Analysis and Design
It is in this stage, 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 includes 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.
- 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 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 with 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 is needed 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 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 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.