ECE 453 CS 447 SE 465 Software Testing

  • Slides: 46
Download presentation
ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor

ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis 1

 • These slides are based on: – Lecture slides by Ian Summerville, see

• These slides are based on: – Lecture slides by Ian Summerville, see http: //www. comp. lancs. ac. uk/computing/resources/ser/ – ECE 355 Lecture slides by Sagar Naik – Lecture Notes from Bernd Bruegge, Allen H. Dutoit “Object-Oriented Software Engineering – Using UML, Patterns and Java” 2

Overview Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box

Overview Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – – – Unit Test Integration Test System Test Acceptance Test Regression Test • Practical Considerations 3

Static and dynamic V&V Static verification Requirements specification Architecture Detailed design Implementation V 1

Static and dynamic V&V Static verification Requirements specification Architecture Detailed design Implementation V 1 Implementation V 2 Prototype Dynamic V &V Special cases • Executable specifications • Animation of formal specs 4

Program testing • Can reveal the presence of errors NOT their absence – Only

Program testing • Can reveal the presence of errors NOT their absence – Only exhaustive testing can show a program is free from defects. However, exhaustive testing for any but trivial programs is impossible • A successful test is a test which discovers one or more errors • Should be used in conjunction with static verification • Run all tests after modifying a system 5 ©Ian Sommerville 1995

Testing in the V-Model te te Wri sts Detailed Design Module implementation Customer Developer

Testing in the V-Model te te Wri sts Detailed Design Module implementation Customer Developer System test Integration test Unit tests Architectural Design Acceptance test Run Requirements Functional (BB) Structural (WB) 6

Testing stages • Unit testing – Testing of individual components • Integration testing –

Testing stages • Unit testing – Testing of individual components • Integration testing – Testing to expose problems arising from the combination of components • System testing – Testing the complete system prior to delivery • Acceptance testing – Testing by users to check that the system satisfies requirements. Sometimes called alpha testing 7

Types of testing • Statistical testing – Tests designed to reflect the frequency of

Types of testing • Statistical testing – Tests designed to reflect the frequency of user inputs. Used for reliability estimation. – Covered in section on Software reliability. • Defect testing – Tests designed to discover system defects. – A successful defect test is one which reveals the presence of defects in a system. 8 ©Ian Sommerville 1995

Some Terminology – Failure • A failure is said to occur whenever the external

Some Terminology – Failure • A failure is said to occur whenever the external behavior does not conform to system spec. – Error • An error is a state of the system which, in the absence of any corrective action, could lead to a failure. – Fault • An adjudged cause of an error. 9

Some Terminology It is there in the program… fault, bug, error, defect Fault Program

Some Terminology It is there in the program… fault, bug, error, defect Fault Program state Error Observed Failure 10

Testing Activities Subsystem Code Unit Tested Subsystem Requirements Analysis Document System Design Document Integration

Testing Activities Subsystem Code Unit Tested Subsystem Requirements Analysis Document System Design Document Integration Test Integrated Subsystems Functional Test User Manual Functioning System Tested Subsystem Code Unit Test All tests by developer 11

Testing Activities continued Global Requirements Validated Functioning System Performance. System Test Client’s Understanding of

Testing Activities continued Global Requirements Validated Functioning System Performance. System Test Client’s Understanding of Requirements Accepted System Acceptance Tests by client Tests by developer User Environment Installation Test Usable System User’s understanding Tests (? ) by user System in Use 12

Overview • Basics of Testing & Debugging Activities • Testing Strategies – Black-Box Testing

Overview • Basics of Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – – – Unit Test Integration Test System Test Acceptance Test Regression Test • Practical Considerations 13

Testing and debugging • Defect testing and debugging are distinct processes • Defect testing

Testing and debugging • Defect testing and debugging are distinct processes • Defect testing is concerned with confirming the presence of errors • Debugging is concerned with locating and repairing these errors • Debugging involves formulating a hypothesis about program behaviour then testing these hypotheses to find the system error 14 ©Ian Sommerville 1995

Debugging Activities Locate error & fault Design fault repair Repair fault Re-test program 15

Debugging Activities Locate error & fault Design fault repair Repair fault Re-test program 15 ©Ian Sommerville 1995

Testing Activities Identify Test conditions (“What”): an item or event to be verified. Design

Testing Activities Identify Test conditions (“What”): an item or event to be verified. Design How the “what” can be tested: realization Build test cases (imp. scripts, data) Run the system Execute Test case outcome with Compare expected outcome Test result 16

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies Black-Box

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies Black-Box Testing – White-Box Testing • Testing in the Development Process – – – Unit Test Integration Test System Test Acceptance Test Regression Test • Practical Considerations 24

Goodness of test cases • Exec. of a test case against a program P

Goodness of test cases • Exec. of a test case against a program P – Covers certain requirements of P; – Covers certain parts of P’s functionality; – Covers certain parts of P’s internal logic. Idea of coverage guides test case selection. 25

