1 Program Testing (Continued) (Lecture 15) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.

Slides:



Advertisements
Similar presentations
Object Oriented Analysis And Design-IT0207 iiI Semester
Advertisements

Testing Relational Database
Defect testing Objectives
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 11: Integration- and System Testing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 23 Slide 1 Software testing.
Illinois Institute of Technology
Testing an individual module
Software Testing. “Software and Cathedrals are much the same: First we build them, then we pray!!!” -Sam Redwine, Jr.
Chapter 11: Testing The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite execution.
Types and Techniques of Software Testing
Software Testing Content Essence Terminology Classification –Unit, System … –BlackBox, WhiteBox Debugging IEEE Standards.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Software Life Cycle Model
1 Software Testing Techniques CIS 375 Bruce R. Maxim UM-Dearborn.
Software Testing Sudipto Ghosh CS 406 Fall 99 November 9, 1999.
Software Testing Verification and validation planning Software inspections Software Inspection vs. Testing Automated static analysis Cleanroom software.
System/Software Testing
Introduction to Software Engineering
ECE 355: Software Engineering
Software Testing.
TESTING.
CS 501: Software Engineering Fall 1999 Lecture 16 Verification and Validation.
CMSC 345 Fall 2000 Unit Testing. The testing process.
Software Testing Testing principles. Testing Testing involves operation of a system or application under controlled conditions & evaluating the results.
Lecture 11 Testing and Debugging SFDV Principles of Information Systems.
1 Software testing. 2 Testing Objectives Testing is a process of executing a program with the intent of finding an error. A good test case is in that.
Testing Basics of Testing Presented by: Vijay.C.G – Glister Tech.
Software Testing Testing types Testing strategy Testing principles.
Software Development Software Testing. Testing Definitions There are many tests going under various names. The following is a general list to get a feel.
Black-box Testing.
Software Construction Lecture 18 Software Testing.
White-box Testing.
1 Program Testing (Lecture 14) Prof. R. Mall Dept. of CSE, IIT, Kharagpur.
What is Testing? Testing is the process of finding errors in the system implementation. –The intent of testing is to find problems with the system.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Integration testing Integrate two or more module.i.e. communicate between the modules. Follow a white box testing (Testing the code)
CS451 Lecture 10: Software Testing Yugi Lee STB #555 (816)
1 Software Testing Strategies: Approaches, Issues, Testing Tools.
Software Quality Assurance and Testing Fazal Rehman Shamil.
 Software Testing Software Testing  Characteristics of Testable Software Characteristics of Testable Software  A Testing Life Cycle A Testing Life.
Dynamic Testing.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Testing Overview Software Reliability Techniques Testing Concepts CEN 4010 Class 24 – 11/17.
System Testing 12/09. Hierarchy of Testing Testing Program Testing Top Down Bottom Up Integration TestingUnit Testing System Testing Big Bang Sandwich.
Integration testing After different modules of a system have been coded and unit tested: –modules are integrated in steps according to an integration plan.
CS 325: Software Engineering February 16, 2016 Designing a Design Class Diagram Design Class Diagrams DCD: Restaurant Example DCD: ATM Example Software.
SOFTWARE TESTING. SOFTWARE Software is not the collection of programs but also all associated documentation and configuration data which is need to make.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
ANOOP GANGWAR 5 TH SEM SOFTWARE TESTING MASTER OF COMPUTER APPLICATION-V Sem.
Defect testing Testing programs to establish the presence of system defects.
Software Testing Strategies for building test group
Software Testing.
Testing the System.
Integration Testing.
Software Testing.
Software Testing Techniques
Chapter 13 & 14 Software Testing Strategies and Techniques
Structural testing, Path Testing
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software testing strategies 2
Lecture 09:Software Testing
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Software Testing “If you can’t test it, you can’t design it”
Chapter 11: Integration- and System Testing
UNIT-4 BLACKBOX AND WHITEBOX TESTING
Software Testing Strategies
Presentation transcript:

1 Program Testing (Continued) (Lecture 15) Prof. R. Mall Dept. of CSE, IIT, Kharagpur

2 Organization of this Lecture: ● Review of last lecture. ● Data flow testing ● Mutation testing ● Cause effect graphing ● Performance testing. ● Test summary report ● Summary

3 Data Flow-Based Testing ● Selects test paths of a program: – According to the locations of ● Definitions and uses of different variables in a program.

