Software - Testing - Manual New
Software - Testing - Manual New
    2. 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.
 3. 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.
 5. 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.Design, develop, code and run the program in any suitable language to
Department of ISE                                                              Page 1
Software Testing Laboratory
 8. 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.
 9. 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.
 10. 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.
 11. 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.
12. 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.
       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
1.2 DESIGN
       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
               else
               {
                       printf("Isosceles triangle");
               }
       }
       else
           {
                      printf("triangle cannot be formed");
           }
          getch();
          return 0;
         }
1.4 TESTING
       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.
       1≤a≤10
       1≤b≤10
       1≤c≤10
Department of ISE                                                          Page 5
Software Testing Laboratory
  From the above equivalence classes we can derive the following test cases
  using boundary value analysis approach.
  TC    Test          Case Input Data         Expected         Actual    Status
  Id    Description        A    b C           Output           Output
  1     For A input is not X    3 6           Not a Triangle
        given
  2     For B input is not 5    X 4           Not a Triangle
        given
  3     For C input is not 4         7   X    Not a Triangle
        given
  4     Input of C is in 5           5   -1   Not a Triangle
        negative(-)
1.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 TC’s Executed:
    2. No of Defects Raised:
    3. No of TC’s Pass:
    4. No of TC’s Failed:
 1.6 SNAPSHOTS:
  1. Snapshot of Isosceles and Equilateral triangle and triangle can not be
 formed.
 1.7 REFERENCES
     1. Requirement Specification
      2. Assumptions
 2. 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.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
Department of ISE                                                            Page 12
Software Testing Laboratory
       }
       printf("Enter the total number of stocks");
       scanf("%d",&stocks);
       if ((stocks <= 0) || (stocks > 80))
       {
               flag = 1;
       }
Department of ISE                                                     Page 13
Software Testing Laboratory
2.4 TESTING
BVA: Procedure
        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 *.
    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%.
  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      Test Case           Input Data                     Expected      Actual   Status
  Id     Description     Locks Stocks Barrels Sales   Output(Commission)   Output
  1    Input test cases 1       1      1      100     10
       for    Locks=1,
       Stocks=1,
       Barrels=1
  2    Input test cases 1       1      2      125     12.5
       for    Locks=1,
       Stocks=1,
       Barrels=2
  3    Input test cases 1       2      1      130     13
       for    Locks=1,
       Stocks=2,
       Barrels=1
  4    Input test cases 2       1      1      145     14.5
       for    Locks=2,
       Stocks=1,
       Barrels=1
     Barrels=18
17   Input test cases 18       18     18       1800   220
     for Locks=18,
     Stocks=18,
     Barrels=18
18   Input test cases 18       18     19       1825   225
     for Locks=18,
     Stocks=18,
     Barrels=19
19   Input test cases 18       19     18       1830   226
     for Locks=18,
     Stocks=19,
     Barrels=18
20   Input test cases 19       18     18       1845   229
     for Locks=19,
     Stocks=18,
     Barrels=18
21   Input test cases 48       48     48       4800   820
     for Locks=48,
     Stocks=48,
     Barrels=48
 This is how we can apply BVA technique to create test cases for our
 Commission Problem.
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 for valid inputs
2. Snapshots when the two inputs are same
3. Snapshots when the two inputs and all the inputs are same
2.7 REFERENCES
      1. Requirement Specification
      2. Assumptions
3. 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.
      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?
3.2 DESIGN
Algorithm
      Step 1: Input date in format DD.MM.YYYY
      Step 2: if MM is 01, 03, 05,07,08,10 do Step 3 else Step 6
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( );
}
3.4 TESTING
BVA: Procedure
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
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.
From the above equivalence classes we can derive the following test cases using
boundary value analysis approac h.
TC     Test          Case Input Data          Expected           Actual   Status
Id     Description            MM DD YYYY Output                  Output
1      Testing for Invalid Aa    15    1900   Invalid    Input
       months           with                  Month
       character is typed
2      Testing for Invalid 06    Dd    1901   Invalid    Input
       Day with character                     Day
       is typed
3      Testing for Invalid 06    15    196y   Invalid    Input
       Year             with                  Year
       character is typed
4      Testing for Invalid 03    00    2000   Invalid    Input
       Day, day with 00                       Day
5      Testing for Valid 03      30    2000   03/31/2000
       input changing the
       day within     the
       month.
