Software Verification, Validation and Testing

Preview:

DESCRIPTION

The Implementation of Control Flow Graph and Test Cases

Citation preview

The Implementation of

Control Flow Graph

and Test Cases submitted in partial fulfillment of the requirements

for software verification, validation and testing of

Master of Engineering

In

Software Engineering

Submitted to: Submitted by:

Mr. Ajay Kumar Sukhpal Singh

AP (CSED) 801131024

Computer Science & Engineering Department

THAPAR UNIVERSITY, PATIALA (Formerly known as Thapar Institute of Engg. & Tech.)

(Established under section 3 of UGC Act, 1956 vide notification # F-12/84-U.3 of Government of India)

TO WHOM IT MAY CONCERN

7th

May, 2012

I hereby declare that, Sukhpal Singh, Roll No. 801131024 of Thapar University Patiala, have

undergone a project from 2nd

January to 7th

May, 2012. I worked on ‘Implementation of

Control Flow Graph’ project during the software verification, validation and testing lab under

the supervision of project guide Mr. Ajay Kumar. It is my heartfelt pleasure and deepest sense

of gratitude to offer my humble and sincere thanks towards Mr. Ajay Kumar, my project guide,

for his valuable and constant assistance, cooperation, and incisive criticism in my work towards

my goal.

Student’s Signatures Signature of Project Guide

TABLE OF CONTENTS

1. Control Flow…………………………………………………………….1

2. Control Flow Graph…………………………………………………….1

3. Control Flow Diagram…………………………………………………..1

4. Browsing…………………………………………………………………2

5. Test Cases………………………………………………………………..5

5.1 For Loop……………………………………………………………..5

5.2 If………………………………………………………………………7

5.3 If-else-for……………………………………………………………..9

5.4 Nested if……………………………………………………………..11

5.5 If-for…………………………………………………………………13

5.6 If with two conditions……………………………………………….15

5.7 Switch case…………………………………………………………...17

6. Test Cases………………………………………………………………..19

1

1. Control Flow:

In computer science, control flow (or alternatively, flow of control) refers to the order in

which the individual statements, instructions or function calls of an imperative or a

declarative program are executed or evaluated. Within an imperative programming language,

a control flow statement is a statement whose execution results in a choice being made as to

which of two or more paths should be followed. For non-strict functional languages,

functions and language constructs exist to achieve the same result, but they are not

necessarily called control flow statements.

The kinds of control flow statements supported by different languages vary, but can be

categorized by their effect:

continuation at a different statement (unconditional branch or jump),

executing a set of statements only if some condition is met (choice - i.e., conditional

branch),

executing a set of statements zero or more times, until some condition is met (i.e.,

loop - the same as conditional branch),

executing a set of distant statements, after which the flow of control usually returns

(subroutines, coroutines, and continuations),

Stopping the program, preventing any further execution (unconditional halt).

Interrupts and signals are low-level mechanisms that can alter the flow of control in a way

similar to a subroutine, but usually occur as a response to some external stimulus or event

(that can occur asynchronously), rather than execution of an 'in-line' control flow statement.

Self-modifying code can also be used to affect control flow through its side effects, but does

not usually involve an explicit control flow statement.

At the level of machine or assembly language, control flow instructions usually work by

altering the program counter. For some CPUs the only control flow instructions available are

conditional or unconditional branch instructions (also called jumps).

2. Control flow Graph:

In a control flow graph each node in the graph represents a basic block, i.e. a straight-line

piece of code without any jumps or jump targets; jump targets start a block, and jumps end a

block. Directed edges are used to represent jumps in the control flow. There are, in most

presentations, two specially designated blocks: the entry block, through which control enters

into the flow graph, and the exit block, through which all control flow leaves.

3. Control Flow Diagram:

A control flow diagram (CFD) is a diagram to describe the control flow of a business process,

process or program. A control flow diagram can consist of a subdivision to show sequential

steps, with if-then-else conditions, repetition, and/or case conditions. Suitably annotated

geometrical figures are used to represent operations, data, or equipment, and arrows are used

to indicate the sequential flow from one to another.

2

4. Browsing:

First of all we have to browse a file from the system by click on the browse that is displaying

on a main page. The main page has three sections

Program: Which the user has to be browsed.

Control flow graph: This is diagrammatic representation of the program with the

help of nodes and edges to calculate the cyclomatic complexity of program.

Linear Independent Paths: These are different possible paths from starting of

control to the end of the program.

Nodes: Displaying the total nodes of a browsed program.

There are two buttons are available on main page.

Browse file: It is used to browse the file from system.

Show Graph: It is used to display the control flow graph of browsed program.

Figure 1: Screenshot of main page

Step 1: Click on “browse file” then it displays a new window for browsing.

3

Figure 2: Screenshot of browsing a file

Step 2: Select an appropriate file.

Step 3: Click on “open” then program will be browsed and displayed on main page.

Figure 3: Screenshot of browsed program

4

Step 4: Click on “show graph” then control flow graph, node and linearly independent paths

will be displayed on main page.

Figure 4: Screenshot of displayed CFG

This program works for:

For loop

If statement

If - else – for

For - if

Nested if

If statement (with two conditions)

Switch case

5

5. Test Cases:

5.1 Program: For Loop

main()

{

int i;

for(i=0;i<=3;i++)

{

print i;

}

}

Control Flow Graph 1:

Figure 5: CFG for For loop

6

Screenshot 1:

Figure 6: Screenshot of CFG for For loop

7

5.2 Program: If (Alterations)

main()

{

int a, b;

if(a<=b)

{

print a;

}

else

{

print b;

}

}

Control Flow Graph 2:

Figure 7: CFG for If

8

Screenshot 2:

Figure 8: Screenshot of CFG for If

9

5.3 Program: If - else - for

main()

{

if (a<=b)

Print a;

else

for(i=0;i<=3;i++)

{

print i;

}

}

Control Flow Graph 3:

Figure 9: CFG for If – else- for

10

Screenshot 3:

Figure 10: Screenshot of CFG for If – else- for

11

5.4 Program: Nested if

main()

{

int a, b;

if(a<=b)

{

if(a<=b)

{ print a;

}

else

{ print b;

}

}

else

{

print b;

}

}

Control Flow Graph 4:

Figure 11: CFG for Nested if

12

Screenshot 4:

Figure 12: Screenshot of CFG for Nested if

13

5.5 Program: If-for

main()

{

int a,b,i;

if (a<=b)

{

for(i=0;i<=3;i++)

{

print i;

}

}

}

Control Flow Graph 5:

Figure 13: CFG for if-for

14

Screenshot 5:

Figure 14: Screenshot of CFG for if-for

15

5.6 Program: If with two conditions

main()

{

int a, b;

if(a<b && a==b)

{

print a;

}

else

{

print b;

}

}

Control Flow Graph 6:

Figure 15: CFG for If with two conditions

16

Screenshot 6:

Figure 16: Screenshot of CFG for If with two conditions

17

5.7 Program: Switch Case

void main()

{

int i=10;

switch(i)

{

case 1:

print i++;

break;

case 2:

print i--;

break;

default:

print i;

}

}

Control Flow Graph 7:

18

Figure 17: CFG for switch

Screenshot 7:

Figure 18: Screenshot of CFG for switch

19

6. Test Cases

1. To generate the test cases by applying various testing methods to the switch case

program.

CASES (i): 1<= i<=5

1. View marks

2. Update marks

3. Add marks

4. Delete marks

5. Find marks

Marks (m): 0<=m<=100

Roll_No. (r): 1<=r<=30

A) Equivalence Class Testing Methods:

