software testing complete file

40
Practical no 1 Aim: Write a program in C/C++ to find the root of a quardatic equaltion and perform the following on it: Boundary Value Analysis (BVA). Consider the program for the determination of nature of roots of a quadratic equation. Its input is a triple of postive intergers a,b,c and values may be from interval [0,100]. The program output may have one of the following words: Not a QE, Real Roots, Imaginary Roots or Equal Roots. #include<iostream.h> #include<conio.h> void main() { int a,b,c,d; clrscr(); cout<<"The Quadratic equation is of the type a(x^2)+bx+c=0"<<endl; cout<<"Enter the value of a: "<<endl; cin>>a; cout<<"Enter the value of b: "<<endl; cin>>b; cout<<"Enter the value of c: "<<endl; cin>>c; d=(b*b)-4*a*c; if((a<0)||(b<0)||(c<0)||(a>100)||(b>100)||(c>100)) cout<<"Invalid input"<<endl; else if(a==0) cout<<"Not a quadratic equation"<<endl; else if (d==0) cout<<"Roots are equal"<<endl; else if(d<0) cout<<"Imaginary roots"<<endl; else cout<<"Real Roots"<<endl; getch(); } Output of the above program: The quadratic equation is of the type a(x^2) +bx +c = 0

Upload: priyanka7339

Post on 24-Nov-2014

124 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: software testing complete file

Practical no 1

Aim: Write a program in C/C++ to find the root of a quardatic equaltion and perform the following on it: Boundary Value Analysis (BVA).

Consider the program for the determination of nature of roots of a quadratic equation. Its input is a triple of postive intergers a,b,c and values may be from interval [0,100]. The program output may have one of the following words: Not a QE, Real Roots, Imaginary Roots or Equal Roots.

#include<iostream.h>#include<conio.h>void main(){

int a,b,c,d;clrscr();cout<<"The Quadratic equation is of the type a(x^2)+bx+c=0"<<endl;cout<<"Enter the value of a: "<<endl;cin>>a;cout<<"Enter the value of b: "<<endl;cin>>b;cout<<"Enter the value of c: "<<endl;cin>>c;d=(b*b)-4*a*c;if((a<0)||(b<0)||(c<0)||(a>100)||(b>100)||(c>100))

cout<<"Invalid input"<<endl;else if(a==0)

cout<<"Not a quadratic equation"<<endl;else if (d==0)

cout<<"Roots are equal"<<endl;else if(d<0)

cout<<"Imaginary roots"<<endl;else

cout<<"Real Roots"<<endl;getch();

}

Output of the above program:

The quadratic equation is of the type a(x^2) +bx +c = 0Enter the value of a:50Enter the value of b:50Enter the vaule of c:0Real roots

Page 2: software testing complete file

The quadratic equation is of the type a(x^2) +bx +c = 0Enter the value of a:50Enter the value of b:50Enter the vaule of c:50Imaginary roots

The quadratic equation is of the type a(x^2) +bx +c = 0Enter the value of a:10Enter the value of b:40Enter the vaule of c:40Roots are equal

The quadratic equation is of the type a(x^2) +bx +c = 0Enter the value of a:0Enter the value of b:50Enter the vaule of c:50Not a quadratic equation

Boundary Value analysis: The basic idea of boundary value analysis is to use input variable at their manimum, just above manimum, normal value, just below maximum and maximum.

In this program, we consider the value as 0 (minimum), 1(just above minimum), 50 (normal), 99 (just below maximum) and 100 (maximum).

Test case ID a b c Expected output1. 50 50 0 Real roots2. 50 50 1 Real roots3. 50 50 50 Imaginary roots4. 50 50 99 Imaginary roots5. 50 50 100 Imaginary roots6. 50 0 50 Imaginary roots7. 50 1 50 Imaginary roots8. 50 99 50 Imaginary roots9. 50 100 50 Equal roots10. 0 50 50 Not a QE11. 1 50 50 Real roots12. 99 50 50 Imaginary roots13. 100 50 50 Imaginary roots

Page 3: software testing complete file

Practical no 2

Aim: write a program in C\C++ to find the area of a Triangle, Square, Rectangle and a Circle. Perform Equivalence class testing on it.