4 Data Flow-Based Testing ● For a statement numbered S, – DEF(S) = {X/statement S contains a definition of X} – USES(S)= {X/statement S contains a use of X} – Example: 1: a=b; DEF(1)={a}, USES(1)={b}. – Example: 2 : a=a+b; DEF(1)={a}, USES(1)={a,b}.

5 Data Flow-Based Testing ● A variable X is said to be live at statement S1, if – X is defined at a statement S: – There exists a path from S to S1 not containing any definition of X.

6 DU Chain Example 1 X(){ 2 a=5; /* Defines variable a */ 3 While(C1) { 4 if (C2) 5 b=a*a; /*Uses variable a */ 6 a=a-1; /* Defines variable a */ 7 } 8 print(a); } /*Uses variable a */

7 Definition-use chain (DU chain) ● [X,S,S1], – S and S1 are statement numbers, – X in DEF(S) – X in USES(S1), and – the definition of X in the statement S is live at statement S1.

8 Data Flow-Based Testing ● One simple data flow testing strategy: – Every DU chain in a program be covered at least once. ● Data flow testing strategies: – Useful for selecting test paths of a program containing nested if and loop statements.

9 ● 1 X(){ ● 2 B1; /* Defines variable a */ ● 3 While(C1) { ● 4 if (C2) ● 5 if(C4) B4; /*Uses variable a */ ● 6 else B5; ● 7 else if (C3) B2; ● 8 else B3; } ● 9 B6 } Data Flow-Based Testing

10 Data Flow-Based Testing ● [a,1,5]: a DU chain. ● Assume: – DEF(X) = {B1, B2, B3, B4, B5} – USED(X) = {B2, B3, B4, B5, B6} – There are 25 DU chains. ● However only 5 paths are needed to cover these chains.

11 Mutation Testing ● The software is first tested: – using an initial testing method based on white-box strategies we already discussed. ● After the initial testing is complete, – mutation testing is taken up. ● The idea behind mutation testing: – make a few arbitrary small changes to a program at a time.

12 Mutation Testing ● Each time the program is changed, – it is called a mutated program – the change is called a mutant.

13 Mutation Testing ● A mutated program: – tested against the full test suite of the program. ● If there exists at least one test case in the test suite for which: – a mutant gives an incorrect result, – then the mutant is said to be dead.

14 Mutation Testing ● If a mutant remains alive: – even after all test cases have been exhausted, – the test suite is enhanced to kill the mutant. ● The process of generation and killing of mutants: – can be automated by predefining a set of primitive changes that can be applied to the program.

15 Mutation Testing ● The primitive changes can be: – altering an arithmetic operator, – changing the value of a constant, – changing a data type, etc.

16 Mutation Testing ● A major disadvantage of mutation testing: – computationally very expensive, – a large number of possible mutants can be generated.

17 Cause and Effect Graphs ● Testing would be a lot easier: – if we could automatically generate test cases from requirements. ● Work done at IBM: – Can requirements specifications be systematically used to design functional test cases?

18 Cause and Effect Graphs ● Examine the requirements: – restate them as logical relation between inputs and outputs. – The result is a Boolean graph representing the relationships ● called a cause-effect graph.

19 Cause and Effect Graphs ● Convert the graph to a decision table: – Each column of the decision table corresponds to a test case for functional testing.

20 Steps to Create Cause- Effect Graph ● Study the functional requirements. ● Mark and number all causes and effects. ● Numbered causes and effects: – become nodes of the graph.

21 Steps to Create Cause- Effect Graph ● Draw causes on the LHS ● Draw effects on the RHS ● Draw logical relationship between causes and effects – as edges in the graph. ● Extra nodes can be added – to simplify the graph

22 Drawing Cause-Effect Graphs AB If A then B A B If (A and B)then C C

23 Drawing Cause-Effect Graphs A B If (A or B)then C C A B If (not(A and B))then C C

24 Drawing Cause-Effect Graphs A B If (not (A or B))then C C AB If (not A) then B

25 Cause effect graph- Example ● A water level monitoring system – used by an agency involved in flood control. – Input: level(a,b) ● a is the height of water in dam in meters ● b is the rainfall in the last 24 hours in cms

26 Cause effect graph- Example ● Processing – The function calculates whether the level is safe, too high, or too low. ● Output – message on screen ● level=safe ● level=high ● invalid syntax

