Software Engineering and Testing
What this domain tests
Software engineering and testing covers the software development life cycle, requirements and design, testing levels and techniques, defect management, and version control.
Core rules
- Verification asks whether we built the product right; validation asks whether we built the right product.
- Testing levels: unit, integration, system, acceptance. Unit tests isolate small pieces; integration tests check interfaces.
- Black-box techniques use the specification: equivalence partitioning, boundary value analysis, decision tables.
- White-box techniques use code structure: statement, branch, and path coverage.
- Regression tests rerun after changes to catch reintroduced defects.
- A good defect report has steps to reproduce, expected versus actual result, environment, and severity.
- Agile iterations deliver increments; user stories express value from the user's perspective.
Worked example
A field accepts integers from 1 to 100 inclusive. Equivalence classes are valid 1-100, invalid below 1, invalid above 100, and invalid non-integer. Boundary values to test are 0, 1, 2, 99, 100, and 101. Testing 2 and 99 checks values just inside the boundary, while 0 and 101 check just outside. If only four tests are allowed, choose 0, 1, 100, and 101 because they cover the exact boundaries and the adjacent invalid values.
Traps
Confusing testing with debugging; testing finds failures, debugging locates and fixes faults. Treating validation and verification as synonyms. Repeating the same test data across partitions. Omitting expected results from a test case. Assuming 100% statement coverage proves correctness. Forgetting to rerun regression tests after a fix.