190 likes | 255 Views
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
E N D
Software EngineeringTesting 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 • Requirements Specification • 1.4 Acceptance Test Specification • Architecture • 2.X Module Interfaces • 2.T Integration Test Specification • Modules • 3.X Module Test Specification • Implementation • Test • 5.Y YYY Test Report
Check Testing Testing - objective • Execute a program to find errors • A good test case has a high probability of finding errors • A successful test finds a new error • Glen Myers Software specs. Test Reports Results Test specs.
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 • Skip the loop entirely (basic path) • One pass through loop (basic path) • max > n>1 passes through the loop • max-1 passes through the loop • max passes through the loop • (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
Equivalence partitioning • Domain – a range: 3 classes (test values) • Domain – a value: 3 classes • Domain – a full interval: 2 classes
Boundary value test • Domain – a range: • Domain – a value: • Domain – a half interval: 2 classes
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.