Impossiblity of Testing-Lecture4

24
1 VALIDATION TESTING  Eight axioms that apply to all validation testing: Tes tin g ca n be us ed t o sh ow t he pres ence of er ror s, but n eve r the ir absence. One of the most di ff icult proble ms in tes ting is knowing when t o stop. Av oid u npl anned, n on- reusable, t hro w-a way t est case u nle ss t he  programs truly a throw-away program. A ne cess ary par t of a tes t cas e is a def ini tio n of t he e xpe cted out put or result. Always carefully compare the actual versus the expected results of each test. Tes t cas e must be wr itt en f or inval id an d un expecte d, a s we ll as val id and expected, input conditions. ³Inv alid´ is defined as a condition that is outside the set of valid conditions and should be diagnosed as such  by the program being tested. Validation Overview

Transcript of Impossiblity of Testing-Lecture4

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 1/24

1

VALIDATION TESTING

 Eight axioms that apply to all validation testing:

� Testing can be used to show the presence of errors, but never their absence.

� One of the most difficult problems in testing is knowing when to stop.� Avoid unplanned, non-reusable, throw-away test case unless the programs truly a throw-away program.

� A necessary part of a test case is a definition of the expected output or result. Always carefully compare the actual versus the expected resultsof each test.

� Test case must be written for invalid and unexpected, as well as validand expected, input conditions. ³Invalid´ is defined as a condition thatis outside the set of valid conditions and should be diagnosed as such

 by the program being tested.

Validation Overview

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 2/24

2

� Test case must be written to generate desired output conditions.

Less experienced tester tend to think only from the input perspective. Experienced tester determine the input required togenerate a pre-designed set of outputs.

� With the exception of unit and integration testing, a program

should not be tested by the person or organization that developedit. Practical cost considerations usually require developers do unitand integration testing.

� The number of undiscovered errors is directly proportional to the

number of errors already discovered.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 3/24

3

T he IEEE/ANSI definition is as follows:

Validation is the process of evaluating a system or componentduring or at the end of the development process to determine

whether it satisfies specified requirements( user requirements

& functional interfaces).

� How do we determine in practice whether a program does in

fact meet its requirements? There are two keys:

(i) Developing tests that will determine whether the product

satisfies the users¶ requirements, as started in the requirements

specification.

(ii) Developing test that will determine whether the product¶s actual

 behavior matches the desired behavior, as described in the

design specification .

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 4/24

4

�The high-level requirements are written from a customer or market

 perspective, while the functional specification is written from anengineering perspective.

�Marketing is responsible for creating the requirements

specification, and software engineering is responsible for the

functional design specification.

�Black-box testing and white-box testing are the two fundamental

testing strategies. They are strategies, not technical or analytical

methods.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 5/24

5

V alidation mission vs. test coverage

Exhaustive testing is impossible and the testing of any

 program will be necessarily incomplete.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 6/24

6

K ey Challenges of Testing (2)

Complete Testing Is Impossible

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 7/24

7

Complete testing?What do we mean by "complete testing"?

� Complete "coverage": Tested every line / branch / basis path?

� Testers not finding new bugs?

� Test plan complete?

� After all, if there are more bugs, you can find them if you do

more testing. So testing couldn't yet be "complete."

Complete testing must mean that, at the end of 

testing, you know there are no remaining

unknown bugs.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 8/24

8

Complete coverage?Some people (try to) simplify away the problem of 

complete testing  by advocating "complete coverage."

� What is coverage?

 ±  Extent of testing of certain attributes or pieces of the program, suchas statement coverage or branch coverage or condition coverage.

 ± Extent of testing completed, compared to a population of possibletests.

� Typical definitions are oversimplified. They miss, for example,

 ±  Interesting data values and data combinations

 ±  Missing code

 ±  Interrupts and other parallel operations

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 9/24

9

Complete coverage?

� Consider the following program:

Input A // the program accepts any

Input B // integer into A and B

Print A/B

� We can achieve complete coverage easily.

� Set A to 2 and B to 1 and you¶ve covered every statement (and

every branch) in this program.

� But this doesn¶t achieve complete testing.

 ±  What test is missing?

 ±  What bug was missed?

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 10/24

10