Black-box Testing • Focus: I/O behavior. If for any given input, we can predict

Black-box Testing • Focus: I/O behavior. If for any given input, we can predict the output, then the module passes the test. – Almost always impossible to generate all possible inputs ("test cases") • Goal: Reduce number of test cases by equivalence partitioning: – Divide input conditions into equivalence classes – Choose test cases for each equivalence class. (Example: If an object is supposed to accept a negative number, testing one negative number is enough) 26

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing White-Box Testing • Testing in the Development Process – – – Unit Test Integration Test System Test Acceptance Test Regression Test • Practical Considerations 27

White-box Testing • Statement Testing (Algebraic Testing): Test single statements (Choice of operators in

White-box Testing • Statement Testing (Algebraic Testing): Test single statements (Choice of operators in polynomials, etc) • Loop Testing: – Cause execution of the loop to be skipped completely. (Exception: Repeat loops) – Loop to be executed exactly once – Loop to be executed more than once • Path testing: – Make sure all paths in the program are executed • Branch Testing (Conditional Testing): Make sure that each possible outcome from a condition is tested at least once if ( i = TRUE) printf("YESn"); else printf("NOn"); Test cases: 1) i = TRUE; 2) i = FALSE 28

Code Coverage • Statement coverage – Elementary statements: assignment, I/O, call – Select a

Code Coverage • Statement coverage – Elementary statements: assignment, I/O, call – Select a test set T such that by executing P in all cases in T, each statement of P is executed at least once. – read(x); read(y); if x > 0 then write(“ 1”); else write(“ 2”); if y > 0 then write(“ 3”); else write(“ 4”); – T: {<x = -13, y = 51>, <x = 2, y = -3>} 29