6      Testing for Valid 03      02    2000   03/03/2000
       input changing the
       day within     the
       month.
    This is how we can apply BA technique to create test cases for our Next Date
    Problem.
3.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:
3.6 SNAPSHOTS:
1. Snapshot for Invalid Input day and next date
3.7 REFERENCES:
      1. Requirement Specification
      2. Assumptions
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 equivalence class partitioning, 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.
   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
4.2 DESIGN
   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 requirements R3)
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
printf("Scalene triangle");
                }
             else
                 printf("Isosceles triangle");
         }
     else
     {
     printf("triangle cannot be formed");
     } getch(); return 0;
}
4.4 TESTING
   1. Technique used: Equivalence class partitioning
   2. Test Case design
First Attempt
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.
2 WN2 2 2 3 Isosceles
3 WN3 3 4 5 Scalene
Table-1: Weak Normal and Weak Robust Test case for Triangle Problem
Second attempt
   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. No of TC’s Executed:
   2. No of Defects Raised:
   3. No of TC’s Pass:
   4. No of TC’s Failed:
4.6 SNAPSHOTS:
1. Snapshot of Equilateral. Isosceles and scalene triangle.
2. Snapshot for Triangle cannot be formed
3. Snapshot for the given range is Out of range and Triangle cannot be formed.
4.7 REFERENCES
      1. Requirement Specification
      2. Assumptions
5. 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.
5.1 REQUIREMENT SPECIFICATION
   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:
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 salesperson’s total dollar sales and
finally the commission.
5.2 DESIGN
   Algorithm:
   Step 1: Define lockPrice=45.0, stockPrice=30.0, barrelPrice=25.0
   Step2: Input locks
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.
                                             >120
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 CASE DESIGN
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
isidentical 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 Case     Input Data             Sales          Expected                  Actual Status
Id Description   Locks Stocks Barrels                  Output(Commission)        Output
1   WR1          10     10    10        $100           10
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. No of TC’s Executed:
2. No of Defects Raised:
3. No of TC’s Pass:
4. No of TC’s Failed:
5.6 SNASHOTS
1. Snapshot for invalid inputs
2. Invalid Input and commission for when the all inputs are 10
5.7 REFERENCES
      1. Requirement Specification
      2. Assumptions
6. 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.
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 ?
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.
6.2 DESIGN
Algorithm:
Step 1: Input date in format DD.MM.YYYY
Step 2: if MM is 01, 03, 05,07,08,10 do Step 3 else Step 6
Step 3:if DD < 31 then do Step 4 else if DD=31 do Step 5 else output(Invalid
Date);
Step 4: tomorrowday=DD+1 goto Step 18
Step 5: tomorrowday=1; tomorrowmonth=month + 1 goto Step 18
Step 6: if MM is 04, 06, 09, 11 do Step 7
Step 7: if DD<30 then do Step 4 else if DD=30 do Step 5 else output(Invalid
Date);
Step 8: if MM is 12
Step 9: if DD<31 then Step 4 else Step 10
Step 10: tomorrowday=1, tommorowmonth=1, tommorowyear=YYYY+1; goto
Step 18
Step 11: if MM is 2
Step12: if DD<28 do Step 4 else do Step 13
Step 13: if DD=28 & YYYY is a leap do Step 14 else Step 15
Step 14: tommorowday=29 goto Step18
Step 15: tommorowday=1, tomorrowmonth=3, goto Step 18;
Step 16: if DD=29 then do Step15 else Step 17
Step 17: output(“Cannot have feb”, DD); Step 19
Step 18: output(tomorrowday, tomorrowmonth, tomorrowyear);
Step 19: exit
#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;
      }
      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( );
}
6.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 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
A first attempt at creating an equivalence relation might produce intervals
such as these:
Valid Intervals
Valid Intervals
Invalid Intervals
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
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.
    YYYY=1899,           year
 7     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
                                                   i) Day not in
       is not in range MM=-
                                                   range
       1 and i.e., in negative                     ii) Month not in
       number there is not                         range
       possible have to be        -1   -1   1899
                                                   iii) Year not in
       Day      in     negative
                                                   range
       number, and
       iii) Year is not in
       range YYYY=1899,
       year should <=1812
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
TC ID   Test Case            Input Data              Expected            Actual   Status
        Description          MM DD         YYYY Output                   Output
1       SN1                  6     14      2000      6/15/2000
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:
6.6 SNAPSHOTS:
1. Snapshot to show the nextdate for current date and invalid day is entered
2. Invalid Input
6.7 REFERENCES:
      1. Requirement Specification
      2. Assumptions
