Testing
1. Definition
Testing is the process of evaluating a software system to verify it meets requirements, functions correctly, and is free from defects.
2. Characteristics of Tests
- Accuracy: Ensures the software behaves as expected.
- Completeness: Tests all components and scenarios.
- Reproducibility: Produces consistent results under identical conditions.
- Independence: Performed without bias, often by a separate team.
- Efficiency: Optimized to detect maximum defects within time limits.
3. Types
-
Black Box Testing
- Tests functionality without knowledge of internal code.
- Focuses on inputs and outputs.
- Example: Testing login functionality by entering valid/invalid credentials.
-
White Box Testing
- Examines internal code, logic, and structure.
- Example: Verifying loops, conditional statements, and code paths.
-
Unit Testing
- Tests individual components or modules.
- Example: Testing a function to ensure it returns the expected output.
-
Integration Testing
- Tests interactions between integrated components or systems.
- Example: Verifying API communication between frontend and backend.
Quality Concept
1. Quality
Quality is the degree to which software meets specified requirements and satisfies user expectations. It emphasizes reliability, usability, and performance.
2. SQA Plan
The Software Quality Assurance (SQA) plan outlines processes, tools, and techniques to ensure software quality. It includes goals, standards, testing methodologies, and defect management strategies.
3. Software Configuration Management (SCM)
SCM is the process of controlling, tracking, and managing changes to software artifacts (e.g., code, documentation). It ensures consistency and traceability.
4. Software Configuration Process
- Identification: Labeling configuration items (e.g., versions).
- Control: Managing changes through approval processes.
- Status Accounting: Recording changes and their statuses.
- Auditing: Verifying changes comply with requirements.
5. Formal Technical Review (FTR)
A structured review process to evaluate software artifacts for quality.
-
Review Meeting
- Involves developers, reviewers, and moderators.
- Steps: Preparation → Presentation → Discussion → Recording findings.
-
Review Reporting
- Documents issues identified during the review.
- Includes a summary of findings, action items, and resolutions.
-
Review Guidelines
- Define roles and responsibilities.
- Maintain focus on the objectives.
- Ensure constructive feedback and detailed issue documentation.
Maintenance
1. What is Software Maintenance?
Software maintenance involves modifying a deployed software system to correct faults, improve performance, or adapt to changing requirements.
2. Categories
-
Corrective Maintenance
- Fixes identified bugs or defects.
- Example: Resolving a crash in a payment module.
-
Adaptive Maintenance
- Adapts software to new environments or technologies.
- Example: Updating software for compatibility with a new OS.
-
Perfective Maintenance
- Enhances functionality or performance.
- Example: Adding new features to a reporting tool.
-
Preventive Maintenance
- Proactively addresses potential issues to reduce future risks.
- Example: Refactoring code to improve scalability.