optional · CSS study notes
🗄️ OLD — Software Testing (consolidated)
CSS Computer Science (Optional) — Paper-I, Section-B, Topic V. Testing has appeared in some form in 4 of the last 7 available papers (2020, 2021, 2022, 2024, 2025) — usually paired with the QA/QC distinction below.
Black-Box vs White-Box Testing
- Black-box testing: tests functionality against the specification, with no knowledge of internal code structure — techniques include equivalence partitioning and boundary value analysis. Answers "does it do what it's supposed to?"
- White-box (glass-box) testing: tests internal logic paths, with full knowledge of the source code — statement coverage, branch coverage, path coverage. Answers "does every path through the code behave correctly?"
- Neither is strictly "better" — an exam question that asks which finds more errors should be answered with: it depends on the defect type; white-box catches logic/path errors black-box would never reach, black-box catches missing-functionality and spec-mismatch errors white-box can't see, since it never looks at what was supposed to happen.
Testing Levels
Unit testing (individual components/functions in isolation) → Integration testing (interactions between combined modules) → System testing (the complete, integrated system against overall requirements) → Acceptance testing (validating with/for the end user or client — confirms the software meets their requirements, distinct from system testing which checks it against the written spec).
Other Named Testing Types Worth Knowing
- Regression testing: re-running existing tests after a change, to confirm the change didn't break something that used to work.
- Performance testing: checks speed, responsiveness, and stability under load.
- Web application testing: a superset covering functional testing, usability, cross-browser/device compatibility, load testing, and security testing of forms, links, and sessions — asked directly in 2022 as "explain the process of web application testing."
Test Design Techniques
The general umbrella both black-box and white-box techniques sit under: equivalence partitioning, boundary value analysis, decision table testing, state transition testing (black-box side), and statement/branch/path coverage (white-box side). Choice of technique depends on what you're trying to catch — boundary analysis for off-by-one-style input errors, state transition testing for systems with distinct modes/states, and so on.
Quality Assurance vs Quality Control vs Testing
A three-way distinction FPSC has asked for directly — don't collapse all three into "testing."
| Quality Assurance (QA) | Quality Control (QC) | Testing |
|---|---|---|
| Process-focused, preventive | Product-focused, detects defects in a specific deliverable | One concrete activity carried out within QC |
| Applies across the whole SDLC | Applied to a specific build/release | Executes the software to find bugs in it |
| "Are we following the right process?" | "Is this specific build defect-free?" | "Does this specific test case pass?" |
🔥
Repeated in past papers: 2022 Q7(b) — black-box vs white-box, and which finds more errors. 2022 Q8(a) — the process of web application testing. 2024 Q7(b)&(c) — types of test design techniques, and the QA/QC/Testing distinction. 2025's Part-I MCQs directly tested which testing type confirms software meets customer requirements (acceptance testing). See 🔥 Most Repeated — Software Engineering.
MCQ Trap
- Black-box testing = no knowledge of internal code; White-box testing = full knowledge of internal code/logic.
- Acceptance testing is what confirms the software matches the customer's requirements — system testing confirms it matches the written specification. These sound similar but examiners test the difference.