What is Software Testing?
Software testing is a process of evaluating the functionality of a software application with an intent to find whether the developed software meets the specified requirements or not and to identify the defects to ensure that the product is defect-free. The software tester verifies and validates the functionality of an application to find out whether it satisfies the specified requirements.
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) is a process used to design, develop and test high-quality software. SDLC can also be called as a framework that defines the steps involved in phase by phase development of software which covers the detailed plan for building, deploying and maintaining the software.
The software life cycle typically includes the following:
- Requirements Analysis,
- Design and Specifications,
- Operation and Support,
Software Testing Life Cycle (STLC)
Software Testing Life Cycle (STLC) is a sequence of the various processes performed by the testing team to guarantee the quality of the software or the product. STLC refers to a testing process with specific steps to be executed in a defined sequence to ensure that the quality goals are meeting. In the STLC process, each activity is carried out in a planned and systematic way. Each phase has different goals and deliverables.
Software Testing Life Cycle consists of six (generic) phases:
- Requirements Analysis
- Test Planning
- Test Case Designing
- Test Environment Setup
- Test Execution
- Defect Reporting
- Test closure
During this phase, the test team studies the requirements closely from a testing point of view to identify the testable requirements. The QA team interacts with various stakeholders (Client, Business Analyst, Technical Leads, System Architects etc) to understand their requirements in detail. Requirements could be either Functional (defining what the software must do) or Non-Functional (defining system performance /security availability )
In this stage, a Senior QA manager will determine a test plan based on the following:
- Preparation of test plan/strategy document for various types of testing
- Test tool selection
- Test effort estimation
- Resource planning and determining roles and responsibilities.
- The test environment required for the entire project.
Types of Testing
Software testing can be of two types. Manual and Automation testing.
Manual Testing: Manual testing includes testing software manually, without the help of any automated tool or any script.
Automation Testing: Automation testing, which is also known as Test Automation, is a method where the tester writes scripts and uses another software to test the product. Automation Testing is used to re-run the test scenarios, which were run manually, quickly and repeatedly.
Test Case Designing
Test Case Designing is the phase of STLC where testing team writes down the detailed test cases and prepares the test data (if any) required for testing. The Requirement Traceability Matrix (RTM), an industry-accepted format for tracking requirements where each test case is mapped with the requirement, is prepared in this phase.
Levels of Testing
- Unit testing
- Integration testing
- System testing
- Regression testing
- Performance testing
- Load Testing
- Security testing
- Compatibility testing
- Usability testing
- User acceptance testing
Test Environment Setup
Setting up the test environment is a vital part of the STLC. The test environment decides on which conditions software is tested, which is an independent activity and can be started parallel with Test Case Development. During the process of setting up a testing environment, the test team is not involved. The developer or customer creates a testing environment, which is based on a particular company. Meanwhile, the testing team is required to do a readiness check (smoke testing) of the given environment.
During this phase, the testers will carry out the testing based on the test plans and test cases prepared. Bugs will be reported back to the development team for correction and retesting will be performed.
Defect Reporting & Defect Life Cycle
The Bug Life Cycle starts with a software bug/behaviour and ends when the assigned developer fixes the bug. A bug when found should be communicated and assigned to a developer who can fix it. Once fixed, the problem area should be retested. A confirmation should be made to verify that the fix has not caused any other issues. The life cycle can get very complicated and can be difficult to track, making it imperative to have a bug/defect tracking system in place. The various phases of bug life cycle are:
- Not Accepted/Won’t fix
This phase evaluates the cycle completion criteria based on Test coverage, Quality, Cost, Time, Critical Business Objectives, and Software Prepare test metrics based on the above parameters. The team then discusses what all went good and which area needs to be improved and then prepares a test closure report accordingly.
Software testing plays a key role in maintaining the quality of the software shipped. A software tester has to ensure that the product is bug-free and be of the best quality.