#include<iostream.h>#include<conio.h>#include<process.h>void main(){clrscr();int ch;char c;float b,h,a;1: cout<<"Enter your choice"; cout<<"\n 1. Triangle"; cout<<"\n 2. Square"; cout<<"\n 3. Rectangle"; cout<<"\n 4. Circle"; cout<<"\n 5. Exit\n"; cin>>ch;switch(ch){case 1: b: cout<<"\Enter the base of the triangle (1-200)";

cin>>b; if((b<=0)||(b>200)) { cout<<"\n Invalid entry for base \n"; goto b; }h: cout<<"\n Enter the height of the triangle (1-200)"; cin>>h; if((h<=0)||(h>200)) { cout<<"\n Invalid height\n Enter the valid height (1-200)"; goto h; }a= 0.5*b*h;cout<<"\n The area is : "<<a;cout<<"\n Want to enter more?(y/n)";cin>>c;if((c=='y')||(c=='y'))goto 1;break;

case 2 : s: cout<<"\n Enter the side of the squre (1-200)"; cin>>b; if((b<=0)||(b>200)) { cout<<"\n Invalid entry for base \n"; goto s; }

Page 4: software testing complete file

a=b*b;cout<<"\n The area is :"<<a;cout<<"\n Want to enter more?(y/n)";cin>>c;if((c=='y')||(c=='y'))goto 1;break;

case 3: d: cout<<"\n Enter the Base of the rectangle (1-200)"; cin>>b; if((b<=0)||(b>200)) { cout<<"\n Invalid entry for base \n"; goto d; }p: cout<<"\n Enter the height of the rectangle (1-200)"; cin>>h; if((h<=0)||(h>200)) { cout<<"\n Invalid Height \n Enter the height (1-200)"; goto p; }a=b*h;cout<<"\n The area is :"<<a;cout<<"\n Want to enter more?(y/n)";cin>>c;if((c=='y')||(c=='y'))goto 1;break;

case 4 : t: cout<<"\n Enter the radius of the circle (1-200)"; cin>>b; if((b<=0)||(b>200)) { cout<<"\n Invalid entry for radius \n"; goto t; }a=3.14*b*b;cout<<"\n The area is :"<<a;cout<<"\n Want to enter more?(y/n)";cin>>c;if((c=='y')||(c=='y'))goto 1;break;

case 5 : exit(0); break;

default : cout<<"\n Wrong Choice:"; goto 1; }getch();

}

Page 5: software testing complete file

Test cases: In Equivalence class testing, we find two types of equivalence classes; input domain and output domain;Input domain is formed from one valid sequence and two invalid sequences. The output domain is obtained from different types of output of a problem.

For Triagle:

Input domain:::

I1 = {h : h<=0}I2 = {h : H>200}I3 = {h : 1<=h<=200}I4 = {b : b<=0}I5 = {b : b>200}I6 = {b : 1<=b<=200}

Test cases: Test case ID h b Expected output1. 0 100 Invalid input2. 100 100 50003. 201 100 Invalid input4. 100 0 Invalid input5. 100 100 50006. 100 201 Invalid input

Output domain:::

O1 = {<h,b> : triangle in h > 0,b>0}O2 = {<h,b> : Not a triangle if h<=0, b<=0}

Output screen shots for the triangle is:

Enter your choice:1. Triangle2. Square3. Rectangle4. Circle5. Exit1

Enter the base of the triangle (1 – 200) 0Invalid entry for baseEnter the base of the triangle (1 – 200) 100Enter the height of the triangle (1 – 200) 201Invalid heightEnter the Height(1-200)Enter the height of the triangle(1 – 200) 100The area is 5000Want to enter more? (y/n)y

Page 6: software testing complete file

For square:

Input domain:::

I1={s : s<=0}I2={s : s>200}I3={s : 1<=s<=200}

Test cases:Test case ID s Expected output1. 0 Invalid input2. 100 100003. 201 Invalid input

Output domain:::

O1 = { <s> : square if s>0} O2 = { <r> : Not a square if s<=0}

Output screen shots for the square is:

Enter your choice:1. Triangle2. Square3. Rectangle4. Circle5. Exit2

Enter the side of the square (1 – 200) 0Invalid entry for sideEnter the side of the square (1 – 200) 201Invalid entry for side

Enter the side of the square(1 – 200) 100The area is 10000Want to enter more? (y/n)y

