Skip to content
AD-403 · Software Engineering with Agile Methodology/Quick Revision Short Notes

Software Engineering with Agile Methodology (AD-403) - Unit 2 Short Notes

How unit 2 is examined

This unit covers design (concepts, UML, architecture, metrics) and testing (principles, activities, levels, test case design); Testing Levels carries the most marks, and architecture, UML, metrics, principles, activities and test case design are each asked once.

The Software Design Process

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Software design is the process that converts the SRS (what the system must do) into a blueprint (how it will do it) from which code can be written.

Key points.

  1. Design moves from the SRS to architectural (high-level) design, then to detailed (low-level) design.
  2. High-level design fixes modules and their interfaces; low-level design fixes data structures and algorithms inside each module.
  3. Each design decision must trace back to a requirement and be reviewed before coding starts.

<mark>Design is the process of turning requirements into a blueprint for construction.</mark>

Design Concepts and Principles

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Design concepts are the basic ideas that guide a good design: abstraction, modularity, cohesion, coupling, information hiding and refinement.

Key points.

  1. Abstraction hides detail and shows only what is essential; modularity divides the software into separately named, independently built modules.
  2. Cohesion is how strongly the elements inside one module belong together; high cohesion is good.
  3. Coupling is how dependent modules are on each other; low coupling is good.
  4. Information hiding keeps a module's internal decisions secret behind its interface, so changes stay local.

<mark>A good design has high cohesion and low coupling.</mark>

Software Modeling and UML

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. UML (Unified Modeling Language) is a standard graphical language for specifying, visualising, constructing and documenting the artefacts of a software system.

Diagram. <figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u2-01" viewBox="0 0 600 194" width="600" height="194" role="img" aria-label="UML architecture. Things are structural or behavioural; relationships are dependency, association, generalisation, realisation."><style>#dsfig-u2-01 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u2-01 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u2-01 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u2-01 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u2-01 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u2-01 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u2-01 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u2-01 .t{fill:#16181D;font-weight:500}#dsfig-u2-01 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u2-01 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u2-01 .dot{fill:#16181D}#dsfig-u2-01 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u2-01 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u2-01 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u2-01 .ah{fill:#454C5A}#dsfig-u2-01 .ah.hi{fill:#2340B8}#dsfig-u2-01 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u2-01 .wl .t{font-size:12px;font-weight:700}#dsfig-u2-01 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u2-01 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u2-01 .e{stroke:#B1B7C3}html.dark #dsfig-u2-01 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u2-01 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u2-01 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u2-01 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u2-01 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u2-01 .t{fill:#E6E8ED}html.dark #dsfig-u2-01 .t.inv{fill:#0F1115}html.dark #dsfig-u2-01 .kd{stroke:#E6E8ED}html.dark #dsfig-u2-01 .dot{fill:#E6E8ED}html.dark #dsfig-u2-01 .ann{fill:#8FA3FF}html.dark #dsfig-u2-01 .lbl{fill:#858D9C}html.dark #dsfig-u2-01 .ptr{fill:#8FA3FF}html.dark #dsfig-u2-01 .ah{fill:#B1B7C3}html.dark #dsfig-u2-01 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u2-01 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u2-01 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u2-01 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah7" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh7" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><line class="e" x1="323.8" y1="37" x2="162" y2="101"/><line class="e" x1="323.8" y1="37" x2="363.5" y2="101"/><line class="e" x1="323.8" y1="37" x2="485.5" y2="101"/><line class="e" x1="162" y1="101" x2="47.5" y2="165"/><line class="e" x1="162" y1="101" x2="158" y2="165"/><line class="e" x1="162" y1="101" x2="276.5" y2="165"/><rect class="n" x="251.3" y="22" width="145" height="30" rx="8"/><text class="t" x="323.8" y="37" dy=".35em" text-anchor="middle">UML architecture</text><rect class="n" x="93.5" y="86" width="137" height="30" rx="8"/><text class="t" x="162" y="101" dy=".35em" text-anchor="middle">Building blocks</text><rect class="n" x="14" y="150" width="67" height="30" rx="8"/><text class="t" x="47.5" y="165" dy=".35em" text-anchor="middle">Things</text><rect class="n" x="97" y="150" width="122" height="30" rx="8"/><text class="t" x="158" y="165" dy=".35em" text-anchor="middle">Relationships</text><rect class="n" x="235" y="150" width="83" height="30" rx="8"/><text class="t" x="276.5" y="165" dy=".35em" text-anchor="middle">Diagrams</text><rect class="n" x="334" y="86" width="59" height="30" rx="8"/><text class="t" x="363.5" y="101" dy=".35em" text-anchor="middle">Views</text><rect class="n" x="409" y="86" width="153" height="30" rx="8"/><text class="t" x="485.5" y="101" dy=".35em" text-anchor="middle">Common mechanisms</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">UML architecture. Things are structural or behavioural; relationships are dependency, association, generalisation, realisation.</figcaption></figure>

