Software Testing Laboratory
2013-14
SOFTWARE TESTING
LABORATORY
Subject Code: 10ISL68
25
Hours/Week: 03
I.A. Marks:
Exam Hours:
03
Total Hours: 42
50
Exam Marks:
1. 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.
2. 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, execute the test cases and discuss
the results.
3. 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 equivalence class partitioning, execute the test cases
and discuss the results.
4. 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.
5. Design, develop, code and run the program in any suitable
language to
Solve the commission problem. Analyze it from the
perspective of
Department of ISE, DSCE-Bangalore
1
Page
Software Testing Laboratory
2013-14
Boundary value testing, derives 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 solve the commission problem. Analyze it
from the perspective of equivalence class testing, derive
different test cases, execute these test cases and discuss
the test results.
7. 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.
8. 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.
9. Design, develop, code and run the program in any suitable
language to
implement the quicksort algorithm. Determine the basis paths
and using them derive different test cases, execute these test
cases and discuss the test results. discuss the test results.
10. Design, develop, code and run the program in any suitable
language to
implement
an
absolute
letter
grading
procedure, making
suitable
assumptions.
Determine the basis paths and using them derive different
test cases, execute these test cases and discuss the test
results.
11. Design, develop, code and run the program in any suitable
language to implement the NextDate function. Analyze it
from the perspective of boundary value testing, derive
different test cases, execute these test cases and discuss the
test results.
12. Design, develop, code and run the program in any suitable
language to implement the NextDate function. Analyze it
from the perspective of equivalence class value testing,
derive different test cases, execute these
test cases and discuss the test
results.
Department of ISE, DSCE-Bangalore
2
Page
Software Testing Laboratory
2013-14
1. 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.
1.1
REQUIREMENTS:
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.
1.2
DESIGN:
From 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).
ALGORITH
M:
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
Department of ISE, DSCE-Bangalore
3
Page
Software Testing Laboratory
2013-14
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.
Step 5: Print triangle formed is
Isosceles. Step 6: stop
1.3 PROGRAM CODE:
#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
{
Department of ISE, DSCE-Bangalore
4
Page
Software Testing Laboratory
2013-14
printf("triangle cannot be formed");
}
getch();
return
0;
}
1.4
TESTING:
Technique Used: Decision Table
Approach
Decision Table-Based Testing has been around since the early
1960s; 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:
Condition Entries (Rules)
Conditions
R
R
R1 R2 R3 R4 R5 R6 R7 R8 R9
10 11
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
C4: a=b?
---F
T
T
T
F
F
F
T
C5: a=c?
---T
F
T
F
T
F
F
T
C6: b=c?
---T
T
F
F
F
T
F
T
Actions
Action Entries
a1: Not a
X
X
X
Triangle
a2: Scalene
X
a3: Isosceles
X
X
X
a4:
X
Equilateral
a5:
X
X
X
Impossible
The -- symbol in the table indicates dont 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.
Department of ISE, DSCE-Bangalore
Page 5
Software Testing Laboratory
2013-14
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
values, its
triangle.
Not
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 its 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
Impossibl
e.
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.
Department of ISE, DSCE-Bangalore
6
Page
Software Testing Laboratory
2013-14
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
ID
Descripti
Testing
1
Requirement 1
Testing
2
Requirement 1
Testing
3
Requirement 1
Testing
4
Requirement 2
Testing
5
Requirement 2
Testing
6
Requirement 2
Testing
7
Requirement 2
Testing
8
Requirement 2
a
for
for
for
for
for
for
for
for
Expecte
d
Outpu a
Not
Triangle
Not
a
Triangle
Not
a
Triangle
Equilateral
Isosceles
Isosceles
Isosceles
Scalene
Actual
Output
Status
1.5 EXECUTION & RESULT DISCUSION
Execute the program against the designed test cases and
complete the table for Actual output column and status column.
Test Report:
1. No of TCs Executed: 08
2. No of Defects Raised:
3. No of TCs Pass:
Department of ISE, DSCE-Bangalore
Page 7
Software Testing Laboratory
2013-14
4. No of TCs
Failed:
The decision table technique is indicated for applications
characterised by any of the following:
Prominent if-then-else logic
Logical relationships among input variables
Calculations involving subsets of the input variables
Cause-and-effect relationship between inputs and outputs
The decision table-based testing works well for triangle problem
because a lot of decision making i.e if-then-else logic takes place.
1.6 SNAPSHOTS:
1. Output screen of Triangle cannot be formed
Department of ISE, DSCE-Bangalore
Page 8
Software Testing Laboratory
2013-14
2. Output screen of Equilateral and Isosceles Triangle.
3. Output screen for Scalene Triangle
1.7. REFERENCES:
Department of ISE, DSCE-Bangalore
Page 9
Software Testing Laboratory
2013-14
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
10
Page
Software Testing Laboratory
2013-14
2. 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 boundaryvalue analysis, execute the test cases and discuss the results.
2.1
REQUIREMENTS
R1. The system should accept 3 positive integer numbers (a,
b, c) which represents 3 sides of the triangle.
R2. Based on the input should determine if a triangle can be
formed or
not.
R3. If the requirement R2 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)
R4. Upper Limit for the size of any side is 10
2.2
DESIGN
ALGORITH
M:
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.
Department of ISE, DSCE-Bangalore
11
Page
Software Testing Laboratory
2013-14
Step 5: Print triangle formed is Isosceles.
Step 6:
stop
2.3 PROGRAM CODE:
#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 > 10) || (b > 10) || (c > 10))
{
printf("Out of range");
getch();
exit(0);
}
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");
}
els
e
printf("Isosceles triangle");
}
els
e
Department of ISE, DSCE-Bangalore
12
Page
Software Testing Laboratory
2013-14
{
printf("triangle cannot be formed");
}
getch();
return
0;
}
2.4 TESTING
1. Technique used: Boundary value analysis
2. Test Case design
For BVA problem the test cases can be generation
depends on the output and the constraints on the output.
Here we least worried on the constraints on Input domain.
The Triangle problem takes 3 sides as input and checks it
for validity, 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 maximum limit of each sides a, b, and c of the triangle
is 10 units according to requirement R4. So a, b and c lies
between
0a
10
0b
10
0c
10
Equivalence classes
for a:
E1: Values less than
1. E2: Values in the
range.
E3:
Values
greater
than 10.
Equivalence classes
for b:
E4: Values less
than 1.
Department of ISE, DSCE-Bangalore
13
Page
Software Testing Laboratory
2013-14
E5: Values in the range.
E6: Values greater than 10.
Equivalence classes for c:
E7: Values less than
1. E8: Values in the
range.
E9: Values greater than 10.
From the above equivalence classes we can derive the following
test cases using boundary value analysis approach.
TC
Id
1
2
3
4
5
6
7
Test
Case
For A input is
not given
For B input is
not
given
For C input is
not
given
Input of C is
in
negative(-)
Two sides are
Input Data Expected
Actual
Output
Output
A b C
X
3 6
Not a Triangle
5
Not a Triangle
Not a Triangle
-1
Not a Triangle
Isosceles
Equilateral
Isosceles
10 Not a Triangle
same one side
is given
different
input
All Sides of
5
inputs
are
Twoequal
sides are 5
same one side
is
given
different
The inputinput
of C
is
out of range
(i.e., range is
Department of ISE, DSCE-Bangalore
Status
Page 14
Software Testing Laboratory
10
11
12
13
Two sides are 5
same one side
is
given
different input
(i.e.,
A & are
C 5
Two sides
same one side
is
given
different input
(i.e.,
A & are
C 5
Two sides
same one side
is
given
different input
(i.e.,
A & are
C 5
Two sides
same one side
is given
different input
(i.e., A & C
are 5, B=10
so, it isout
of sides
givenare 1
Two
2013-14
Isosceles
Isosceles
Isosceles
10 5
Not a Triangle
Isosceles
Isosceles
Isosceles
same one side
is
given
14
15
different input
(i.e.,
B & are
C 2
Two sides
same one side
is
given
different input
(i.e.,
B & are
C 9
Two sides
same one side
is
Department of ISE, DSCE-Bangalore
Page 15
Software Testing Laboratory
2013-14
given
16
different
input
(i.e., B
Two sides
are 10 5
same one side
is
given
Not a Triangle
different input
(i.e., B & C
are 5, A=10,
so the given
Table-1: Test case for Triangle Problem
2.5 EXECUTION:
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 TCs Executed:
2. No of Defects Raised:
3. No of TCs Pass:
4. No of TCs Failed:
Department of ISE, DSCE-Bangalore
Page 16
Software Testing Laboratory
2013-14
2.6 SNAPSHOTS:
1. Snapshot of Isosceles and Equilateral triangle and triangle
can not be formed.
2. Snapshot for Isosceles and triangle cannot be formed
Department of ISE, DSCE-Bangalore
Page 17
Software Testing Laboratory
2013-14
3. Snapshot for Isosceles and triangle cannot be formed
Department of ISE, DSCE-Bangalore
Page 18
Software Testing Laboratory
2013-14
4. Output screen for Triangle cannot be formed
2.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
Page 19
Software Testing Laboratory
2013-14
3. 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
equivalence class partitioning, execute the test cases and discuss
the results.
3.1
REQUIREMENTS
R1. The system should accept 3 positive integer numbers (a,
b, c) which represents 3 sides of the triangle.
R2. Based on the input should determine if a triangle can be
formed or not. R3. If the requirement R2 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)
R4. Upper Limit for the size of any
side is 10
3.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
R3).
Department of ISE, DSCE-Bangalore
20
Page
Software Testing Laboratory
2013-14
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. Step 5: Print triangle formed
is Isosceles. Step 6: stop
3.3 PROGRAM CODE
#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 > 10) || (b > 10) || (c > 10))
{
printf("Out of range");
getch();
exit(0);
}
if((a<b+c)&&(b<a+c)&&(c<a+b))
{
Department of ISE, DSCE-Bangalore
21
Page
Software Testing Laboratory
2013-14
if((a==b)&&(b==c))
{
printf("Equilateral triangle");
}
else if((a!=b)&&(a!=c)&&(b!=c))
{
printf("Scalene triangle");
}
els
e
printf("Isosceles triangle");
}
els
e
{
printf("triangle cannot be formed");
}
getch();
return
0;
}
3.4 TESTING
1. Technique used: Equivalence class partitioning
2. Test Case design
Equivalence class partitioning technique focus on the Input
domain, we can obtain a richer set of test cases. What are
some of the possibilities for the three integers, a, b, and c?
They can all be equal, exactly one pair can be equal.
The maximum limit of each side a, b, and c of the triangle
is 10 units according to requirement R4. So a, b and c lies
between
0a
10
0b
10
0c
10
Department of ISE, DSCE-Bangalore
22
Page
Software Testing Laboratory
2013-14
First Attempt
Weak normal equivalence class:
In
the
problem
statement, we note that four possible outputs can occur:
Not a Triangle, Scalene, Isosceles and Equilateral.
We
can
use these
to
identify
output
(range) equivalence classes as follows:
R1= {<a,b,c>: the triangle with sides a, b, and c is
equilateral} R2= {<a,b,c>: the triangle with sides
a, b, and c is isosceles}
R3= {<a,b,c>: the triangle with sides a, b, and c is
scalene}
R4= {<a,b,c>: sides a, b, and c do not form a triangle}
Four weak normal equivalence class test cases, chosen
arbitrarily from each class, and invalid values for weak
robust equivalence class test cases are as follows.
TC Test
Id
Case
1
WN1
Input Data Expected Output
Equilateral
WN2
Isosceles
WN3
Scalene
WN4
Not a Triangle
WR1
-1
WR2
-1
WR3
-1
WR4
11 5
Value of a is not
the range of
permitted
values of b is not
Value
the range of
permitted
values of c is not
Value
the range of
permitted
values of a is not
Value
the range of
permitted
values
Department of ISE, DSCE-Bangalore
23
Actual
Output
Statu
s
in
in
in
in
Page
Software Testing Laboratory
2013-14
WR5
11
10
WR6
11
Value of b is not in
the
range of
permitted
Value of
c is not in
the range of
permitted
values
Table-1: Weak Normal and Weak Robust Test case for Triangle
Problem
Second attempt
The strong normal equivalence class test cases can be
generated by using following possibilities:
D1 = {<a, b, c>:
a=b=c}
D2 = {<a, b, c>:
a=b, a c} D3=
{<a, b, c>: a=c, a
b} D4 = {<a, b, c>:
b=c, a b}
D5 = {<a, b, c>: a b,
a c, b c}
D6 = {<a, b, c>:
a b+ c} D7 =
{<a, b, c>: b a+
c} D8 = {<a, b, c>:
c a+ b}
TC Test
Input Data Expected Output
Actual
Id
Output
a
b
c
Case
Descripti
1
SR1
-1 5
5
Value of a is not in
the range of
permitted
values of b is not in
2
SR 2
5
-1 5
Value
the range of
permitted
values of c is not in
3
SR3
5
5
-1 Value
the range of
permitted
values
Statu
s
SR4
-1
-1
Value of a, b is
not in
the range of
permitted values
Department of ISE, DSCE-Bangalore
24
Page
Software Testing Laboratory
2013-14
SR5
-1
-1
SR6
-1
-1
SR7
-1
-1
-1
Value of b, c is not in
the
range of
Value ofpermitted
a, c is not in
the range of
permitted
values
Value of a, b, c is
not in the range of
permitted values
Table-2: Strong Robust Test case for Triangle Problem
3.5 EXECUTION:
Execute the program and test the test cases in Table-1 and
Table-2 against program and complete the table with for Actual
output column
and
Status column
Test Report:
1.
2.
3.
4.
No
No
No
No
of
of
of
of
TCs Executed:
Defects Raised:
TCs Pass:
TCs Failed:
Department of ISE, DSCE-Bangalore
25
Page
Software Testing Laboratory
2013-14
3.6 SNAPSHOTS:
1. Snapshot of Equilateral. Isosceles and scalene triangle.
2. Snapshot for Triangle cannot be formed
Department of ISE, DSCE-Bangalore
Page 26
Software Testing Laboratory
2013-14
3. Snapshot for the given range is Out of range and Triangle cannot
be formed.
Department of ISE, DSCE-Bangalore
Page 27
Software Testing Laboratory
2013-14
3.7 REFERENCES
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
28
Page
Software Testing Laboratory
2013-14
4. 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.
4.1
REQUIREMENT
SPECIFICATION
Problem Definition: The Commission Problem includes a
salesperson in the former Arizona Territory sold rifle locks,
stocks and barrels made by a gunsmith in Missouri. Cost
includes
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 salespersons
commission as follows:
On sales up to(and including) $1000=
10% On the sales up to(and includes)
$1800= 15% On the sales in excess of
$1800= 20%
The commission program produces a monthly sales report that
gave the total number of locks, stocks and barrels sold, the
salespersons total dollar sales and finally the commission
4.2
DESIGN
Algorith
m
STEP 1: Define
barrelPrice=25.0
STEP2:
locks
lockPrice=45.0,
stockPrice=30.0,
Input
Department of ISE, DSCE-Bangalore
29
Page
Software Testing Laboratory
2013-14
STEP3: while(locks!=-1) input device uses -1 to indicate end of
data goto
STEP 12
STEP4:input (stocks, barrels)
STEP5: compute lockSales, stockSales, barrelSales and sales
STEP6: output(Total sales: sales)
STEP7: if (sales > 1800.0) goto STEP 8 else goto STEP 9
STEP8: commission=0.10*1000.0;
commission=commission+0.15 * 800.0;
commission = commission + 0.20 * (sales1800.0) STEP9: if (sales > 1000.0) goto STEP 10
else goto STEP 11
STEP10: commission=0.10* 1000.0; commission=commission +
0.15 *
(sales-1000.0)
STEP11: Output(Commission is $,
commission) STEP12: exit
4.3 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;
}
Department of ISE, DSCE-Bangalore
30
Page
Software Testing Laboratory
2013-14
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));
}
els
e
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
}
Department of ISE, DSCE-Bangalore
31
Page
Software Testing Laboratory
printf("The total sales
%f",t_sales, commission);
getch();
return;
}
2013-14
is
%d
\n
The
commission
is
4.4 TESTING TECHNIQUE: DATAFLOW TESTING
A structural testing technique
Aims to execute sub-paths from points where each variable is
defined to points where it is referenced. These sub-paths are
called definition-use pairs, or du-pairs (du-paths, du-chains) Data
flow
testing is centred on variables (data) Data flow testing
follows the sequences of events related to a given data item with
the objective to detect incorrect 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)
p-uses (predicate uses)
Occur in the predicate portion of a decision statement such as
if-then-else, while-do etc.
c-uses (computation uses)
All others, including variable occurrences in the right hand
side of an assignment statement, or an output statement
Department of ISE, DSCE-Bangalore
32
Page
Software Testing Laboratory
2013-14
du-path: A sub-path from a variable definition
to its use. Test case definitions based on four
groups of coverage
All definitions.
All c-uses.
All p-uses.
All du-paths.
DATA FLOW TESTING: KEY STEPS
Given a code (program or pseudo-code).
1. Number the lines.
2. List the variables.
3. List occurrences & assign a category to each variable.
4. Identify du-pairs and their use (p- or c- ).
5. Define test cases, depending on the required coverage.
line
Definition
1
2
3
4
5
6
7
8
9 locks, stocks,
10 barrels
11
12 Flag
13
14
15
16
17
Department of ISE, DSCE-Bangalore
catogar
c-y
use
puse
locks, stocks, barrels
flag
Page 33
Software Testing Laboratory
2013-14
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
t_sales
locks, stocks,
barrels
t_sales
commission
t_sales
t_sales
commission
commission
commission
commission
commission
commission,
t_sales
commission
commission,
t_sales
commission
Fig: list occurrences & assign a category to each variable
Department of ISE, DSCE-Bangalore
Page 34
Software Testing Laboratory
definition - use
pair
start line end line
910
910
910
920
920
920
1214
2021
2023
2025
2028
2034
2336
2728
2836
3233
3334
3436
2013-14
cuse
variables
()
lock
s
stock
s
barrel
s
puse
locks
stock
s
barrel
s
flag
t_sale
s
t_sale
s
t_sale
s
t_sale
s
t_sale
s
commission
commission
commission
commission
commission
commission
Fig: define test
cases
TEST CASES BASED ON ALL DEFINITION
To achieve 100% All-definitions data flow coverage at least one subpath from
each variable definition to some use of that definition (either c- or puse)
must be executed.
Variable(
s)
locks,
stocks
,
barrel
locks,
stocks
,
barrel
Flag
dupai
920
Input
Expected
s
outputcommi
locks stock
barrel t_sale
sub
s
s
s
ss
9,10,20
10
10
10
1000
910
910
1214 1214
Department of ISE, DSCE-Bangalore
-1
22
Invalid Input
-1
40
45
Invalid Input
Page 35
Software Testing Laboratory
t_sales
t_sales
commissio
n
commissio
n
commissio
n
2021
2025
2336
2736
3236
20,21
20,21,2
52336
27,28,3
6
32,33,3
4,
36
2013-14
5
15
5
15
25
5
15
5
15
25
5
15
5
15
25
500
1500
50
175
360
4.5 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
4.6 SNAPSHOTS:
1. Snapshot for Total sales and commission when total sales are
within 1000 and Invalid input
Department of ISE, DSCE-Bangalore
Page 36
Software Testing Laboratory
2013-14
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
Department of ISE, DSCE-Bangalore
Page 37
Software Testing Laboratory
2013-14
4. Snapshot for total sales and commission
4.7 REFERENCES
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
Page 38
Software Testing Laboratory
2013-14
5. 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.
5.1
REQUIREMENT
SPECIFICATION
Problem Definition: The Commission Problem includes a
salesperson in the former Arizona Territory sold rifle locks,
stocks and barrels made by a gunsmith in Missouri. Cost
includes
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 salespersons commission as follows:
On sales up to(and including) $1000=
10% On the sales up to(and includes)
$1800= 15% On the sales in excess of
$1800= 20%
The commission program produces a monthly sales report that
gave the total number of locks, stocks and barrels sold, the
salespersons total dollar sales and finally the commission
5.2 DESIGN
Algorith
m
STEP 1: Define lockPrice=45.0, stockPrice=30.0,
barrelPrice=25.0
Department of ISE, DSCE-Bangalore
39
Page
Software Testing Laboratory
2013-14
STEP2: Input locks
STEP3: while(locks!=-1) input device uses -1 to indicate
end of data goto STEP 12
STEP4:input (stocks, barrels)
STEP5: compute lockSales, stockSales, barrelSales and sales
STEP6: output(Total sales: sales)
STEP7: if (sales > 1800.0) goto STEP 8 else goto STEP 9
STEP8: commission=0.10*1000.0;
commission=commission+0.15
800.0;
commission = commission + 0.20 * (sales1800.0) STEP9: if (sales > 1000.0) goto STEP 10
else goto STEP 11
STEP10: commission=0.10* 1000.0;
commission=commission + 0.15 * (sales-1000.0)
STEP11: Output(Commission is $,
commission) STEP12: exit
5.3 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;
Department of ISE, DSCE-Bangalore
40
Page
Software Testing Laboratory
2013-14
}
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));
}
els
e
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
Department of ISE, DSCE-Bangalore
41
Page
Software Testing Laboratory
}
printf("The total sales
%f",t_sales, commission);
getch();
return;
}
2013-14
is
%d
\n
The
commission
is
5.4
TESTING
Technique used: Boundary value analysis
Boundary value analysis testing technique is used to
identify errors at boundaries rather than finding those exist in
center of input domain.
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 subdomains 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
for qty:
Department of ISE, DSCE-Bangalore
42
Page
Software Testing
Laboratory
2013-14
E4: Values less than
1. E5: Values in the
range.
E6: Values greater than 100.
BVA: Example: Identify boundaries
Equivalence classes and boundaries for findPrice. Boundaries are
indicated with an x. Points near the boundary are marked *.
Test
design
Case
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
1) test cases according to fault
(4n +
single
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 cases can be
output by
generated over
using
following constraints and these constraints are generated over
commission:
C1: Sales up to(and including) $1000= 10% commission
C2: Sales up to(and includes) $1800= 15% commission
C3: Sales in excess of $1800= 20% 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%.
Department of ISE, DSCEBanglore
Page
43
Software Testing Laboratory
2013-14
Equivalence classes for 10% Commission:
E1: Sales less than
1000. E2: Sales
equals to 1000.
Equivalence classes for 15% Commission:
E3: Sales greater than 1000 and less
than 1800. E4: Sales equals to 1800
Equivalence classes for 20% Commission:
E5: Sales greater then 1800
From the above equivalence classes we can derive the following
test cases using boundary value analysis approach.
TC
Id
1
Test Case
Description
Input test cases
for
Locks=1,
Stocks=1,
Barrels=1
Input test cases
for
Locks=1,
Stocks=1,
Barrels=2
Input test cases
for
Locks=1,
Stocks=2,
Barrels=1
Input test cases
for
Locks=2,
Stocks=1,
Barrels=1
Input test cases
for
Locks=5,
Stocks=5,
Barrels=5
Input test cases
for Locks=10,
Stocks=10,
Input Data
Locks Stocks Barrels
Sales
Expected
Output(Commission)
100
10
125
12.5
130
13
145
14.5
500
50
10
10
975
97.5
Department of ISE, DSCE-Bangalore
Actual Status
Output
Page 44
Software Testing Laboratory
10
11
12
13
14
15
16
Barrels=9
Input test cases
for Locks=10,
Stocks=9,
Barrels=10
Input test cases
for
Locks=9,
Stocks=10,
Barrels=10
Input test cases
for Locks=10,
Stocks=10,
Barrels=10
Input test cases
for Locks=10,
Stocks=10,
Barrels=11
Input test cases
for Locks=10,
Stocks=11,
Barrels=10
Input test cases
for Locks=11,
Stocks=10,
Barrels=10
Input test cases
for Locks=14,
Stocks=14,
Barrels=13
Input test cases
for Locks=18,
Stocks=18,
Barrels=17
Input test cases
for Locks=18,
Stocks=17,
Barrels=18
Input test cases
for Locks=17,
Stocks=18,
2013-14
10
10
970
97
10
10
955
95.5
10
10
10
1000
100
10
10
11
1025
103.75
10
11
10
1030
104.5
11
10
10
1045
106.75
14
14
13
1400
160
18
18
17
1775
216.25
18
17
18
1770
215.5
17
18
18
1755
213.25
Department of ISE, DSCE-Bangalore
Page 45
Software Testing Laboratory
17
18
19
20
21
Barrels=18
Input test cases
for Locks=18,
Stocks=18,
Barrels=18
Input test cases
for Locks=18,
Stocks=18,
Barrels=19
Input test cases
for Locks=18,
Stocks=19,
Barrels=18
Input test cases
for Locks=19,
Stocks=18,
Barrels=18
Input test cases
for Locks=48,
Stocks=48,
Barrels=48
2013-14
18
18
18
1800
220
18
18
19
1825
225
18
19
18
1830
226
19
18
18
1845
229
48
48
48
4800
820
Table-1: BVB Test case for Commission
Problem
This is how we can apply BVA technique to create test cases
for our
Commission Problem.
5.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.
2.
3.
4.
No
No
No
No
of
of
of
of
TCs Executed:
Defects Raised:
TCs Pass:
TCs Failed:
Department of ISE, DSCE-Bangalore
Page 46
Software Testing Laboratory
2013-14
5.6 SNAPSHOTS:
1. Snapshot for valid inputs
2. Snapshots when the two inputs are same
Department of ISE, DSCE-Bangalore
Page 47
Software Testing Laboratory
2013-14
3. Snapshots when the two inputs and all the inputs are same
5.7 REFERENCES
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
Page 48
Software Testing Laboratory
2013-14
6. Design, develop, code and run the program in any suitable
language to solve the commission problem. Analyze it from the
perspective of equivalence class testing, derive different test
cases, execute these test cases and discuss the test results.
6.1
REQUIREMENT
SPECIFICATION
Problem Definition: The Commission Problem includes a
salesperson in the former Arizona Territory sold rifle locks,
stocks and barrels made by a gunsmith in Missouri. Cost
includes
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 salespersons commission as follows:
On sales up to(and including) $1000=
10% On the sales up to(and includes)
$1800= 15% On the sales in excess of
$1800= 20%
The commission program produces a monthly sales report that
gave the total number of locks, stocks and barrels sold, the
salespersons total dollar sales and finally the commission
6.2
DESIGN
Algorith
m
STEP 1: Define lockPrice=45.0, stockPrice=30.0,
barrelPrice=25.0
STEP2: Input locks
Department of ISE, DSCE-Bangalore
49
Page
Software Testing Laboratory
2013-14
STEP3: while(locks!=-1) input device uses -1 to indicate end of
data goto
STEP 12
STEP4:input (stocks, barrels)
STEP5: compute lockSales, stockSales, barrelSales and sales
STEP6: output(Total sales: sales)
STEP7: if (sales > 1800.0) goto STEP 8 else goto STEP 9
STEP8: commission=0.10*1000.0;
commission=commission+0.15 * 800.0;
commission = commission + 0.20 * (sales1800.0) STEP9: if (sales > 1000.0) goto STEP 10
else goto STEP 11
STEP10: commission=0.10* 1000.0; commission=commission
+ 0.15 *
(sales-1000.0)
STEP11: Output(Commission is $,
commission) STEP12: exit
6.3 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");
Department of ISE, DSCE-Bangalore
50
Page
Software Testing Laboratory
2013-14
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));
}
els
e
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
}
Department of ISE, DSCE-Bangalore
51
Page
Software Testing Laboratory
2013-14
printf("The total sales
%f",t_sales, commission);
getch();
return;
}
is
%d
\n
The
commission
is
6.4 TESTING
Technique
used:
Class testing
Equivalence
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.
Exampl
e:
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.
Department of ISE, DSCE-Bangalore
52
Page
Software Testing
Laboratory
2013-14
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.
>12
00
Department of ISE, DSCEBangalore
Page
53
Software Testing Laboratory
2013-14
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.
TEST
DESIGN
CASE
The input domain of the commission problem is naturally
partitioned by the limits on locks, stocks and barrels. These
equivalence classes are exactly those that would also be
identified by traditional equivalence class testing. The first class
is the valid input; the other two are invalid. The input domain
equivalence classes lead to very unsatisfactory sets of test cases.
Equivalence classes defined on the
output range of the
commission function will be an improvement.
The valid classes of the input
variables are: L1 = {locks:
1locks70}
L2 = {locks = -1} (occurs if locks = -1 is used to control
input iteration) S1 = {stocks:1stocks80}
B1
=
{barrels:
1barrels90}
The corresponding invalid classes of the input
variables are: 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}
Department of ISE, DSCE-Bangalore
54
Page
Software Testing Laboratory
2013-14
One problem occurs, however. The variables lock are also used
as a sentinel to indicate no more telegrams. When a value of -1 is
given for locks, the while loop terminates, and the values of
totallocks, totalstocks and totalbarrels are used to compute sales,
and then commission.
Expect for the names of the variables and the interval endpoint
values, this is
identical to our first version of the NextDate function. therefore
we will have exactly one week normal equivalence class test case
and again, it is identical to the strong normal equivalence class
test case. Note that the case for locks =
-1 just terminates the
iteration.
First
attempt
We will have eight weak robust test
cases.
TC Test
Id
Case
WR1
1
Input Data
Sales
10
10
10
$100
WR2
-1
40
45
WR3
-2
40
45
WR4
71
40
45
WR5
35
-1
45
WR6
35
81
45
WR7
10
10
Program
terminates
Values of
locks not
in
the
range
1...70
Values of
locks not
in
the
range
1...70
Values of
stocks not
in
the
range
1...80
Values of
stocks not
in
the
range
1...80
970
Locks Stocks Barrels
Expected
Actual Statu
Output(Commissi Outpu s
on)
t
10
Program terminates
Values of locks not in the
range 1...70
Values of locks not in the
range 1...70
Values of stocks not in the
range 1...80
Values of stocks not in the
range 1...80
97
WR8
10
10
955
Department of ISE, DSCE-Bangalore
95.5
Page 55
Software Testing Laboratory
2013-14
Second attempt:
Finally, a corner of the cube will be in 3 space of the additional
strong robust equivalence class test cases:
TC Test Case Input Data
Sales
Id Description Locks Stocks Barrels
1
SR1
-2
40
45
SR2
35
-1
45
SR3
35
40
-2
SR4
-2
-1
45
SR5
-2
40
-1
SR6
35
-1
-1
SR7
-2
-1
-1
Values
not in
1...70
Values
not in
1...80
Values
not in
1...90
Values
not in
1...70
Values
not in
1...80
Values
not in
1...70
Values
not in
1...90
Values
not in
1...80
Values
not in
1...90
Values
not in
1...70
Values
not in
1...80
Values
not in
1...90
Department of ISE, DSCE-Bangalore
Expected
Actual Status
Output(Commission) Output
of locks Values of locks not in
the range the range 1...70
of stocks Values of stocks not
the range in the range 1...80
of barrels Values of barrels not
the range in the range 1...90
of locks Values of locks not in
the range the range 1...70
Values of stocks not
of stocks in the range 1...80
the range
of locks Values of locks not in
the range the range 1...70
Values of barrels not
of barrels in the range 1...90
the range
of stocks Values of stocks not
the range in the range 1...80
Values of barrels not
of barrels in the range 1...90
the range
of locks Values of locks not in
the range the range 1...70
Values of stocks not
of stocks in the range 1...80
the range Values of barrels not
in the range 1...90
of barrels
the range
Page 56
Software Testing Laboratory
2013-14
6.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.
2.
3.
4.
No
No
No
No
of
of
of
of
TCs Executed:
Defects Raised:
TCs Pass:
TCs Failed:
6.6 SNASHOTS
1. Snapshot for invalid inputs
Department of ISE, DSCE-Bangalore
Page 57
Software Testing Laboratory
2013-14
2. Invalid Input and commission for when the all inputs are 10
Department of ISE, DSCE-Bangalore
Page 58
Software Testing Laboratory
2013-14
6.7 REFERENCES
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
59
Page
Software Testing Laboratory
2013-14
7. 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.
7.1
REQUIREMENTS:
R1: The system should read the number of Locks, Stocks and
Barrels sold in a month.
(i.e 1 Locks
70) (i.e 1
Stocks 80) (i.e
1 Barrels 90).
R2: If R1 is satisfied the system should compute the salespersons
commission depending on the total number of Locks, Stocks &
Barrels sold else it should display suitable error message.
Following is the percentage of commission for the sales done:
10% on sales up to (and including) $1000
15% on next $800
20% on any sales in excess of $1800
Also the system should compute the total dollar sales. The
system
should output salespersons total dollar sales, and his
commission.
7.2
DESIGN:
Form the given requirements we can draw the following
conditions:
C1: 1locks70?
Locks = -1?
(occurs if locks = -1 is used
to control input iteration).
C2:
1stocks80?
C3:
1barrels90? C4: sales>1800?
Here C1 can be expanded
as:
C1a: 1locks
C1b: locks70
Department of ISE, DSCE-Bangalore
60
Page
Software Testing Laboratory
2013-14
C5:
sales>1000?
C6:
sales1000?
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.
7.3 PROGRAM CODE:
#include<stdio.h>
#include<conio.h>
int main()
{
int locks, stocks, barrels, t_sales, flag = 0;
float commission;
Department of ISE, DSCE-Bangalore
61
Page
Software Testing Laboratory
2013-14
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));
Department of ISE, DSCE-Bangalore
62
Page
Software Testing Laboratory
2013-14
}
else
{
commission = 0.10 * 1000;
commission = commission + (0.15 * 800);
commission = commission + (0.20 * (t_sales - 1800));
}
printf("The total sales
%f",t_sales, commission);
getch();
return;
}
is
%d
\n
The
commission
is
7.4
TESTING
Technique Used: Decision Table
Approach
The decision table is given
below
Conditions
Condition Entries
(Rules)
C1: 1locks70?
F
T T T T T
C2: 1stocks80?
-- F T T T T
C3: 1barrels90?
-- -- F T T T
C4: sales>1800?
-- -- -- T F F
C5: sales>1000?
-- -- -- -- T F
C6: sales1000?
-- -- -- -- -- T
Actions
Action Entries
a1: com1 = 0.10*Sales
X
a2:
com2
=
X
com1+0.15*(sales-1000)
a3:
com3
=
X
com2+0.20*(sales-1800)
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.
DERIVING TEST CASES USING Decision Table
Approach:
Test
Cases:
Department of ISE, DSCE-Bangalore
63
Page
Software Testing Laboratory
TC
ID
1
2
3
4
5
6
7
8
9
Test
Case
Testing
Requirement 1
Condition 1 (C1)
Testing
Requirement 1
Condition 1 (C1)
Testing
Requirement 1
Condition 2 (C2)
Testing
Requirement 1
Condition 2 (C2)
Testing
Requirement 1
Condition 3 (C3)
Testing
Requirement 1
Condition 3 (C3)
Testing
Requirement 2
Testing
Requirement 2
Testing
Requirement 2
for
2013-14
Expected
Lock Stock Barrel
Output
s
s
s
-2
40
45
Out of Range
90
40
45
Out of Range
35
-3
45
Out of Range
35
100
45
Out of Range
35
40
-10
Out of Range
35
40
150
Out of Range
500
15
15
15
25
25
25
1500 a2:
175
2500 a3:
360
Actual
Status
Output
for
for
for
for
for
for
for
for
a1:50
7.5 EXECUTION & RESULT DISCUSION:
Execute the program against the designed test cases and
complete the table for Actual output column and status column.
TEST REPORT:
1. No of TCs Executed: 06
2. No of Defects Raised:
3. No of TCs Pass:
4. No of TCs 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
Department of ISE, DSCE-Bangalore
Page 64
Software Testing Laboratory
2013-14
classes are truly independent, no impossible rules will occur in
a decision table in which condition correspond to the equivalence
classes.
7.6 SNAPSHOTS:
1. Snapshot for Total sales and commission when total sales are
within 1000 and 1800
2. Snapshot when the inputs all are 25.
Department of ISE, DSCE-Bangalore
Page 65
Software Testing Laboratory
2013-14
7.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
66
Page
Software Testing Laboratory
2013-14
8. 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.
8.1
REQUIREMENTS
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.
8.2
DESIGN
We use integer array as a data structure to store n number
of elements. Iterative programming technique is used.
ALGORITH
M
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.
Department of ISE, DSCE-Bangalore
67
Page
Software Testing Laboratory
2013-14
8.3 PROGRAM CODE:
#include<stdio.h>
#include<conio.h>
int main()
{
int a[20],n,low,high,mid,key,i,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=n1;
while(low<=hig
h)
{
mid=(low+high)/2;
if(a[mid]==key)
{
flag=1;
break;
}
else if(a[mid]<key)
{
low=mid+1;
}
else
{
Department of ISE, DSCE-Bangalore
68
Page
Software Testing Laboratory
2013-14
high=mid-1;
}
}
if(flag==1)
printf("Successful
found at
%d\n",mid+1);
els
e
search\n
Location
Element
printf("Key Element not found\n");
}
els
e
printf("Wrong input");
getch();
return 0;
}
8.4
TESTING
Technique Used: Basis Path
Testing
Basis path testing is a form of Structural testing (White Box
testing). The method devised by McCabe to carry out basis
path testing has four steps. These are:
1. Compute the program
graph.
2. Calculate
complexity.
the
cyclomatic
3. Select a basis set of
paths.
4. Generate test cases for each of
these paths.
Department of ISE, DSCE-Bangalore
69
Page
Software Testing Laboratory
2013-14
Below is the program graph of binary search code.
5
10
11
12
13
14
15
16
17
18
19
20
21
28
22, 23
29,
30
24, 25
31
32, 33
34, 35
26,
27
40
37
38
41
Using the program graph we derive (Decision-to-Decision) DD path
graph for
binary search program
Department of ISE, DSCE-Bangalore
70
Page
Software Testing Laboratory
Program Graph Nodes
First
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
2013-14
DD Path Name
5
6,7,8,9,10
11
12,13,14
15,16,17
18
19,20
37
21
22,23,24,25,26,27
28
29.30,31
32,33,34,35
38
40
41
C
D
H
J
G
M
N
O
The cyclomatic complexity of a connected graph is provided by the
formula V(G) = e n + 2p. The number of edges is represented by
e, the number of nodes by n and the number of connected regions
by p. If we apply this formula to the graph given below, the number
of linearly independent circuits is:
Number of edges = 21
Number of nodes = 15
Department of ISE, DSCE-Bangalore
71
Page
Software Testing Laboratory
2013-14
Number of connected regions = 1
21 15 + 2(1) = 4.
Here we are dealing code level dependencies, which are absolutely
incompatible with the latent assumption, that basis path are
independent. McCabes 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.
If node E and node G is traversed, then node M should be
traversed. If node I is traversed, then node N should be
traversed.
Taking into consideration the above rules, next step is to find the
basis paths.
According to cyclomatic complexity 4 feasible basis
path exists: P1: A, B, D, E, G, N, O
if n value is
0.
P2: A, B, C, B, D, E, F, H, I, G, M, O
found.
key
P3: A, B, C B, D, E, F, H, J, K, E, F, H, J, K, E, G, N, O
element
key
element not found. P4: A, B, C, B, D, E, F, H, J, L, E, F, H, J, L, E, G, N,
O
key element not found.
Department of ISE, DSCE-Bangalore
72
Page
Software Testing Laboratory
2013-14
DERIVING TEST CASES USING BASIS PATH TESTING
The last step is to devise test cases for the basis paths.
TEST CASES
TC Test
ID
Case
Testing
for
1
requirement 1
Path P1
Testing
for
2
requirement
2
Testing
for
3
requirement
2
Testing
for
4
requirement
2
Testing
for
5
requirement
2
Testing
for
6
requirement
2
Valu
e of
n
0
array
key
elemen
ts
-5
Expected Actual
Statu
Output
Outpu
s
t
key
not
found
2,3,5,6,7 5
Key
found
at
1,2,5
key
not
found
1,2,5
key
not
found
1,2,4,6,7 2
4,5,7,8,9 8
Key
found
at
key
found
at
8.5 EXECUTION & RESULT DISCUSION:
Execute the program against the designed test cases and complete
the table for
Actual output column and status column.
Test Report:
1. No of TCs Executed: 06
2. No of Defects Raised:
3. No of TCs Pass:
4. No of TCs Failed:
Department of ISE, DSCE-Bangalore
Page 73
Software Testing Laboratory
2013-14
8.6 SNAPSHOTS:
1. Snapshot to check successful search and not found key element.
3.
Snapshot to check successful search and not found key
element.
Department of ISE, DSCE-Bangalore
Page 74
Software Testing Laboratory
2013-14
8.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
75
Page
Software Testing Laboratory
2013-14
9. Design, develop, code and run the program in any suitable
language to implement the quicksort algorithm. Determine the
basis paths and using them derive different test cases, execute
these test cases and discuss the test results. discuss the test
results.
9.1
REQUIREMENTS
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.
9.2
DESIGN
We use integer array as a data structure to store n number
of elements. Iterative programming technique is used.
9.3
PROGRAM
CODE:
// An iterative implementation
quick sort
#include
<stdio.h>
of
// A utility function to swap two
elements void swap ( int* a, int* b )
{
int t = *a;
*a = *b;
*b = t;
}
/* This function is same in both iterative and recursive*/
int partition (int arr[], int l, int h)
{
int x = arr[h];
int i = (l - 1),j;
Department of ISE, DSCE-Bangalore
76
Page
Software Testing Laboratory
2013-14
for (j = l; j <= h- 1; j++)
{
if (arr[j] <= x)
{
i++;
swap (&arr[i], &arr[j]);
}
}
swap (&arr[i + 1], &arr[h]);
return (i + 1);
}
/* A[] --> Array to be sorted, l --> Starting index, h --> Ending
index */
void quickSortIterative (int arr[], int l, int h)
{
// Create an auxiliary
stack int stack[10],p;
// initialize top of
stack int top = -1;
// push initial values of l and h to
stack stack[ ++top ] = l;
stack[ ++top ] = h;
// Keep popping from stack while is not
empty while ( top >= 0 )
{
// Pop h and l
h = stack[ top-- ];
l = stack[ top-- ];
Department of ISE, DSCE-Bangalore
77
Page
Software Testing Laboratory
2013-14
// Set pivot element at its correct position in
sorted array p = partition( arr, l, h );
// If there are elements on left side of pivot, then push left
// side to
stack if ( p-1
>l)
{
stack[ ++top ] = l;
stack[ ++top ] = p - 1;
}
// If there are elements on right side of pivot, then push right
// side to
stack if (
p+1 < h )
{
stack[ ++top ] = p + 1;
stack[ ++top ] = h;
}
}
}
// Driver program to test above
functions int main()
{
int arr[20],n,i;
clrscr();
printf("Enter the size of the array");
scanf("%d",&n);
printf("Enter %d elements",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
quickSortIterative( arr, 0, n - 1
); printf("Elements of the array
are;"); for(i=0;i<n;i++)
printf("%d",arr[i]);
Department of ISE, DSCE-Bangalore
78
Page
Software Testing Laboratory
2013-14
getch();
return 0;
}
9.4 TESTING
Program Graph for partition:
50
51
52
53
54
56
57
58
59
60
61
62
64
65
66
67
68
Department of ISE, DSCE-Bangalore
79
Page
Software Testing Laboratory
2013-14
DD Path Graph:
A
B
C
D
E
Using program graph we derive DD path graph for partition()
DD
Path
Name
A
B
C
D
E
Program
Graph
50,51,52,53
54
56
57,58,59,60,61,
62
64,65,66,67,68
Cyclomatic complixity
No. of edges =6
No. of
nodes=5 en+2
6-5+2 =3
No. of predicate nodes +1 (i.e., node B and node C)
2+1=3
No. of region + 1
R1 and R2 are two regions
2+1=3
According to cyclomatic complexity 3 basis path exists. They are;
Department of ISE, DSCE-Bangalore
80
Page
Software Testing Laboratory
2013-14
P1: A, B, E
P2: A, B, C, D,
B, E P3: A, B,
C, B, E
4.2 Deriving test cases using basis
path testing: Test Cases
Test
TC ID
Case
Descripti
1
Testing for
path P1
2
Testing
for path
P2
3
Testing
for path
Expected
Array
output Value
elemen
Array
of i
ts
5
5
0
5, 4, 6,
2,
7 4, 6,
5,
7,
5
Department of ISE, DSCE-Bangalore
5, 4, 6,
2,
7 4, 6,
5,
7,
5
Actua
l
outpu
Status
4
0
Page 81
Software Testing Laboratory
2013-14
Program Graph for Quick sort()
27
28
29
31
30
32
33
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Department of ISE, DSCE-Bangalore
82
Page
Software Testing Laboratory
2013-14
DD Path Graph
T
C
R3
D
T
E
R1
F
F
F
R2
T
G
CYCLOMATIC COMPLEXITY
No. of nodes = 8
No. of nodes
=10 e-n+2
10-8+2 =4
No. of predicate nodes + 1
3+1=4 (i.e., node B,
D & F) No. of
regions+1
Department of ISE, DSCE-Bangalore
83
Page
Software Testing Laboratory
2013-14
3+1=4 (i.e., Region R1, R2 & R3)
According to cyclomatic complexity 4 basis path exists. They
are
P1: A, B, C, D, E, F,
G, B, H P2: A, B, C,
D, E, F, B,H
P3: A, B, C, D, F, G, B, H
P4: A, B, C, D, F, B, H
Deriving test cases using basis path testing
Test cases:
TC ID
1
2
3
Test
Case
Descripti
Testing
for
path
1
Testing
for
path
2
Testing
for
path
3
Array
elemen
5,ts7, 4, 2,
1,
3 4, 8, 2,
5,
7
5, 4, 6, 7,
3
Expect
ed
2, output
1, 3, 5,
7,
4 4, 2, 7,
5,
8
3, 4, 6, 7,
5
Actua
l
outpu
Status
9.5 EXECUTION
Compile the program and enter inputs Test above
table array elements for test cases.
Department of ISE, DSCE-Bangalore
Page 84
Software Testing Laboratory
2013-14
9.6 SNAPSHOTS:
1. Snapshot of quick sort sorted elements are displayed, when the
n=6
2. Snapshot of quick sort sorted elements are displayed, when the
n=5
Department of ISE, DSCE-Bangalore
Page 85
Software Testing Laboratory
2013-14
3. Snapshot of quick sort sorted elements are displayed, when the
n=5
9.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
Page 86
Software Testing Laboratory
2013-14
10. Design, develop, code and run the program in any suitable
language to implement an
absoluteletter
grading
procedure, making
suitable
assumptions.
Determine the basis paths and using them derive different test
cases, execute these test cases and discuss the test results.
10.1 REQUIREMENTS:
R1: The system should accept marks of 6 subjects, each marks
in the range 1 to 100.
i.e., for example,
1<=marks<=100
1<=kannada<=100
1<=maths<=100 etc.
R2: If R1 is satisfied compyter average of marks scored and
percentage of the same and depending on percentage display the
grade.
10.2 DESIGN:
We use the total percentage of marks to grade the student marks.
<35 && >0 of percentage make it as
FAIL avmar<=40 && avmar>35 make it
as Grade C avmar<=50 && avmar>40
make it as Grade C+ avmar<=60 &&
avmar>50 make it as Grade B
avmar<=70 && avmar>60 make it as
Grade B+ avmar<=80 && avmar>70
make it as Grade A avmar<=100 &&
avmar>80 make it as Grade A+
10.3 PROGRAM CODE:
#include<stdio.h>
main()
{
float kan,eng,hindi,maths,science, sst,avmar;
printf("Letter Grading\n");
printf("SSLC Marks Grading\n");
printf("Enter the marks for
Kannada:"); scanf("%f",&kan);
printf("enter the marks for English:");
Department of ISE, DSCE-Bangalore
Page
87
Software Testing Laboratory
2013-14
scanf("%f",&eng);
printf("enter the marks for Hindi:");
scanf("%f",&hindi);
printf("enter the marks for Maths");
scanf("%f",&maths);
printf("enter the marks for Science:");
scanf("%f",&science);
printf("enter the marks for Social
Science:"); scanf("%f",&sst);
avmar=(kan+eng+hindi+maths+science+
sst)/6.25; printf("the average marks are=
%f\n",avmar); if((avmar<35)&&(avmar>0))
printf("fail"); else
if((avmar<=40)&&(avmar
>35)) printf("Grade C");
else
if((avmar<=50)&&(avmar
>40)) printf("Grade C+");
else
if((avmar<=60)&&(avmar
>50)) printf("Grade B");
else
if((avmar<=70)&&(avmar
>60)) printf("Grade B+");
else
if((avmar<=80)&&(avmar
>70)) printf("Grade A");
else
if((avmar<=100)&&(avmar>80))
printf("Grade A+");
}
Department of ISE, DSCE-Bangalore
88
Page
Software Testing Laboratory
2013-14
10.4 TESTING
PROGRAM GRAPH:
1
14
15
16
17
18
19
10
11
12
20
21
22
T
24
23
F
T
25
F
27
F
26
T
T
30
29
F
T
31
36
32
T
33
35
28
34
37
Department of ISE, DSCE-Bangalore
Page 89
13
Software Testing Laboratory
Using the
DD path
Names
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
2013-14
program graph derive DD path graph
Program Graph
Nodes
1, 2, 3, 4, 5, 6, 7, 8 . . .
18
19
20, 21, 22
23
24
25
26
27
28
29
30
31
32
33
34
35
37
36
CYCLOMATIC
COMPLEXITY
No. of nodes = 18
No. of edges =
24 e-n+2
24-18+2=8
A
T
B
F
C
T
D
T
F
R1
G
R2
H
I
F
J
F
R7
K
L
R3
R4
M
R5
O
R6
No. of predicate nodes +
1
7 + 1 = 8 (i.e., B, D, F, H,
J, L, N)
No. of regions + 1
7 + 1 = 8 (i.e., Regions R1, R2, R3, R4, R5, R6, R7)
Department of ISE, DSCE-Bangalore
90
Page
Software Testing Laboratory
2013-14
According to cyclomatic complexity we can derive
8 basis path. P1: A, B, R q
P2: A, B, C, D, E,
q P3: A, B, C, D, F,
G, q P4: A, B, C,
D, F, H, I, q
P5: A, B, C, D, F, H, J, K,
q P6: A, B, C, D, F, H, J,
L, M, q P7: A, B, C, D, F,
H, J, L, N, O, q P8: A, B,
C, D, F, H, J, L, N, P, q
Test Cases:
Expecte Actual
TC
Test Description
Input
d
Outpu
ID
Outpu t
K=50
E=50
H=50
Invalid
1
Testing for path P1
M=50
Input
S=50
SST=150
K=30
E=30
H=30
M=35
2
Testing for path P2
Fail
S=35
SST=35
Avg=32.5
K=40
E=38
H=37
M=40
3
Testing for path P3
Grade C
S=40
SST=38
Avg=38.8
3
K=45
E=47
H=48
4
Testing for path P4
Grade
M=46
C+
S=49
Department of ISE, DSCE-Bangalore
Status
Page 91
Software Testing Laboratory
Testing for path P5
Testing for path P6
Testing for path P7
Testing for path P8
2013-14
SST=50
Avg=47.5
K=55
E=58
H=60
M=56
S=57
SST=60
Avg=57.6
6
K=65
E=65
H=65
M=65
S=65
SST=65
Avg=65.0
K=75
E=72
H=78
M=75
S=80
SST=80
Avg=76.6
K=85
E=90
H=80
M=95
S=85
SST=85
Avg=86.6
6
Grade B
Grade
B+
Grade A
Grade
A+
10.5 EXECUTION
Compile the program and enter inputs for subject marks, then it
will display the Total percentage, depending on the percentage it
will shows the Grade and
test the test cases for above table.
Department of ISE, DSCE-Bangalore
Page 92
Software Testing Laboratory
2013-14
10.6 SNAPSHOTS:
1. Snapshot to Show Fail and Grade C
2. Snapshot to show Grade B and Grade C+
Department of ISE, DSCE-Bangalore
Page 93
Software Testing Laboratory
4.
2013-14
Snapshot to show the Grade A and Grade B+
4. Snapshot to show the Grade A+
Department of ISE, DSCE-Bangalore
Page 94
Software Testing Laboratory
2013-14
10.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
95
Page
Software Testing Laboratory
2013-14
11. Design, develop, code and run the program in any suitable
language to implement the NextDate function. Analyze it from the
perspective of boundary value testing, derive different test cases,
execute these test cases and discuss the test results.
11.1
REQUIREMENT
SPECIFICATION
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.
The
are
constraints
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.
11.2
DESIGN
Algorithm
STEP 1: Input date in format DD.MM.YYYY
STEP2: if MM is 01, 03, 05,07,08,10 do STEP3 else STEP6
Department of ISE, DSCE-Bangalore
96
Page
Software Testing Laboratory
2013-14
STEP3:if DD < 31 then do STEP4 else if DD=31 do
STEP5 else output(Invalid Date);
STEP4: tomorrowday=DD+1 goto STEP18
STEP5: tomorrowday=1; tomorrowmonth=month + 1 goto
STEP18
STEP6: if MM is 04, 06, 09, 11 do STEP7
STEP7: if DD<30 then do STEP4 else
STEP5 else output(Invalid Date);
if
DD=30
do
STEP8: if MM is 12
STEP9: if DD<31 then STEP4 else STEP10
STEP10:
tomorrowday=1,
tommorowmonth=1,
tommorowyear=YYYY+1; goto STEP18
STEP11: if MM is 2
STEP12: if DD<28 do STEP4 else do STEP13
STEP13: if DD=28 & YYYY is a leap do STEP14 else STEP15
STEP14: tommorowday=29 goto STEP18
STEP15: tommorowday=1, tomorrowmonth=3, goto
STEP18; STEP16: if DD=29 then do STEP15 else
STEP17
STEP17: output(Cannot have feb, DD); STEP19
STEP18: output(tomorrowday, tomorrowmonth,
tomorrowyear); STEP19: exit
11.3 PROGRAM CODE:
#include<stdio.h>
#include<conio.h>
main( )
{
Department of ISE, DSCE-Bangalore
97
Page
Software Testing Laboratory
2013-14
int
month[12]={31,28,31,30,31,30,31,31,30,3
1,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)
{
printf("Invalid Input Day");
exit(0);
}
if(m<1 && m>12)
{
printf("Invalid Input Month");
exit(0);
}
if(m==2)
{
if(y%100==0)
{
if(y%400==0)
ndays=29;
}
els
e
if(y%4==0)
ndays=29;
Department of ISE, DSCE-Bangalore
98
Page
Software Testing Laboratory
2013-14
}
nd=d+
1;
nm=m;
ny=y;
if(nd>ndays)
{
nd=1;
nm++;
}
if(nm>12)
{
nm=1;
ny++;
}
printf("\n Given date is %d:%d:%d",d,m,y);
printf("\n Next days date is %d:%d:
%d",nd,nm,ny); getch( );
}
11.4 TESTING
Technique used: Boundary value analysis
Boundary value analysis testing technique is used to
identify errors at boundaries rather than finding those exist in
center of input domain.
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
5. Partition the input domain using unidimensional partitioning.
This leads to as many partitions as there are input variables.
Alternately, a single partition
Department of ISE, DSCE-Bangalore
99
Page
Software Testing
Laboratory
2013-14
of an input domain be created using multidimensional
can
partitioning. We
will generate several sub-domains in this step.
6. Identify the boundaries for each partition. Boundaries
may also be identified using special relationships amongst the
inputs.
7. Select test data such that each boundary value occurs in at
least one test input.
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 for qty:
E4: Values less than
1. E5: Values in the
range.
E6: Values greater than 100.
BVA: Example: Identify boundaries
Equivalence classes and boundaries for findPrice. Boundaries are
indicated with an x. Points near the boundary are marked *.
Department of ISE, DSCEBangalore
Page
100
Software Testing Laboratory
Test
design
2013-14
Case
The Next Date program takes date as input and checks it for
validity. If it is valid, it returns the next date 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 cases can be generated by using
following constraints
C1: 1 MM
12
C2: 1 DD
31
C3: 1812 YYYY
2012.
Here from these constraints we can extract the test cases using
the values of MM, DD, and YYYY. The following equivalence
classes can be generated for each variable.
Equivalence
classes
for MM:
E1: Values less than
1. E2: Values in the
range.
E3:
Values
greater
than 12.
Equivalence
classes
for DD:
E4: Values less than
1. E5: Values in the
range.
E6:
Values
greater
than 31.
Equivalence classes for
YYYY:
E7: Values less than
1812. E8: Values in
the range.
E9: Values greater than
2012.
From the above equivalence classes we can derive the following
test cases using boundary value analysis approach.
Department of ISE, DSCE-Bangalore
101
Page
Software Testing Laboratory
2013-14
TC
Id
Test
Input Data
Case
Testing
Invalid
for
months
with
character
is
Testing for
Invalid
Day with
characterfor
is
Testing
Invalid
Year
with
characterfor
is
Testing
Invalid
Day,
dayfor
with 00
Testing
Valid
input
changing
the
day
within
the
Testing
for Valid
Aa
15
1900
Invalid
Month
Input
06
Dd 1901
Invalid
Day
Input
06
15
196y
Invalid
Year
Input
03
00
2000
03
30
2000
Invalid Input
Day
03/31/2000
03
02
2000
03/03/2000
03
32
2000
00
15
2000
11
15
2000
Invalid Input
Day
Invalid Input
Month
11/16/2000
02
15
2000
02/16/2000
13
15
2000
Invalid
Month
4
5
7
8
9
10
11
input
changing
the day within
the month.
Testing for
Invalid
Day,
dayfor
with 32
Testing
Invalid
Day,
month
Testing
for with
Valid
input
changing
the day
within
the month.
MM=11
Testing
for
Valid
input
changing
the day
within
the month.
MM=02
Testing
for
Invalid
Month, month
Expected
MM DD YYYY Output
Department of ISE, DSCE-Bangalore
Actual
Output
Status
Input
Page 102
Software Testing Laboratory
12
13
14
15
13
Testing for
03
Invalid year,
year
should
Testing
for Valid 03
input
changing
the day within
the month.
MM=03
DD=15
Testing for Valid 03
input
changing
the day within
the month.
MM=03
DD=15 for
Testing
03
Invalid year,
year
should
Table-1: Test
2013-14
15
1811
Invalid
Year
Input
15
2011
03/16/2011
15
1813
03/16/1813
15
2013
Invalid
Year
Input
case for Next Date Problem
This is how we can apply BA technique to create test cases for our
Next Date
Problem.
11.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.
2.
3.
4.
No
No
No
No
of
of
of
of
TCs Executed:
Defects Raised:
TCs Pass:
TCs Failed:
Department of ISE, DSCE-Bangalore
Page 103
Software Testing Laboratory
2013-14
11.6 SNAPSHOTS:
1. Snapshot for Invalid Input day and next date
2. Snapshot to show the invalid day when the DD=32
Department of ISE, DSCE-Bangalore
104
Page
Software Testing Laboratory
2013-14
3. Valid Output.
11.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
105
Page
Software Testing Laboratory
2013-14
12. Design, develop, code and run the program in any suitable
language to implement the NextDate function. Analyze it
from
the
perspective
of equivalence class value testing,
derive different test cases, execute these test cases and discuss
the test results.
12.1 REQUIREMENT SPECIFICATION
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.
The constraints are
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.
12.2 DESIGN
Department of ISE, DSCE-Bangalore
106
Page
Software Testing Laboratory
2013-14
Algorithm
STEP 1: Input date in format DD.MM.YYYY
STEP2: if MM is 01, 03, 05,07,08,10 do STEP3 else STEP6
STEP3:if DD < 31 then do STEP4 else if DD=31 do STEP5 else
output(Invalid
Date);
STEP4: tomorrowday=DD+1 goto STEP18
STEP5: tomorrowday=1; tomorrowmonth=month + 1 goto STEP18
STEP6: if MM is 04, 06, 09, 11 do STEP7
STEP7: if DD<30 then do STEP4 else if DD=30 do STEP5 else
output(Invalid
Date);
STEP8: if MM is 12
STEP9: if DD<31 then STEP4 else STEP10
STEP10: tomorrowday=1, tommorowmonth=1,
tommorowyear=YYYY+1; goto
STEP18
STEP11: if MM is 2
STEP12: if DD<28 do STEP4 else do STEP13
STEP13: if DD=28 & YYYY is a leap do STEP14 else STEP15
STEP14: tommorowday=29 goto STEP18
STEP15: tommorowday=1, tomorrowmonth=3, goto
STEP18; STEP16: if DD=29 then do STEP15 else
STEP17
STEP17: output(Cannot have feb, DD); STEP19
STEP18: output(tomorrowday, tomorrowmonth,
tomorrowyear); STEP19: exit
Department of ISE, DSCE-Bangalore
107
Page
Software Testing Laboratory
2013-14
12.3 PROGRAM CODE:
#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)
{
printf("Invalid Input Day");
exit(0);
}
if(m<1 && m>12)
{
printf("Invalid Input Month");
exit(0);
}
if(m==2)
{
if(y%100==0)
{
Department of ISE, DSCE-Bangalore
108
Page
Software Testing Laboratory
2013-14
if(y%400==0)
ndays=29;
}
els
e
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++;
}
printf("\n Given date is %d:%d:%d",d,m,y);
printf("\n Next days date is %d:%d:
%d",nd,nm,ny); getch( );
}
12.4 TESTING
Technique used: Equivalence Class 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.
Department of ISE, DSCE-Bangalore
109
Page
Software Testing
Laboratory
2013-14
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.
Exampl
e:
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.
Department of ISE, DSCEBangalore
Page
110
Software Testing Laboratory
2013-14
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.
>12
00
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.
Test
design
Case
The NextDate 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
Department of ISE, DSCE-Bangalore
111
Page
Software Testing Laboratory
2013-14
A first attempt at creating an equivalence relation might
produce intervals such as these:
Valid Intervals
M1 = {month: 1 month
12} D1 = {day: 1 day
31}
Y1 = {year: 1812 year 2012}
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.
Weak and Strong Normal
TC
Id
Test Case
Description
Testing
Valid
Input Data
MM DD
for 6
input
15
Expected
YYYY Output
1900
Actual
Output
Status
6/16/1900
changing
the
day within the
Table 1: Weak and Strong Normal
Department of ISE, DSCE-Bangalore
Page 112
Software Testing Laboratory
2013-14
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:
TC
Id
1
Input Data
Test
Expecte
Case
d
MM DD YYYY
Descriptio
Outpu
15
1900
6/16/1900
Testing
for 6
Valid
input
changing the
day
Testing within
for 6
Invalid
Day,
day
with
negative
number
is 6
Testing it for
Invalid
Day,
day
with
Out
of range
Testingi.e., for -1
Invalid
Month, month
with
negative
number
is 13
Testing it for
Invalid
month,
month
with
out of range
i.e.,
MM=13 for it 6
Testing
Year, year is
out of range
YYYY=1899, it
should
<=1812
-1
1900
Day not in range
32
1900
Day not in range
15
1900
Month not in
range
15
1900
Month not in
range
15
1899
Year not in range
Department of ISE, DSCE-Bangalore
Actual
Output
Status
Page 113
Software Testing Laboratory
7
6
Testing for
Year,
year is out
of range
YYYY=2013, it
should
2013-14
15
2013
Year not in range
Table 2: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.
Department of ISE, DSCE-Bangalore
Page 114
Software Testing Laboratory
TC
Id
1
Input Data
Test
Expecte
Case
d
MM DD YYYY
Descriptio
Outpu
Testing for Month
is not in range
MM=-1 i.e.,in
Month not
negative
-1
15
1900
in range
number there is
not possible have
to be month
in
negative
Testing
for Day is
not in range DD=1 i.e., in negative
-1
1900 Day not in
range
15
1899
-1
i) Day not
in range
1900
ii) Month not
in range
-1
i) Day not
in range
1899
ii) Year not in
range
number there
is
not possible have
to
be for
Day Year
in
Testing
is
not
2013-14
in
range
YYYY=1899
Testing for
i.e.,
Day
and month is not
in range MM=-1,
DD=-1
i.e.,
in
negative
number there
is
not possible have
to be Day and
MonthTesting
in
i)
for
Day
is not in
range and Year is
not in range DD=1 i.e., in
negative
number there is
not possible have
to be Day
in
negative
number, and
ii) YYYY=1899, so
-1
Department of ISE, DSCE-Bangalore
Actual
Output
Status
Year not
in range
Page 115
Software Testing Laboratory
6
i)
Testing
for
Month
is not in range
MM=1 and i.e., in
negative number
there
is
not
possible have to
be Day
in
negative
number, and
i)
Testing
for
Day is not
in
range DD=-1 i.e.,
in
negative
number there is
not possible have
to be Day
in
negative
number
ii)
Testing
for
Month
is not in range
MM=1 and i.e., in
negative number
there
is
not
possible have to
2013-14
-1
-1
15
i) Month not
in range
1899
ii) Year not
in range
-1
i) Day not
in range
ii) Month not
1899
in range
iii) Year not in
range
Department of ISE, DSCE-Bangalore
Page 116
Software Testing Laboratory
2013-14
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:
M1 = {month: month has 30
days} M2 = {month: month
has 31 days} M3 = {month:
month is February}
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.
D1 = {day: 1 day
28} D2 = {day:
day = 29}
D3 = {day: day
= 30}
D4 = {day: day
= 31}
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).
Y1 = {year: year =
2000}
Y2 = {year: year is a leap
year}
Y3 = {year: year is
common year}
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
Department of ISE, DSCE-Bangalore
117
Page
Software Testing Laboratory
2013-14
TC
Id
Test Case Description
Testing
for
all 6
Valid input changing
the day within the
month.
7
Testing for Valid
input
changing the day
within the
Testing
for month.
Leaf year, 2
i.e., MM=2 (Feb) the
input DD=30, there is
not possible date 30, in
leaf year only 28 and 29
will occur.
Testing for Impossible 6
Date, i.e., MM=6 (June)
the input DD=31, there
is only 30 days in the
month of June, So,
DD=31 is Impossible
Date.
Input Data
MM DD
Expected
YYYY Output
14
2000
6/15/2000
29
1996
7/30/1996
30
2002
Impossible date
31
2000
Impossible input
date
Actual
Output
Status
Table 3 Weak normal
Department of ISE, DSCE-Bangalore
Page 118
Software Testing Laboratory
2013-14
Strong Normal
TC ID
Test Case
Description
Input Data
MM DD
Expected
YYYY Output
SN1
14
2000
6/15/2000
SN2
14
1996
6/15/1996
SN3
14
2002
6/15/2002
SN4
29
2000
6/30/2000
SN5
29
1996
6/30/1996
SN6
29
2002
6/30/2002
30
2000
30
1996
30
2002
31
2000
31
1996
31
2002
13
SN13
14
2000
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
7/15/2000
14
SN14
14
1996
7/15/1996
15
SN15
14
2002
7/15/2002
16
SN16
29
2000
7/30/2000
17
SN17
29
1996
7/30/1996
18
SN18
29
2002
7/30/2002
19
SN19
30
2000
7/31/2000
8
9
10
11
12
SN7
SN8
SN9
SN10
SN11
SN12
Department of ISE, DSCE-Bangalore
Actual
Output
Status
Page 119
Software Testing Laboratory
2013-14
20
SN20
30
1996
7/31/1996
21
SN21
30
2002
7/31/2002
22
SN22
31
2000
8/1/2000
23
SN23
31
1996
8/1/1996
24
SN25
31
2002
8/1/2002
25
SN24
14
2000
2/15/2000
26
SN26
14
1996
2/15/1996
27
SN27
14
2002
2/15/2002
29
2000
29
1996
Invalid Input
Date
3/1/1996
29
2002
30
2000
30
1996
30
2002
31
2000
31
1996
31
2002
28
29
30
31
32
33
34
35
36
SN28
SN29
SN30
SN31
SN32
SN33
SN34
SN35
SN36
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Invalid Input
Date
Table 4: Strong Normal
Department of ISE, DSCE-Bangalore
Page 120
Software Testing Laboratory
2013-14
12.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 TCs Executed:
2. No of Defects Raised:
3. No of TCs Pass:
4. No of TCs Failed:
12.6 SNAPSHOTS:
1. Snapshot to show the nextdate for current date and invalid day
is entered
Department of ISE, DSCE-Bangalore
121
Page
Software Testing Laboratory
2013-14
2. Invalid Input
12.7 REFERENCES:
1. Requirement Specification
2. Assumptions
Department of ISE, DSCE-Bangalore
122
Page
Software Testing Laboratory
2013-14
EXECUTION STEPS IN LINUX
1. Open Terminal
2. Then open VI Editor using the filename, following
command will shows that
[root@localhost ~]# vi
Triangle.c
3. Write the Suitable code for the given program
4. Then compile and execute the program using the command;
[root@localhost ~]# cc triangle.c
5. Then execute the command;
[root@localhost ~]# ./a.out
6. Enter the suitable input for the program.
7. Then will get the suitable output.
Department of ISE, DSCE-Bangalore
123
Page