For Rectangle:

Input domain:::

I1 = { l : l <=0}I2 = { l : l>200}I3 = { I : 1<=l <=200}I4 = { b : b<=0}I5 = { b : b>200}I6 = { b : 1<=b<=200}

Page 7: software testing complete file

Test cases:

Test case ID l b Expected output1. 0 100 Invalid input2. 100 100 100003. 201 100 Invalid input4. 100 0 Invalid input5. 100 100 100006. 100 201 Invalid input

Output domain:::

O1 = {<l,b> : rectangle if l > 0,b>0}O2 = {<l,b> : Not a triangle if l<=0, b<=0}

Output screen shots for the Rectangle is:

Enter your choice:1. Triangle2. Square3. Rectangle4. Circle5. Exit3

Enter the length of the rectangle (1 – 200) 0Invalid entry for lengthEnter the length of the rectangle (1 – 200) 201Invalid entry for length Enter the length of the rectangle(1 – 200) 100Enter the breadth of the rectangle (1 – 200) 100

The area is 10000Want to enter more? (y/n)y

For Circle:

Input domain:::

I1 = {r: r<=0}I2 = {r : r>200} I3 = { r: 1<=r<=200}

Test cases:Test Cases r Expected output1. 0 Invalid input2. 100 314003. 201 Invalid input

Page 8: software testing complete file

Output domain:

O1 : {<r>: Circle if 1<=r<=200}O2 : {<r>: not a circle if r<=0}

Output screen shots for the Circle is:

Enter your choice:1. Triangle2. Square3. Rectangle4. Circle5. Exit4

Enter the radius of the circle (1 – 200) 0Invalid entry for radiusEnter the radius of the circle (1 – 200) 201Invalid entry for radiusEnter the radius of the circle(1 – 200) 100The area is 31400Want to enter more? (y/n)y

Page 9: software testing complete file

Practical No 3

Aim: write a program in C/C++ to calculate the value of ab. Perform Decision Table based testing on it.

#include<iostream.h>#include<conio.h>#include<math.h>void main(){ clrscr(); int a,b; float c; char ch;1: cout<<"To Calculate 'a to the power b' \n"; cout<<"Enter the value of 'a' \n"; cin>>a; cout<<"Enter the value of 'b' \n"; cin>>b; c=pow(a,b); cout<<endl<<c; cout<<"\n Want to enter again? (y/n)"; cin>>ch; if((ch=='y')||(ch=='y')) goto 1; getch();}

Test cases: Decision Table Based testing is useful for describing situations in which a number of combination of actions are taken for different conditions. There are four parts of a decision table; condition stub, action stub, condition entries and action entries.

Test case ID A B Expected output1. 2 3 +ve result2. -1 3 -ve result3. -2 -4 +ve result4. 0 1 Result is 05. 0 0 Domain Error6. -1 -0.6 Result is 1

Decision table is:

Conditions are:::C1 : a = 0, b = 0C2 : a = -ve, b = +veC3 : a = +ve, b = -veC4 : a = -ve, b = -veC5 : a = +ve, b = +veC6 : a = 0,b = integer

Page 10: software testing complete file

C7 : b = 0, a = integerC8 : a = -ve, b= -ve odd

Actions:::

A1 : Domain errorA2 : Negative outputA3 : output =1A4 : positive outputA5 : output = 0

Condition R1 R2 R3 R4 R5 R6 R7 R8C1 T - - - - - - -C2 - T - - - - - -C3 -- - - T - - - -C4 - - -- - T - - -C5 - - - - - T - -C6 - - - - - - T -C7 - - - - - - - TC8 - - T - - - - -ActionA1 XA2 X XA3 XA4 X X XA5 X

The output for the above program is:

To calculate’a to the power of b’Enter the value of ‘a’0Enter the value of ‘b’0Pow: Domain error1Want to enter again? (y/n) yTo calculate’a to the power of b’Enter the value of ‘a’2Enter the value of ‘b’3

8Want to enter again? (y/n)n

Page 11: software testing complete file

Practical No 4

Aim: write a program in C/C++ to compute previous data. We are given the present date as input. Also perfome the Boundary value analyses on it.