Key points.

  1. Building blocks are things, relationships and diagrams; things are structural (class, interface, component, node) or behavioural (interaction, state machine).
  2. Relationships link things: dependency, association, generalisation and realisation.
  3. Structural diagrams are class, object, component and deployment; behavioural diagrams are use case, sequence, activity and state chart.
  4. Views show the system from different angles: use case, design, process, implementation and deployment view.
  5. Common mechanisms (specifications, adornments, notes, extensibility such as stereotypes) keep models consistent.

Answer frame. Open with the UML definition; draw the block diagram above; develop building blocks, then diagrams, then views; close with UML being the industry standard for modelling.

Asked: [7 marks] (Jun 2023) Explain UML architecture.

Architectural Design

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. Architectural design defines the overall structure of a system: its major components, their responsibilities and how they interact.

Key points.

  1. It is the first design step after requirements and gives the skeleton on which detailed design rests.
  2. Decisions cover the components, their interfaces, data storage, communication and the style used.
  3. It determines quality attributes such as performance, security, scalability and maintainability.
  4. Styles include layered, client-server, pipe-and-filter, repository and MVC; an ATM is layered as UI, business logic and database.

Answer frame. Open with the definition; list the decisions; briefly name styles and views; close with the layered example and its importance.

Asked: [7 marks] (Jun 2024) Explain briefly about Architectural Design.

Architectural Views and Styles

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. An architectural view describes the architecture from one stakeholder's viewpoint; the 4+1 model gives logical, process, development and physical views tied together by scenarios.

Steps.

  1. Understand the requirements and quality goals.
  2. Choose an architectural style.
  3. Identify the components and their responsibilities.
  4. Define interfaces and connectors between them.
  5. Evaluate the design against quality attributes and refine it.

Key points.

  1. The logical view shows the classes and packages that provide the functionality.
  2. The process view shows runtime processes, concurrency and communication.
  3. The development view shows the code organisation into modules and layers.
  4. The physical view maps software onto hardware nodes and networks.

Answer frame. Open with the definition; give the five steps; explain the four views in order; close with an example and importance.

Asked: [7 marks] (Jun 2025) Explain the architectural design process and the different architectural views.

User Interface Design

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. UI design creates the screens and controls through which users interact with software, aiming at usability.

Key points.

  1. Golden rules: keep the user in control, reduce memory load, and keep the interface consistent.
  2. Give clear feedback for every action and helpful error messages.
  3. UI design follows analysis of users, tasks and environment, then prototyping and usability evaluation.

<mark>A good interface is simple, consistent and gives the user control.</mark>

Function oriented Design

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Function-oriented design decomposes a system top-down into functions, each refined into sub-functions, sharing data through a common data store.

Key points.

  1. The result is shown as a structure chart of modules and their calls.
  2. Data flow diagrams (DFDs) drive the decomposition.
  3. Functions are centred on processing, unlike object-oriented design, which is centred on objects.

