ST Labmanual
ST Labmanual
VI SEMESTER
SOFTWARE TESTING LABORATORY MANUAL
SUBJECT CODE: 15ISL67
By
PROF. ANIMESH GIRI
SOFTWARE TESTING
//Program 1: Decision table approach for solving triangle problem
/* Design and develop a program in a language of your choice to solve the triangle problem
defined as follows : Accept three integers which are supposed to be the three sides of
triangle and determine if the three values represent an equilateral triangle, isosceles
triangle, scalene triangle, or they do not form a triangle at all. Derive test cases for your
program based on decision-table approach, execute the test cases and discuss the results */
#include<stdio.h>
int main()
{
int a,b,c;
char istriangle;
printf("enter 3 integers which are sides of triangle\n"); scanf("%d
%d%d",&a,&b,&c); printf("a=%d\t,b=%d\t,c=%d",a,b,c);
PESIT- Bangalore South Campus LAB MANUAL BE. VI Sem ISE 15ISL67
SOFTWARE TESTING
Test Case Name :Decision table for triangle problem
Experiment Number : 1
Test Data : Enter the 3 Integer Value( a , b And c )
Pre-condition : a < b + c , b < a + c and c < a + b
Brief Description : Check whether given value for a equilateral, isosceles , Scalene triangle or can't from a triangle
Input data decision Table
RULES R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11
C1: a < b + c F T T T T T T T T T T
C2 : b < a + c - F T T T T T T T T T
C3 : c < a + b - - F T T T T T T T T
Conditions
C4 : a = b - - - T T T T F F F F
C5 : a = c - - - T T F F T T F F
C6 : b = c - - - T F T F T F T F
a1 : Not a triangle X X X
a2 : Scalene triangle X
Actions a3 : Isosceles triangle X X X
a4 : Equilateral triangle X
a5 : Impossible X X X
/* Design and develop a program in a language of your choice to solve the triangle problem
defined as follows : Accept three integers which are supposed to be the three sides of triangle
and determine if the three values represent an equilateral triangle, isosceles triangle, scalene
triangle, or they do not form a triangle at all. Derive test cases for your program based on
boundary value analysis, execute the test cases and discuss the results */
#include<stdio.h>
int main()
{
int a,b,c,c1,c2,c3;
char istriangle;
do
{
printf("\nenter 3 integers which are sides of triangle\n");
scanf("%d%d%d",&a,&b,&c); printf("\na=%d\tb=%d\
tc=%d",a,b,c);
c1 = a>=1 && a<=10;
c2= b>=1 && b<=10;
c3= c>=1 && c<=10;
if (!c1)
printf("\nthe value of a=%d is not the range of permitted value",a);
if (!c2)
printf("\nthe value of b=%d is not the range of permitted value",b);
if (!c3)
printf("\nthe value of c=%d is not the range of permitted value",c);
} while(!(c1 && c2 && c3));
PESIT- Bangalore South Campus LAB MANUAL BE. VI Sem ISE 15ISL67
SOFTWARE TESTING
Test Case Name :Boundary Value Analysis for triangle problem
Experiment Number : 2
Test Data : Enter the 3 Integer Value( a , b And c )
Pre-condition : 1 ≤ a ≤ 10 , 1 ≤ b ≤ 10 and 1 ≤ c ≤ 10 and a < b + c , b < a + c and c < a + b
Brief Description : Check whether given value for a equilateral, isosceles , Scalene triangle or can't from a
triangle
Input Data
Actual
Case Id Description Expected Output Status Comments
Output
A b c
Should display the message Equilateral
1 Enter the min value for a , b and c 1 1 1
triangle
Enter the min value for 2 items and Message should be displayed can't form a
2 1 1 2
min +1 for any one item1 triangle
Enter the min value for 2 items and Message should be displayed can't form a
3 1 2 1
min +1 for any one item1 triangle
Enter the min value for 2 items and Message should be displayed can't form a
4 2 1 1
min +1 for any one item1 triangle
Enter the normal value for 2 items Should display the message Isosceles
5 5 5 1
and 1 item is min value triangle
Enter the normal value for 2 items Should display the message Isosceles
6 5 1 5
and 1 item is min value triangle
Enter the normal value for 2 items Should display the message Isosceles
7 1 5 5
and 1 item is min value triangle
Should display the message Equilateral
8 Enter the normal Value for a, b and c 5 5 5
triangle
Enter the normal value for 2 items
9 5 5 10 Should display the message Not a triangle
and 1 item is max value
Enter the max value for 2 items and Should display the message Isosceles
13 10 9 10
max - 1 for any one item triangle
Enter the max value for 2 items and Should display the message Isosceles
14 9 10 10
max - 1 for any one item triangle
Should display the message Equilateral
15 Enter the max value for a, b and c 10 10 10
triangle
/* Design and develop a program in a language of your choice to solve the triangle problem
defined as follows : Accept three integers which are supposed to be the three sides of triangle
and determine if the three values represent an equilateral triangle, isosceles triangle, scalene
triangle, or they do not form a triangle at all. Derive test cases for your program based on
equivalence class partitioning , execute the test cases and discuss the results */
#include<stdio.h>
int main()
{
int a,b,c , c1,c2,c3;
char istriangle;
do
{
printf("\nenter 3 integers which are sides of triangle\n");
scanf("%d%d%d",&a,&b,&c); printf("\na=%d\tb=%d\
tc=%d",a,b,c);
c1 = a>=1 && a<=10;
c2= b>=1 && b<=10;
c3= c>=1 && c<=10;
if (!c1)
printf("\nthe value of a=%d is not the range of permitted value",a);
if (!c2)
printf("\nthe value of b=%d is not the range of permitted value",b);
if (!c3)
printf("\nthe value of c=%d is not the range of permitted value",c);
} while(!(c1 && c2 && c3));
PESIT- Bangalore South Campus LAB MANUAL BE. VI Sem ISE 15ISL67
SOFTWARE TESTING
24 lsales = lprice*tlocks;
25 ssales=sprice*tstocks;
26 bsales=bprice*tbarrels;
27 sales=lsales+ssales+bsales;
28 printf("\nthe total sales=%f\n",sales);
29 if(sales > 1800.0)
30 {
31 comm=0.10*1000.0;
32 comm=comm+0.15*800;
33 comm=comm+0.20*(sales-1800.0);
}
34 else if(sales > 1000)
35 {
36 comm =0.10*1000;
37 comm=comm+0.15*(sales-1000);
}
38 else
39 comm=0.10*sales;
40 printf("the commission is=%f\n",comm);
41 return 0;
42 }
Begin the
(13 , 14) <13-14> Yes
loop
check for locks variable ( DEF(locks,13) ( 13 , 16) <13-14-15-16> Yes
6 ,DEF(locks,19) and
(19 , 14) <19-20-14> Yes
USE(locks,14),USE(locks,16)
Repeat the
(19 , 16) <19-20-14-15-16> Yes
loop
Check for stocks variable (DEF(stocks,15) and
7 (15 , 17) <15-16-17> Yes
USE(stocks,17)
(27 ,28) <27-28> Yes
Check for sales DEF(sales, 27) and USE(Sales, (27 , 29) <27-28-29> Yes
28), USE(Sales , 29), USE(Sales,33) , (27 , 33) <27-28-29-30-31-32-33> Yes
8
USE(Sales , 34) , USE(Sales,37) , USE(Sales , (27 , 34) <27-28-29-34> Yes
39) (27 , 37) <27-28-29-34-35-36-37> Yes
(27 , 39) <27-28-29-34-38-39> Yes
( (31,32,33),42) <31-32-33-42> Yes
Check for Commission variable DEF(comm,
9 31,32,33) , DEF(comm,34,35) and ((34 , 35) , 42) <34-35-42> Yes
DEF(comm,39) and USE(comm,42) ((39 , 42 ) <39 - 42> Yes
#include<stdio.h>
int main()
{
int locks, stocks, barrels, tlocks, tstocks, tbarrels;
float lprice, sprice, bprice, sales, comm;
int c1,c2,c3,temp;
lprice=45.0;
sprice=30.0;
bprice=25.0;
tlocks=0;
tstocks=0;
tbarrels=0;
printf("\nenter the number of locks and to exit the loop enter -1 for locks\n");
scanf("%d",&locks);
while(locks!=-1)
{
c1=(locks<=0||locks>70);
printf("enter the number of stocks and barrels\n");
scanf("%d%d",&stocks,&barrels);
c2=(stocks<=0||stocks>80); c3=(barrels<=0||
barrels>90);
if(c1)
printf("value of locks not in the range 1..70 ");
else
{
temp=tlocks+locks;
if(temp>70)
printf("new total locks =%d not in the range 1..70 so old ",temp);
else
tlocks=temp;
}
printf("total locks = %d\n",tlocks);
if(c2)
printf("value of stocks not in the range 1..80 ");
else
{
temp=tstocks+stocks;
if(temp>80)
if(c3)
printf("value of barrels not in the range 1..90 ");
else
{
temp=tbarrels+barrels;
if(temp>90)
printf("new total barrels =%d not in the range 1..90 so old ",temp);
else
tbarrels=temp;
}
printf("total barrel=%d",tbarrels);
printf("\nenter the number of locks and to exit the loop enter -1 for locks\n");
scanf("%d",&locks);
}
printf("\ntotal locks = %d\ntotal stocks =%d\ntotal barrels =%d\n",tlocks,tstocks,tbarrels);
sales = lprice*tlocks+sprice*tstocks+bprice*tbarrels;
printf("\nthe total sales=%f\n",sales);
if(sales > 0)
{
if(sales > 1800.0)
{
comm=0.10*1000.0;
comm=comm+0.15*800;
comm=comm+0.20*(sales-1800.0);
}
else if(sales > 1000)
{
comm =0.10*1000;
comm=comm+0.15*(sales-1000);
}
else
comm=0.10*sales;
Checking boundary value for locks, stocks and barrels and commission
14 Enter the values to calculate the commission for 18 18 17 1775 216.25 Border point -
15 sales nearly less than 1800 18 17 18 1770 215.5 Border point -
16 17 18 18 1755 213.25 Border point -
17 Enter the values sales exactly equal to 1800 18 18 18 1800 220 Border point
18 18 18 19 1825 225 Border point +
Enter the values to calculate the commission for
19 18 19 18 1830 226 Border point +
sales nearly greater than 1800
20 19 18 18 1845 229 Border point +
Enter the values normal value for lock, stock and
21 barrel 48 48 48 4800 820 Midpoint
22 70 80 89 7775 1415 Output maximum -
Enter the max value for 2 items and max - 1 for
23 any one item 70 79 90 7770 1414 Output maximum -
24 69 80 90 7755 1411 Output maximum -
25 Enter the max value for locks,stocks and barrels 70 80 90 7800 1420 Output maximum
Valid Classes
L1 ={LOCKS :1 <=LOCKS<=70}
L2 ={Locks=-1}(occurs if locks=-1 is used to control input iteration)
L3 ={stocks : 1<=stocks<=80}
L4= {barrels :1<=barrels<=90}
Invalid Classes
L3 ={locks: locks=0 OR locks<-1}
L4 ={locks: locks> 70}
S2 ={stocks : stocks<1}
S3 ={stocks : stocks >80}
B2 ={barrels : barrels <1}
B3 =barrels : barrels >90}
Commission Problem Output Equivalence Class Testing
( Weak & Strong Normal Equivalence Class )
Input Data Expected Output Actual output
Case Stat
Description Total Total Total Commiss Comment
Id Sales Commission Sales us
Locks Stocks Barrels ion
Enter the value within the range for
1 35 40 45 3900 640
locks,stocks and barrels
#include<stdio.h>
int binsrc(int x[],int low,int high,int key)
{
int mid;
while(low<=high)
{
mid=(low+high)/2;
if(x[mid]==key)
return mid;
if(x[mid]<key)
low=mid+1;
else
high=mid-1;
}
return -1;
}
int main()
{
int a[20],key,i,n,succ;
printf("Enter the n value");
scanf("%d",&n);
if(n>0)
{
printf("enter the elements in ascending order\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
#include<stdio.h>
void quicksort(int x[10],int first,int last)
{
int temp,pivot,i,j;
if(first<last)
{
pivot=first;
i=first;
j=last;
while(i<j)
{
while(x[i]<=x[pivot] && i<last)
i++;
while(x[j]>=x[pivot])
j--;
if(i<j)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
temp=x[pivot];
x[pivot]=x[j];
x[j]=temp;
quicksort(x,first,j-1);
quicksort(x,j+1,last);
}
}
// main program
int main()
{
int a[20],i,key,n;
printf("enter the size of the array");
scanf("%d",&n);
if(n>0)
{
printf("enter the elements of the array");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
Initializatio
B
F first <
i<j
C T T
F
ND Right Scan
J F
T
E F Left Scan
K T F
F
i<j
G H I
M
T
Recursive Calls
Independent Paths– Quick Sort
P1: A-B-N
P2: A-B-C-J-K-B
P3: A-B-C-J-K-M-B
P4: A-B-C-D-F-H-C
P5: A-B-C-D-F-H-I-C
P6: A-B-C-D-E-D-F-H
P7: A-B-C-D-F-G-F-H
Pre-Conditions/Issues:
Array has only one Element, Two Elements, Three Elements (6 Possibilities)
Array has Elements in ASC/DSC/Arbitrary( Any of the Permutations)
#include<stdio.h>
int check(int day,int month)
{
if((month==4||month==6||month==9 ||month==11) && day==31)
return 1;
else
return 0;
}
int isleap(int year)
{
if((year%4==0 && year%100!=0) || year%400==0)
return 1;
else
return 0;
}
int main()
{
int day,month,year,tomm_day,tomm_month,tomm_year;
char flag;
do
{
flag='y';
printf("\nenter the today's date in the form of dd mm yyyy\n");
scanf("%d%d%d",&day,&month,&year);
tomm_month=month;
tomm_year= year;
if(day<1 || day>31)
{
printf("value of day, not in the range 1...31\n");
flag='n';
}
if(month<1 || month>12)
{
printf("value of month, not in the range 1. . .12\n");
flag='n';
}
else if(check(day,month))
{
printf("value of day, not in the range day<=30");
flag='n';
}
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:if(day<31)
tomm_day=day+1;
else
{
tomm_day=1;
tomm_month=month+1;
}
break;
case 4:
case 6:
case 9:
case 11: if(day<30)
tomm_day=day+1;
else
{
tomm_day=1;
tomm_month=month+1;
}
break;
Invalid cases
M2 = {month : month < 1}
M3 = {month : month > 12}
D2 = {day : day < 1}
D3 = {day : day > 31}
Y2 = {year : year < 1812}
Y3 = {year : year > 2013}
Case Id Description Input Data Expected Output Actual output Status Comment
day mo year day month year day mo year
nth nth
1 Enter the D1, M1 and Y1 valid 31 12 1811 Should display the
cases message value of the
year in range
1812..2013
2 Enter the D1, M1 and Y2 valid 31 12 2012 1 1 2013
cases
3 Enter the D1, M1 and Y3 valid 31 12 2013 Should display the
cases message Next is out of
boundary 2013