Every build step
has a mirror-image test step.
Draw the SDLC as a straight line, then fold it in half at Implementation — that fold is the V-model. Requirements mirror Acceptance test, design mirrors System test, detailed design mirrors Component test. This chapter is that mirror, plus what happens inside each reflection: which test level, which test type, and what still needs testing after the system ships.
The life-cycle model decides how testing gets organized
Testing is highly related to development activities — so before you can talk about test levels, you need the shape of the development process they hang off of.
User requirements → System requirements → Global design → Detailed design → Implementation → Testing
A strict cascade: each phase finishes before the next starts, and testing sits as one block at the very end.
The same cascade, mirrored, with a test-preparation and test-execution stage for every development stage
Testing needs to begin as early as possible in the life cycle and can be integrated into each phase. Within the V-model, validation testing takes place especially during the early stages (reviewing the user requirements) and late in the life cycle (during user acceptance testing).
Define → Develop → Build → Test → Implement, repeated per phase
The process of establishing requirements, designing, building and testing a system carried out as a series of shorter development cycles. Each increment, added to what was built previously, forms a growing partial system — which should also be tested. Regression testing is increasingly important to all iteration phases after the first one.
Verification vs. Validation
Two questions, asked at different moments, and constantly confused.
Verification
correctly built"Am I building the SW correctly?" — is the deliverable built according to the specifications?
Validation
right SW"Am I building the right SW?" — is the deliverable fit for purpose, e.g. does it provide a solution to the problem?
Four traits of good testing, in any model
1 — Matching activity
Every development activity has a corresponding testing activity.
2 — Level-specific objectives
Each test level has test objectives specific to that level.
3 — Design starts early
The analysis & design of tests for a given test level should begin during the corresponding development activity.
4 — Testers review drafts
Testers should be involved in reviewing documents as soon as drafts are available in the development life cycle.
| Development stage | Test preparation | Test execution stage |
|---|---|---|
| User requirements | Preparation acceptance test | Acceptance test execution → operational system |
| System requirements | Preparation system test | System test execution |
| Global design | Preparation integration test | Integration test execution |
| Detailed design | — | Component test execution |
| Implementation | feeds directly into component test execution | |
Four levels, stacked bottom to top
For each test level, the deck asks you to know: the generic objectives, the test basis (docs/products used to derive test cases), the test objects (what is being tested), typical defects/failures found, and specific approaches & responsibilities.
Component (Unit)
Any module, program, object separately testable.
Integration
Interfaces between components; interactions with other systems (OS, HW, …).
System
Behavior of the whole product as defined by the project scope.
Acceptance
Responsibility of the customer — goal is to gain confidence in the system.
Component testing
Component testing
a.k.a. unit testingVerifying the functioning of software items (modules, methods, objects, classes etc.) that are separately testable. Includes testing of functionality and specific non-functional characteristics, such as resource behavior (e.g. memory leaks), robustness testing, and structural testing (e.g. branch coverage).
All materials applicable for the component under test: specification of the component, software design, the data model (e.g. class diagrams), and the code itself.
Approach & responsibilityWriting code to test the project code — stubs, drivers, and simulators may be used.
Driver: code that replaces another software component in order to call the component under test.
VisitorRepositoryStub stands
in for the real database repository so VisitorBLL can be tested in isolation —
exactly the stub definition above, made concrete.Integration testing
Integration testing
interfaces between partsTests interfaces between components. Test interactions with different parts of a system, such as the operating system, file system, hardware, and interfaces between systems.
| Component integration | Tests the interactions between software components — done after component testing. |
|---|---|
| System integration | Tests the interactions between different systems — done after system testing. |
Basis: software and system design, the system architecture, workflows/use cases. Objects: builds including some or all components of the system, database elements, system infrastructure, interfaces between components/objects, system configuration, configuration data.
System testing
System testing
the whole productTesting the behavior of the whole system as defined by the scope of the project.
System requirements specification (functional and non-functional), business processes, risk analysis, use cases, other high-level descriptions of system behavior and interactions with OS/system resources. Requirements may exist as text and/or models — and testers also need to deal with incomplete or undocumented requirements.
Test objectsThe entire integrated system, user manuals, operation manuals, system configuration information, configuration data.
Acceptance testing
Acceptance testing
the customer's callAnswers three questions: can the system be released? What are the outstanding risks? Has development met its obligations? The goal is to establish confidence in the system and in its non-functional characteristics.
User requirements specification, use cases, system requirements specification, business processes, risk analysis.
ResponsibilitiesCustomers or users of a system. Stakeholders may be involved.
| User acceptance testing | Validates the fitness for use of the system by users. |
|---|---|
| Operational testing | Usually done by system administrators: backup/restore, disaster recovery, user management, maintenance tasks, periodic checks of security vulnerabilities. |
| Contract & regulation acceptance testing | Performed against a contract's acceptance criteria (e.g. governmental, legal, or safety regulations). |
| Alpha / beta testing | Alpha: performed at the developing organization's site. Beta (field testing): performed by people at their own locations. Both are performed by potential customers, not the developers of the product. |
Four lenses you can point at any test level
Test levels are "where" in the SDLC you test. Test types are "what angle" you test from — and any of the four can be applied at any of the four levels.
Functional ("what")
Suitability, interoperability, security, accuracy, compliance.
Non-functional ("how")
Performance/load/stress, reliability, usability, efficiency, maintainability, portability.
Structural
Measured via code coverage.
Related to changes
Confirmation testing and regression testing.
Functional testing (black-box)
external behaviorObjective: test what a system should do, considering the external behavior of the software. Test levels: may be performed at all test levels. Test basis: the expected behavior description can be found in work products such as requirements specification, business processes, use cases, functional specifications — may be undocumented.
Non-functional testing
quantified on a scaleObjective: measuring characteristics of software that can be quantified on a varying scale, e.g. response times for performance testing. May be performed at all test levels. Detailed in "Software Engineering — Software Product Quality" (ISO 9126).
Structural testing (white-box)
coverageObjective: measuring the thoroughness of testing through assessment of the coverage of a set of structural elements or coverage items. May be performed at all test levels, but especially in component testing and component integration testing.
Based on the structure of the code as well as the architecture of the system (e.g. a calling hierarchy, a business model, or a menu structure).
Structural techniques are best used after specification-based techniques, to help measure the thoroughness of testing. Coverage measurement tools assess the percentage of executable elements (e.g. statements or decision outcomes) that have been exercised.
Testing related to changes
confirmation + regressionObjective: to verify that modifications in the software or the environment have not caused unintended side effects and that the system still meets its requirements. May be performed at all test levels, applies to functional, non-functional, and structural testing.
After a defect is detected and fixed, the software should be retested to confirm that the original defect has been successfully removed.
The repeated testing of an already tested program, after modification, to discover any defects introduced or uncovered as a result of the change(s).
ISO 9126 — the six characteristics non-functional testing measures
This is the reference model behind every "non-functional" bullet above — it's the answer key when an exam question just says "which quality characteristic is this?"
| Characteristic | Sub-characteristics (from the slide) |
|---|---|
| Functionality | Suitability, accuracy, security, interoperability |
| Reliability | Maturity, fault tolerance, recoverability |
| Usability | Learnability, understandability, attractiveness, operability |
| Efficiency | Resource utilisation, time behaviour |
| Maintainability | Analysability, changeability, testability, stability |
| Portability | Adaptability, replaceability, installability, co-existence |
| + Compliance — sits alongside the six as its own dimension | |
Maintenance testing
Testing doesn't stop at acceptance — it continues for as long as the system is alive.
Maintenance testing
the operational systemObjective: maintenance testing is done on an existing operational system, and is triggered by modifications, migration, or retirement of the software or system.
Modifications
Planned enhancement changes (e.g. release-based); corrective and emergency changes (patches); changes of environment (OS or database upgrades).
Migration
e.g. from one platform to another — needs operational tests of the new environment plus tests on the changed software.
Retirement of a system
Testing of data migration or archiving if long data-retention periods are required.
Related to the risk of the change, the size of the existing system, and the size of the change.
Test levelsDepending on the changes, maintenance testing may be done at any or all test levels and for any or all test types.
Every test level, one table
| Level | Objective | Test basis | Responsibility |
|---|---|---|---|
| Component | Verify software items separately testable (modules, methods, objects, classes) | Component spec, software design, data model, code | Usually the programmer who wrote the code |
| Integration | Test interfaces between components / interactions with other systems | Software & system design, architecture, workflows/use cases | Developers or a separate team; incremental, not big bang |
| System | Test the behavior of the whole system as defined by project scope | System requirements spec, business processes, risk analysis, use cases | Often an independent test team; black-box then white-box |
| Acceptance | Establish confidence to release the system | User requirements spec, use cases, business processes, risk analysis | Customers, users, stakeholders |
| Type | Answers | Levels |
|---|---|---|
| Functional (black-box) | What the system should do — external behavior | All levels |
| Non-functional | Quantifiable quality on a varying scale (ISO 9126) | All levels |
| Structural (white-box) | How thorough is the testing — code coverage | All levels, especially component & component integration |
| Related to changes | Did the fix work (confirmation), did it break something else (regression) | All levels; strong automation candidate |
Where students actually lose marks
These are the specific mix-ups this chapter invites — drill the ✓ RIGHT side until it's automatic.
1. Verification vs. Validation
"Verification checks if the software solves the problem."
Verification checks if it was built correctly against the spec. Validation checks if it's the right solution/fit for purpose.
2. Confirmation testing vs. Regression testing
"They're the same thing — retesting after a fix."
Confirmation testing retests the specific defect that was fixed. Regression testing retests everything else to catch unintended side effects.
3. Component integration vs. System integration — the order
"System integration happens before system testing."
Component integration is done after component testing. System integration is done after system testing.
4. Alpha vs. Beta testing — who performs them
"Beta testing is done by the development team, in the field."
Alpha: at the developing organization's site. Beta (field testing): at the users' own locations. Both are performed by potential customers, not the developers.
5. Big bang integration "saves time"
"Big bang integration is fine — it's faster to just plug everything in at once."
To reduce the risk of late defect discovery, integration should normally be incremental rather than big bang.
6. Functional vs. Structural testing
"Structural testing checks what the system should do."
Functional = what the system does (black-box, external behavior). Structural = how thoroughly the code was exercised (white-box, code coverage).
7. Who does component testing
"A separate QA team always writes and runs component tests."
Component testing usually involves the programmer who wrote the code, with defects fixed on the spot, without formal incident recording.
8. Black-box / white-box order in system testing
"Run white-box structural checks first, then confirm behavior with black-box tests."
First the most suited black-box technique — then white-box technique to assess the thoroughness of that testing.
Click a question to reveal the answer
No reload, no scoring pressure — just click each card.
MCQ
In the V-model, "Preparation System test" mirrors which development stage?
Short answer
In one sentence, what's the difference between verification and validation?
True / False
Beta testing is performed by the developers of the product.
Short answer
Name the two types of integration testing and what each follows.
MCQ
In system testing, which technique is applied first?
Short answer
What is "impact analysis" used for in maintenance testing?
MCQ
Which test type category does "Usability" belong to?
Short answer
Name the three triggers for maintenance testing.
Apply the concepts to scenarios
Grounded directly in the slide definitions — the kind of scenario an exam question rephrases with different nouns.