<mark>Function-oriented design is top-down functional decomposition.</mark>

SA/SD Component Based Design

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Structured analysis (SA) models what the system does using DFDs; structured design (SD) converts them into a structure chart of modules.

Key points.

  1. SA produces DFDs, a data dictionary and process specifications.
  2. SD uses transform or transaction analysis to derive the structure chart.
  3. Component-based design builds software from reusable, independently deployable components with clear interfaces.

<mark>SA/SD turns DFDs into a structure chart.</mark>

Design Metrics

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. Design metrics are quantitative measures of a design's quality, used to judge complexity, maintainability and testability before coding.

Formula. $$V(G)=E-N+2$$ $$\text{Fan-out}=\text{modules called by a module};\ \text{Fan-in}=\text{modules calling it}$$

Key points.

  1. Cyclomatic complexity $V(G)=E-N+2$ counts independent paths in a flow graph; a value above 10 signals a risky module.
  2. Fan-in and fan-out measure structure: high fan-out means a module controls many others and is highly coupled.
  3. Cohesion and coupling rate module independence; good design has high cohesion and low coupling.
  4. Metrics matter because they predict maintenance effort, locate error-prone modules and compare design alternatives.

Asked: [7 marks] (Jun 2025) Describe any two software design metrics and their importance.

Software Static and Dynamic analysis

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Static analysis examines code without running it; dynamic analysis observes the program while it executes.

Key points.

  1. Static analysis includes reviews, inspections, walkthroughs and tools such as lint; it finds syntax faults, dead code and standard violations.
  2. Dynamic analysis includes testing and profiling; it finds runtime errors, memory leaks and performance bottlenecks.
  3. Static analysis can be applied early, dynamic analysis needs executable code.

<mark>Static analysis checks code without executing it; dynamic analysis runs it.</mark>

Code inspections

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Code inspection (Fagan inspection) is a formal, peer-led review of code against a checklist to find defects before testing.

Key points.

  1. Roles are moderator, author, reader, recorder and inspectors.
  2. Stages are planning, overview, preparation, meeting, rework and follow-up.
  3. Inspections find defects early and cheaply, but only find faults, not fix them in the meeting.

<mark>Inspection is a formal peer review that finds defects early.</mark>

Software Testing, Fundamentals

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. Software testing is executing a program with the intent of finding errors and checking that it meets its requirements.

Key points.

  1. Testing shows the presence of defects, not their absence.
  2. Exhaustive testing is impossible, so tests are chosen by risk and priority.
  3. Test early: planning starts with requirements, since early defects cost least to fix.
  4. Defects cluster: a few modules hold most faults (the Pareto principle).
  5. Repeating the same tests wears out (pesticide paradox), so test cases must be reviewed and refreshed.
  6. Testing is context dependent, and a bug-free system can still fail user needs (absence-of-errors fallacy).

Asked: [7 marks] (Jun 2024) What are the testing principles the software engineer must apply while performing the software testing?

Software Test Process

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. The test process is the set of planned activities that verify software quality from planning to closure.

Key points.

  1. Test planning defines scope, approach, resources, schedule and exit criteria.
  2. Test design derives test cases and test data from requirements.
  3. Test environment setup prepares hardware, software and data.
  4. Test execution runs the cases and compares actual with expected results.
  5. Defect reporting and tracking logs each failure until it is fixed and retested.
  6. Test closure evaluates exit criteria and records lessons learned.

Asked: [7 marks] (Jun 2024) What are the various testing activities? Discuss.

Testing Levels

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Medium weight</span>

Definition. Software testing is running software to find defects and confirm it meets requirements. A test case is a set of inputs, preconditions, steps, expected result and actual result/status used to check one behaviour, identified by a test case ID.