White-box Testing: Determining the Paths Find. Mean (FILE Score. File) { float Sum. Of.

White-box Testing: Determining the Paths Find. Mean (FILE Score. File) { float Sum. Of. Scores = 0. 0; int Number. Of. Scores = 0; 1 float Mean=0. 0; float Score; Read(Score. File, Score); 2 while (! EOF(Score. File) { 3 if (Score > 0. 0 ) { Sum. Of. Scores = Sum. Of. Scores + Score; Number. Of. Scores++; } 5 Read(Score. File, Score); 4 6 } /* Compute the mean and print the result */ 7 if (Number. Of. Scores > 0) { Mean = Sum. Of. Scores / Number. Of. Scores; printf(“ The mean score is %fn”, Mean); } else printf (“No scores found in filen”); 9 } 8 30

Constructing the Logic Flow Diagram 31

Constructing the Logic Flow Diagram 31

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process Unit Test – Integration Test – System Test – Acceptance Test – Regression Test • Practical Considerations 32

Unit Testing Objective: Find differences between specified units and their imps. Unit: component (

Unit Testing Objective: Find differences between specified units and their imps. Unit: component ( module, function, class, objects, …) Unit test environment: Driver Test cases Unit under test Effectiveness? Test result Stub • Partitioning • Code coverage Dummy modules 33

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – Unit Test Integration Test – System Test – Acceptance Test – Regression Test • Practical Considerations 34

Integration Testing • Objectives: • To expose problems arising from the combination • To

Integration Testing • Objectives: • To expose problems arising from the combination • To quickly obtain a working solution from components. • Problem areas – Internal: between components • Invocation: call/message passing/… • Parameters: type, number, order, value • Invocation return: identity (who? ), type, sequence – External: • Interrupts (wrong handler? ) • I/O timing – Interaction 35

Integration Testing • Types of integration – Structural • “Big bang” no error localization

Integration Testing • Types of integration – Structural • “Big bang” no error localization • Bottom-up: terminal, driver/module, (driver module) • Top-down: top, stubs, (stub module), early demo – Behavioral • (next slide) 36

Integration Testing (Behavioral: Path-Based) A B C MM-path: Interleaved sequence of module exec path

Integration Testing (Behavioral: Path-Based) A B C MM-path: Interleaved sequence of module exec path and messages Module exec path: entry-exit path in the same module Atomic System Function: port input, … {MM-paths}, … port output Test cases: exercise ASFs 37

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – Unit Test – Integration Test System Test – Acceptance Test – Regression Test • Practical Considerations 38

System Testing • Concerns with the app’s externals • Much more than functional –

System Testing • Concerns with the app’s externals • Much more than functional – Load/stress testing – Usability testing – Performance testing – Resource testing 39

System Testing • Functional testing – Objective: Assess whether the app does what it

System Testing • Functional testing – Objective: Assess whether the app does what it is supposed to do – Basis: Behavioral/functional specification – Test case: A sequence of ASFs (thread) 40

System Testing • Functional testing: coverage • Event-based coverage – – – PI 1:

System Testing • Functional testing: coverage • Event-based coverage – – – PI 1: each port input event occurs PI 2: common sequences of port input event occurs PI 3: each port input in every relevant data context PI 4: for a given context, all possible input events PO 1: each port output event PO 2: each port output event occurs for each cause • Data-based – DM 1: Exercise cardinality of every relationship – DM 2: Exercise (functional) dependencies among relationships 41

System Testing • Stress testing: push it to its limit + beyond Volume Users

System Testing • Stress testing: push it to its limit + beyond Volume Users : Application (System) response rate Resources: phy. + logical 42

System Testing • Performance testing – Performance seen by • users: delay, throughput •

System Testing • Performance testing – Performance seen by • users: delay, throughput • System owner: memory, CPU, comm – Performance • Explicitly specified or expected to do well • Unspecified find the limit • Usability testing – Human element in system operation • GUI, messages, reports, … 43

Test Stopping Criteria • Meet deadline, exhaust budget, … management • Achieved desired coverage

Test Stopping Criteria • Meet deadline, exhaust budget, … management • Achieved desired coverage • Achieved desired level failure intensity 44

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – Unit Test – Integration Test – System Test Acceptance Test – Regression Test • Practical Considerations 45

Acceptance Testing • • Purpose: ensure that end users are satisfied Basis: user expectations

Acceptance Testing • • Purpose: ensure that end users are satisfied Basis: user expectations (documented or not) Environment: real Performed: for and by end users (commissioned projects) • Test cases: – May reuse from system test – Designed by end users 46

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – Unit Test – Integration Test – System Test – Acceptance Test Regression Test • Practical Considerations 47

Regression Testing • Whenever a system is modified (fixing a bug, adding functionality, etc.

Regression Testing • Whenever a system is modified (fixing a bug, adding functionality, etc. ), the entire test suite needs to be rerun – Make sure that features that already worked are not affected by the change • Automatic re-testing before checking in changes into a code repository • Incremental testing strategies for big systems 48

Comparison of White & Black-box Testing 25. 1. 2002 • White-box Testing: – Potentially

Comparison of White & Black-box Testing 25. 1. 2002 • White-box Testing: – Potentially infinite number of paths have to be tested – White-box testing often tests what is done, instead of what should be done – Cannot detect missing use cases • Black-box Testing: – Potential combinatorical explosion of test cases (valid & invalid data) – Often not clear whether the selected test cases uncover a particular error – Does not discover extraneous use cases ("features") • Both types of testing are needed • White-box testing and black box testing are the extreme ends of a testing continuum. • Any choice of test case lies in between and depends on the following: – – Number of possible logical paths Nature of input data Amount of computation Complexity of algorithms and data structures 49

The 4 Testing Steps 1. Select what has to be measured – Analysis: Completeness

The 4 Testing Steps 1. Select what has to be measured – Analysis: Completeness of requirements – Design: tested for cohesion – Implementation: Code tests 2. Decide how the testing is done – – Code inspection Proofs (Design by Contract) Black-box, white box, Select integration testing strategy (big bang, bottom up, top down, sandwich) 3. Develop test cases – A test case is a set of test data or situations that will be used to exercise the unit (code, module, system) being tested or about the attribute being measured 4. Create the test oracle – An oracle contains of the predicted results for a set of test cases – The test oracle has to be written down before the actual testing takes place 50

Guidance for Test Case Selection • Use analysis knowledge about functional requirements (black-box testing):

Guidance for Test Case Selection • Use analysis knowledge about functional requirements (black-box testing): – Use cases – Expected input data – Invalid input data • Use design knowledge about system structure, algorithms, data structures (white-box testing): • Use implementation knowledge about algorithms: – Examples: – Force division by zero – Use sequence of test cases for interrupt handler – Control structures • Test branches, loops, . . . – Data structures • Test records fields, arrays, . . . 51

Unit-testing Heuristics 1. Create unit tests as soon as object design is completed: –

Unit-testing Heuristics 1. Create unit tests as soon as object design is completed: – Black-box test: Test the use cases & functional model – White-box test: Test the dynamic model – Data-structure test: Test the object model 2. Develop the test cases – Goal: Find the minimal number of test cases to cover as many paths as possible 3. Cross-check the test cases to eliminate duplicates – Don't waste your time! 4. Desk check your source code – Reduces testing time 5. Create a test harness – Test drivers and test stubs are needed for integration testing 6. Describe the test oracle – Often the result of the first successfully executed test 7. Execute the test cases – Don’t forget regression testing – Re-execute test cases every time a change is made. 8. Compare the results of the test with the test oracle – Automate as much as possible 52

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies –

Overview • Basics of Testing • Testing & Debugging Activities • Testing Strategies – Black-Box Testing – White-Box Testing • Testing in the Development Process – – – Unit Test Integration Test System Test Acceptance Test Regression Test • Practical Considerations 53