35
Software Testing: Definitions and Fundamentals Sommerville Chapter 8 Slides from Prof. Mats Heimdahl

Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Software Testing:Definitions and Fundamentals

Sommerville Chapter 8

Slides from Prof. Mats Heimdahl

Page 2: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Announcements

Homework 3 handout will be available later today.

Week 7 lab starts Monday. You can drop in to any one of the sessions next week.

Fall 2013CSci 5801 - Dr. Mats Heimdahl2

Page 3: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Topics for Today

Some definitions

Let’s get the language right

What is a test?

Testing strategies

How do we tackle a testing project

Fall 2013CSci 5801 - Dr. Mats Heimdahl3

Page 4: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Verification vs. Validation

Verification:

?????

Validation:

?????

Fall 2013CSci 5801 - Dr. Mats Heimdahl4

Page 5: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Verification and Validation: IEEE

Verification

The process of evaluating a system or component to determine whether the products…satisfy the conditions imposed…

Validation

The process of evaluating a system or component…to determine whether it satisfies specified requirements.

Fall 2013CSci 5801 - Dr. Mats Heimdahl5

Page 6: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Verification and Validation: Kaner

Verification

Checking a program against the most closely related design documents or specifications

Validation

Checking the program against the published user or system requirements

Fall 2013CSci 5801 - Dr. Mats Heimdahl6

Page 7: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Verification and Validation: Myers

Verification

An attempt to find errors by executing a program in a test or simulated environment

Validation

An attempt to find errors by executing a program in a real environment

Fall 2013CSci 5801 - Dr. Mats Heimdahl7

Page 8: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Verification vs. Validation:Right Definition

Verification:

“are we building the product right?”

The software should conform to its specification

Validation:

“are we building the right product?”

The software should do what the user really requires

Fall 2013CSci 5801 - Dr. Mats Heimdahl8

Page 9: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Validation and Verification

Validation: Are we building the right product?

Implements ?

Customer Requirements Software

Verification: Are we building the product right?

ImplementationSpecification

Implements ?

Page 10: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Dynamic and Static Verification

Dynamic V & V

Concerned with exercising and observing product behavior

Testing

Static V & V

Concerned with analysis of the static system representation to discover problems

Proofs

Inspections

Fall 2013CSci 5801 - Dr. Mats Heimdahl10

Page 11: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Static and Dynamic V&V

Fall 2013CSci 5801 - Dr. Mats Heimdahl11

RequirementsSpecification

High-LevelDesign

FormalSpecification

DetailedDesign

Program

Prototype

StaticVerification

DynamicEvaluation

Page 12: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Definitions of Testing

The process of executing a program (or part of a program) with the intention of finding errors (Myers, via Humphrey)

The purpose of testing is to find errors

Testing is the process of trying to discover every conceivable fault or weakness in a work product (Myers, via Kit)

The process of searching for errors (Kaner)

Fall 2013CSci 5801 - Dr. Mats Heimdahl12

Page 13: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

What is a Test?

Software under Test

Test Data Output

Test Cases

Correct result?

Oracle

Fall 201313CSci 5801 - Dr. Mats Heimdahl

Page 14: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl14

Test Data and Test Cases

Test data

Inputs which have been devised to test the system

Test cases

Inputs to test the system and the predicted outputs from these inputs if the system operates according to its specification

Page 15: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Bugs? What is That?

Failure

An execution that yields an erroneous result

Fault

The source of the failure

Error

The mistake that led to the fault being introduced in the code

Fall 2013CSci 5801 - Dr. Mats Heimdahl15

Page 16: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl16

Axiom of Testing

“Program testing can be used to show the presence of bugs, but never their absence.”

● Dijkstra, 1969

Page 17: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Black and White Box

Black box testing:

Designed without knowledge of the program’s internal structure and design

Based on functional requirements

White box testing:

Examines the internal design of the program

Requires detailed knowledge of its structure

Fall 2013CSci 5801 - Dr. Mats Heimdahl17

Page 18: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

The V & V Process

Is a whole life-cycle process

V & V must be applied at each stage in the software process

Has two principal objectives

The discovery of defects in a system

The assessment of whether or not the system is usable in an operational situation

Fall 2013CSci 5801 - Dr. Mats Heimdahl18

Page 19: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl19

Requirements Specification

System Specification

System DesignDetailed Design

Module and Unit Code and Test

System Integration Test

Acceptance Test

ServiceSub-system Integration Test

Sub-system Integration Test Plan

System Integration Test Plan

Acceptance Test Plan

Unit Test Plan

The V-Model of Development

Page 20: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Testing Stages

Unit testing

Testing of individual components

Module testing

Testing of collections of dependent components

Sub-system testing