27 Cause effect graph- Example ● We can separate the requirements into 5 clauses: – first five letters of the command is “level” – command contains exactly two parameters ● separated by comma and enclosed in parentheses

28 Cause effect graph- Example ● Parameters A and B are real numbers: – such that the water level is calculated to be low – or safe. ● The parameters A and B are real numbers: – such that the water level is calculated to be high.

29 Cause effect graph- Example – Command is syntactically valid – Operands are syntactically valid.

30 Cause effect graph- Example ● Three effects – level = safe – level = high – invalid syntax

31 Cause effect graph- Example 10 E3 11 E1 E

32 Cause effect graph- Decision table Cause 1 Cause 2 Cause 3 Cause 4 Cause 5 Effect 1 Effect 2 Effect 3 Test 1Test 2 Test 3Test 4Test 5 III I I I I SI X S S SS S PP S I S A AA AA P PP A A A AA X X X X X X I

33 Cause effect graph- Example ● Put a row in the decision table for each cause or effect: – in the example, there are five rows for causes and three for effects.

34 Cause effect graph- Example ● The columns of the decision table correspond to test cases. ● Define the columns by examining each effect: – list each combination of causes that can lead to that effect. ● We can determine the number of columns of the decision table – by examining the lines flowing into the effect nodes of the graph.

35 Cause effect graph- Example ● Theoretically we could have generated 25=32 test cases. – Using cause effect graphing technique reduces that number to 5. ● Not practical for systems which: – include timing aspects – feedback from processes is used for some other processes.

36 Testing ● Unit testing: – test the functionalities of a single module or function. ● Integration testing: – test the interfaces among the modules. ● System testing: – test the fully integrated system against its functional and non-functional requirements.

37 Integration testing ● After different modules of a system have been coded and unit tested: – modules are integrated in steps according to an integration plan – partially integrated system is tested at each integration step.

38 System Testing ● System testing: – Validate a fully developed system against its requirements.

39 Integration Testing ● Develop the integration plan by examining the structure chart : – big bang approach – top-down approach – bottom-up approach – mixed approach

40 Example Structured Design root Get-good-dataCompute-solutionDisplay-solution Get-data Validate-data Valid-numbers rms

41 Big bang Integration Testing ● Big bang approach is the simplest integration testing approach: – all the modules are simply put together and tested. – this technique is used only for very small systems.

42 Big bang Integration Testing ● Main problems with this approach: – If an error is found: ● It is very difficult to localize the error ● The error may potentially belong to any of the modules being integrated. – Debugging errors found during big bang integration testing are very expensive to fix.

43 Bottom-up Integration Testing ● Integrate and test the bottom level modules first. ● A disadvantage of bottom-up testing: – When the system is made up of a large number of small subsystems. ● This extreme case corresponds to the big bang approach.

44 Top-down integration testing ● Top-down integration testing starts with the main routine: – and one or two subordinate routines in the system. ● After the top-level 'skeleton’ has been tested: – Immediate subordinate modules of the 'skeleton’ are combined with it and tested.

45 Mixed integration testing ● Mixed (or sandwiched) integration testing: – Uses both top-down and bottom- up testing approaches. – Most common approach

46 Integration Testing ● In top-down approach: – testing waits till all top-level modules are coded and unit tested. ● In bottom-up approach: – testing can start only after bottom level modules are ready.

47 Phased versus Incremental Integration Testing ● Integration can be incremental or phased. ● In incremental integration testing, – only one new module is added to the partial system each time.

48 Phased versus Incremental Integration Testing ● In phased integration, – A group of related modules are added to the partially integrated system each time. ● Big-bang testing: – A degenerate case of the phased integration testing.

49 Phased versus Incremental Integration Testing ● Phased integration requires less number of integration steps: – compared to the incremental integration approach. ● However, when failures are detected, – it is easier to debug if using incremental testing ● since errors are very likely to be in the newly integrated module.

50 System Testing ● System tests are designed to validate a fully developed system: – To assure that it meets its requirements.

51 System Testing ● There are three main kinds of system testing: – Alpha Testing – Beta Testing – Acceptance Testing

52 Alpha testing ● System testing is carried out – by the test team within the developing organization.

53 Beta Testing ● Beta testing is the system testing: – performed by a select group of friendly customers.

54 Acceptance Testing ● Acceptance testing is the system testing performed by the customer – to determine whether he should accept the delivery of the system.

