Fundamental of Test Process
An effective, organized and established process is a key to carrying out any task, smoothly and efficiently, so as to achieve success. In "Software Development Life Cycle (SDLC)" too, the task of testing is not just limited to executing test cases on the software product. Similar to the process of software development, testing also has a wide process that completes its cycle after going through several phases. This process is not merely a single activity, but it encompasses various stages that allow testers to build a software that has remarkable quality and efficiency.
Defining Test Process
As stated above, test processes are a vital part of Software Development Life Cycle (SDLC) and consist of various activities, which are carried out to improve the quality of the software product. From planning to execution, each stage of the process is systematically planned and require discipline to act upon them. These steps and stages are extremely important, as they have their own entry criteria and deliverable, which are combined and evaluated to get expected results and outcomes.
Therefore, we can say that the quality and effectiveness of the software testing is primarily determined by the quality of the test processes used by the software testers. Moreover, by following a fundamental test process, testers can simplify their work and keep a track of every major and minor activity.
Importance of Test Process:
- It streamlines the work that is being performed by the team members.
- It brings consistency across the team as well as the way they work.
- Makes future maintenance of the product easier.
- Following a fundamental testing process results in better product.
- It helps plan and manage the testing activities.
- Well-planned and systematic process enables the team to detect defects more rapidly.
Whether regression or integration, agile or waterfall, scrum or RUP, traditional or exploratory, whatever may be the technique or method of software testing, there is always a fundamental process that is followed by the team of testers to get accurate and expected outputs.
These process of testing might seem insignificant, but are extremely helpful and allow team members to test numerous components of the software smoothly. Therefore, stated below are some points that signify the importance of following a fundamental testing process.
Phases of Testing
Similar to Software Development Life Cycle (SDLC), software testing too has a cycle namely "Software Testing Life Cycle (STLC)", which is comprises of series of subsequent activities that initiate, execute, as well as terminate the testing process successfully. A basic process of testing includes five subsequent stages that are mentioned below:
- Test Planning & control.
- Analysis & Design.
- Implementation & Execution.
- Evaluating Exit Criteria & Reporting.
- "Test Closure".
Test Planning & Control
The initial stage of the process, test planning and control is a significant part of Software Testing Life Cycle (STLC), where test manager or test lead determines the efforts and cost of the entire project. Here the team works together to prepare test plans, define test objectives, and to build up a test strategy to effectively implement test plans at various levels of the software.
In addition to planning, this stage also involves controlling the process of testing by constantly monitoring it, reviewing, and analysing the method and its outcome, and making decisions accordingly. Therefore, to generate proper and effective test plan, this stage considers following aspects:
- Determine the Scope, Risks, & Objectives: Before the commencement of the project, the team and team lead come together to determine the scope, risks, and objective of testing. Here, the focus is on understanding the purpose of testing, while considering factors like software, system, the testing environment, business goals, possible technical & non-technical risks, among other things.
- Implement Test Policy/Strategy: The policies, strategies, and standards followed by organization are taken into consideration. The plan should adhere to these client's policies and should be agreed by all the stakeholders of the project.
- Determining Test Approach: Testing techniques, test items, approaches, as well as the coverage are determined here. The team identifies the features and functionalities that require testing, the ways of testing as well as the how extensively it will be tested. Additionally, team is appointed their specific tasks here.
- Schedule the Test Activities: Activities like test analysis, design tasks, implementation, execution, and evaluation are scheduled by the team lead/manager. Also, the supporting hardware and software required for a specific test environment are step up by the team.
- Determine the Exit Criteria: The team sets up an exit criteria to ensure that the process of testing is completed correctly. With the assistance of these criteria one is able to verify the tasks that need to be covered and completed for a particular level of testing.
- Monitor Activities: With the assistance of monitoring one can measure and analyze the result of testing as well as validate the document progress, test coverage, and exit criteria. Also, by monitoring the process of testing one initiate the corrective actions where they are required.
- Compare Progress VS Plan: To get planned and expected outputs the team compare the process of testing with the the initial plan and cross checks every step. This allows them to find discrepancies easily and helps them take required corrective measures.
- Take Control when Required: The test management team constantly monitors the process of planning as well as testing and initiates corrective measures whenever necessary.
Analysis & Design
After the culmination of the the planning stage, the team moves on to the analysis and design stage, wherein test cases are created with the assistance of the information and output provided from the previous stage i.e. "test planning" & control. During this stage, objectives are transformed into test cases.
- Review Test Basis: These include the information on the basis of which test cases are designed, such as the requirements, design specification, product risks analysis, architecture, interfaces, more. All these documents are reviewed by the team before the commencement of this stage.
- Evaluate Test Basis for Testability: The above mentioned documents, specification, and requirements are evaluated for "testability".
- Identify & Prioritize Test Conditions: The test conditions are identified and derived from the specification, test cases, test data, and test design and are prioritized by the team.
- Design & Prioritize High Level Test Cases: The important "test cases" are prioritized and are run earlier, as it helps increase rate of fault detection.
- Identify Test Data: The test data is identified and produced in either focused or systematic manner and used in various tests.
- Traceability Between Test Basis & Test Condition: To establish traceability between "test basis" and test condition, test basis document is used.
- Test Environment & Infrastructure Tools: Here, the test environment is designed for set up and the required infrastructure and tools are identified by the team.
Test Implementation & Execution:
During this stage of testing, test scripts and procedures are outlined by integrating the test cases in a particular order, setting up testing environment and executing the test cases.This stage is mainly divided into two categories, namely:
- Test Implementation: The designed test cases and test suites are finally implemented in this stage with the assistance of following steps.
Test Execution: Here the test is finally executed on the software program while following the steps mentioned below.
- Finalize Implementation & Test Cases: The implementation and test cases are finalized on the basis of the requirements. Moreover, the test manager ensures that all the prerequisites of testing handled before test execution.
- Create Test Data: Depending on the test environment the "test data" is generated for its intended use. This can be done manually or with the assistance of test data creation tools.
- Check Environment: To ensure the success of testing the environment set up is check by the team. This mainly includes system, application, test data, front end running environment, client operating system, browser, and more.
- Check Test Suites: The team works together to create and check test suites from the test cases for efficient test execution. The information and instructions are validated before testing the software program.
- Develop & Prioritize Test Procedures: Once the test cases, "test suites", "test environment", and other important component are identified, created and checked, the team develops & prioritizes the testing procedure like the techniques, strategies, tools and more.
- Test Harness/ Automated Scripts: Though optional, here collection of software & test data are configured to test a program under various condition, where its behaviour is constantly monitored.
- Execute Test Procedure as planned: The test cases and test suites are executed by the team as per the planned procedure.
- Log the Outcome/Result: The status of the test cases and the testing is logged for future references.
- Compare Actual VS Expected Output: Once the test results are logged and recorded, they are compared with the expected outputs to ensure their credibility and accuracy.
- Report Discrepancies as Incidents: The defects, issues, or any other discrepancies found during the earlier stages are reported as incidents here.
- Analyze Incidents for Cause: The incidents identified by the team earlier are now analyzed as per the cause and solutions are provided to resolve them.
- Retest/Regression: Here the identified and analyzed incidents are "retested" to resolve discrepancies in the software system and to get best results.
Evaluating Exit Criteria & Reporting
This phase involves evaluation of outcomes of the test implementation & execution stage, to further decide the ways of testing as well as its closure. Based on the risk assessment, "exit criteria" are prepared, which work as a metric to determine the amount of testing needed in the product or project.
The testing team is alloted the task to carry out further testing or to terminate the process on the basis of the exit criteria, which includes exploring high percentage of bugs, time-limit, budget-limit, 100% "test coverage".
- Check logs against Exit Criteria: The status and log of testing is checked and compared with the exit criteria, which was decided earlier in the planning stage.
- Assessment: The team works together and decides if more test are needed or Exit Criteria needs to be changes or not.
- Test Summary: A test summary report is prepared after the commencement of this stage, which includes details about the whole testing process. This offers a better understanding of the process to all the stakeholders of the project.
As the name suggest, test closure is the last stage of any testing process and is generally initiated after the delivery of the software product. However, this stage of testing can also be initiated because of various other reasons like the termination of the testing process due to non-achievement of target, cancellation of the project, when product needs updates, among other things. This stage of STLC mainly consists of following events:
- Checking of actual delivered product with respect to planned deliverables.
- Gathering "testware" such as test scripts, test environment, etc. for its reuse and to pass it to maintenance department, that may help them in providing software support in future.
- Gaining knowledge from the current testing process, in order to improve the working, for the future projects.
Software Testing Life Cycle (STLC) can be described as a sequence of activities that are performed to test various component and factors of a software. This, like the Software Development Life Cycle (SDLC) helps develop a quality software product that has innovative features and exceptional functionality.
Moreover, the process of testing ensures that the software product is in conformance with the client’s requirements and is developed according to the stated standards and is following the international regulations. In short, with the assistance of software testing one can effortlessly develop a software product that helps clients reach new heights of success.