Quality assurance (QA) plays a vital role in the Software Development Life Cycle (SDLC), ensuring that the software meets defined requirements and performs reliably in various conditions. This post covers two essential quality frameworks within SDLC: the Software Testing Life Cycle (STLC) and the Defect Life Cycle.
Software Testing Life Cycle (STLC)
The Software Testing Life Cycle (STLC) is a systematic process dedicated to validating the quality, performance, and security of a software product. It’s divided into several phases, each with specific activities, deliverables, and entry/exit criteria.
STLC Phases:
- Requirement Analysis
- QA teams study and analyze requirements, identifying key areas to focus on and testing requirements.
- Deliverables: Requirement Traceability Matrix (RTM) mapping each requirement to corresponding test cases.
Example Test Case from RTM in Python's unittest format
import unittest
class TestLoginFunction(unittest.TestCase):def test_valid_login(self):response = login(username="user", password="pass")self.assertEqual(response.status_code, 200, "Expected successful login status")
def test_invalid_login(self):
response = login(username="user", password="wrongpass")
self.assertEqual(response.status_code, 403, "Expected forbidden status for invalid login")
if name == "main":
unittest.main()
- Test Planning
- The Test Manager defines the scope, objectives, resources, and test schedule.
- Deliverables: Test Plan Document, defining test objectives, schedule, roles, and tool requirements.
- Test Case Development
- QA team writes detailed test cases, covering positive, negative, and edge cases for each functionality.
- Deliverables: Test Cases and Test Scripts.
- Environment Setup
- Configuring the test environment to simulate the production environment.
- Deliverables: Test Environment Setup Checklist.
- Test Execution
- QA engineers execute test cases and record results. Any failed test cases are logged as defects.
- Deliverables: Test Execution Report with pass/fail results.
# Example YAML report format
Test_Results:
- test_case_id: TC001
description: Verify valid login
result: PASS
- test_case_id: TC002
description: Verify invalid login
result: FAIL
- Test Closure
- After all test cases are executed, a closure report summarizes testing activities, defects, and lessons learned.
- Deliverables: Test Closure Report documenting testing outcomes and outstanding issues.
Defect/Bug Life Cycle
The Defect Life Cycle, also known as the Bug Life Cycle, is the process of identifying, reporting, managing, and resolving defects in the software. Understanding each phase in this cycle is crucial for managing defects efficiently.
Defect Life Cycle Stages:
- New
- A defect is identified and logged by the QA team in a defect tracking system (e.g., JIRA, Bugzilla). The initial status is set to “New.”
- Assigned
- The defect is reviewed and assigned to a developer for analysis.
- Open
- The developer investigates the issue and works on a fix.
- Fixed
- Once the issue is resolved, the developer marks it as “Fixed” and notifies the QA team.
- Retest
- QA verifies the fix by rerunning relevant test cases. If the issue persists, it’s reopened; otherwise, it’s closed.
- Closed
- If the defect no longer appears, QA marks it as “Closed.”
- Deferred or Rejected
- If the defect is low-priority or doesn’t align with current requirements, it’s either deferred for a future release or rejected.
Defect Management Example Table:
Defect ID | Status | Priority | Assigned To | Description |
---|---|---|---|---|
DEF-101 | New | High | Dev Team | Login fails when using special characters |
DEF-102 | Fixed | Medium | QA Team | UI layout issues on mobile |
DEF-103 | Deferred | Low | – | Minor typo in the FAQ section |
Example Workflow in JIRA:
In defect-tracking tools like JIRA, custom workflows can be created to track defect stages, with automatic notifications to team members when the defect status changes.
Tools for Effective QA in SDLC
Leveraging specialized tools can streamline QA processes across the STLC and Defect Life Cycle:
- Test Management Tools: JIRA, TestRail, and Zephyr to manage test cases, link them to requirements, and track testing progress.
- Defect Tracking Tools: JIRA, Bugzilla, and Azure DevOps for logging, prioritizing, and tracking defect resolution.
- Automated Testing Tools: Selenium, Postman, and JUnit for automated test execution and CI/CD integration.
- Continuous Integration Tools: Jenkins, GitLab CI, and CircleCI to automate test execution upon code changes.
Summary
Quality assurance within SDLC is a structured process that requires careful planning and tracking. Using frameworks like the STLC and Defect Life Cycle, QA teams ensure that software meets quality standards before deployment. Testing tools and automation further streamline this process, allowing teams to maintain quality as they scale.
In the next post, we’ll focus on how to select the most suitable SDLC model based on project requirements, timelines, and team dynamics.
0 Comments