#include<stdio.h>#include<conio.h>int main(){int day, month, year, flag=0;printf("Enter the day value:");scanf("%d",&day);printf("Enter the month value:");scanf("%d",&month);printf("Enter the year value:");scanf("%d",&year);if(year>=1900 && year<=2025){ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { if(day>=1 && day<=31) {

flag=1; } else { flag=0; } } else if(month==2) { int rval=0; if(year%4==0)

{rval=1;if((year%100)==0 && (year%400)!=0) { rval=0; }

} if(rval==&&(day>=1 &&day <=29)) { flag=1; } else if (day>=1 &&day <=28) { flag=1; } else { flag=0;

Page 12: software testing complete file

} } if(flag) { if(day==1) { if(month==1) { year--; day=31; month=12; } else if(month==3) { int rval=0; if(year%4==0) {

rval=1;if((year%100)==0 &&(year%400)!=0){ rval=0; }}if(rval==1){ day=29; month--; } else { day=28; month--; }}else if(month==2||month==4||month==6||month==9||month==11){ day=31; month--;}else{day=30;month--;}

} else { day--; } printf(" The next data is : %d-%d-%d",day,month,year); }

Page 13: software testing complete file

else { printf(" The entered data is invalid: %d-%d-%d",day,month,year); } getch(); return 1;}}

Test cases:

Test Case ID Month Day Year Expected output1. June 1 1964 31 May, 19642. June 31 1984 Impossible3. May 1 1945 30 April, 19454. March 31 2007 30 March, 20075. August 29 2007 28 August, 20076. Februry 29 1962 impossible

The output for the above program is:

Enter the day value; 3Enter the month value ; 3Enter the year value ; 2000The previous day is 2 – 3 – 2000

Page 14: software testing complete file

Practical no 5

Aim: Write a program in C/C++ to read three sides of a triangle and to check whether the triangle is Isoceles, equilateral or scalane. Perform path testing on it and deduce:

1. Flow graph2. DD path graph3. Independent path4. Cyclomatic complexity

#include<stdio.h>#include<conio.h>int main(){

int a,b,c,validinput=0;printf("Enter the side ‘a’ value");scanf("%d",&a);printf("Enter the side ‘b’ value");scanf("%d",&b);printf("Enter the side ‘c’ value");scanf("%d",&c);if((a>0)&&(a<100)&&(b>0)&&(b<100)&&(c>0)&&(c<100)){

if(((a+b)>c)&&((c+a)>b)&&((b+c)>a)){

validinput=1;}

}else{

validinput=-1;}if(validinput==1){

if((a==b)&&(b==c)){

printf("The triangle is equilateral");}else if((a==b)||(b==c)||(c==a)){

printf("The triangle is isosceles");}else{

printf("The triangle is scalene");}

}else if(validinput==0){

printf("The value do not constitute the triangle");}

Page 15: software testing complete file

else{

printf("The input belongs to invalid range");}getch();return 1;

}

1. Flow Graph: It shows that how the control and data is flow from one node to another node. The flow graph for the following program is given below:

Page 16: software testing complete file

2. DD path graph:

Flow Graph Nodes DD Path Graph Corr. Nodes Remarks1 to 9 A Sequential

10 B Decision11 C Decision

12,13 D Sequential14 E Two edges are joined here

15,16,17 F Sequentian nodes18 G Decision nodes plus joining of two edges19 H Decision nodes

20,21 I Sequential nodes22 J Decision nodes

23,24 K Sequential nodes25,26,27 L Sequential nodes

28 M Three edges combined here29 N Decision nodes

30,31 O Sequential nodes

Page 17: software testing complete file

32,33,34 P Sequential nodes35 Q Three edges comibined here

36,37 R Sequential nodes with exit node

3. Independent path : It is a path in the flow graph that has at least one edge that has not been traversed before in other path.

1. ABFGNPQR2. ABFGNOQR3. ABCEGNPQR4. ABCDGINOQR5. ABFGHIMQR6. ABFGHJKMQR7. ABFGHJLMQR

4. Cyclomatic complexity: To calculate the cyclomatic complexity we calculate the following formula:

V(G) = e – n + 2PHere : e = 23

n = 18 and p = 1

so the total no of independent paths are 23 – 18 + 2 = 7

The output for the above program is :

Enter the side ‘a’ value: 12Enter the side ‘b’ value: 12Enter the side ‘c’ value: 12The triangle is Equilateral