7.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.
Step 5: Print triangle formed is Isosceles.
Step 6: stop
                 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;
}
7.4
TESTING:
Technique Used: Decision Table Approach
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,
 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.
7.6 SNAPSHOTS:
 1. Output screen of Triangle cannot be formed
2. Output screen of Equilateral and Isosceles Triangle.
7.7. REFERENCES:
1. Requirement Specification
2. Assumption.
8. 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.
Also the system should compute the total dollar sales. The system should
output salespersons total dollar sales, and his commission.
8.2 DESIGN:
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.
8.4 TESTING
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
 TC     Test               Case                                   Expected       Actual
                                  Locks        Stocks   Barrels                           Status
 ID     Description                                               Output         Output
        Testing             for
 1      Requirement 1             -2           40       45        Out of Range
        Condition 1 (C1)
        Testing             for
 2      Requirement 1             90           40       45        Out of Range
        Condition 1 (C1)
        Testing             for
 3      Requirement 1             35           -3       45        Out of Range
        Condition 2 (C2)
        Testing             for
 4      Requirement 1             35           100      45        Out of Range
        Condition 2 (C2)
         Testing            for
 5       Requirement 1            35    40    -10      Out of Range
         Condition 3 (C3)
         Testing            for
 6       Requirement 1            35    40    150      Out of Range
         Condition 3 (C3)
         Testing            for
 7                                5     5     5        500    a1:50
         Requirement 2
         Testing            for
 8                                15    15    15       1500   a2: 175
         Requirement 2
         Testing            for
 9                                25    25    25       2500   a3: 360
         Requirement 2
     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.
8.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.
8.7 REFERENCES:
      1. Requirement Specification
      2. Assumptions
9. 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:
   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 salesperson’s total dollar sales and
    finally the commission
9.2 DESIGN
   Algorithm:
   Step 1: Define lockPrice=45.0, stockPrice=30.0, barrelPrice=25.0
   Step2: Input locks
   Step3: while(locks!=-1) ‘input device uses -1 to indicate end of data goto
    Step 12
    Step 4:input (stocks, barrels)
    Step 5: compute lockSales, stockSales, barrelSales and sales
    Step 6: output(“Total sales:” sales)
    Step 7: if (sales > 1800.0) goto Step 8 else goto Step 9
    Step 8: commission=0.10*1000.0; commission=commission+0.15 * 800.0;
       commission = commission + 0.20 * (sales-1800.0)
    Step 9: if (sales > 1000.0) goto Step 10 else goto Step 11
    Step10: commission=0.10* 1000.0; commission=commission + 0.15 *
    (sales-1000.0)
    Step 11: Output(“Commission is $”, commission)
    Step12: exit
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
     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,
    20    t_sales                    barrels
    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
9.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.
 9.6 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
10. 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.
10.1 REQUIREMENTS SPECIFICATION
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.
10.2 DESIGN
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.
    5   Int a[20],n,low,high,mid,key,I;
6       int flag=0;
7       clrscr();
8       printf("Enter the value of n:\n");
9       scanf("%d",&n);
10      if(n>0)
11      {
12                 printf("Enter %d elements in ASCENDING order\n",n);
13                 for(i=0;i<n;i++)
14                 {
15                 scanf("%d",&a[i]);
16                 }
17                 printf("Enter the key element to be searched\n");
18                 scanf("%d",&key);
19                 low-=0;
20                 high=n-1;
21      while(low<=high)
22            {
23                     mid=(low+high)/2;
24                if(a[mid]==key)
25            {
26                 flag=1;
27                 break;
28    }
29                 else if(a[mid]<key)
30            {
31    low=mid+1;
32             }
33             else
34             {
35                high=mid-1;
36    }
37            }
38            if(flag==1)
39             printf("Successful search\n Element found at Location
                   %d\n",mid+1);
 40           else
 41           printf(“Key element is not found”);
 42       }
 43           else
 44            printf("Wrong input");
 45           getch();
 46           return 0;
 47   }
10.4 TESTING
Number of nodes = 15
                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.
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.
    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                        key element found.
