SDLC or the Software Development Life Cycle, is the process or framework of tasks required to develop a system. Although the methodology is commonly used for software development projects, it can also be extended to the creation of other complex systems. It tracks the project from the initial concept through a post-implementation analysis and maintenance phase. A commonly overlooked area of SDLC with new engineers is understanding the SDLC test phases and resulting deliverables from each phase of the testing process.
What Are the SDLC Phases?
SDLC is broken up into phases that may vary based on the variant of SDLC being implemented on the project team. Although the SDLC test phases are not part of the higher-level project phase model from phase 1 to the end of the project, the testing phase adopts deliverables produced in earlier portions of the SDLC life cycle in order to accomplish the goals of the phase.
Phase 1 – Requirements Gathering and Analysis
Phase 2 – System Design
Phase 3 – System Development
Phase 4 – System Testing
Phase 5 – Operations and Maintenance
SDLC Testing Phase
The SDLC Testing phase is notionally designed to be carried out after system development is complete. The testing phase measures the actual versus expected outcome of the system. Unlike quality control measures which are designed to evaluate a developed work product and include audits to assess cost of correcting defects, the goal of testing is to find defects through the execution of the system or software package.
What is the SDLC Testing Life Cycle?
SDLC testing isn’t just accomplished through ad-hoc means. The testing process has its own life cycle to include: Test Analysis, Test Planning, Test Design, and Test Execution.
SDLC Test Analysis Phase – In the SDLC test analysis phase, the testing team has to gain an intimate understanding of the project’s requirements. All insights gained during this phase help design the testing suite.
SDLC Test Design Phase – During the design phase, test cases are created based on the stated project requirements and use cases. This phase is commonly short-changed by project teams who fall under time or budget constraints, but is one of the most critical in the testing life cycle.
SDLC Test Execution Phase – The testing team runs or executes the test cases against the software or system. The results are recorded and then measured against the expect results. Shortcomings can be used to identify either corrective or future work based on the project team’s goals and requirements.
What Are the Types of SDLC Testing?
Depending on the organization and software engineering model (or variant) being employed, there are a number of testing terms, types, and definitions that you will run across. Some of the most common include:
Acceptance Testing – This type of testing can be thought of as equivalent to a “mid-term” or “final” exam. The goal of the acceptance test is to confirm the system or software meets the customer defined requirements and is ready for a major milestone to be released.
Alpha Testing – Conducted after the majority of the software functionality is complete but before end-users are going to be involved. Typically accomplished by part of the project team but can be outsourced. Accomplished in close coordination with the project team.
Beta Testing – Conducted after project code is complete. For commercial software projects is commonly distributed to the public for free and to generate buzz for the final product.
Black Box Testing – Tests conducted without any knowledge of the code architecture, language, or structure. Requires explicit requirements definition or specification documents to be carried out.
Functional Testing – This type of testing will take two or more modules and seek out defects when they conduct their intended work. Ultimate goal is to ensure the module performs functions as laid out in the project specification.
Independent Verification and Validation (IV&V) - The system or software is exercised in order to ensure it meets user expectations and project requirements. The testing organization or group should not be part of the software development team to ensure the test results are impartial.
Load Testing – Load testing helps determine how well the product handles heavy demand for system resources. This can be in terms of heavy website traffic, CPU, or memory utilization.
Performance Testing – Uses automated tools that are designed to test and tweak system performance. Measures how quickly a system can receive a given set of inputs or events.
Regression Testing – Checks to see if bug fixes have been implemented successfully. Also checks for the presence of new bugs or flaws that could have been created from correcting the original errors and ensures no baseline functionality has been lost.
Security Testing – More and more common in system or software testing circles. Consists of testing the network and database software to guard against accidental miss-use, hackers, or known computer malware attack.
System Integration Testing – Typically conducted when integrating a commercial off the shelf (COTS) system into a custom or unique project.
What is a SDLC Test Plan?
SDLC project test plans describe the overall objectives, approach, scope, and focus of the software testing effort. Typically, the larger the project, the more formally documented the testing plan. No matter what the size of the test plan; however, the process of preparing the document helps the team think through the required steps to validate the acceptability of the product. When completed, outsiders should be able to understand both the “How” and the “Why” of the product validation. The plan should not be so complex that it cannot be understood by those outside of the testing group, but also not as simplistic as to not convey the importance of testing the system.