1. Weak Normal Equivalence Class Testing:

Test Case Options(i) Marks(m) Roll_No.(r)

T1 3 15 60

2. Strong Normal Equivalence Class Testing:

The test case of this class is same as weak normal equivalence class testing

because there are no any subintervals (No equivalence class).

3. Weak Robust Equivalence Class Testing:

Test Case Options(i) Roll_No.(r) Marks(m)

T2 0 15 60

T3 6 15 60

T4 3 0 60

T5 3 31 60

T6 3 15 -1

T7 3 15 101

4. Strong Robust Equivalence Class Testing:

Test Case Options(i) Roll_No.(r) Marks(m)

T10 0 0 60

T11 6 31 60

T12 0 15 -1

T13 6 15 101

T14 3 0 -1

T15 3 31 101

20

T16 0 0 -1

T17 6 31 101

5. Robust Mixed Equivalence Class Testing: Combine invalid values with other

valid values.

Test Cases= Max (1, 1, 1) + 6 = 7

[-∞, 1) (5, ∞] =2

[-∞, 1) (30, ∞)= 2

[-∞, 0) (100, ∞]= 2

Test Case Options(i) Roll_No.(r) Marks(m)

T1 3 15 60

T2 0 0 -1

T3 0 0 101

T4 0 31 -1