Consider the nature of the infinite

set of tests

There are enormous numbers of possible tests.To test everything, you would have to:

� Test every possible input to every variable (including output

variables and intermediate results variables).

� Test every possible combination of inputs to everycombination of variables.

� Test every possible sequence through the program.

� Test every hardware / software configuration, including

configurations of servers not under your control.

� Test every way in which any user might try to use the program.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 11/24

11

Inputs to individual variables

Consider the ³valid´ inputs

� Doug Hoffman worked for MASPAR (the Massively

Parallel computer, 64K parallel processors).

� The MASPAR computer has several built-in mathematical

functions. Consider the Integer square root.

� This function takes a 32-bit word as an input. Any bitpattern in that word can be interpreted as an integer 

whose value is between 0 and 232-1. There are

4,294,967,296 possible inputs to this function.

� How many of them should we test?� How many would you test?

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 12/24

12

Inputs to individual variables

Consider the ³valid´ inputs

What if you knew this machine was to be used for mission-

critical and life-critical applications.?

 ± To test the 32-bit integer square root function, Hoffman checked

all values (all 4,294,967,296 of them). This took the computer

about 6 minutes to run the tests and compare the results to anoracle.

 ± There were 2 (two) errors, neither of them near any boundary.

(The underlying error was that a bit was sometimes mis-set, but in

most error cases, there was no effect on the final calculated

result.) Without an exhaustive test, these errors probablywouldn¶t have shown up.

 ± W hat about the 64-bit integer square root? How could we find the

time to run all of these? If we don't run them all, don't we risk 

missing some bugs?

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 13/24

13

When people challenge extreme value

tests«

³No user would do that.´

³No user I can think of , who I like,

would do that on purpose.´Who aren¶t you thinking of?

Who don¶t you like who might really use this product?

What might good users do by accident?

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 14/24

14

Combination testingVariables interact.

� Example 1: a program crashed when attempting to printpreview a high resolution (back then, 600x600 dpi) outputon a high resolution screen. The option selections for printer resolution and screen resolution were interacting.

� Example 2: American Airlines couldn¶t print tickets if astring concatenating the fares associated with allsegments was too long.

� Example 3: Memory leak in WordStar if text was markedBold / Italic (rather than Italic / Bold)

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 15/24

15

Combination testingVariables interact.

Suppose there are N independent variables.

� Label the number of choices for the variables as V1, V2through VN.

� The total number of possible combinations is

V1 x V2 x . . . x VN.This is huge.

 ±  A field that accepts only {1, 2, 3} and another that acceptsonly {A, B, C} yields 9 cases, 1A, 1B, 1C, 2A, 2B, 2C, 3A,

3B, & 3C. ±  Combine two fields that accept one digit (0 to 9) each, yields

10 x 10 = 100 possible combinations.

 ±  318,979,564,000 possible combinations of the first four moves in chess.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 16/24

16

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

Here¶s an example that shows that there are too many paths to

test in even a fairly simple program. This is from Myers, The Art 

of Software Testing.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 17/24

17

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

There are 5 ways to get from A to X. One of them is ABX--EXIT

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 18/24

18

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

 A second path is ACDFX--EXIT

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 19/24

19

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

Third: ACDGX--EXIT

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 20/24

20

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

Fourth: ACEHX--EXIT

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 21/24

21

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

Fifth: ACEIX--EXIT. There are 5 ways to get from A to the EXIT

if you go through X only once.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 22/24

22

Sequences

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

But you can go through X more than once. Here¶s another path.

 ACEHXABX--EXIT.

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 23/24

23

Sequences

There are 5 ways to get to X the first time, 5 more to get back

to X the second time, so there are 5 x 5 = 25 cases for reaching

EXIT by passing through X twice.

 A

B

C

D

E

F

G

H

I

X EXIT

< 20 times

through the

loop

8/6/2019 Impossiblity of Testing-Lecture4

http://slidepdf.com/reader/full/impossiblity-of-testing-lecture4 24/24

24

SequencesAnalyzing Myers¶ example

� There are 51 + 52 + ... + 519 + 520 = 1014 = 100 trillion

paths through the program.� It would take only a billion years to test every path (if one

could write, execute and verify a test case every five

minutes).