Diagram. <figure class="ds-fig" style="margin:1.4rem 0;overflow-x:auto"><svg xmlns="http://www.w3.org/2000/svg" id="dsfig-u2-02" viewBox="0 0 467 80" width="467" height="80" role="img" aria-label="Testing levels: Unit, Integration, System, Acceptance"><style>#dsfig-u2-02 .e{stroke:#454C5A;stroke-width:1.4;fill:none}#dsfig-u2-02 .e.hi{stroke:#2340B8;stroke-width:2.6}#dsfig-u2-02 .n{fill:#FFFFFF;stroke:#16181D;stroke-width:1.4}#dsfig-u2-02 .n.hi{fill:#E3E9FC;stroke:#2340B8;stroke-width:2.2}#dsfig-u2-02 .n.rb-b{fill:#16181D;stroke:#16181D}#dsfig-u2-02 .n.rb-r{fill:#BD3227;stroke:#BD3227}#dsfig-u2-02 text{font-family:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;font-size:13px}#dsfig-u2-02 .t{fill:#16181D;font-weight:500}#dsfig-u2-02 .t.inv{fill:#FFFFFF;font-weight:700}#dsfig-u2-02 .kd{stroke:#16181D;stroke-width:1.2}#dsfig-u2-02 .dot{fill:#16181D}#dsfig-u2-02 .ann{fill:#2340B8;font-size:11px;font-weight:700}#dsfig-u2-02 .lbl{fill:#6F7787;font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:700}#dsfig-u2-02 .ptr{fill:#2340B8;font-size:12px;font-weight:700}#dsfig-u2-02 .ah{fill:#454C5A}#dsfig-u2-02 .ah.hi{fill:#2340B8}#dsfig-u2-02 .wl rect{fill:#FFFFFF;stroke:#DCE0E7}#dsfig-u2-02 .wl .t{font-size:12px;font-weight:700}#dsfig-u2-02 .wl.hi rect{fill:#2340B8;stroke:#2340B8}#dsfig-u2-02 .wl.hi .t{fill:#FFFFFF}html.dark #dsfig-u2-02 .e{stroke:#B1B7C3}html.dark #dsfig-u2-02 .e.hi{stroke:#8FA3FF}html.dark #dsfig-u2-02 .n{fill:#161920;stroke:#E6E8ED}html.dark #dsfig-u2-02 .n.hi{fill:#1E2748;stroke:#8FA3FF}html.dark #dsfig-u2-02 .n.rb-b{fill:#E6E8ED;stroke:#E6E8ED}html.dark #dsfig-u2-02 .n.rb-r{fill:#FF7E71;stroke:#FF7E71}html.dark #dsfig-u2-02 .t{fill:#E6E8ED}html.dark #dsfig-u2-02 .t.inv{fill:#0F1115}html.dark #dsfig-u2-02 .kd{stroke:#E6E8ED}html.dark #dsfig-u2-02 .dot{fill:#E6E8ED}html.dark #dsfig-u2-02 .ann{fill:#8FA3FF}html.dark #dsfig-u2-02 .lbl{fill:#858D9C}html.dark #dsfig-u2-02 .ptr{fill:#8FA3FF}html.dark #dsfig-u2-02 .ah{fill:#B1B7C3}html.dark #dsfig-u2-02 .ah.hi{fill:#8FA3FF}html.dark #dsfig-u2-02 .wl rect{fill:#161920;stroke:#2A2E37}html.dark #dsfig-u2-02 .wl.hi rect{fill:#8FA3FF;stroke:#8FA3FF}html.dark #dsfig-u2-02 .wl.hi .t{fill:#0F1115}</style><defs><marker id="ah8" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah" d="M0,1 L9,5 L0,9 z"/></marker><marker id="ahh8" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="ah hi" d="M0,1 L9,5 L0,9 z"/></marker></defs><path class="e" d="M59,40 L148,40" marker-end="url(#ah8)"/><path class="e" d="M188,40 L277,40" marker-end="url(#ah8)"/><path class="e" d="M317,40 L406,40" marker-end="url(#ah8)"/><circle class="n" cx="40" cy="40" r="18"/><text class="t" x="40" y="40" dy=".35em" text-anchor="middle">U</text><circle class="n" cx="169" cy="40" r="18"/><text class="t" x="169" y="40" dy=".35em" text-anchor="middle">I</text><circle class="n" cx="298" cy="40" r="18"/><text class="t" x="298" y="40" dy=".35em" text-anchor="middle">S</text><circle class="n" cx="427" cy="40" r="18"/><text class="t" x="427" y="40" dy=".35em" text-anchor="middle">A</text></svg><figcaption style="font-size:.82em;opacity:.72;margin-top:.45rem">Testing levels: Unit, Integration, System, Acceptance</figcaption></figure>