T5 0 31 101

T6 6 0 -1

T7 6 0 101

T8 6 31 -1

T9 6 31 101

B) Boundary Value Testing Methods:

6. Boundary Value Analysis:

Test Case Options(i) Roll_No.(r) Marks(m)

T1 3 15 0

T2 3 15 1

T3 3 15 60

T4 3 15 99

T5 3 15 100

T6 3 1 60

T7 3 2 60

T8 3 29 60

T9 3 30 60

T10 1 15 60

T11 2 15 60

T12 4 15 60

T13 5 15 60

21

7. Robustness Testing:

It includes min-, min, min+, nom, max-, max, max+ for any one variable and for

other variables, it takes only nominal value. It adds four more test cases in

boundary value analysis.

Test Case Options(i) Roll_No.(r) Marks(m)

T1 3 15 -1

T2 3 15 0

T3 3 15 1

T4 3 15 60

T5 3 15 99

T6 3 15 100

T7 3 15 101

T8 3 0 60

T9 3 1 60

T10 3 2 60

T11 3 29 60

T12 3 30 60

T13 3 31 60

T14 0 15 60

T15 1 15 60

T16 2 15 60

T17 4 15 60

T18 5 15 60

T19 6 15 60

8. Worst Case Testing: In this testing the cases are generated by making the valid

combinations ( min, min+, nom, max-, max,) of options, roll_no and marks,

basically it is a Cartesian product of i, m and r.

{imin}{rmin, rmin+, rnom, rmax-, rmax}{mmin, mmin+, mnom, mmax-,

mmax}=25

{imin+}{rmin, rmin+, rnom, rmax-, rmax}{mmin, mmin+, mnom, mmax-,

mmax}=25

{inom}{rmin, rmin+, rnom, rmax-, rmax}{mmin, mmin+, mnom, mmax-,

mmax}=25

{imax-}{rmin, rmin+, rnom, rmax-, rmax}{mmin, mmin+, mnom, mmax-,

mmax}=25

{imax}{rmin, rmin+, rnom, rmax-, rmax}{mmin, mmin+, mnom, mmax-,

mmax}=25

Total Test Cases= 25+25+25+25+25= 125

9. Robust Worst Case Testing: In this testing the cases are generated by making

the valid and invalid combinations (min-, min, min+, nom, max-, max,max+) of

options, roll_no and marks, basically it is a Cartesian product of i, m and r.

22

{imin-}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{imin}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{imin+}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{inom}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{imax-}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{imax}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

{imax+}{rmin-, rmin, rmin+, rnom, rmax-, rmax, rmax+}{mmin-, mmin, mmin+,

mnom, mmax-, mmax, mmax+}=49

Total Test Cases= 49*7= 343

10. Weak Diagonal In Boundary Value Testing:

Test Case Options(i) Roll_No.(r) Marks(m)

T1 1 1 0

T2 2 2 1

T3 3 15 60

T4 4 29 99

T5 5 30 100

11. Weak In Boundary Value Testing: (min, min+, nom, max-,max)