Enter the side ‘a’ value: 45Enter the side ‘b’ value: 45Enter the side ‘c’ value: 23The triangle is isosceles

Page 18: software testing complete file

Practical no 6

Aim: write a program in C\C++ to compute total salary of an employee given his/her basic salary. The slab is given below:

HRA = 30 % of basicDA=80% of basicMA = Rs. 100/-TA = Rs. 800/-I.tax = Rs. 700/-PF = Rs. 780/- Also find out the path graph and cyclomatic complexity.

#include<iostream.h>#include<conio.h>#include<stdio.h>void main(){

clrscr();cout<<"Enter the basic salary of the employee";float bs;cin>>bs;int hra,da,ma=100,itax=700, pf=780,ta=800;hra=0.3*bs;da=0.8*bs;cout<<"\nHouse allowance: rs."<<hra;cout<<"\nDarkness allowance: rs."<<da;cout<<"\nmedical allowance: rs."<<ma;cout<<"\ntravel allowance: rs."<<ta;cout<<"\nIncome tax rs."<<itax;cout<<"\nprovidend fund: rs."<<pf;float netsal;netsal=(bs+hra+da+ta-itax-pf);cout<<endl;cout<<"The net selary of the employee is : "<<netsal;getch();

}

The output of the above program is :

Enter the basic salary of the employee10000

House allowance: rs.2999Darkness allowance: rs.8000medical allowance: rs.100travel allowance: rs.800Income tax rs.700providend fund: rs.780The net selary of the employee is : 20319

Page 19: software testing complete file

The Cyclomatic complexity for the above path graph is:

To calculate the cyclomatic complexity we use the formula:

V(G) = e - n + 2PHere: e = 15

n = 16 p = 1

hence V(G) = 1

Page 20: software testing complete file

Practical 7:

Aim: Draw the DD Path graph for the practical no 6 ( write a program in C\C++ to compute total salary of an employee given his/her basic salary. The slab is given below:

HRA = 30 % of basicDA=80% of basicMA = Rs. 100/-TA = Rs. 800/-I.tax = Rs. 700/-PF = Rs. 780/- )

The Flow graph for the given program is :

Page 21: software testing complete file

Here we can see that in the flow graph all the nodes are arrenged in the sequential order. So we have only one DD node

Flow Graph Nodes DD Path Graph Corr. Nodes Remarks1 to 9 A Sequential

Page 22: software testing complete file

Program no 8

Aim: Write a program to read the marks of 10 students in five subjects. Find the average and allot the grades. Draw its graph matrix and find its V(G).

#include<iostream.h>#include<stdio.h>#include<conio.h>#include<string.h>struct student{ char sname[10]; float marks[5]; float total,avg; char grade;}s[10];

void main(){ clrscr(); 1 int i; for(i=1;i<10;i++) 2 { cout<<"\n Enter the name of the student"<<i<<"\t"; 3 gets(s[i].sname); 4 for(int j=0;j<5;j++) 5 { cout<<"\n Enter the marks in subject"<<j<<"\t"; 6 cin>>s[i].marks[j]; 7 } for(j=0;j<5;j++) 8 { s[i].total=s[i].total+s[i].marks[j]; 9 } s[i].avg=s[i].total/5; 10 cout<<"\n The average of student"<<i<<"is:"<<s[i].avg; 11 if(s[i].avg>90.0) 12

s[i].grade='O'; 13 else if((s[i].avg<90.0)&&(s[i].avg>=85.0)) 14

s[i].grade='A'; 15 else if((s[i].avg<85.0)&&(s[i].avg>=80.0)) 16

s[i].grade='B'; 17 else if((s[i].avg<80.0)&&(s[i].avg>=70.0)) 18

s[i].grade='C'; 19 else 20

s[i].grade='D'; 21 cout<<"\n The grade of student" <<i<<"\t"<<s[i].grade; 22 } getch(); 23}

Page 23: software testing complete file

Graph matrix:

A B C D E F G H I J K L -A - 1 - - -- - - - - - - 1 1B - - 1 1 - - - - - - - - 1C - - - - - - - - - - - 1 0D - -- - -- 1 1 - - - - - - 1E - - - - - - - - - - -- 1 0F - - - - - - - -- 1 - - - 0G - - - - - - - - - - - - -H - - - - - - - - - - - - -I - -- - - - - - - - 1 1 - 1J - - - - - - - - - - - 1 0K -- - - - - - - - - - -- 1 0L - - - - - - - - - - - - -

