Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

38
Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger

Transcript of Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

Page 1: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

Software Testing Software Testing

testing.f12.ppt

CS 121“Ordering Chaos”

“Mike” Michael A. Erlinger

Page 2: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 2 – CS 121

AdministriviaAdministrivia

Prepare for Sycamore on the 30Prepare for Sycamore on the 30thth….….

Need schedule of meeting with graders for User TestNeed schedule of meeting with graders for User Test

Page 3: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 3 – CS 121

Software Testing: Convention WisdomSoftware Testing: Convention Wisdom

95% of errors are in 5% of the code95% of errors are in 5% of the code

…or maybe 80% of the errors are in 20% of the code…

Testing: Can I find that 5% or 20% via a test suite

Page 4: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 4 – CS 121

Software TestingSoftware Testing

GoalsGoals

Types of testsTypes of tests

Levels of testsLevels of tests

Test measuresTest measures

Test planTest plan

Page 5: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 5 – CS 121

GoalsGoals

Verification: Have we built the software right?Verification: Have we built the software right?

Validation: Have we built the right software?Validation: Have we built the right software?

Bug-free, meets specs

Meets customers’ needs

Are Verification and Validation different or variation of the same idea?My argument: “meeting specs” should equal “meeting customer needs”... not generally true (my kitchen, satellite systems)

Page 6: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 6 – CS 121

Software TestingSoftware Testing

GoalsGoals

Types of testsTypes of tests

Levels of testsLevels of tests

Test measuresTest measures

Test planTest plan

most of our discussion focuses on verification

(more specifically bug testing)

Page 7: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 7 – CS 121

Types of testsTypes of tests

Black boxBlack box

White boxWhite box

Gray boxGray box

Page 8: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 8 – CS 121

Black Box TestsBlack Box Tests

input output

interface

1. Does it perform the specified functions?2. Does it handle obvious errors in input?3. Ariane5 – lousy error handling4. Classic ints vs floats, yards vs meters Black box should catch these if there is

adequate “test coverage”

Page 9: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 9 – CS 121

Example: Ordered List of intsExample: Ordered List of ints

class OrdInts

create

getFirst

getNext

insert

delete

print

L=create()L.insert(5)L.insert(-1)L.insert(-1)p=L.getFirst()print (p)L.delete(p)p=L.getFirst()print(p)p=L.getNext(p)print(p)p=L.getNext(p)

-1-15error

Page 10: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 10 – CS 121

Black box testsBlack box tests

Advantage: black box testerAdvantage: black box tester≠developer≠developer is unbiased by is unbiased by implementation details. e.g., Use Case testing, just work implementation details. e.g., Use Case testing, just work through all the Use Cases, building tests for eachthrough all the Use Cases, building tests for each

Disadvantage: black box tester is uninformed about Disadvantage: black box tester is uninformed about implementation detailsimplementation details unnecessary tests – test same thing in different way insufficient tests – can miss the extremes, especially if actual use

follows a different pattern – generally impossible to check all inputs

Page 11: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 11 – CS 121

Black Box TestsBlack Box Tests

Input Code

choose good distribution of input – hope good distribution of code tested

x

x

x x

Page 12: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 12 – CS 121

Unnecessary TestsUnnecessary Tests

Input Code

large range of input may exercise a small part of codee.g., operator test of satellite control stations, run through each

input and output light/key option. Testing same functions, whereas no one had a test for my map function.

Page 13: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 13 – CS 121

Insufficient TestsInsufficient Tests

Input Code

a small range of input may exercise a large range of codebut can you ‘know’ this without knowing the code? Did we miss the 20%

Page 14: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 14 – CS 121

Sufficient TestsSufficient Tests

Input Code

complexcode

a small range of input may exercise a small but important/error-prone region of code

Page 15: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 15 – CS 121

White Box TestsWhite Box Tests

Based on codeBased on code

test 1

test 2

Page 16: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 16 – CS 121

Example: ordered list of intsExample: ordered list of ints

class ordInts {class ordInts {

public: …public: …

private:private:

int vals[1000];int vals[1000];

int maxElements=1000;int maxElements=1000;

……

}}

Page 17: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 17 – CS 121

White Box TestExample: ordered list of intsWhite Box TestExample: ordered list of ints

bool testMax(){ L=create(); num=maxElements; for (int i=0; i<=num; i++)

print iL.insert(i)

print maxElements;}

Page 18: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 18 – CS 121

White Box TestsWhite Box TestsAdvantage:Advantage:

design tests to achieve good code coverage and avoid duplication can stress complicated, error-prone code Can be driven from Design, e.g., Use Cases or other Models can stress boundary values (fault injection)

Disadvantage:Disadvantage: tester=developer may have bias (team alternatives to test developer) if code changes, tests may have to be redesigned (is this bad?)

Page 19: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 19 – CS 121

Gray Box TestsGray Box Tests

Look at code to design testsLook at code to design tests

But test through interfaceBut test through interface

Best of both worlds - maybeBest of both worlds - maybe

Page 20: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 20 – CS 121

Example: ordered list of intsExample: ordered list of ints

class OrdInts

create

getFirst

getNext

insert

delete

print

L=create()L.insert(1)L.insert(2)L.insert(3)

L.insert(1001)p=L.getFirst()print(p)p=L.getNext(p)print p

123

……

Page 21: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 21 – CS 121

Types of TestsTypes of TestsBlack box: test based on interface, through interfaceBlack box: test based on interface, through interface

Gray box: test based on code, through interfaceGray box: test based on code, through interface

White box: test based on code, through codeWhite box: test based on code, through code

Testing strategy can/should include all approaches!

My experience: Black Box = non developer, outside testing “idiots” who follow

