Software Project ManagementUnit 611 min read
SQA & Testing: Levels, Principles, QA Plans & SCM
Unit 6 of Software Project Management covers Software Quality Assurance (SQA)—its principles, testing levels (unit, integration, system, acceptance), test strategies (white-box, black-box, grey-box), SQA plans, and Software Configuration Management (SCM)—baselines, version control, and change control. Learn how to ensu
TAKEAWAYS:
- Quality factors (correctness, reliability, efficiency, usability, maintainability, portability) define software excellence—measure them to avoid failures like Khalti’s 2021 payment glitches.
- Verification vs. Validation: Verification checks if the product is built right (coding standards), while validation checks if the right product is built (user needs).
- Testing levels (unit → integration → system → acceptance) mirror how Pathao’s ride-matching system tests driver-app communication before full deployment.
- SCM (baselines, version control, change control) prevents chaos in collaborative projects—like Nepal Rastra Bank’s core banking system updates.
- SQA plans document who tests what, when, and how—critical for audits (e.g., NTC’s network software compliance).
- Test strategies (equivalence partitioning, boundary value, cause-effect) catch edge cases—e.g., Daraz’s "out of stock" bug at peak sales.
1. Software Quality Assurance (SQA): The Foundation
SQA is proactive—it’s about preventing defects, not just finding them. Unlike testing (reactive), SQA includes:
- Process standards (ISO/IEC 12207, CMMI).
- Reviews (walkthroughs, inspections).
- Metrics (defect density, test coverage).
- Automation (CI/CD pipelines).
Key Quality Factors
Software quality is measured by non-functional attributes. The ISO 9126 model defines these factors:
| Factor | Definition | Example in Nepal |
|---|---|---|
| Correctness | Does the software meet specifications? | eSewa’s bill payment must correctly deduct Rs. 500 from your account. |
| Reliability | How often does it fail? (MTBF: Mean Time Between Failures) | Ncell’s network must not drop calls during load shedding. |
| Efficiency | Resource usage (CPU, memory, response time). | Daraz’s search algorithm must return results in <200ms. |
| Usability | Ease of use for end-users. | Khalti’s QR code must be scannable by any smartphone. |
| Maintainability | Ease of fixing/updating. | Nepal Police’s traffic management software must allow quick bug fixes. |
| Portability | Can it run on other platforms? | WhatsApp Web must work on any browser. |
2. Verification vs. Validation: The Core Difference
| Aspect | Verification | Validation |
|---|---|---|
| Focus | Are we building the product right? | Are we building the right product? |
| When? | Early stages (design, coding). | Late stages (user testing). |
| Example | Checking if Pathao’s algorithm uses correct distance formulas. | Checking if Pathao’s UI meets rider expectations. |
Why both matter:
- Verification catches coding errors (e.g., Nepal Rastra Bank’s interest calculation bug).
- Validation catches misaligned requirements (e.g., eSewa’s failed fingerprint authentication).
3. Testing Levels: From Code to User Hands
Testing happens in layers, like peeling an onion. Each level has specific goals:
graph TD
A["Unit Testing"] --> B["Integration Testing"]
B --> C["System Testing"]
C --> D["Acceptance Testing"]
A -->|"Tests individual modules"| E["Example: eSewa's payment module"]
B -->|"Tests module interactions"| F["Example: Daraz's cart + checkout"]
C -->|"Tests full system"| G["Example: Ncell's 4G network"]
D -->|"Tests with real users"| H["Example: Pathao's beta riders"]A. Unit Testing
- What? Tests smallest code units (functions, methods).
- How? White-box testing (code visibility).
- Tools: JUnit (Java), pytest (Python), NUnit (.NET).
- Example:
Test Case:def calculate_interest(principal, rate, time): return principal * rate * time / 100calculate_interest(10000, 5, 1) → 500(correct). Bug: Iftimeis 0, should it return 0? (Edge case!)
B. Integration Testing
- What? Tests interactions between modules.
- Types:
- Big Bang: All modules at once (risky).
- Incremental: Top-down or bottom-up.
- Example:
- Daraz’s order system must correctly pass data from Cart → Payment → Shipping.
- Ncell’s billing system must sync with customer database.
C. System Testing
- What? Tests the complete system against requirements.
- Types:
- Functional: Does it work as specified?
- Non-functional: Performance, security, usability.
- Example:
- eSewa’s load test: Can it handle 10,000 simultaneous transactions during Dashain?
D. Acceptance Testing
- What? Validated by the client/user.
- Types:
- Alpha: Tested in developer’s environment.
- Beta: Tested by real users (e.g., Pathao’s beta testers).
- UAT (User Acceptance Testing): Final sign-off.
4. Test Strategies: How to Design Tests
A. Black-Box vs. White-Box vs. Grey-Box Testing
| Strategy | Approach | Example |
|---|---|---|
| Black-Box | No code knowledge; test inputs/outputs. | Testing Khalti’s transfer limit (e.g., "Can I send Rs. 50,000?"). |
| White-Box | Code visibility; test logic paths. | Checking Nepal Police’s traffic fine calculator for all if-else cases. |
| Grey-Box | Partial code knowledge. | Testing eSewa’s API with known endpoints but unknown internal logic. |
B. Test Design Techniques
Equivalence Partitioning:
- Divide inputs into valid/invalid groups.
- Example: For Daraz’s age verification, test:
- Valid: 18, 30, 60.
- Invalid: 17, 0, 100.
Boundary Value Analysis:
- Test edge cases (max/min values).
- Example: Ncell’s data limit (999MB vs. 1000MB).
Cause-Effect Graphing:
- Map inputs to outputs logically.
- Example: eSewa’s failed transaction → Check if it’s due to low balance OR network error.
5. Software Configuration Management (SCM): Controlling Chaos
SCM ensures consistency, traceability, and control over evolving software. Key concepts:
A. Configuration Items (CIs)
- What? Files, documents, or modules tracked by SCM.
- Examples:
- Source code (
main.py). - Design docs (
requirements.pdf). - Binaries (
eSewa.apk).
- Source code (
B. Baselines
- What? A snapshot of approved CIs at a point in time.
- Why? Prevents regression (e.g., Nepal Rastra Bank’s core system must not break after updates).
- Example:
- Version 1.0 of Pathao’s app is baselined before Dashain sales.
C. Version Control
- Tools: Git, SVN, Mercurial.
- Commands:
git commit→ Save changes.git merge→ Combine branches.git tag v1.0→ Mark a release.
- Example:
- Daraz’s team uses Git to track changes to the search algorithm before deploying.
D. Change Control
- Process:
- Request change (e.g., fix a bug in Khalti’s OTP system).
- Review impact (does it break other features?).
- Approve/reject.
- Implement & test.
- Release.
- Tools: JIRA, Trello, GitHub Issues.
Branching, merging, and tagging in Git (Image: TheresNoTime, CC BY-SA 4.0, via Wikimedia Commons)
6. SQA Plan: Your Battle Plan
An SQA Plan documents:
- Scope: What’s tested?
- Resources: Tools, team, budget.
- Schedule: Milestones (e.g., unit tests by Week 3).
- Roles: QA engineer, developer, tester.
- Metrics: Defect density, test coverage.
Example for eSewa’s New Feature:
| Activity | Who? | When? | Tools |
|---|---|---|---|
| Unit Testing | Developers | Week 1-2 | JUnit |
| Integration Testing | QA Team | Week 3 | Postman (API tests) |
| System Testing | QA + Dev | Week 4 | Selenium |
| UAT | eSewa Users | Week 5 | TestFlight |
7. Real-World Applications
A. eSewa: Quality in Financial Transactions
- Problem: A single bug in 2021 caused Rs. 200M in incorrect deductions.
- Solution:
- Automated regression tests for payment flows.
- SCM to track changes to the transaction module.
- Load testing before Dashain (peak usage).
B. Daraz: Testing at Scale
- Challenge: 10,000+ orders/minute during sales.
- SQA Approach:
- Stress testing the cart system.
- A/B testing for UI changes (e.g., new checkout button).
- SCM to roll back if a new algorithm causes crashes.
C. Ncell: Network Reliability
- Risk: Network outages during events (e.g., Tihar).
- SQA Measures:
- System testing for call drop rates.
- SCM to manage firmware updates without downtime.
- User acceptance testing with beta users in Kathmandu.
Exam Tip: How to Score Full Marks
- Define Clearly:
- Always start with definitions (e.g., "Software Quality Assurance is a systematic approach to ensure software meets quality standards through processes like reviews, testing, and metrics.").
- Use Examples:
- Link concepts to Nepali apps/companies (e.g., "Like how Daraz uses integration testing to ensure the cart and payment modules work together").
- Diagrams > Text:
- Draw testing levels, SCM workflows, or Git branches in exams.
- Mermaid tip: Use
graph TDfor processes,erDiagramfor SCM tracking.
- Compare Tables:
- For verification vs. validation, black-box vs. white-box, or SCM tools, use tables.
- Real Scenarios:
- Examiners love worked examples. Practice:
- "How would you test eSewa’s new fingerprint login?"
- "What SCM steps would you take for Pathao’s app update?"
- Examiners love worked examples. Practice:
- Avoid Vague Answers:
- ❌ "Testing is important."
- ✅ "Unit testing catches 80% of bugs early (e.g., Daraz’s search algorithm errors), reducing integration costs by 30%."
Final Checklist for Exam Day
- Quality factors: List 6 (correctness, reliability, etc.) with one Nepal example each.
- Verification vs. Validation: Define + one real-world fail case (e.g., Khalti’s OTP bug).
- Testing levels: Draw the 4-level pyramid (unit → acceptance) with one app example per level.
- SCM: Explain baselines, version control, and change control using Git/Daraz.
- SQA Plan: Outline 4 key sections (scope, resources, schedule, metrics).
Based on the TU BSc CSIT syllabus for Software Project Management (CSC415), unit 6.
Discussion
Loading…