P3: A, B, C B, D, E, F, H, J, K, E, F, H, J, K, E, G, N, O    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.
DERIVING TEST CASES USING BASIS PATH TESTING
The last step is to devise test cases for the basis paths.
   TEST CASES
  TC Test       Case      Value array                  Expected       Actual
                                          key                                St
  ID Description          of ‘n‘ elements              Output         Output
     Testing     for
                                                       key     not
  1  requirement 1        0        --           5
                                                       found
     Path P1
     Testing     for                                   Key found
  2  requirement 2        4        2,3,5,6,7    5      at position
     Path P2                                           3
     Testing     for
                                                       key     not
  3  requirement 2        3        1,2,5        6
                                                       found
     Path P3
     Testing     for
                                                       key     not
  4  requirement 2        3        1,2,5        1
                                                       found
     Path P4
     Testing     for                                   Key found
  5  requirement 2        5        1,2,4,6,7    2      at position
     Path P4+P2-P1                                     2
     Testing     for                                   key
  6  requirement 2        5        4,5,7,8,9    8          found at
     Path P3+P2-P1                                         position
10.7 REFERENCES:
1. Requirement Specification
2. Assumptions
11. 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.
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.
11.2 DESIGN
We use integer array as a data structure to store ‘n’ number of elements.
Iterative programming technique is used.
/* A[] --> Array to be sorted, l --> Starting index, h --> Ending index */
  // initialize top of
  25     int top = -1;
11.4 TESTING
Program Graph for partition:
Using program graph we derive DD path graph for partition()
  DD
 Path     Program Graph
Names
   A      50,51,52,53
   B      54
   C      56
   D      57,58,59,60,61,62
   E      64,65,66,67,68
Cyclomatic complixity
No. of edges =6
No. of
nodes=5
e-n+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,
P1: A, B, E
P2: A, B, C,
D, B, E P3:
A, B, C, B, E
                               Expected output
             Test       Array                          Actual
    TC                                 Value of i             Status
             Case     element   Array                  output
    ID
         Descriptio   s
1             n for
         Testing      5       5       0
         path P1
2        Testing      5, 4, 6, 2,   5, 4, 6, 2, 4
         for path     7             7
3        P2
         Testing      5, 4, 6, 7,   5, 4, 6, 7, 0
         for path     5             5
         P3
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
3+1=4 (i.e., Region R1, R2 & R3)
 11.5 EXECUTION
             Compile the program and enter inputs Test above table array
 elements for test cases.
11.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
3. Snapshot of quick sort sorted elements are displayed, when the n=5
11.7 REFERENCES:
1. Requirement Specification
2. Assumptions
12. 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.
12.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+
   DD path
               Program Graph Nodes
   Names
      A       1, 2, 3, 4, 5, 6, 7, 8 . . . 18
      B       19
      C       20, 21, 22
      D       23
      E       24
      F       25
      G       26
      H       27
      I       28
      J       29
      K       30
      L       31
     M        32
      N       33
      O       34
      P       35
      Q       37
      R       36
CYCLOMATIC COMPLEXITY
No. of nodes = 18
No. of edges = 24
e-n+2
24-18+2=8
No. of regions + 1
7 + 1 = 8 (i.e., Regions R1, R2, R3, R4, R5, R6, R7)
Test Cases:
     Test Description                           Expected   Actual
TC                                      Input                       Status
                                                 Output    Output
ID
                                  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
2   Testing for path P2   M=35          Fa
                          S=35          il
                          SST=35
                          Avg=32.5
                          K=40
                          E=38
                          H=37
3   Testing for path P3   M=40        Grade C
                          S=40
                          SST=38
                          Avg=38.8
                          3
                          K=45
                          E=47
4   Testing for path P4   H=48        Grade
                          M=46        C+
                          S=49
                          SST=50
                          Avg=47.5
                          K=55
                          E=58
                          H=60
5   Testing for path P5   M=56      Grade B
                          S=57
                          SST=60
                          Avg=57.66
                          K=65
                          E=65
                          H=65
6   Testing for path P6   M=65       Grade B+
                          S=65
                          SST=65
                          Avg=65.0
                                 K=75
                                 E=72
                                 H=78
7      Testing for path P7       M=75     Grade A
                                 S=80
                                 SST=80
                                 Avg=76.6
                                 K=85
                                 E=90
                                 H=80
8      Testing for path P8       M=95     Grade
                                 S=85     A+
                                 SST=85
                                 Avg=86.6
 12.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.
12.6 SNAPSHOTS:
1. Snapshot to Show Fail and Grade C
2. Snapshot to show Grade B and Grade C+
12.7 REFERENCES:
1. Requirement Specification
2. Assumptions
                     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.