specfications/requirements. in your case who?White Box = developer, part of development process in your case who?Gray Box = hated, non developer within developer organization in your case who?

Page 22: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 22 – CS 121

Levels of TestsLevels of Tests

UnitUnit

IntegrationIntegration

SystemSystem

System IntegrationSystem Integration

white

black

Page 23: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 23 – CS 121

Testing measures (white box)Testing measures (white box)

Code coverage – individual modulesCode coverage – individual modules

Path coverage – sequence diagramsPath coverage – sequence diagrams

Code coverage based on complexity – test of the risks, tricky Code coverage based on complexity – test of the risks, tricky part of code (e.g., Unix part of code (e.g., Unix ““you are not expected to understand you are not expected to understand thisthis”” code) code)

Page 24: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 24 – CS 121

Code CoverageCode Coverage

How much of code is How much of code is ““testedtested”” by tests? by tests? manually profiling tools

Design new tests to extend coverageDesign new tests to extend coverage

Is 100% good? Is it possible to achieve?Is 100% good? Is it possible to achieve?

Page 25: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 25 – CS 121

Path CoveragePath Coverage

How many execution paths have been exercised by tests?How many execution paths have been exercised by tests?

100% path coverage is usually impossible100% path coverage is usually impossible

Aim to cover Aim to cover commoncommon paths and error prone ( paths and error prone (complexcomplex) paths) paths

Aim to break code with tests – good testers are not liked by Aim to break code with tests – good testers are not liked by developers....developers....

Page 26: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 26 – CS 121

Convention WisdomConvention Wisdom

95% of errors are in 5% of the code95% of errors are in 5% of the code

…or maybe 80% of the errors are in 20% of the code…

Page 27: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 27 – CS 121

Code Complexity MeasuresCode Complexity Measures

cyclomatic complexity measure (McCabe)cyclomatic complexity measure (McCabe) measures number of linearly independent paths through

program ignores asynchronous interaction, fallibility of services etc.

developerdeveloper’’s best guess – what problems are likely and which s best guess – what problems are likely and which will be hardest to diagnosewill be hardest to diagnose

started with Knuth and others who gathered stats on programs.started with Knuth and others who gathered stats on programs.

Page 28: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 28 – CS 121

Test planTest plan

Collection of tests: unit, integration, systemCollection of tests: unit, integration, system

Rationale for test: why these tests?Rationale for test: why these tests?

Strategy for developing/performing testsStrategy for developing/performing tests e.g., test units as developed, test integration at each build, run the

same tests over each build, etc. Final test plan for Version 1 should do all the unit tests, integration

tests, etc.

Page 29: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 29 – CS 121

Testing StrategyTesting Strategy

TDD – test driven developmentTDD – test driven development

RegressionRegression

Test harnessTest harness

Bug trackingBug tracking

User testsUser tests

Write test BEFORE your write the code!

Page 30: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 30 – CS 121

TDD – test DrivenTDD – test Driven

Unit tests are written first by the SEs. Then as code is written it Unit tests are written first by the SEs. Then as code is written it passes incrementally larger portions of the test suites. The passes incrementally larger portions of the test suites. The test suites are continuously updated as new failure test suites are continuously updated as new failure conditions and corner cases are discovered, and integrated conditions and corner cases are discovered, and integrated with regression tests. Unit tests are maintained like with regression tests. Unit tests are maintained like software and integrated into the build process. The goal is software and integrated into the build process. The goal is to achieve continuous deployment with frequent updates.to achieve continuous deployment with frequent updates.

Page 31: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 31 – CS 121

Testing StrategyTesting Strategy

TDD – test driven developmentTDD – test driven development

RegressionRegression

Test harnessTest harness

Bug trackingBug tracking

User testsUser tests

AutomateBuild up number of depth of testsRun tests before you check in codeMy mess up historically

Page 32: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 32 – CS 121

Testing StrategyTesting Strategy

TDD – test driven developmentTDD – test driven development

RegressionRegression

Test harnessTest harness

Bug trackingBug tracking

User testsUser tests Useful for interactive graphics applicationsautomated test framework, built one for satellite console to run through all console interactions

Page 33: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 33 – CS 121

Test HarnessTest Harness

everything else

input output

inject test inputquery state

Test harnesses allow for the automation of tests. They can call functions with supplied parameters and print out and compare the results to the desired value. The test harness is a hook to the developed code, which can be tested using an automation framework.

Page 34: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 34 – CS 121

StrategyStrategy

TDD – test driven developmentTDD – test driven development

RegressionRegression

Test harnessTest harness

Bug trackingBug tracking

User testUser test

Design system for trackingScrupulously record problems,their context, the effect, ideas on the cause,attempts to fix, create new tests as bugs uncovered

Page 35: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 35 – CS 121

StrategyStrategy

TDD – test driven developmentTDD – test driven development

RegressionRegression

Test harnessTest harness

User testUser testValidationNonfunctional requirementsNot best for discovering bugsNeed to know how they generated bugHistorically, I have seen these used to Validate the final deliverable….too late….

Page 36: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 36 – CS 121

Test PlanTest Plan

Collection of tests: unit, integration, systemCollection of tests: unit, integration, system

Rationale for test: why these tests?Rationale for test: why these tests?

Strategy for developing/performing testsStrategy for developing/performing tests

Be thoughtful in designingBe diligent in executing

Page 37: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 37 – CS 121

Python & PyGamePython & PyGame

What tools are provided to do tests?What tools are provided to do tests?

What kind of tests are the tools suited to?What kind of tests are the tools suited to?

Page 38: Software Testing testing.f12.ppt CS 121 “Ordering Chaos” “Mike” Michael A. Erlinger.

– 38 – CS 121

The EndThe End