Key points.

  1. Unit testing checks the smallest units (functions, classes) in isolation, done by developers using white-box methods, drivers and stubs.
  2. Integration testing checks that combined modules exchange data correctly; approaches are top-down, bottom-up, big-bang and sandwich.
  3. System testing checks the complete integrated software against the SRS, covering functional, performance, security and usability tests.
  4. Acceptance testing is done by the customer to decide whether to accept the product; it has alpha (at developer site) and beta (at user site) forms.
  5. Each level catches defects that earlier levels cannot, so all four are needed; example: testing a login function (unit), login with database (integration), the whole shopping site (system), and the client trial (acceptance).

Answer frame. Open by defining software testing, its objective and a test case with its attributes; draw the level chain; explain each level with who tests it, what and how; close with an example for each level.

Asked: [7 marks] (Jun 2023, Jun 2025) What is Test case? What are the different levels of Testing? / Define software testing and explain the levels of testing.

Test Criteria

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Test criteria are the rules that decide what to test and when testing is complete.

Key points.

  1. Coverage criteria include statement, branch, condition and path coverage.
  2. Completion criteria include a coverage target, a defect rate below a limit, or the deadline and budget being reached.
  3. Exit criteria are recorded in the test plan.

<mark>Test criteria say what to cover and when to stop.</mark>

Test Case Design

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Low weight</span>

Definition. Test case design is deriving a small set of inputs and expected outputs that find the most faults with the least effort.

Key points.

  1. Equivalence partitioning divides inputs into classes treated alike and tests one value per class; age 18-60 valid gives classes below 18, 18-60 and above 60.
  2. Boundary value analysis tests at the edges, such as 17, 18, 60 and 61.
  3. A decision table lists condition combinations and the action for each, for example login valid/invalid user and password.
  4. State transition testing checks the moves between states, for example an ATM card going from idle to PIN entry to locked after three wrong tries.

Asked: [7 marks] (Jun 2025) Write a short note on Test Case Design techniques with examples.

Test Oracles

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. A test oracle is the mechanism that decides whether a program's output for a test is correct.

Key points.

  1. Oracles include the specification, a previous version, a reference implementation and human judgement.
  2. The oracle problem is that computing the expected result is hard for complex programs.
  3. Automated tests need an oracle to give pass or fail.

<mark>An oracle tells the tester what the correct output should be.</mark>

Test Techniques

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Test techniques are systematic ways of choosing test cases: black-box, white-box and grey-box.

Key points.

  1. Black-box testing uses only the specification: equivalence partitioning, boundary value analysis and decision tables.
  2. White-box testing uses the code structure: statement, branch and path coverage and control flow testing.
  3. Grey-box testing mixes the two.

<mark>Black-box tests functions; white-box tests code structure.</mark>

Testing Frameworks

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. A testing framework is a set of tools, libraries and rules that helps write, run and report automated tests.

Key points.

  1. Examples are JUnit, TestNG, pytest and Selenium.
  2. A test harness runs tests with drivers and stubs and collects results.
  3. Automation makes regression testing fast and repeatable.

<mark>A framework automates writing, running and reporting tests.</mark>

