ECE 453 CS 447 SE 465
Software Testing &
Quality Assurance
Instructor
Paulo Alencar
Welcome
Welcome to the Software Testing and Quality
Assurance course
Demanding, challenging and rewarding course
A glimpse of what software testing in theory and
practice is all about
Course website:
www.student.cs.uwaterloo.ca/~cs447/Winter2008
How to reach me
Paulo Alencar
E-mail: [email protected]
Phone extension: 33944
Office hours:
Friday 1:00 2:00pm;
2:00 3:00pm (by appointment)
DC 2597B
Outline for today
Introduction
Course description
Software Testing Basics
Course components
Lectures - 3
SE 465 E2 1303
11:30-12:20 MWF
ECE 453 / CS 447 E2 1303
4:30 5:20 MWF
Tutorials and Discussions
The schedule is on the website
Project
Evolution
Testing
5
Course Resources
Schedule
Lecture notes & slides
Recommended book
Software Testing A Craftsman's Approach
2nd edition,
Paul C. Jorgensen,
CRC Press
Past exams
Project description
Grade allocation
Course news system
6
Project component
Design and implement
software enhancements
and testing
Groups of 4
30% of total grade
Two parts:
System Enhancements
Requirements
Design
Implementation
Testing
Black Box
White Box
7
Goals of this course
Become familiar with software testing and quality
assurance concepts and methods
Learn how to design and plan software testing
activities
Experience software testing in a project that uses
several components
Note:
Scratching the surface of software testing and QA
Fitting you to become an amateur software tester
8
Course outline
Unit 1: Overview of Software Testing (Chapter 1-2)
Unit 2: Mathematics for S/W Testers (Chapters 3-4)
Unit 3: Black Box / Functional Testing (Chapters 5-8)
Unit 4: White Box / Structural Testing (Chapters 9-11)
Unit 5: Integration and System Testing (Chapter 12-13)
Unit 6: Soft. Reliability and Quality Assurance Basics
Unit 7: Software Reengineering and Evolution Basics
Unit 8: Project Planning and Management
Course Grade
Component
Weight
Project
Midterm Exam
Final Exam
30%
20%
50%
10
What to do now
(perhaps) Adjust course registration
UW Bookstore for textbook
Software Testing - A Craftsman's Approach
2nd edition,
Paul C. Jorgensen,
CRC Press
Start reading chapters 1-2
11
Outline for today
Introduction
Course description
Software testing basics
12
Motivation
Software problems and related faults:
Ariane 5 rocket cost $500M
Data conversion (64-bit to 16-bit format)
Therac 25 cost 6 lives
Overdosing patients during radiation
Mars missions orbital explores & polar lander cost $300M
Mixture of pounds and kilograms
NASA Mariner 1 probe
Period instead of a comma in FORTRAN do-loop
AT&T long distance service fails for 9 hours
Wrong break statement in C-code
USS Yorktow cruiser
Input division by zero
13
Software Lifecycle
Requirements phase
Analysis phase
Design phase (System and Object)
Implementation phase
Testing phase
Integration phase
Maintenance phase
Retirement
14
Software Lifecycle Activities
...andtheirmodels
Requirements
Elicitation
Analysis
Expressed in
Terms Of
System
Design
Structured
By
Object
Design
Implemen
tation
Implemented
By
Realized By
Verified
By
class...
class...
class...
Use Case
Model
Applicatio
Subsystems
n
Domain
Objects
Testing
Solution
Domain
Objects
Source
Code
?
class.... ?
Test
Cases
15
Software Testing: Definition
The process of devising a set of inputs to a given piece of
software that will cause the software to exercise some
portion of its code.
The developer of the software can then check that the results
produced by the software are in accord with his or her
expectations.
www.reactive-systems.com/esda-glossary.msp
16
A Testing Cycle
Although testing varies between organizations, there is a cycle
to testing:
1. Requirements Analysis: Testing should begin in the requirements
phase of the software life cycle (SDLC).
2. Design Analysis: During the design phase, testers work with
developers in determining what aspects of a design are testable and
under what parameter those testers work.
3. Test Planning: Test Strategy, Test Plan(s), Test Bed creation.
4. Test Development: Test Procedures, Test Scenarios, Test Cases, Test
Scripts to use in testing software.
5. Test Execution: Testers execute the software based on the plans and
tests and report any errors found to the development team.
6. Test Reporting: Once testing is completed, testers generate metrics
and make final reports on their test effort and whether or not the
software tested is ready for release.
7. Retesting the Defects
17
Some Software Testing Objectives
Find as many defects as possible.
Find important problems fast.
Assess perceived quality risks.
Advise about perceived project risks.
Advise about perceived quality.
Certify to a given standard.
Assess conformance to a specification
(requirements, design, or product claims).
18
Software Quality Assurance: Definition
The function of software quality that assures that the
standards, processes, and procedures are appropriate for
the project and are correctly implemented.
www.hq.nasa.gov/office/codeq/software/umbrella_defs.htm
19
Software Maintenance: Definitions
Software Evolution:
A continuous change from a lesser, simpler, or worse state
to a higher or better state [for a software system]
www.cc.gatech.edu/reverse/glossary.htm
Software Maintenance:
Software maintenance is one of the activities in software
engineering, and is the process of enhancing, porting, and
optimizing deployed software, as well as remedying
defects
20
Average cost distribution
(19761981 data)
Object-Oriented and Classical Software Engineer, 5th Edition, Schach (2002)
21
Summary
Testing is an important part of the Software
Lifecycle
Highly technical and challenging
It is affected by the selected process
Quality Assurance is paramount both for mission
critical and non-critical systems
Software Evolution aims to keep systems
operational when environment changes occur
22