4+1=5

The cyclomatic complexity is V(G) = 5. That means there are five indepent path in the flow graph.

The output of the above program is :

Enter the name of student 0: AEnter the marks in subject1 99Enter the marks in subject2 98Enter the marks in subject3 97Enter the marks in subject4 96Enter the marks in subject5 95

The average of student 0 is : 97The grade of student 00 enter the name of student1

The average of student 0 is : 97The grade of student 00 enter the name of student1 B

Enter the marks in subject0 88Enter the marks in subject1 85Enter the marks in subject2 86Enter the marks in subject3 87Enter the marks in subject4 84

The average of student 1 is : 86The grade of student1A enter the name of the student2

Page 24: software testing complete file

Program no 9

Aim: Write a program to read the marks of 10 students in five subjects. Find the average and allot the grades. Apply data flow testing on the above program.

#include<iostream.h>#include<stdio.h>#include<conio.h>#include<string.h>struct student{ char sname[10]; float marks[5]; float total,avg; char grade;}s[10];

void main(){ clrscr(); 1 int i; for(i=1;i<10;i++) 2 { cout<<"\n Enter the name of the student"<<i<<"\t"; 3 gets(s[i].sname); 4 for(int j=0;j<5;j++) 5 { cout<<"\n Enter the marks in subject"<<j<<"\t"; 6 cin>>s[i].marks[j]; 7 } for(j=0;j<5;j++) 8 { s[i].total=s[i].total+s[i].marks[j]; 9 } s[i].avg=s[i].total/5; 10 cout<<"\n The average of student"<<i<<"is:"<<s[i].avg; 11 if(s[i].avg>90.0) 12

s[i].grade='O'; 13 else if((s[i].avg<90.0)&&(s[i].avg>=85.0)) 14

s[i].grade='A'; 15 else if((s[i].avg<85.0)&&(s[i].avg>=80.0)) 16

s[i].grade='B'; 17 else if((s[i].avg<80.0)&&(s[i].avg>=70.0)) 18

s[i].grade='C'; 19 else 20

s[i].grade='D'; 21 cout<<"\n The grade of student" <<i<<"\t"<<s[i].grade; 22 } getch(); 23}

Page 25: software testing complete file

Variable Defined At Nodes Used At NodesSname 3 16Marks 4 20,24Total 5 24,26Avg 6 26,27,28,30,32,34

Grade 7 29,31,33,35,37,38I 12 13,16,20,24,26,27,28,29,30,31,32,33,34,35,37,38J 17 17,20,22,24

The du-paths are identified and are named by their beginning and end nodes using the variable as follows:

Variable Path(beginning, End) Nodes Definition clear ?Sname 3,16 yesMarks 4,20

4,24Yesyes

Total 5,245,26

Yesyes

Avg 6,266,276,286,306,326,34

yesyesyesyesyesyes

Grade 7,297,317,337,357,377,38

YesYesYesYesYesyes

I 12,1312,1612,2012,2412,2612,2812,2912.3012,3112,3212,3312,3412,3512,3712,38

Same node: yesYesYesyes

J 17,1717,2017,2217,24

Page 26: software testing complete file

The output of the above program is :

Enter the name of student 0: AEnter the marks in subject1 99Enter the marks in subject2 98Enter the marks in subject3 97Enter the marks in subject4 96Enter the marks in subject5 95

The average of student 0 is : 97The grade of student 00 enter the name of student1

The average of student 0 is : 97The grade of student 00 enter the name of student1 B

Enter the marks in subject0 88Enter the marks in subject1 85Enter the marks in subject2 86Enter the marks in subject3 87Enter the marks in subject4 84

The average of student 1 is : 86The grade of student1A enter the name of the student2

Page 27: software testing complete file

Practical no 10

Aim: consider the triangle probem. Its input is a triplet of 3 positive integers (say a, b, c) from the interval (1 to 100). The output may be one of the following words – scalene, isosceles, equilateral, not a triangle. Also draw the DD Graph, Decision table, and cause effect graph for the same.