Test Plan

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. A test plan is a document that describes the scope, approach, resources and schedule of testing (IEEE 829).

Key points.

  1. Contents include test items, features to test, approach, pass/fail criteria, deliverables, risks and schedule.
  2. It names the responsibilities of the team and the test environment.
  3. The test strategy is the higher-level approach; the plan applies it to one project.

<mark>A test plan states what, how, who and when of testing.</mark>

Test Metrics

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Test metrics are measures of the progress, coverage and quality of testing.

Formula. $$\text{Defect density}=\frac{\text{defects}}{\text{KLOC}}$$

Key points.

  1. Test coverage is the percentage of code or requirements exercised by tests.
  2. Defect density and defect removal efficiency show product quality and test effectiveness.
  3. Pass rate and test execution progress show project status.

<mark>Defect density is defects per thousand lines of code.</mark>

Testing Tools

<span style="display:inline-block;padding:.16em .6em;border:1.5px solid currentColor;border-radius:999px;font-size:.68em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.75">Not asked since 2022</span>

Definition. Testing tools are software that automates or supports testing activities.

Key points.

  1. Selenium and QTP (UFT) automate functional UI tests; JMeter and LoadRunner do performance tests.
  2. Static tools such as lint and SonarQube analyse code without running it; Jira and Bugzilla track defects.
  3. Tools give speed and repeatability but cost effort to set up and maintain.

<mark>Tools automate repetitive testing and defect tracking.</mark>

Last-minute revision

  • Design turns the SRS into a blueprint; high-level design gives modules, low-level design gives algorithms.
  • Good design: high cohesion, low coupling.
  • UML building blocks: things, relationships, diagrams; structural and behavioural diagrams.
  • 4+1 views: logical, process, development, physical plus scenarios.
  • Cyclomatic complexity $V(G)=E-N+2$.
  • Static analysis does not run code; dynamic analysis does.
  • Seven testing principles include: testing shows presence of defects, exhaustive testing impossible, early testing, defect clustering, pesticide paradox.
  • Test activities: plan, design, environment, execute, report, close.
  • Levels: unit, integration, system, acceptance; alpha at developer site, beta at user site.
  • Test case design: equivalence partitioning, boundary value, decision table, state transition.
  • Defect density = defects / KLOC.

Memory hooks

  • Levels: "UISA" - Unit, Integration, System, Acceptance.
  • 4+1 views: "L-P-D-P" plus scenarios.
  • Cohesion in, coupling out: keep cohesion high, coupling low.
  • Test process: "PDEREC" - Plan, Design, Environment, Execute, Report, Close.
  • Boundary testing: test just below, on and just above each edge.

Coverage checklist

  • The Software Design Process: no past questions.
  • Design Concepts and Principles: no past questions.
  • Software Modeling and UML: UML architecture (Jun 2023).
  • Architectural Design: Architectural Design briefly (Jun 2024).
  • Architectural Views and Styles: design process and views (Jun 2025).
  • User Interface Design: no past questions.
  • Function oriented Design: no past questions.
  • SA/SD Component Based Design: no past questions.
  • Design Metrics: two design metrics (Jun 2025).
  • Software Static and Dynamic analysis: no past questions.
  • Code inspections: no past questions.
  • Software Testing, Fundamentals: testing principles (Jun 2024).
  • Software Test Process: testing activities (Jun 2024).
  • Testing Levels: test case, levels of testing (Jun 2023, Jun 2025).
  • Test Criteria: no past questions.
  • Test Case Design: techniques with examples (Jun 2025).
  • Test Oracles: no past questions.
  • Test Techniques: no past questions.
  • Testing Frameworks: no past questions.
  • Test Plan: no past questions.
  • Test Metrics: no past questions.
  • Testing Tools: no past questions.
Go to where you left off?

Quick Add to Notes

Save questions, your own notes and screenshots into notes filed by unit. It takes a free account.

Create free account

Have an account? Log in