ST Qa Final
ST Qa Final
ST Qa Final
SOFTWARE ENGINEERING:
Software engineering is a field of engineering for designing and writing programs for
computers or other electronic devices. It can also be called as the systematic application
of scientific and technological knowledge, methods, and experience to the design,
implementation, testing and documentation of software.
- To execute test suites and test cases following the test procedures.
- To re-execute the tests that previously failed in order to confirm a fix.
This is known as re-testing.
- To log the outcome of the test execution and record the identities and
version of the software under tests.
- To compare actual results and expected results.
- To report the discrepancies as incidents if there is difference between
actual and expected results.
4.) EVALUATING EXIT CRITERIA AND REPORTING:
- To check the test logs against the exit criteria specified in test planning.
- To assess if more test are needed or if the specified exit criteria need to
be changed.
- To write a summary report for stakeholders.
5.) TEST CLOSURE:
Test closure has the major following tasks:
- To check whether all the deliverables have been delivered and to ensure
that all incident reports have been resolved.
- To finalize and archive testware such as scripts, test environments etc.,
for later use.
- To handover the testware to the maintenance organization.
- To evaluate how testing went and learn lessons for future releases.
LIMITATIONS OF TESTING:
Errors in the software requirement and specification document
Logical bugs
Difficult to measure the progress of testing
Exhaustive (total) testing is not possible in present scenario
Every path, valid inputs(all) and invalid input (all) cannot be tested at once
EXPERIMENT 2
Question 1:
Write a program to find the roots of the quadratic equation and do Boundary Value Analysis (BVA).
Range is [1,100].
Program
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int a,b,c,d;
float r1,r2;
if(a>100||b>100||c>100||a<1||b<1||c<1)
cout<<"out of range";
d=pow(b,2)-(4*a*c);
r1=(-b+sqrt(d))/(2*a);
r2=(-b-sqrt(d))/(2*a);
cout<<"root 1 = "<<r1;
cout<<"\nroot 2 = "<<r2;
getch();
BVA
Range - R[1,100]
Domain 1. Minimum : value = 1
2. Above minimum : value = 2
3. Nominal : value = 50
4. Below maximum : value = 99
5. Maximum : value = 100
Question 2:
Write a program to find the largest amongst the 3 numbers and do Robust Worst case testing. Range is
[1,100].
Program
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int a,b,c;
if(a>100||b>100||c>100||a<1||b<1||c<1)
cout<<"invalid input";
else
{
if(a>b)
{
if(a>c)
cout<<a<<" is largest";
else
cout<<c<<" is largest";
}
else if(b>a)
{
if(b>c)
cout<<b<<" is largest";
else
cout<<c<<" is largest";
}
else if(c>a)
{
if(c>b)
cout<<c<<" is largest";
else
cout<<a<<" is largest";
}
}
getch();
}
Range - R[1,100]
Domain 1. Below minimum : value = 0
2. Minimum : value = 1
3. Above minimum : value = 2
4. Nominal : value = 50
5. Below maximum : value = 99
6. Maximum : value = 100
7. Above maximum : value = 101
Question 3:
Write a program for classification of a triangle amongst right angled triangle, acute angled triangle,
obtuse angled triangle or invalid and do Worst Case testing. Range is [0,100].
Program
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
int a,b,c,h,b1,p;
if(a>100||b>100||c>100||a<0||b<0||c<0)
cout<<"Out of range";
else
{
if(a>=b && a>=c)
h=a,b1=b,p=c;
else if(b>=a && b>=c)
h=b,b1=a,p=c;
else if(c>=a && c>=b)
h=c,b1=a,p=b;
if(pow(h,2)==pow(b1,2)+pow(p,2))
cout<<"Right angled triangle\n";
else if(pow(h,2)<pow(b1,2)+pow(p,2))
cout<<"Acute angled triangle\n";
else if(pow(h,2)>pow(b1,2)+pow(p,2))
cout<<"Obtuse angled triangle\n";
else
cout<<"Invalid\n";
}
}
Range - R[0,100]
Domain 1. Minimum : value = 0
3. Nominal : value = 50
FLOWCHART:
ALGORITHM:
Area of Square
start Area of Circle
input r start Area of Triangle
squ=s*s input r start
print cir cir=3.14*r*r input b,h
stop print cir
tri=0.5*b*h
stop
print tri
stop
PROGRAM:
#include<stdio.h>
#include<conio.h>
void main()
{
int r,a,b,c;
printf(Enter the radius of circle);
scanf(%d,&r);
printf(Enter 3 sides of triangle):
scanf(%d %d %d,&a,&b,&c);
int area=3.14*r*r;
printf(The area of circle is %d,area);
printf(\n);
int areaofsquare=a*a;
int areaoftriangle=0.5*a*b;
int areaofrectangle=a*b;
printf(\nThe area of square is %d,areaofsquare);
printf(\nThe area of rectangle is %d,areaofrectangle);
printf(\nThe area of triangle is %d,area of triangle);
getch();
}
Aim-3 (B): WAP in C/C++ to compute 3 sides of a triangle and to determine whether they
form scalence, isosceles, or equilateral triangle and perform Cause effect testing, Decision table
based testing and Equivalence Class testing.
PROGRAM:
FLOWCHART:
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
int x,y,z;
clrscr();
printf("Enter the value of the three sides : \n");
printf("X : ");
scanf("%d",&x);
printf("\nY : ");
scanf("%d",&y);
printf("\nZ : ");
scanf("%d",&z);
if ((x<1 || x >100) || (y<1 || y>100) || (z<1 || z>100))
printf("\nValues outside range");
else
if ((x+y > z) && (y+z > x) && (z+x > y))
{
if (x==y && y==z)
printf("\nThis ia an Equilateral triangle");
else if (x==y || y==z || z==y)
printf("\nThis is an Isoceles triangle");
else
printf("\nScalene Triangle");
if (x*x+y*y==z*z || y*y+z*z==x*x || z*z+x*x==y*y)
printf("\nRight Angled Triangle");
}
else
printf("\nNot a triangle");
getch();
}
Input Domain Based Classes are:
I1= {x: x<1}
I2 ={x: x>100}
I3={x: 1x100}
I4={y: y<1}
I5={y: y>100}
I6={y: 1y100}
I7= {z: z<1}
I8= { z:z>100}
I9= { z:1z100}
I10= {<x, y, z>:x=y=z}
I11= {<x, y, z>:x=y, x z}
I12= {<x, y, z>:x=z, x y}
I13= {<x, y, z>:y=z, x y}
I14= {<x, y, z>: x y , x z ,y z}
I15= {<x, y, z>:x=y + z}
I16= {<x, y, z>:x> y+ z}
I17= {<x, y, z>:y=x +z}
I18= {<x, y, z>:y>x +z}
I19= {<x, y, z>:z=x +y}
I20= {<x, y, z>:z>x +y}
Test X Y ZExpected
case Output
1 0 50 50 Invalid Input
2 101 50 50 Invalid Input
3 50 50 50 Equilateral
4 50 0 50 Invalid Input
5 50 101 50 Invalid Input
6 50 50 50 Equilateral
7 50 50 0 Invalid Input
8 50 50 101 Invalid Input
9 50 50 50 Equilateral
10 60 60 60 Equilateral
11 50 50 60 Isosceles
12 50 60 50 Isosceles
13 60 50 50 Isosceles
14 100 99 50 Scalene
15 100 50 50 Not a Triangle
16 100 50 25 Not a Triangle
17 50 100 50 Not a Triangle
18 50 100 25 Not a Triangle
19 50 50 100 Not a Triangle
20 25 50 100 Not a Triangle
1 50 50 50 Equilateral
2 50 50 99 Isosceles
3 100 99 50 Scalene
4 50 100 50 Not a Triangle
EXPERIMENT NO. 4
Aim-4: WAP in C/C++ to compute ab and perform its decision based testing.
FLOWCHART:
ALGORITHM:
START
Initialize variables a,b and c.
Read a and b.
Repeat Until Loop (b>a)
c *=b
b--;
End.
PROGRAM:
#include<stdio.h>
int main()
{
int b,a,i=1;
long int sum=1;
printf(Enter a number);
scanf(%d,&a);
printf(Enter power);
scanf(%d,&b);
while(i<=b)
{
sum=sum*a;
i++;
}
printf(%d to the power %d is %ld,a,b,sum);
getch();
}
EXPERIMENT NO. 5(A)
Aim-5 (A): WAP in C/C++ to compute previous date, given the present date as input and
perform decision table based testing
FLOWCHART
ALGORITHM :
1. Read values to Year, Month and Date,
y = Date[0], m = Date[1], d = Date[2]
2. if "m" is less than 3
if (m < 3):
If "m" is less than 3, "m" is "m + 12" and "y" is "y - 1"
m = m + 12
y=y-1
3. a = (2 * m) + 6 * (m + 1) / 10
4. b = y + (y / 4) - (y / 100) + (y / 400)
5. f1 = d + a + b + 1
6. f = f1 % 7
7. if (f == 0):
print "Sunday"
8. elif (f == 1):
print "Monday"
9. elif (f == 2):
print "Tuesday"
10.elif (f == 3):
print "Wednesday"
11. elif (f == 4):
print "Thursday"
12.elif (f == 5):
print "Friday"
13.elif (f == 6):
print "Saturday"
14.END
PROGRAM
#include<stdio.h>
#include<conio.h>
int main()
{
int day,month,year,validdate=0;
printf("enter the day value");
scanf("%d",&day);
printf("enter the month value");
scanf("%d",&month);
printf("enter the year value");
scanf("%d",&year);
OUTPUT
TEST CASES:
1 6 15 1900 14 June,1900
2 6 15 1901 14 June,1901
3 6 15 1962 14 June,1962
4 6 15 2024 14 June,2024
5 6 15 2025 14 June,2025
6 6 1 1962 31 May,1962
7 6 2 1962 1 June,1962
8 6 30 1962 29 June,1962
9 6 31 1962 Invalid date
10 1 15 1962 14 january ,1962
11 2 15 1962 14Febuary ,1962
12 11 15 1962 14 November ,1962
13 12 15 1962 14 December ,1962
EXPERIMENT NO. 5(B)
Aim-5(B): WAP in C/C++ to compute total salary of an employee, given his basic salary.
The slab is given below.
HRA = 30% of basic
DA = 41% of basic
CCA = Rs 100/-
I.Tax = 300/-
PF = 12% OF BASIC
TA = Rs 800/-
FLOWCHART
ALGORITHM:
1. START
2. float basic_salary,da,hra,cca,pf,it,gross_salary,net_salary;
3. Enter the basic salary of an employee;
4. READ basic_salary;
5. da = basic_salary*41/100;
6. hra =basic_salary *30/100;
7. cca = 800;
8. pf = basic_salary*12/100;
9. It = 300;
10. gross_salary=basic_salary+hra+cca+da;
11. net_salary=gross_salary- pf- It;
12. PRINT Gross Salary.
13. PRINT Net Salary .
PROGRAM
#include<stdio.h>
#include<conio.h>
main()
int basic_salary,dearness_allowance,medical_allowance;
scanf(%d,&basic_salary);
dearness_allowance=0.41*basic_salary;
medical_allowance=100;
int houserent_allowance=0.3*basic_salry;
int Travel_allowance=800;
int Income_Tax=300;
int Provident_fund=1.2*basic_salry;
total_salary=basic_salary+dearness_allowance+medical_allowance+houserent_allow
ance+income_tax+prvidentfund;
getch();
}
EXPERIMENT NO. 6
Aim: Create a test plan document for any application (e.g. Library Management System).
Library Management System
1 BACKGROUND
The Library Management System is an online application for assisting a librarian in managing
a book library in a University. The system would provide basic set of features to add/update
clients, add/update books, search for books, and manage check-in / checkout processes.
Our test group tested the system based on the requirement specification.
2 INTRODUCTION
This test report is the result for testing in the LMS. It mainly focuses on two problems: what
we will test and how we will test.
3 Result
3.1 GUI test
Pass criteria: librarians could use this GUI to interface with the backend library database
without any difficulties
Result: pass
4 ENVIRONMENTAL used
4.1 Hardware: Core2Duo
4.2 Software: Microsoft Windows XP
5 RESOURCES
5.1 Developers of the system are involved in testing process (debugging, unit testing, even
integrity testing).
5.2 Users of the system are involved in testing process (integrity testing).
EXPERIMENT NO. 7
Aim: Study of Any Testing Tool (Win Runner).
HP Win Runner software was an automated functional GUI testing tool that allowed a user
to record and play back user interface (UI) interactions as test scripts.
As a functional test suite, it worked with HP Quick Test Professional and supported
enterprise quality assurance. It captured, verified and replayed user interactions
automatically, in order to identify defects and determine whether business processes
worked as designed. The software implemented a proprietary Test Script Language (TSL)
that allowed customization and parameterization of user input.
HP Win Runner was originally written by Mercury Interactive. Mercury Interactive was
subsequently acquired by Hewlett Packard (HP) in 2006. On February 15, 2008, HP Software
Division announced the end of support for HP Win Runner versions 7.5, 7.6, 8.0, 8.2, 9.2
suggesting migration to HP Functional Testing software as a replacement.
1. Learning Recognition of objects and windows in our application by win runner is called
learning. Win runner 7.0 follows Auto learning.
3. Edit Script Depends on corresponding manual test, test engineer inserts check points
in to that record script.
4. Run Script During test script execution, win runner compare tester given expected
values and application actual values and returns results.
5. Analyze Results Tester analyzes the tool given results to concentrate on defect
tracking if required.
EXPERIMENT NO. 8
Aim: Study of Any Test Management Tool (QA Complete).
QA Complete is a powerful, flexible test management tool that helps users easily manage
requirements, tests and defects all in one place. The tool is easy to use, and provides a
central hub to manage and report on all of your tests manual, Selenium, Test Complete,
SoapUI.
It is customizable enough to fit into any development process, from Waterfall to Agile, and
integrates tightly with the project management and workflow tools you already use, such as
Jira, Bugzilla, Visual Studio and more.
Integrate with external bug tracking or source code control systems for even more robust
tracking and reporting of each defect
Eliminate redundant data entry by generating defects from failed test cases using our one-
click cloning capability. Cloning passes along all relevant test steps to reproduce the
problem, along with expected and actual results... all without having to enter anything.
TRACE TESTS TO USER STORIES
Link
With QAComplete's centralized test management, you can not only keep track of all of your
tests across environments and test types, but you can also easily and quickly link them to
user stories so you know you've covered the most important aspects of the product you are
building.
Key Features:
1. Test Case Management The ability to organize, plan, and analyze your testing efforts
across the lifecycle is critical to your success or failure whether you use manual or
automated test cases today. As projects cope with fewer development resources, higher
quality expectations, and shorter development timelines, any serious development effort
needs better test case management. QA Complete delivers: -
Manage manual test cases and link them back to the original requirements, thereby
ensuring a requirement has been met. Evaluate the test run history of those
automated tests right from QA Complete.
Employ re-usable manual test libraries to quickly create new test scenarios.
Add, print, edit, or email test cases with a single click.
5. Defect and Issue Tracking QA Complete allows you to track status and resolution
progress of defects and issues for each release. Instead of spending your time entering data,
the software automatically generates a defect identifier on failed test cases, so testers can
invest their time running the tests, not administration. Integration with Atlassian JIRA,
Bugzilla, and other web-based defect tracking tools allow you to blend QA Complete
features with the defect tracking tools your organization already uses.
Coordinate QA and development teams to coordinate activities as bugs are found.
QA Complete has a full featured defect tracking component.
If your team already owns a bug tracking system (like JIRA, Bugzilla, Microsoft TFS,
etc.), you can create defects inside of QA Complete and have those automatically
synchronized with your bug tracking system.
Defect reports and dashboards show defects by severity, priority, or other criteria.
6. Seamless Integration with other ALM tools QA Complete can seamlessly integrate
with many defect and ALM tools including Microsoft Team Foundation Server (TFS), HP
Quality Center, IBM Rational Doors, IBM Rational Requisite Pro, Rational Team Concert,
Atlassian JIRA, Rally, Version One, Bugzilla, and Accept 360. If you are using any of these
tools for defect or requirements management, you can enter defects or requirements in QA
Complete and automatically sync them to the other system. Likewise, if you add or update
items in the other system, it can automatically sync those changes to QA Complete.
9. Easy Data Entry QA Complete makes it easy for you to automatically generate a defect
from a failed test case. With one-click cloning of records, you can pass along to your
development team all the relevant steps to reproduce the problem, along with expected
and actual results, without having to re-enter anything.
Automatically create a link between the defect and the test case.
Existing test cases linked to a requirement automatically link the defect to the
requirement as well for full traceability.
10. Web-Based User Interface QA Complete has a Web interface. Nothing needs to be
installed on your hard drive.
Users with an Internet connection may access QA Complete from home or anywhere
in the world.
Distributed and offshore teams can easily share QA artifacts with one another and
local teams.
Supports all major browsers, including Internet Explorer, Fire Fox, Safari, and Google
Chrome.
EXPERIMENT NO. 10
Aim: Learn how to raise and report Bugs using Bug tracking tool
(Bugzilla, Jira using QA Complete).
Step 3: Bug is created ID# 26320 is assigned to our Bug. You can also add additional
information to the assigned bug like URL, keywords, whiteboard, tags, etc. This extra-
information is helpful to give more detail about the Bug you have created.
1. Large text box
2. URL
3. Whiteboard
4. Keywords
5. Tags
6. Depends on
7. Blocks
8. Attachments
Step 4: In the same window if you scroll down further. You can select deadline date and also
status of the bug. Deadline in Bugzilla usually gives the time-limit to resolve the bug in
given time frame.
EXPERIMENT 11
Aim: Study of any open source testing tool (Web Performance Analyzer/O
STA).
O STA stands for Open System Testing Architecture. This is a GUI based performance tool
used by application developers for load testing and analyzing. This is believed to be a
complex tool among the all other performance testing tools. It has proven capability in the
past and the current toolset is capable of performing the heavy load test and analyses for
the scripted HTTP and HTTPS. Here, the testing is carried out by using the recordings and
simple scripts. To carry out the test successfully, results and other statistics are taken
through various test runs. These data and results can be later exported to software for
creating reports. This is a free testing tool and it is distributed under GNU GPL and it will
remain free forever. This tool was originally developed by Cyrano, which was later taken
over by Quotium.
Open STA System Requirement: Open STA runs only on Windows operating system.
Open STA is a distributed software testing architecture designed around CORBA, it was
originally developed to be commercial software by CYRANO. The current toolset has the
capability of performing scripted HTTP and HTTPS heavy load tests with performance
measurements from Win32 platforms. However, the architectural design means it could
be capable of much more.
The Open STA toolset is Open Source software licensed under the GNU GPL (General
Public License), this means it is free and will always remain free. If you wish to build your
own customized version of Open STA or take part in its development then the complete
toolset source code, buildable in Microsoft Visual Studio 6, and all related information is
available from OpenSTA.SourceForge.net, the developer home site.
EXPERIMENT 12
Aim: Write a program for the determination of day of the given Date and perform slice
based testing for all variables.
# include <stdio.h>
# include <conio.h>
1. void main()
2. {
3. int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
4. char week[7][10] ;
5. int date, mon, year, i, s = 0 ;
6. clrscr();
7. strcpy(week[0], "Sunday") ;
8. strcpy(week[1], "Monday") ;
9. strcpy(week[2], "Tuesday") ;
10. strcpy(week[3], "Wednesday") ;
11. strcpy(week[4], "Thursday") ;
12. strcpy(week[5], "Friday") ;
13. strcpy(week[6], "Saturday") ;
14. printf("Enter a valid date (dd/mm/yyyy) : ") ;
15. scanf("%d / %d / %d", &date, &mon, &year) ;
16. if( (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)) )
17. month[1] = 29 ;
18. for(i = 0 ; i < mon - 1 ; i++)
19. s = s + month[i] ;
20. s = s + (date + year + (year / 4) - 2) ;
21. s = s % 7 ;
22. printf("\nThe day is : %s", week[s]) ;
23. getch() ;
24. }
OUTPUT:
(b)Perform slice based testing for all variables for program to compute total salary of an
employee, given his basic salary.
(Given: HRA=3% of basic, DA=8% of basic, CCA/MA=Rs 100/-, I. Tax=300/-, PF=780, TA=Rs
800/-).
#include<stdio.h>
#include<conio.h>
1. void main () {
2. int total_salary, basic, da, hra;
3. int ma=100, ta=800, i_tax=300, pf=780;
4. printf ("Enter basic salary: ");
5. scanf ("%d", &basic);
6. da = (8 * basic) / 100;
7. hra = (3 * basic) / 100;
8. total_salary = basic + da + hra + ma + ta + i_tax + pf;
9. printf ("\nTotal salary: %d", total_salary);
10. getch ();
11. }
OUTPUT:
SLICE BASED TEST CASES:
There are eight variables total_salary, basic, da, hra, ma, ta, i_tax, pf. The slices of these variables
are:
1. S (total_salary,11) = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
2. S (basic, 11) = (1-2, 4-8, 10, 11)
3. S (da, 11) = (1-2, 4-6, 8, 10, 11)
4. S (hra, 11) = (1, 2, 4, 5, 7, 8, 10, 11)
5. S (ma, 11) = (1, 3, 8)
6. S (ta, 11) = (1, 3, 8)
7. S (i-tax, 11) = (1, 3, 8)
8. S (pf, 11) = (1, 3, 8)
SLICE BASED TEST CASES TABLE:
#include<iostream.h>
#include<conio.h>
1. void main()
2. {
3. int x,y,z;
4. clrscr();
5. cout<<"Enter 3 sides of a triangle:\n";
6. cin>>x>>y>>z;
7. if((x<=0) || (y<=0) || (z<=0))
8. { cout<<"Not a triangle.\n";
9. }
10. else
11. {
12. if((x + y <= z) || (x + z <= y) || (y + z <= x))
13. {cout<<"Not a triangle.\n";
14. }
15. else
16. {
17. if (((x * x) + (y * y) == (z * z)) || ((x * x) + (z * z) == (y * y)) || ((z * z) + (y * y) == (x *
x)))
18. cout<<"Right-angled triangle.\n";
19. else if ((((x * x) + (y * y) < (z * z)) || ((x * x) + (z * z) < (y * y)) || ((z * z) + (y * y) < (x *
x))) || ((x<=z && y<=z) || (x<=y && z<=y) || (y<=x && z<=x)))
20. { cout<<"Acute-angled triangle.\n";
21. }
22. else if((((x * x) + (y * y) > (z * z)) || ((x * x) + (z * z) > (y * y)) || ((z * z) + (y * y) > (x *
x))) || ((x>z && y>z) || (x>y && z>y) || (y>x && z>x)))
23. { cout<<"Obtuse-angled triangle.\n";
24. }
25. else
26. { cout<<"Not a triangle\n";
27. }
28. }
29. }
30. getch();
31. }
OUTPUT:
SLICE BASED TESTING TEST CASES:
There are 3 variables a, b, c. The slices of these variables are:
1. S (x, 9) = (1-3, 5-9, 30, 31)
2. S (x, 14) = (1-3, 5-7, 10-14, 29, 30, 31)
3. S (x, 21) = (1-3, 5-7, 10-12, 15-21, 28, 29, 30, 31)
4. S (x, 31) = (1-3, 5-7, 10-12, 15-17, 19, 22, 25, 27-31)
5. S (y, 9) = (1-3, 5-9, 30, 31)
6. S (y, 17) = (1-3, 5-7, 10-12, 15-17, 28, 29, 30, 31)
7. S (y, 22) = (1-3, 5-7, 10-12, 15-17, 19-22, 28, 29, 30, 31)
8. S (y, 31) = (1-3, 5-7, 10-31)
9. S (z, 9) = (1-3, 5-9, 30, 31)
10. S (z, 14) = (1-3, 5-7, 10-12, 14, 30, 31)
11. S (z, 24) = (1-3, 5-7, 10-24, 28, 29, 30, 31)
SLICE BASED TEST CASES TABLE:
M1 6 if (a>b) if (a!=b)
M2 8 cout<<a cout<<c
M3 7 if (a>c) if (a==c)
M4 15 If (b>c) If (c>b)
M5 19 cout<<c cout<<a
1 6 10 2 10 6
2 10 6 2 10 10
3 6 2 10 10 10
4 6 10 20 20 20
1 6 10 2 10 10
2 10 6 2 10 2
3 6 2 10 10 10
4 6 10 20 20 20
1 6 10 2 10 10
2 10 6 2 10 2
3 6 2 10 10 10
4 6 10 20 20 20
ACTUAL OUTPUT OF MUTANT NO. M4:
1 6 10 2 10 2
2 10 6 2 10 10
3 6 2 10 10 10
4 6 10 20 20 10
1 6 10 2 10 10
2 10 6 2 10 10
3 6 2 10 10 10
4 6 10 20 20 6