Testing collections of modules integrated into sub-systems

System testing

Testing the complete system prior to delivery

Acceptance testing

Testing by users to check that the system satisfies requirements

Sometimes called alpha and beta testing

Fall 2013CSci 5801 - Dr. Mats Heimdahl20

Page 21: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

V Graph

Fall 2013CSci 5801 - Dr. Mats Heimdahl21

RequirementsAnalysis

High-Level Design

Low-LevelDesign

Coding

Delivery

Maintenance

System

Integration

Unit

Unit

Acceptance

Regression

Page 22: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Types of Testing

Statistical testing

Tests designed to reflect the frequency of user inputs

Used for reliability estimation

Defect testing

Tests designed to discover system defects

A successful defect test is one which reveals the presence of defects in a system

Fall 2013CSci 5801 - Dr. Mats Heimdahl22

Page 23: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Testing Strategies

Testing strategies are ways of approaching the testing process

Different strategies may be applied at different stages of the testing process

Strategies covered

Top-down testing

Bottom-up testing

Back-to-back testing

Fall 2013CSci 5801 - Dr. Mats Heimdahl23

Page 24: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl24

A

B

T1

T2

T3

C T4

A

B

T1

T2

T3

DT5

C T4

A

B

T1

T2

T3

Incremental Testing

An integration testing strategy in which you test subsystems in isolation, and then continue testing as you integrate more and more subsystems

Page 25: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl25

Level 1

Level-2 Stubs

Level 1

Level 2 Level 2 Level 2 Level 2

Level-3 Stubs

Testing Sequence

Top-down testing

Page 26: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Top-Down Testing

Start with the high-levels of a system and work your way downwards

Testing strategy which is used in conjunction with top-down development

Finds architectural errors

May need system infrastructure before any testing is possible

May be difficult to develop program stubs

Fall 2013CSci 5801 - Dr. Mats Heimdahl26

Page 27: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl27

Level N Level N Level N Level N Level N

Testing Sequence

Level N-1 Level N-1 Level N-1

Test Drivers

Test Drivers

Bottom-Up Testing

Page 28: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Bottom-Up Testing

Necessary for critical infrastructure components

Start with the lower levels of the system and work upward

Needs test drivers to be implemented

Does not find major design problems until late in the process

Appropriate for object-oriented systems

Fall 2013CSci 5801 - Dr. Mats Heimdahl28

Page 29: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Create ScaffoldingGoal

To setup the environment for executing the test

initialization of non-local variablesinitialization of parametersactivation of the unit

DRIVER

“templates” of modules used by the unit (functions called by the unit)“templates” of any other entity used by the unit

STUB

PROGRAM UNIT

ORACLE

check the correspondence between the produced and the expected result

Fall 201329CSci 5801 - Dr. Mats Heimdahl

Page 30: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Problems and Tradeoffs

Fall 2013CSci 5801 - Dr. Mats Heimdahl30

effort in developing drivers/stubs

effort in test execution and regression testing

poorly designed drivers/stubs

well designed drivers/stubs

high effort in test execution and regression testing

high effort in development

low effort in test execution and regression testing

low effort in development

Page 31: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Back-to-Back Testing

Fall 2013CSci 5801 - Dr. Mats Heimdahl31

Program Version A

Test Data

Program Version B

ResultComparison

Difference Report

Page 32: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Fall 2013CSci 5801 - Dr. Mats Heimdahl33

Who Should Test?

Developer

Understands the system

But, will test gently

And, is driven by deadlines

Independent tester

Must learn system

But, will attempt to break it

And, is driven by “quality”

Page 33: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Axioms of Testing

“As the number of detected defects in a piece of software increases, the probability of the existence of more undetected defects also increases”

“Assign your best programmers to testing”

“Exhaustive testing is impossible”

Fall 2013CSci 5801 - Dr. Mats Heimdahl34

Page 34: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

Axioms of Testing

“You cannot test a program completely”

“Even if you do find the last bug, you’ll never know it”

“It takes more time than you have to test less than you’d like”

“You will run out of time before you run out of test cases”

Fall 2013CSci 5801 - Dr. Mats Heimdahl35

Page 35: Sommerville Chapter 8 Software Testing: Definitions and Fundamentals · 2014. 10. 23. · Test definitions and language Testing activities include unit testing, module testing, sub-system

We Have Learned

Test definitions and language

Testing activities include unit testing, module testing, sub-system testing, integration testing and acceptance testing

Testing should be scheduled as part of the planning process

Adequate resources must be made available

Testing strategies include top-down testing, bottom-up testing, and back-to-back testing

Some axioms about testing

Fall 2013CSci 5801 - Dr. Mats Heimdahl36