#include<stdio.h>#include<conio.h>1 int main()2 {3 int a,b,c,valid_I=0;4 printf("\nEnter a:");5 scanf("%d",&a);6 printf("\nEnter b:");7 scanf("%d",&b);8 printf("\nEnter c:");9 scanf("%d",&c);10 if((a>0) && (a<=100)&& (b>0) && (b<=100)&& (c>0) && (c<=100)) {11 if((a+b)>c) && ((c+a)>b) &&((b+c)>a)){12 valid_I=1;13 }14 }15 else {16 valid_I = -1;17 }18 if(valid_I==1) {19 if((a==b)&&(b==c))20 printf("Traingle is equilateral");21 }22 else if(a==b)||(b==c)||(c==a)) {23 printf("The triangle is isoceles");24 }25 else {26 printf("The triangle is scalene");27 }28 }29 else if(valid_I==0) {30 printf("\nNot a traingle");31 }32 else {33 printf("\nInvalid triangle");34 }35 getch();36 return 0;37 }

Page 28: software testing complete file

Flow graph for the triangle problem

To find the du-path and dc-path we perform the following steps:

Step 1: We prepare a teble of define and use nodes for all variables used in this program:

Variables Defined at node Used at nodea 5 10, 11 ,19, 22b 7 10, 11, 19, 22c 9 10, 11, 19, 22

Valid_I 3, 12, 16 18, 29

Step 2: To calculate the du-path we prepare another table:

Variables Path (Beg, End) Defination Cleara 5, 10 Yes a 5, 11 Yes

Page 29: software testing complete file

a 5, 19 Yes a 5, 22 Yes b 7, 10 Yes b 7, 11 Yes b 7, 19 Yes b 7, 22 Yes c 9, 10 Yes c 9, 11 Yes c 9, 19 Yes c 9, 22 Yes

Valid_I 3, 18 NoValid_I 3, 29 NoValid_I 12, 18 NoValid_I 12, 29 NoValid_I 16, 18 Yes Valid_I 16, 29 Yes

Out of the 18 du – path, 4 paths namely (3,18), (3, 29), (12,18), (12,29) are not dc-path.

The cause effect graph for the triangle problem is :

Step 1 : Firstly, we must identify the causes and its effects. The causes are

C1 = Side X is less than sum of Y and Z.C2 = Side Y is less than sum of X and ZC3 = Side Z is less than sum of X and Y.C4= Side X is equal to side Y,C5= Side X is equal to side Z,C6= Side Y is equal to side X,

The effects are

E1= Not a triangle.E2= Scalene Triangle E3= Isosceles triangleE4= Equilateral TriangleE5= Impossible

Step 2 : The cause – effect graph for the following is

Page 30: software testing complete file

The Decision table for the Above graph is:

R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11C1 F T T T T T T T T T TC2 -- F T T T T T T T T TC3 -- -- F T T T T T T T TC4 -- -- -- T T T T F F F FC5 -- -- -- T T F F T T F FC6 -- -- -- T F T F T F T FE1 X X X XE2 X X XE3E4 XE5 X X X

Page 31: software testing complete file

Practical no 11.

Aim: (Quadratic Equation Problem). This program reads a, b and c as the three coefficients of a quadratic equation ax2 + bx + c = 0. It determines the nature of the roots of this equation. Draw its flow graph

#include<stdio.h>#include<conio.h>1 int main()2 {3 int a,b,c,boolean=0;4 double D;5 printf("\nEnter a coefficient:");6 scanf("%d",&a);7 printf("\nEnter b coefficient:");8 scanf("%d",&b);9 printf("\nEnter c coefficient");10 scanf("%d",&c);11 if((a>=0) && (a<=100)&& (b>=0) && (b<=100)&& (c>=0) && (c<=100)) {12 boolean=1;13 if(a==0)14 boolean = -115 }16 }17 if(boolean == 1){18 d=b*b - 4 * a * c;19 if(d==0){20 printf("Roots are equal");21 }22 else if(d>0) {23 D=sqrt(d);24 printf("Roots are real"25 }26 else{27 D=sqrt(-d)/(2*a);28 printf("Roots are imaginary");29 }30 }31 printf("Not a quadratic equation");32 }33 else {34 printf("Invalid input range ...");35 }36 getch();37 return 0;38 }

Page 32: software testing complete file

The flow graph for the following is given below:

Flow graph for the Quadratic equation problem