Software Testing Manual
Software Testing Manual
1. Design, develop, code and run the program in any suitable language to solve the commission
problem. Analyze it from the perspective of boundary value testing, derive different test
cases, execute these test cases and discuss the test results.
2. Design, develop, code and run the program in any suitable language to implement the Next
Date function. Analyze it from the perspective of equivalence class value testing, derive
different test cases, execute these test cases and discuss the test results.
3. Design, develop, code and run the program in any suitable language to solve the commission
problem. Analyze it from the perspective of decision table-based testing, derive different test
cases, execute these test cases and discuss the test results.
4. 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 a
triangle and determine if the three values represent an equilateral triangle, isosceles triangle,
scalene triangle, or they do not form a triangle at all. Assume that the upper limit for the size
of any side is 10. Derive test cases for your program based on boundary-value analysis,
equivalence class partitioning and decision-table approach and execute the test cases and
discuss the results.
5. Design, develop, code and run the program in any suitable language to solve the commission
problem. Analyze it from the perspective of dataflow testing, derive different test cases,
execute these test cases and discuss the test results.
6. Design, develop, code and run the program in any suitable language to implement the binary
search algorithm. Determine the basis paths and using them derive different test cases,
execute these test cases and discuss the test results.
7. Develop a Mini Project with documentation of suitable test-cases and their results to perform
automation testing of any E-commerce or social media web page.
1 First Program
Design, develop, code and run the program in any suitable language to solve the
commission problem. Analyze it from the perspective of boundary value testing, derive
different test cases, execute these test cases and discuss the test results.
Stocks- $30
Barrels- $25
The salesperson had to sell at least one complete rifle per month and production
limits were such that the most the salesperson could sell in a month was 70 locks, 80
stocks and 90 barrels.
After each town visit, the sales person sent a telegram to the Missouri gunsmith with
the number of locks, stocks and barrels sold in the town. At the end of the month, the
salesperson sent a very short telegram showing --1 lock sold. The gunsmith then knew the
sales for the month were complete and computed the salesperson’s commission as follows:
1.2 DESIGN
Algorithm
Step 1: Define lockPrice=45.0, stockPrice=30.0, barrelPrice=25.0
Step 2: Input locks
Step 3: while(locks!=-1) ‘input device uses -1 to indicate end of data goto
Step 12
PROGRAM CODE:
#include<stdio.h>
#include<conio.h>
int main()
{
int locks, stocks, barrels, t_sales, flag = 0;
float commission;
clrscr();
printf("Enter the total number of locks");
scanf("%d",&locks);
if ((locks <= 0) || (locks > 70))
{
flag = 1;
}
printf("Enter the total number of stocks");
scanf("%d",&stocks);
if ((stocks <= 0) || (stocks > 80))
{
flag = 1;
}
printf("Enter the total number of barrelss");
scanf("%d",&barrels);
if ((barrels <= 0) || (barrels > 90))
{
flag = 1;
}
if (flag == 1)
{
printf("invalid input");
getch();
exit(0);
}
t_sales = (locks * 45) + (stocks * 30) + (barrels * 25);
if (t_sales <= 1000)
{
commission = 0.10 * t_sales;
}
else if (t_sales < 1800)
{
commission = 0.10 * 1000;
commission = commission + (0.15 * (t_sales - 1000));
}
else
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
}
printf("The total sales is %d \n The commission is %f",t_sales,
commission);
getch(); return;
}
1.3 TESTING
Boundary value analysis is a next part of Equivalence partitioning for designing test
cases where test cases are selected at the edges of the equivalence classes.
BVA: Procedure
1. Partition the input domain using unidimensional partitioning. This leads to as many
partitions as there are input variables. Alternately, a single partition of an input domain can
be created using multidimensional partitioning. We will generate several sub-domains in
this Step.
2. Identify the boundaries for each partition. Boundaries may also be identified
using special relationships amongst the inputs.
3. Select test data such that each boundary value occurs in at least one test input.
4. BVA: Example: Create equivalence classes
Assuming that an item code must be in the range 99...999 and quantity in the range 1...100,
Equivalence classes for code:
E1: Values less than 99.
E2: Values in the range.
E3: Values greater than 999.
Equivalence classes and boundaries for find Price. Boundaries are indicated with an x.
Points near the boundary are marked *.
The Commission Problem takes locks, stocks and barrels as input and checks it for
validity. If it is valid, it returns the commission as its output. Here we have three inputs
for the program, hence n = 3.
Since BVA yields (4n + 1) test cases according to single fault assumption
theory, hence we can say that the total number of test cases will be (4*3+1)
=12+1=13.
The boundary value test case can be generated over an output by using fallowing
constraints and these constraints are generated over commission:
Here from these constraints we can extract the test cases using the values of Locks,
Stocks, and Barrels sold in month. The boundary values for commission are 10%, 15% and
20%.
From the above equivalence classes we can derive the following test cases using
boundary value analysis approach.
This is how we can apply BVA technique to create test cases for our
Commission Problem.
1.4 EXECUTIONS
Execute the program and test the test cases in Table-1 against program and complete
the table with for Actual output column and Status column
TEST REPORT:
1. No of TC’s Executed:
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
1.5 SNAPSHOTS:
3. Snapshots when the two inputs and all the inputs are same
1.6 REFERENCES
1. Requirement Specification
2. Assumptions
2 Second Program
Design, develop, code and run the program in any suitable language to implement the
Next Date function. Analyze it from the perspective of equivalence class value
testing, derive different test cases, execute these test cases and discuss the test results.
Problem Definition: "Next Date" is a function consisting of three variables like: month,
date and year. It returns the date of next day as output. It reads current date as input date.
C1: 1 ≤ month ≤ 12
C2: 1 ≤ day ≤ 31
C3: 1812 ≤ year ≤ 2012.
If any one condition out of C1, C2 or C3 fails, then this function produces an output "value
of month not in the range 1...12".
Since many combinations of dates can exist, hence we can simply displays one message for
this function: "Invalid Input Date".
A very common and popular problem occurs if the year is a leap year. We have taken into
consideration that there are 31 days in a month. But what happens
if a month has 30 days or even 29 or 28 days ?
A year is called as a leap year if it is divisible by 4, unless it is a century year. Century years
are leap years only if they are multiples of 400. So, 1992, 1996 and 2000 are leap years while
1900 is not a leap year.
Furthermore, in this Next Date problem we find examples of Zipf's law also, which states that
"80% of the activity occurs in 20% of the space". Thus in this case also, much of the
source-code of Next Date function is devoted to the leap year considerations.
2.2 DESIGN
Algorithm:
#include<stdio.h>
#include<conio.h>
main( )
{
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int d,m,y,nd,nm,ny,ndays;
clrscr( );
printf("enter the date,month,year");
scanf("%d%d%d",&d,&m,&y);
ndays=month[m-1];
if(y<=1812 && y>2012)
{
printf("Invalid Input Year");
exit(0);
}
if(d<=0 || d>ndays)
{
if(m==2)
{
if(y%100==0)
{
if(y%400==0)
ndays=29;
}
BIT, Dept. of ISE 2023-24 Page 13
Software Testing Laboratory (21ISL66)
else
if(y%4==0)
ndays=29;
nd=d+1; nm=m; ny=y;
}
if(nd>ndays)
{
nd=1;
nm++;
}
if(nm>12)
{
nm=1;
ny++;
}
if(nm>12)
{
nm=1;
ny++;
}
printf("\n Given date is %d:%d:%d",d,m,y); printf("\n Next day’s date is
%d:%d:%d",nd,nm,ny); getch( );
}
2.4 TESTING
Test selection using equivalence partitioning allows a tester to subdivide the input domain
into a relatively small number of sub-domains, say N>1, as shown.
In strict mathematical terms, the sub-domains by definition are disjoint. The four subsets
shown in (a) constitute a partition of the input domain while the
Subsets in (b) are not. Each subset is known as an equivalence class.
Example:
Consider an application A that takes an integer denoted by age as input. Let us suppose that the
only legal values of age are in the range [1..120]. The set of input values is now divided into
a set E containing all integers in the range
[1..120] and a set U containing the remaining integers.
Further, assume that the application is required to process all values in the range [1..61] in
accordance with requirement R1 and those in the range [62..120] according to
requirement R2. Thus E is further subdivided into two
regions depending on the expected behavior.
Similarly, it is expected that all invalid inputs less than or equal to 1 are to be treated in one
way while all greater than 120 are to be treated differently.
This leads to a subdivision of U into two categories,
Tests selected using the equivalence partitioning technique aim at targeting faults in the
application under test with respect to inputs in any of the four regions, i.e. two regions
containing expected inputs and two regions containing the unexpected inputs.
It is expected that any single test selected from the range [1...61] will reveal any fault with
respect to R1. Similarly, any test selected from the region [62...120] will reveal any
fault with respect to R2. A similar expectation applies to the two regions containing the
unexpected inputs.
The Next Date function is a function which will take in a date as input and produces as
output the next date in the Georgian calendar. It uses three variables (month, day and
year) which each have valid and invalid intervals.
First Attempt
Valid Intervals
Invalid Intervals
M2 = {month: month < 1}
M3 = {month: month > 12}
D2 = {day: day < 1}
D3 = {day: day > 31}
Y2 = {year: year < 1812}
Y3 = {year: year > 2012}
At a first glance it seems that everything has been taken into account and our day, month
and year intervals have been defined well. Using these intervals we produce test cases
using the four different types of Equivalence Class testing.
Since the number of variables is equal to the number of valid classes, only one weak
normal equivalence class test case occurs, which is the same as the strong normal
equivalence class test case (Table 1).
Weak Robust:
(Table 2) we can see that weak robust equivalence class testing will just test the ranges of
the input domain once on each class. Since we are testing weak and not normal, there will
only be at most one fault per test case (single fault assumption) unlike Strong Robust
Equivalence class testing.
Strong Robust:
This is a table showing one corner of the cube in 3d-space (the three other corners
would include a different combination of variables) since the
complete table would be too large to show.
Second Attempt
As said before the equivalence relation is vital in producing useful test cases and more time
must be spent on designing it. If we focus more on the equivalence relation and
consider more greatly what must happen to an input date we might produce the following
equivalence classes:
Here month has been split up into 30 days (April, June, September and November),
31 days (January, March, April, May, July, August, October and December) and February.
Day has been split up into intervals to allow months to have a different number of
days; we also have the special case of a leap year (February 29 days).
Year has been split up into common years, leap years and the special case the year 2000 so we
can determine the date in the month of February.
Here are the test cases for the new equivalence relation using the four types of
Equivalence Class testing.
Weak Normal
Strong Normal
2.5 EXECUTIONS
Execute the program and test the test cases in Table-1 against program and complete the
table with for Actual output column and Status column
Test Report:
1. No of TC’s Executed:
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
2.6 SNAPSHOTS:
1. Snapshot to show the nextdate for current date and invalid day is entered
2. Invalid Input
2.7 REFERENCES:
1. Requirement Specification
2. Assumptions
3 Third Program
Design, develop, code and run the program in any suitable language to solve the
commission problem. Analyze it from the perspective of dataflow testing, derive different
test cases, execute these test cases and discuss the test results.
Locks- $45
Stocks- $30
Barrels- $25
The salesperson had to sell at least one complete rifle per month and production
limits were such that the most the salesperson could sell in a month was 70 locks, 80
stocks and 90 barrels.
After each town visit, the sales person sent a telegram to the Missouri gunsmith with
the number of locks, stocks and barrels sold in the town. At the end of the month, the
salesperson sent a very short telegram showing -
-1 lock sold. The gunsmith then knew the sales for the month were complete and
computed the salesperson’s commission as follows:
sequences It explores the effect of using the value produced by every and each computation.
Variable definition
Occurrences of a variable where a variable is given a new value (assignment, input by the
user, input from a file, etc.) Variable DECLARATION is NOT its definition !!!
Variable uses
Occurences of a variable where a variable is not given a new value (variable
DECLARATION is NOT its use)
– All c-uses.
– All p-uses.
– All du-paths.
line catogary
Definition c-use p-use
1
BIT, Dept. of ISE 2023-24 Page 26
Software Testing Laboratory (21ISL66)
2
3
4
5
6
7
8
9 locks, stocks, barrels
10 locks, stocks, barrels
11
12 Flag
13
14 flag
15
16
17
18
19
locks, stocks,
barrels
20 t_sales
21 t_sales
22
23 commission t_sales
24
25 t_sales
26
27 commission
28 commission commission, t_sales
29
30
31
32 commission
33 commission commission
34 commission commission, t_sales
35
36 commission
37
38
39
Table: list occurrences & assign a category to each variable
To achieve 100% All-definitions data flow coverage at least one sub-path from
each variable definition to some use of that definition (either c- or p- use) must be executed.
Inputs Expected output
Variable(s) du- sub- locks stocks barrels t_sales commiss
pair path ion
locks, 9→20 9,10,20 10 10 10 1000
stocks,
barrels
locks, 9→10 9→10 5 -1 22 Invalid Input
stocks,
barrels
Flag 12→14 12→14 -1 40 45 Invalid Input
t_sales 20→21 20,21 5 5 5 500
t_sales 20→25 20,21,25 15 15 15 1500
commission 23→36 23→36 5 5 5 50
commission 27→36 27,28,36 15 15 15 175
commission 32→36 32,33,34, 25 25 25 360
36
3.3 EXECUTION
Execute the program and test the test cases in above Tables against program
and complete the table with for Actual output column and Status column.
3.4 SNAPSHOTS:
1. Snapshot for Total sales and commission when total sales are within 1000 and
Invalid input
2. Invalid Input and Total sales and commission when total sales are within
1000
3. Snapshot for for Total sales and commission when total sales are within
1800 and to find out the total commission 360
3.5 REFERENCES
1. Requirement Specification.
2. Assumptions.
4 Fourth Program
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 a
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.
R1. The system should accept 3 positive integer numbers (a, b, c) which represents 3
sides of the triangle. Based on the input it should determine if a triangle can be formed or
not.
R2. If the requirement R1 is satisfied then the system should determine the type of the
triangle, which can be
• Equilateral (i.e. all the three sides are equal)
• Isosceles (i.e Two sides are equal)
• Scalene (i.e All the three sides are unequal)
else suitable error message should be displayed. Here we assume that user gives three
positive integer numbers as input.
4.2 DESIGN:
Form the given requirements we can draw the following conditions: C1: a<b+c?
C2: b<a+c?
C3: c<a+b?
C4: a=b? C5:
a=c? C6:
b=c?
According to the property of the triangle, if any one of the three conditions C1,
C2 and C3 are not satisfied then triangle cannot be constructed. So only when C1, C2 and
C3 are true the triangle can be formed, then depending on conditions C4, C5 and C6
we can decide what type of triangle will be formed. (i.e requirement R2).
Algorithm:
Step 1: Input a, b & c i.e three integer values which represent three sides of the triangle.
Step 2: if (a < (b + c)) and (b < (a + c)) and (c < (a + b) then do Step 3
else
print not a triangle. do Step 6.
Step 3: if (a=b) and (b=c) then
Print triangle formed is equilateral. do Step 6.
Step 4: if (a ≠ b) and (a ≠ c) and (b ≠ c) then
Print triangle formed is scalene. do Step 6.
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#include<process.h>
int main()
{
int a, b, c;
clrscr();
printf("Enter three sides of the triangle");
scanf("%d%d%d", &a, &b, &c);
if((a<b+c)&&(b<a+c)&&(c<a+b))
{
if((a==b)&&(b==c))
{
printf("Equilateral triangle");
}
else if((a!=b)&&(a!=c)&&(b!=c))
{
printf("Scalene triangle");
}
else
printf("Isosceles triangle");
}
else
{
printf("triangle cannot be formed");
} getch(); return 0;
}
4.4 TESTING:
Decision Table-Based Testing has been around since the early 1960’s; it is used to
depict complex logical relationships between input data. A Decision Table is the method
used to build a complete set of test cases without using the internal structure of the
program in question. In order to create test cases we use a table to contain the input and
output values of a program.The decision table is as given below:
The “--“ symbol in the table indicates don’t care values. The table shows the six
conditions and 5 actions. All the conditions in the decision table are binary;
hence, it is called as “Limited Entry decision table”.
Each column of the decision table represents a test case. That is, The
table is read as follows:
Action: Not a Triangle
1. When condition C1 is false we can say that with the given ‘a’ ‘b’ and ‘c’
2. Similarly condition C2 and C3, if any one of them are false, we can say that with the
given ‘a’ ‘b’ and ‘c’ values it’s Not a triangle.
Action: Impossible
3. When conditions C1, C2, C3 are true and two conditions among C4, C5, C6 is true,
there is no chance of one conditions among C4, C5, C6 failing. So we can neglect these
rules.
Example: if condition C4: a=b is true and C5: a=c is true
Then it is impossible, that condition C6: b=c will fail, so the action is
Impossible.
Action: Isosceles
4. When conditions C1, C2, C3 are true and any one condition among C4, C5 and C6 is
true with remaining two conditions false then action is Isosceles triangle.
Example: If condition C4: a=b is true and C5: a=c and C6: b=c are false, it means
two sides are equal. So the action will be Isosceles triangle.
Action: Equilateral
5. When conditions C1, C2, C3 are true and also conditions C4, C5 and C6 are true
then, the action is Equilateral triangle.
Action: Scalene
6. When conditions C1, C2, C3 are true and conditions C4, C5 and C6 are false i.e sides
a, b and c are different, then action is Scalene triangle.
Number of Test Cases = Number of Rules.
Using the decision table we obtain 11 functional test cases: 3 impossible cases,
3 ways of failing the triangle property, 1 way to get an equilateral triangle, 1 way to get
a scalene triangle, and 3 ways to get an isosceles triangle.
Deriving test cases using
Decision Table Approach:
Test Cases:
TC Test Case Expected Actual
ID Description a B c Output Output Status
Testing for Not a
1 Requirement 1 4 1 2 Triangle
Testing for Not a
2 Requirement 1 1 4 2 Triangle
Testing for Not a
3 Requirement 1 1 2 4 Triangle
Testing for
4 Requirement 2 5 5 5 Equilateral
Testing for
5 Requirement 2 2 2 3 Isosceles
Testing for
6 Requirement 2 2 3 2 Isosceles
Testing for
7 Requirement 2 3 2 2 Isosceles
Testing for
8 Requirement 2 3 4 5 Scalene
Execute the program against the designed test cases and complete the table for Actual
output column and status column.
Test Report:
1. No of TC’s Executed: 08
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
The decision table technique is indicated for applications characterised by any of the
following:
Prominent if-then-else logic
The decision table-based testing works well for triangle problem because a lot of decision
making i.e if-then-else logic takes place.
4.6 SNAPSHOTS:
4.7 REFERENCES:
1. Requirement Specification
2. Assumption.
5 Fifth Program
Design, develop, code and run the program in any suitable language to solve the
commission problem. Analyze it from the perspective of decision table-based testing,
derive different test cases, execute these test cases and discuss the test results.
R1: The system should read the number of Locks, Stocks and Barrels sold in a month.
Also the system should compute the total dollar sales. The system should output
salespersons total dollar sales, and his commission.
5.2 DESIGN:
C1: 1≤locks≤70? Locks = -1? (occurs if locks = -1 is used to control input iteration).
C2: 1≤stocks≤80? Here C1 can be expanded as:
C1a: 1≤locks
C3: 1≤barrels≤90? C1b: locks≤70
C4: sales>1800?
C5: sales>1000?
C6: sales≤1000?
Algorithm:
Step 1: Input 3 integer numbers which represents number of Locks, Stocks and Barrels sold.
Step 2: compute the total sales =
(Number of Locks sold *45) + (Number of Stocks sold *30) + (Number of
Barrels sold *25)
Step 3: if a totals sale in dollars is less than or equal to $1000
then commission = 0.10* total Sales do Step 6
Step 4: else if total sale is less than $1800
then commission1 = 0.10* 1000
commission = commission1 + (0.15 * (total sales – 1000))
do Step 6
Step 5: else commission1 = 0.10* 1000
commission2 = commission1 + (0.15 * 800))
commission = commission2 + (0.20 * (total sales – 1800)) do
Step 6
Step 6: Print commission.
Step 7: Stop.
#include<stdio.h>
#include<conio.h>
int main()
{
int locks, stocks, barrels, t_sales, flag = 0;
float commission;
clrscr();
printf("Enter the total number of locks");
scanf("%d",&locks);
if ((locks <= 0) || (locks > 70))
{
flag = 1;
}
printf("Enter the total number of stocks");
scanf("%d",&stocks);
if ((stocks <= 0) || (stocks > 80))
{
flag = 1;
}
printf("Enter the total number of stocks");
scanf("%d",&stocks);
if ((stocks <= 0) || (stocks > 80))
{
flag = 1;
}
printf("Enter the total number of barrelss");
scanf("%d",&barrels);
if ((barrels <= 0) || (barrels > 90))
{
flag = 1;
}
if (flag == 1)
{
printf("invalid input");
getch();
exit(0);
}
t_sales = (locks * 45) + (stocks * 30) + (barrels * 25);
if (t_sales <= 1000)
{
commission = 0.10 * t_sales;
}
else if (t_sales < 1800)
{
commission = 0.10 * 1000;
commission = commission + (0.15 * (t_sales - 1000));
}
else
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
}
printf("The total sales is %d \n The commission is %f",t_sales,
commission);
getch();
return;
}
5.4 TESTING
a3: com3 =
com2+0.20*(sales-1800) X
a4: Out of Range. X X X
Using the decision table we get 6 functional test cases: 3 cases out of range, 1 case each for
sales greater than $1800, sales greater than $1000, sales less than or equal to $1000.
Execute the program against the designed test cases and complete the table for Actual
output column and status column.
TEST REPORT:
1. No of TC’s Executed:
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
The commission problem is not well served by a decision table analysis because it
has very little decisional. Because the variables in the equivalence
classes are truly independent, no impossible rules will occur in a decision table in which
condition correspond to the equivalence classes.
5.6 SNAPSHOTS:
1. Snapshot for Total sales and commission when total sales are within 1000 and 1800
5.7 REFERENCES:
1. Requirement Specification
2. Assumptions
6 Sixth Program
Design, develop, code and run the program in any suitable language to implement the
binary search algorithm. Determine the basis paths and using them derive different test
cases, execute these test cases and discuss the test results.
R1: The system should accept ‘n’ number of elements and key element that is to be searched
among ‘n’ elements..
R2: Check if the key element is present in the array and display the position if present
otherwise print unsuccessful search.
6.2 DESIGN
We use integer array as a data structure to store ‘n’ number of elements. Iterative
programming technique is used.
Algorithm:
Step 1: Input value of ‘n’. Enter ‘n’ integer numbers in array int mid;
Step 2: Initialize low = 0, high = n -1
Step 3: until ( low <= high ) do mid =
(low + high) / 2 if ( a[mid]
== key )
then do Step 5 else
if ( a[mid] > key ) then do
high = mid - 1
else
low = mid + 1
Step 4: Print unsuccessful search do Step 6.
Step 5: Print Successful search. Element found at position mid+1.
Step 6: Stop.
#include<stdio.h>
include<conio.h>
int main()
Int a[20],n,low,high,mid,key,I;
int flag=0;
clrscr();
printf("Enter the value of n:\n");
scanf("%d",&n);
if(n>0)
{
printf("Enter %d elements in ASCENDING order\n",n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("Enter the key element to be searched\n");
scanf("%d",&key);
low-=0;
high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
{
flag=1;
break;
}
else if(a[mid]<key)
{
low=mid+1;
}
else
{
high=mid-1;
}
}
if(flag==1)
printf("Successful search\n Element found at Location %d\n",mid+1);
else
printf(“Key element is not found”);
}
else
printf("Wrong input");
getch();
return 0;
}
6.4 TESTING
Number of nodes = 15
21 – 15 + 2(1) = 4.
Software Testing Laboratory
Here we are dealing code level dependencies, which are absolutely incompatible with the
latent assumption, that basis path are independent. McCabe’s procedure successfully identifies
basis path that are topologically independent, but when these contradict semantic
dependencies, topologically possible paths are seen to be logically infeasible. One solution
to this problem is to always require that flipping a decision result in a semantically
feasible path. For this problem we identify some of the rules:
If node C not traversed, then node M should be traversed.
The last step is to devise test cases for the basis paths.
TEST CASES
Execute the program against the designed test cases and complete the table for Actual output
column and status column.
Test Report:
1. No of TC’s Executed: 06
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
6.6 SNAPSHOTS:
1. Requirement Specification
2. Assumptions
1. Open Terminal
2. Then open VI –Editor using the filename, following command will shows that