Software Testing Life Cycle
Software Testing Life Cycle
Andrew Ireland
Why Test?
• Devil’s Advocate:
“Program testing can be used to show the presence of
defects, but never their absence!”
Dijkstra
“We can never be certain that a testing system is
correct.”
Manna
• In Defence of Testing:
– Testing is the process of showing the presence of defects.
– There is no absolute notion of “correctness”.
– Testing remains the most cost effective approach to building
confidence within most software systems.
Executive Summary
Low-Level Details
• Lecturers: Lilia Georgieva (G54) and Andrew Ireland (G57)
[ [email protected] and [email protected] ]
• Class times:
– Tuesday 3.15pm EC 3.36
– Thursday 3.15pm EC 2.44
– Friday 10.15 EC 2.44 (Lecture/Workshop) EC 2.50 (Lab)
– Friday 11.15 EC 2.50 (Lab)
Format of Friday classes will vary from week-to-week.
• Web: http://www.macs.hw.ac.uk/~air/se4/
• Assessment:
– Separate assignments for CS and IT streams.
– Overall assessment: exam (75%) coursework (25%).
Software Testing and Analysis Thread
A Historical Perspective
• In the early days (1950’s) you wrote a program then you tested
and debugged it. Testing was seen as a follow on activity which
involved detection and correction of coding errors, i.e.
Design ⇒ Build ⇒ Test
Towards the late 1950’s testing began to be decoupled from
debugging — but still seen as a post-hoc activity.
• In the 1960’s the importance of testing increased through
experience and economic motivates, i.e. the cost of recovering
from software deficiencies began to play a significant role in the
overall cost of software development. More rigorous testing
methods were introduced and more resources made available.
A Historical Perspective
Requirements
Design
Coding
Maintenance
Death
Requirements Testing
Requirements Trace-ability
AU
A
Coding + Unit Test
Design Testing
Sub-System Testing
System Testing
Volume and stress testing: Can the system handle the required
data throughput, requests etc? What are the upper bounds?
Configuration testing: Does the system operate correctly on all
the required software and hardware configurations?
Resource management testing: Can the system exceed
memory allocation limits?
Security testing: Is the system secure enough?
Recovery testing: Use pathological test cases to test system
recovery capabilities.
Availability/reliability: Does the system meet the requirements?
Acceptance Testing
References