55 System Testing ● During system testing: – Functional requirements are validated through functional tests. – Non-functional requirements validated through performance tests.

56 Performance Testing ● Addresses non-functional requirements. – May sometimes involve testing hardware and software together. – There are several categories of performance testing.

57 Stress testing ● Evaluates system performance – when stressed for short periods of time. ● Stress testing – also known as endurance testing.

58 Stress testing ● Stress tests are black box tests: – Designed to impose a range of abnormal and even illegal input conditions – So as to stress the capabilities of the software.

59 Stress Testing ● If the requirements is to handle a specified number of users, or devices: – Stress testing evaluates system performance when all users or devices are busy simultaneously.

60 Stress Testing ● If an operating system is supposed to support 15 multiprogrammed jobs, – The system is stressed by attempting to run 15 or more jobs simultaneously. ● A real-time system might be tested – To determine the effect of simultaneous arrival of several high- priority interrupts.

61 Stress Testing ● Stress testing usually involves an element of time or size, – Such as the number of records transferred per unit time, – The maximum number of users active at any time, input data size, etc. ● Therefore stress testing may not be applicable to many types of systems.

62 Volume Testing ● Addresses handling large amounts of data in the system: – Whether data structures (e.g. queues, stacks, arrays, etc.) are large enough to handle all possible situations. – Fields, records, and files are stressed to check if their size can accommodate all possible data volumes.

63 Configuration Testing ● Analyze system behavior: – in various hardware and software configurations specified in the requirements – sometimes systems are built in various configurations for different users – for instance, a minimal system may serve a single user, ● other configurations for additional users.

64 Compatibility Testing ● These tests are needed when the system interfaces with other systems: – Check whether the interface functions as required.

65 Compatibility testing Example ● If a system is to communicate with a large database system to retrieve information: – A compatibility test examines speed and accuracy of retrieval.

66 Recovery Testing ● These tests check response to: – Presence of faults or to the loss of data, power, devices, or services – Subject system to loss of resources ● Check if the system recovers properly.

67 Maintenance Testing ● Diagnostic tools and procedures : – help find source of problems. – It may be required to supply ● memory maps ● diagnostic programs ● traces of transactions, ● circuit diagrams, etc.

68 Maintenance Testing ● Verify that: – all required artifacts for maintenance exist – they function properly

69 Documentation tests ● Check that required documents exist and are consistent: – user guides, – maintenance guides, – technical documents

70 Documentation tests ● Sometimes requirements specify: – Format and audience of specific documents – Documents are evaluated for compliance

71 Usability tests ● All aspects of user interfaces are tested: – Display screens – messages – report formats – navigation and selection problems

72 Environmental test ● These tests check the system’s ability to perform at the installation site. ● Requirements might include tolerance for – heat – humidity – chemical presence – portability – electrical or magnetic fields – disruption of power, etc.

73 Test Summary Report ● Generated towards the end of testing phase. ● Covers each subsystem: – A summary of tests which have been applied to the subsystem.

74 Test Summary Report ● Specifies: – how many tests have been applied to a subsystem, – how many tests have been successful, – how many have been unsuccessful, and the degree to which they have been unsuccessful, ● e.g. whether a test was an outright failure ● or whether some expected results of the test were actually observed.

75 Regression Testing ● Does not belong to either unit test, integration test, or system test. – In stead, it is a separate dimension to these three forms of testing.

76 Regression testing ● Regression testing is the running of test suite: – after each change to the system after each bug fix. – Ensures that no new bug has been introduced due to the change or the bug fix.

77 Regression testing ● Regression tests assure: – the new system’s performance is at least as good as the old system. – Always used during incremental system development.

78 Summary ● We discussed two additional white box testing methodologies: – data flow testing – mutation testing

79 Summary ● Data flow testing: – derive test cases based on definition and use of data ● Mutation testing: – make arbitrary small changes – see if the existing test suite detect these – if not, augment test suite

80 Summary ● Cause-effect graphing: – can be used to automatically derive test cases from the SRS document. – Decision table derived from cause-effect graph – each column of the decision table forms a test case

81 Summary ● Integration testing: – Develop integration plan by examining the structure chart: ● big bang approach ● top-down approach ● bottom-up approach ● mixed approach

82 Summary: System testing ● Functional test ● Performance test ● stress ● volume ● configuration ● compatibility ● maintenance