Test Case Options(i) Roll_No.(r) Marks(m)

T1 3 15 0

T2 3 15 1

T3 3 15 60

T4 3 15 99

T5 3 15 100

T6 3 1 60

T7 3 2 60

T8 3 29 60

T9 3 30 60

T10 1 15 60

T11 2 15 60

T12 4 15 60

T13 5 15 60

12. Weak Out Boundary Value Testing: (min-, min+, nom, max-,max+)

Test Case Options(i) Roll_No.(r) Marks(m)

23

T1 3 15 -1

T2 3 15 1

T3 3 15 60

T4 3 15 99

T5 3 15 101

T6 3 0 60

T7 3 2 60

T8 3 29 60

T9 3 31 60

T10 0 15 60

T11 2 15 60

T12 4 15 60

T13 6 15 60

13. Weak Simple Out Boundary Value Testing: (min-, min+, max-,max+)

Test Case Options(i) Roll_No.(r) Marks(m)

T1 3 15 -1

T2 3 15 1

T3 3 15 99

T4 3 15 101

T5 3 0 60

T6 3 2 60

T7 3 29 60

T8 3 31 60

T9 0 15 60

T10 2 15 60

T11 4 15 60

T12 6 15 60

14. Weak Simple Out Boundary Value Testing:

Test Case Options(i) Roll_No.(r) Marks(m)

T1 1 1 0

T2 1 1 100

T3 1 30 0

T4 1 30 100

T5 5 1 0

T6 5 1 100

T7 5 30 0

T8 5 30 100

T9 2 2 1

T10 2 2 99

T11 2 29 10

T12 2 29 99

T13 4 2 1

T14 4 2 99

T15 4 29 1

24

T16 4 29 99

T17 3 15 60

2. To generate the test cases by applying various testing methods to the insertion

sort program.

The Maximum number (M) user can enter = 50

The Range (R) of number that is entered by user = 1 to 1000

1<=M<=50 and 1<=R<=1000

A) Equivalence Class Testing Methods:

1. Weak Normal Equivalence Class Testing:

Test case Maximum number (M) Range (R)

T1 30 550

2. Strong Normal Equivalence Class Testing:

The test case of this class is same as weak normal equivalence class testing

because there are no any subintervals (No equivalence class).

3. Weak Robust Equivalence Class Testing:

Test case Maximum number (M) Range (R)

T2 0 550

T3 51 550

T4 25 0

T5 25 1001

4. Strong Robust Equivalence Class Testing:

Test case Maximum number (M) Range (R)

T6 0 0

T7 51 1001

5. Robust Mixed Equivalence Class Testing:

Max (1, 1) + 4= 5

[-∞, 1) (50, ∞] = 2 and [-∞, 1) (1000, ∞] = 2

Test case Maximum number (M) Range (R)

T1 25 550

T2 0 0

25

T3 0 1001

T4 51 0

T5 51 1001

B) Boundary Value Testing Methods:

6. Boundary Value Analysis:

Test Case Maximum number (M) Range (R)

T1 1 550

T2 2 550

T3 30 550

T4 49 550

T5 50 550

T6 30 1

T7 30 2

T8 30 999

T9 30 1000

7. Robustness Testing:

It includes min-, min, min+, nom, max-, max, max+ for any one variable and for

other variables, it takes only nominal value. It adds four more test cases in

boundary value analysis.

Test Case Maximum number (M) Range (R)

T1 0 550

T2 1 550

T3 2 550

T4 30 550

T5 49 550

T6 50 550

T7 51 550

T8 30 0

T9 30 1

T10 30 2

T11 30 999

T12 30 1000

T13 30 1001

8. Worst Case Testing: In this testing the cases are generated by making the valid

combinations ( min, min+, nom, max-, max,) of Maximum number (M) and

Range (R), basically it is a Cartesian product of M and R.

26

{Mmin}{Rmin, Rmin+, Rnom, Rmax-, Rmax}= 5

{Mmin+}{Rmin, Rmin+, Rnom, Rmax-, Rmax}= 5

