Software Engineering Testing Lecture 4 ASPI8-4 Anders P. Ravn, Feb 2004
A Development Process (V-model) Requirements Spec Accpt. Test Report Acceptance Test Spec Architectural Spec Integr. Test Report Integration Test Spec Module Interface Spec Module Spec Module Test Report Module Test Spec Program Source text
Documentation 1.Requirements Specification 1.4 Acceptance Test Specification 2.Architecture 2.X Module Interfaces 2.T Integration Test Specification 3.Modules 3.X Module Test Specification 4.Implementation 5.Test 5.Y YYY Test Report
Testing - objective 1.Execute a program to find errors 2.A good test case has a high probability of finding errors 3.A successful test finds a new error Glen Myers Check Software specs. Test specs. Testing Results Test Reports
Test case design White box - basic path testing - loop testing Black box - equivalence partitioning - boundary value analysis Data validation - protocols - databases
Flow graphs – basic paths Sequence Decision Iteration
Test spec. for basic paths true/false case void f()... 1 if (b)T 1...F 2 while (c) T 1...F 2 Cases: 1: …
Composite conditions true false case... if (b && c)TT 1...TF 2...FT 3 if(d || e) TF 1...FT 2 FF 3 Cases: 1: …
Loop Testing 1.Skip the loop entirely (basic path) 2.One pass through loop (basic path) 3.max > n>1 passes through the loop 4.max-1 passes through the loop 5.max passes through the loop 6.(max+1 passes through the loop)
Nested loops Test inside out – inner loop first
Test instrumentation Primitive – debugging: printff(“x: %f\n”,x); or System.out.println(“x: ”+x.toString()); Planned: - instrumentation and logging: class Log { public static boolean test; … public static out(Object o, int line, int val); … if(test) … } … Log.out(this,23,count);
Permanent Instrumentation Planned: - instrumentation and logging: class Log { public static boolean test; … public static out(Object o, int line, int val); if (test) … else … // cyclic log } … Log.out(this,23,count);
Black box testing Test functional requirements: In-out relation (function) Interface conventions Performance Initialization and termination
Domain – a range: 3 classes (test values) Domain – a value: 3 classes Domain – a full interval: 2 classes Equivalence partitioning
Domain – a range: Domain – a value: Domain – a half interval: 2 classes Boundary value test
Data validation Use formal syntax (BNF) to check - all tokens are recognized - all syntax rules are recognized a ::= b c a ::= b | c - at least one syntax error
Invariant checking Assertions about relations between data: sin(x)**2 + sin(pi/2-x)**2 == 1 X == A -1 B implies A X == B -1 <= maxindex < N
Verification Model checking of finite state machines - State invariants always P - Reaching desirable states sometime P - Unreachability of bad states: always not P Verification of general properties
Literature R. S. Pressman: Software Engineering – a Practitioner’s Approach. B. Beizer: Software Testing Techniques.