{Mnom}{Rmin, Rmin+, Rnom, Rmax-, Rmax}= 5

{Mmax-}{Rmin, Rmin+, Rnom, Rmax-, Rmax}= 5

{Mmax}{Rmin, Rmin+, Rnom, Rmax-, Rmax}= 5

Total Test Cases= 5+5+5+5+5= 25

9. Robust Worst Case Testing: In this testing the cases are generated by making

the valid and invalid combinations (min-, min, min+, nom, max-, max, max+) of

Maximum number (M) and Range (R), basically it is a Cartesian product of of M

and R.

{Mmin-}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mmin}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mmin+}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mnom}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mmax-}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mmax}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

{Mmax+}{ Rmin-, Rmin, Rmin+, Rnom, Rmax-, Rmax, Rmax+}= 7

Total Test Cases= 7*7= 49

10. Weak Diagonal In Boundary Value Testing:

Test Case Maximum number (M) Range (R)

T1 1 1

T2 2 2

T3 30 550

T4 49 999

T5 50 1000

11. Weak In Boundary Value Testing: (min, min+, nom, max-,max)

Test Case Maximum number (M) Range (R)

T1 30 1

T2 30 2

T3 30 550

T4 30 999

T5 30 1000

T6 1 550

T7 2 550

T8 49 550

T9 50 550

27

12. Weak Out Boundary Value Testing:

Test Case Maximum number (M) Range (R)

T1 30 0

T2 30 1

T3 30 550

T4 30 1000

T5 30 1001

T6 0 550

T7 1 550

T8 50 550

T9 51 550

13. Weak Out Boundary Value Testing: (No nominal case)

Test Case Maximum number (M) Range (R)

T1 30 0

T2 30 1

T3 30 1000

T4 30 1001

T5 0 550

T6 1 550

T7 50 550

T8 51 550

14. Robust Weak Boundary Value Testing:

Test Case Maximum number (M) Range (R)

T1 0 550

T2 1 550

T3 2 550

T4 30 550

T5 49 550

T6 50 550

T7 51 550

T8 30 0

T9 30 1

T10 30 2

T11 30 999

T12 30 1000

T13 30 1001

15. Robust Weak Simple Boundary Value Testing:

Test Case Maximum number (M) Range (R)

28

T1 0 550

T2 1 550

T3 2 550

T4 49 550

T5 50 550

T6 51 550

T7 30 0

T8 30 1

T9 30 2

T10 30 999

T11 30 1000

T12 30 1001

16. Weak Corner In Boundary Value Testing:

Test Case Maximum number (M) Range (R)

T1 1 1

T2 2 2

T3 49 2

T4 50 1

T5 30 550

T6 1 1000

T7 2 999

T8 49 999

T9 50 1000

17. Robust Corner Out Boundary Value Testing:

Test Case Maximum number (M) Range (R)

T1 1 1

T2 50 1

T3 1 1000

T4 50 1000

T5 0 1

T6 1 0

T7 51 1

T8 50 0

T9 0 1000

T10 1 1001

T11 50 1001

T12 51 1000

29

3. Decision Table Based Testing:

In a university, teacher assign grade on the basis of percentage and an attendance. If

absents are more than five then then original grades (based on only percentage) will

be shifted by one (ex: A to B). If any student have already F grade then it remains

same. Grades are basis on following criteria:

Percentage (P)

Grade (G)

P>=90 A

80<= P<90 B

70<= P<80 C

60<= P<70 D

33<= P<60 E

P<33 F

Conditions:

C1: Absent <=5

C2: P>=90

C3: 80<= P<90

C4: 70<= P<80

C5: 60<= P<70

C6: 33<= P<60

C7: P<33

R: Rules

30

Rules R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12

Conditions:

C1 Y Y Y Y Y Y N N N N N N

C2 Y Y

C3 Y Y

C4 Y Y

C5 Y Y

C6 Y Y

C7 Y Y

Actions:

A √ B √ √ C √ √ D √ √ E √ √ F √ √ √

Recommended