0% found this document useful (0 votes)
39 views53 pages

Software Testing Experiments

The document provides an introduction to software testing. It defines software engineering and testing, explaining that software testing is the process of evaluating a system to find if it satisfies requirements or not. It then describes the five main phases of the software testing process: planning and control, analysis and design, implementation and execution, evaluating exit criteria and reporting, and test closure. It also defines key terms related to software testing such as verification, validation, faults, errors, bugs, failures, and different types of testing.

Uploaded by

subhirai
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
0% found this document useful (0 votes)
39 views53 pages

Software Testing Experiments

The document provides an introduction to software testing. It defines software engineering and testing, explaining that software testing is the process of evaluating a system to find if it satisfies requirements or not. It then describes the five main phases of the software testing process: planning and control, analysis and design, implementation and execution, evaluating exit criteria and reporting, and test closure. It also defines key terms related to software testing such as verification, validation, faults, errors, bugs, failures, and different types of testing.

Uploaded by

subhirai
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 53

PRACTICAL NO.

- 1
AIM: Introduction to Software Testing
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.
SOFTWARE TESTING (with process):
Software testing is the process of evaluating a system or its component with
the intent to find whether it satisfies the specified requirements or not. In
simple words, testing is executing a system in order to identify any gaps,
errors, or missing requirements in contrary to the actual requirements.
PROCESS OF SOFTWARE TESTING:
1.) PLANNING AND CONTROL:
Test planning has the major tasks:
- To determine the scope and risks and identify the major tasks of
testing.
- To determine the test approach.
- To implement the test strategy.
Test control has the major tasks:
- To measure and analyze the results of reviews and testing.
- To monitor and document progress, test coverage and exit
criteria.
- To provide information on testing.
- To initiate corrective actions.
- To make decisions.
2.) ANALYSIS AND DESIGN:
It has the following major tasks:
- To review the test basis.
- To identify test conditions.
- To design the tests.
- To evaluate requirements of testability of the requirements and
the system.
- To design the test environment setup and identify required
infrastructure and tools.
3.) IMPLEMENTATION AND EXECUTION:
Test implementation has major tasks:
- To develop and prioritize test cases by using techniques and
create test data for those tests.
- To create test suites from test cases for efficient execution.
- To verify and implement test environment.

Test execution has the following tasks:


-

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.
WHY SHOULD WE TEST? :
Software testing is done to reduce costly errors. The cost of errors in software
can vary from nothing at all to large amounts of money. There are many
reasons why systems fail but the issue that stands out the most is the lack of
adequate testing. A sound testing process identifies the defects and reports
them in a structured way.
WHO SHOULD WE DO TESTING? :
Testing a software system may not be responsibility of a single person but
team work and size of the team is dependent on the complexity, criticality
and functionality of the software under test. Testing persons executes the test
and document the results. The testing persons must be cautious, curious,
critical and non-judgmental and good communicators.
WHAT SHOULD WE TEST? :
We may like to test a program for all possible valid and invalid inputs and
furthermore, we may like to execute all possible paths; but practically, it is
quite difficult. Every exit condition of a branch statement is similarly difficult
to test due to a large number of such conditions. We require effective
planning, strategies and sufficient resources to target the minimum possible

bottom line. We should also check the program for very large numbers, very
small numbers, numbers that are close to each other, negative numbers,
some extreme cases, characters, and some strange cases.
PROGRAM AND SOFTWARE:
The SOFTWARE is the superset of the programs. It consists of one or many
programs, documentation manuals and operating procedure manuals.
The PROGRAM is a combination of source code and object code. Every phase
of the software development life cycle requires preparation of a few
documentation manuals.
Software=Program+ Documentation manual + Operation procedure manual
VERIFICATION AND VALIDATION:
VERIFICATION is the process of evaluating the system or component to
determine whether the products of a given development phase satisfy the
conditions imposed at the start of the phase.
VALIDATION is the process of evaluating a system or component during or at
the end of development process to determine whether it satisfies the
specified requirements.
Testing= Verification+ Validation
FAULT,ERROR,BUG AND FAILURE:
When we make error during coding, we call this a BUG. Hence,
ERROR/MISTAKE/DEFECT in coding is called a BUG.
A FAULT is the representation of an error where representation is the mode of
expression such as ER diagrams, source code etc.
When the expected output does not match with the observed output, we
experience a FAILURE.
DELIVERABLES AND MILESTONES:
Different DELIVERABLES are generated during various phases of the software
development. The examples are: source code, SRS etc.
The MILESTONES are the events that are used to ascertain the status of the
project. For eg., finalization of a project is a milestone.
ALPHA, BETA AND ACCEPTANCE TESTING:
ACCEPTANCE TESTING term is used when the software is developed for
specific customer. The customer is involved during acceptance testing. The
discovered errors are fixed and modified and then the software is delivered to
the customer. The ALPHA TESTS are conducted at the developers site by the
anonymous customers whereas BETA TESTING is conducted by potential
customers at their site. Unlike, alpha testing, the developer is not present
here.
QUALITY AND RELIABILITY:

SOFTWARE RELIABILITY is defined as the probability of failure free operation


for a specified time in a specified environment whereas SOFTWARE QUALITY
determines how well the software is designed (quality of design) and how well
the software confirms the design (quality of conformance).
STATIC AND DYNAMIC TESTING:
STATIC TESTING refers to testing activities without executing the source code.
All verification activities like inspection, walkthrough etc., come
under this category. DYNAMIC TESTING refers to executing the source code
and seeing how it performs with specific inputs. All validation activities come
in this category where execution of the program is essential.

DIAGRAM OF STATIC AND DYNAMIC TESTING:

WHITE BOX AND BLACK BOX TESTING:


BLACK BOX TESTING is a software testing method in which the internal
structure/design/implementation of the item being tested is not known to the
tester. A software testing method in which the internal
structure/design/implementation of the item is known to the tester is WHITE
BOX TESTING.

V SHAPED SOFTWARE LIFE CYCLE MODEL:


V model means Validation and Verification model just like Waterfall model.,
the V- shaped life cycle is a sequential path of execution of processes. Each
phase must be completed before the next phase begins. Testing of the
product is planned in parallel with a corresponding phase of development in V
model. This model should be used for small to medium sized projects where
requirements are clearly defined and fixed.

DIAGRAM OF V SHAPED MODEL

LIMITATIONS OF TESTING:
Errors in the software requirement and specification document
Logical bugs
Difficult to measure the progress of testing.

PRACTICAL NO. 2
(A). Write a program in C/C++ to find the roots of the quadratic equation
and do Boundary Value Analysis (BVA) testing for the range [1,100].
FLOWCHART :

ALGORITHM :

1. Integer a,b,c;
2. Float d,r1,r2,r3,r4,r;
3. Print Enter values of a,b,c of a quadratic equation:;
4. Read a,b,c;
5. Value of a,b,c is transferred to function quadand body of function is:
6. D= b x b-4 x a x c;
7. if(d<0)
8. Print Value of Discriminant is negative;
9. Else
10. if(d=0)
11. Print Roots are real;
12. r= -b/2*a;
13. Print First and Second root of equation:,r;
14. Else
15. r1= -b+ sqrt (d);
16. r2=2*a;
17. r= r1/r2;
18. r3= -b-sqrt (d);
19. r4 =r3/r2;
20.print First root of equation: , r;
21.print Second root of equation: , r4;

PROGRAM
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int a,b,c,d;
float r1,r2;
cout<<"enter co-efficient of x^2 : ";
cin>>a;
cout<<"enter co-efficient of x : ";
cin>>b;
cout<<"enter the constant : ";
cin>>c;
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();

}
OUTPUT

BVA
Range - R[1,100]
Domain 1. Minimum: value = 1
2. Just above minimum: value = 2
3. Nominal: value = 50
4. Just Below maximum: value = 99
5. Maximum: value = 100
TEST CASES
S.n
o.
1

Input : Input :
a
b
1
50

Input :
c
50

Expected output

Actual output

-1.02084, -48.9792

-1.02084,
-48.9792
-1.04356,
-23.9564
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND
-1.#IND,

50

50

-1.04356, -23.9564

50

50

50

99

50

50

-0.5+0.866i, -0.50.866i
-0.25+0.66i, -0.25-0.66i

100

50

50

-0.25+0.66i, -0.25-0.66i

50

50

-0.01+0.99i, -0.01-0.99i

50

50

-0.02+0.99i, -0.02-0.99i

50

50

50

-0.5+0.866i, -0.5-

50

99

50

0.866i
-0.99+0.14i, -0.99-0.14i

10
11

50
50

100
50

50
1

-1, -1
-0.0204168, -0.979583

12

50

50

-0.0417424, -0.958258

13

50

50

50

14

50

50

99

-0.5+0.866i, -0.50.866i
-0.5+1.31i, -0.5-1.31i

15

50

50

100

-0.5+1.32i, -0.5-1.32i

-1.#IND
-1.#IND,
-1.#IND
-1, -1
-0.0204168,
-0.979583
-0.0417424,
-0.958258
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND
-1.#IND,
-1.#IND

Note: Test cases no. 3, 8 & 13 are redundant.


Therefore, total no. of test cases = 15-2 = 13 (4n-1 = 4*3+1 = 13)

PRACTICAL NO. 2(B)


2(B).Write a program in C/C++ to find the largest amongst the 3 numbers
and do Robust Worst case testing for range [1,100].
FLOWCHART:

ALGORITHM:
1 . int a, b,c;
2. Print Enter any three numbers:
3. read a, b,c;
4. If ((a>b)&&(a>c))
5. Print Largest of three numbers a;
6. Else
7. if((b>a)&&(b>c))
8. Print Largest of three numbers: b;
9. Else
10. Print Largest of three numbers:, c;
PROGRAM
#include<iostream.h>
#include<conio.h>

void main()
{
clrscr();
int a,b,c;
cout<<"enter first no. : ";
cin>>a;
cout<<"enter second no. : ";
cin>>b;
cout<<"enter third no. : ";
cin>>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();
}

OUTPUT

Robust Worst Case testing


Range - R[1,100]
Domain 1. Just Below minimum: value = 0
2. Minimum: value = 1
3. Just Above minimum: value = 2
4. Nominal: value = 50
5. Just Below maximum: value = 99
6. Maximum: value = 100
7. Just Above maximum: value = 101
TEST CASES:
S.n
o.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Input : a

Input : b

Input : c

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
1
1
1
1
1
1
1
2
2
2
2
2
2
2
50

0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0

Expected
output
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

Actual output
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid

input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input

23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100
100
101
101
101
101
101
101
101
0
0
0
0
0
0
0
1
1
1
1
1
1
1
2
2
2

1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
equal
2
50
99
100
Invalid input
Invalid input
2
equal

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
2
50
99
100
Invalid input
Invalid input
2
-

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2

2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100
100
101
101
101
101
101
101
101
0
0
0
0
0
0
0
1
1
1
1
1

50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99

50
99
100
Invalid input
Invalid input
50
50
equal
99
100
Invalid input
Invalid input
99
99
99
equal
100
Invalid input
Invalid input
100
100
100
100
equal
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
2
Equal
50
99

50
99
100
Invalid input
Invalid input
50
50
99
100
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
2
50
99

111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
50
50
50
50
50
50
50

1
1
2
2
2
2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100
100
101
101
101
101
101
101
101
0
0
0
0
0
0
0

100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101

100
Invalid input
Invalid input
Equal
Equal
50
99
100
Invalid input
Invalid input
50
50
Equal
99
100
Invalid input
Invalid input
99
99
99
Equal
100
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

100
Invalid input
Invalid input
50
99
100
Invalid input
Invalid input
50
50
99
100
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198

50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
50
99
99

1
1
1
1
1
1
1
2
2
2
2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100
100
101
101
101
101
101
101
101
0
0

0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1

Invalid input
50
50
Equal
99
100
Invalid input
Invalid input
50
50
Equal
99
100
Invalid input
Invalid input
Equal
Equal
Equal
Equal
Equal
Invalid input
Invalid input
99
99
99
Equal
100
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

Invalid input
50
50
99
100
Invalid input
Invalid input
50
50
99
100
Invalid input
Invalid input
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242

99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99
99

0
0
0
0
0
1
1
1
1
1
1
1
2
2
2
2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100
100
101
101
101
101

2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
99
99
99
Equal
100
Invalid input
Invalid input
99
99
99
Equal
100
Invalid input
Invalid input
99
99
99
Equal
100
Invalid input
Invalid input
Equal
Equal
Equal
Equal
Equal
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
99
99
99
100
Invalid input
Invalid input
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input

243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286

99
99
99
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100

101
101
101
0
0
0
0
0
0
0
1
1
1
1
1
1
1
2
2
2
2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100
100
100
100
100
100

99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
100
100
100
100
Equal
Invalid input
Invalid input
Equal
Equal
Equal
Equal
Equal

Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
100
100
100
100
Invalid input
Invalid input
-

287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330

100
100
100
100
100
100
100
100
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101
101

100
101
101
101
101
101
101
101
0
0
0
0
0
0
0
1
1
1
1
1
1
1
2
2
2
2
2
2
2
50
50
50
50
50
50
50
99
99
99
99
99
99
99
100

101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0
1
2
50
99
100
101
0

Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid

input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input

Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid

input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input
input

331
332
333
334
335
336
337
338
339
340
341
342
343

101
101
101
101
101
101
101
101
101
101
101
101
101

100
100
100
100
100
100
101
101
101
101
101
101
101

1
2
50
99
100
101
0
1
2
50
99
100
101

Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid

input
input
input
input
input
input
input
input
input
input
input
input
input

Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid

input
input
input
input
input
input
input
input
input
input
input
input
input

Total no. of test cases = 343 (No of test cases = 7 n , where n= no. of inputs.)
(In above case no of inputs = 3, therefore test cases are 7^3 = 343).

PRACTICAL NO. 2 (C)


2(C). 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;
cout<<"Enter first side : ";
cin>>a;
cout<<"Enter second side : ";
cin>>b;

cout<<"Enter third side : ";


cin>>c;
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";
}
}

OUTPUT

Worst Case testing


Range - R[0,100]
Domain 1. Minimum: value = 0
2. Just Above minimum: value = 1
3. Nominal: value = 50
4. Just Below maximum: value = 99
5. Maximum: value = 100

TEST CASES:
S.n
o.
1

Input :
a
0

Input : b

Input : c

50

99

100

50

99

10

100

11

50

12

50

13

50

50

14

50

99

15

50

100

16

99

17

99

18

99

50

19

99

99

Expected
output
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle

Actual output
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle

20

99

100

21

100

22

100

23

100

50

24

100

99

25

100

100

26

27

28

50

29

99

30

100

31

32

33

50

34

99

35

100

36

50

37

50

38

50

50

39

50

99

40

50

100

Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

41

99

42

99

43

99

50

44

99

99

45

99

100

46

100

47

100

48

100

50

49

100

99

50

100

100

51

50

52

50

53

50

50

54

50

99

55

50

100

56

50

57

50

58

50

50

59

50

99

60

50

100

61

50

50

Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle

Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle

62

50

50

63

50

50

50

64

50

50

99

65

50

50

100

66

50

99

67

50

99

68

50

99

50

69

50

99

99

70

50

99

100

71

50

100

72

50

100

73

50

100

50

74

50

100

99

75

50

100

100

76

99

77

99

78

99

50

79

99

99

80

99

100

81

99

82

99

Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

83

99

50

84

99

99

85

99

100

86

99

50

87

99

50

88

99

50

50

89

99

50

99

90

99

50

100

91

99

99

92

99

99

93

99

99

50

94

99

99

99

95

99

99

100

96

99

100

97

99

100

98

99

100

50

99

99

100

99

100

99

100

100

101

100

102

100

103

100

50

Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Right angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Right angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle

104

100

99

105

100

100

106

100

107

100

108

100

50

109

100

99

110

100

100

111

100

50

112

100

50

113

100

50

50

114

100

50

99

115

100

50

100

116

100

99

117

100

99

118

100

99

50

119

100

99

99

120

100

99

100

121

100

100

122

100

100

123

100

100

50

124

100

100

99

Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Right angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle

Obtuse angled
triangle
Right angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Obtuse angled
triangle
Obtuse angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle
Right angled
triangle
Acute angled
triangle
Acute angled
triangle
Acute angled
triangle

125

100

100

100

Acute angled
triangle

Acute angled
triangle

Note: Total no. of test cases = 125 (No of test cases = 5n , where n= no. of
inputs.)
(In above case no of inputs = 3, therefore test cases are 5^3 = 125).

PRACTICAL NO. 3(A)


Aim-3 (A): WAP in C/C++ to find the area of a circle, Triangle, Square and Rectangle and
perform equivalence class testing.
FLOWCHART:
AREA OF SQUARE

AREA OF CIRCLE

AREA OF TRIANGLE

ALGORITHM:
Area of Square
1.
2.
3.
4.

start
input r
squ=s*s
print cir

5.

stop

PROGRAM:
#include<stdio.h>
#include<conio.h>
void main()
{
int r,a,b,c;
printf(Enter the radius of circle);
scanf(%d,&r);

Area of Circle
6.
7.
8.
9.
10.

start
input r
cir=3.14*r*r
print cir
stop

Area of Triangle
1.
2.
3.
4.
5.

start
input b,h
tri=0.5*b*h
print tri
stop

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();
}

PRACTICAL NO. 3(B)


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.
FLOWCHART

PROGRAM:
#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 case

Expected Output

1
2
3

0
101
50

50
50
50

50
50
50

Invalid Input
Invalid Input
Equilateral

4
5

50
50

0
101

50
50

Invalid Input
Invalid Input

6
7

50
50

50
50

50
0

Equilateral
Invalid Input

50

50

101

Invalid Input

9
10
11
12
13
14
15

50
60
50
50
60
100
100

50
60
50
60
50
99
50

50
60
60
50
50
50
50

Equilateral
Equilateral
Isosceles
Isosceles
Isosceles
Scalene
Not a Triangle

16
17
18

100
50
50

50
100
100

25
50
25

Not a Triangle
Not a Triangle
Not a Triangle

19

50

50

100

Not a Triangle

20

25

50

100

Not a Triangle

Output Domain Equivalence Classes are:


O1 = {<x, y, z>: Equilateral Triangle with sides x, y, z}
O2 = {<x, y, z>: Isosceles Triangle with sides x, y, z}
O3 = {<x, y, z>: Scalene Triangle with sides x, y, z}
O4 = {<x, y, z>: Not a Triangle with sides x, y, z }

Test Case

Expected Output

50

50

50

Equilateral

2
3

50
100

50
99

99
50

Isosceles
Scalene

50

100

50

Not a Triangle

PRACTICAL NO. - 4
Aim-4: WAP in C/C++ to compute ab and perform its decision based testing.
FLOWCHART:

ALGORITHM:
1.
2.
3.
4.
5.
6.
7.

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();
}

PRACTICAL 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);

if (year>=1900 && year <=2025)


{
if (month ==1 || month ==3||month==5||month==7||month ==8||month==10||month==12)
{
if(day>=1 && day <=31){
validdate=1;
}
else
{
validdate=0;

}
}
else if(month==2){
int rval=0;
if(year%4 ==0)
{
rval=1;
if((year%100)==0 && (year % 400)!=0)
{
rval=0;
}
}
if(rval==1 && (day >=1 && day <=29))
{
validdate=1;
}
else if(day>=1 && day<=28)
{
validdate=1;
}
else
{
validdate =0;
}
}
else if((month>=1 && month<=12)&&(day>=1 && day <=30))
{

validate =1;
}
else
{
validate =0;
}}
/* prev date calculation*/
if(validdate)
{
if(day==1)
{
if(month==1)
{
year--;
day=31;
month=12;
}
else if(month==3)
{
int rval=0;
if(year%4 ==0)
{
rval=1;
if((year%100)==0 && (year % 400)!=0)
{
rval=0;
}

}
if(rval==1){
day=29;
month--;
}
else{
day=28;
month--;
}
}
else if(month ==2||month==4||month==6||month==9||month==11){
day=31;
month--;
}
else{
day=30;
month--;
}
}
else{
day--;
}
printf("the next date is:%d-%d-%d",day,month,year);
}
else
{
printf("the entered date(%d-%d-%d)is invalid",day,month,year);

}
getche();
return 1;}

OUTPUT

TEST CASES:
Test case

Month

Day

Year

Expected Output

1
2
3
4
5
6
7
8
9
10
11
12
13

6
6
6
6
6
6
6
6
6
1
2
11
12

15
15
15
15
15
1
2
30
31
15
15
15
15

1900
1901
1962
2024
2025
1962
1962
1962
1962
1962
1962
1962
1962

14 June,1900
14 June,1901
14 June,1962
14 June,2024
14 June,2025
31 May,1962
1 June,1962
29 June,1962
Invalid date
14 january ,1962
14Febuary ,1962
14 November ,1962
14 December ,1962

PRACTICAL 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;
printf(Enter basic salary of an employee);
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_allowanc
e+income_tax+prvidentfund;
printf(The total salary of emlployee is %d,Total_salary);
getch();
}

PRACTICAL NO. 6(A)


Aim-6(A): WAP in C/C++ to read the marks of the student in 5 subjects. Find their
averages and allot them in grades. Now draw its graph matrix and find its V(G).
#include<stdio.h>
#include<conio.h>
main()
{
struct student
{
int marks;
};
struct student b[10];
int i;
for(i=0;i<=9;i++)
{
printf(Enter marks);
scanf(%d,&b[i].marks);
}
for(i=0;i<=9;i++)
{

int sum+=b[i];
}
int average=sum/10;
printf(the average is %d,average);
getch();
}
Aim-6 (B): Find all du and dc paths for the program given in experiment 5 (b).

AIM 7: Create a test plan document for any application (e.g. Library Management System).

TEST PLAN DOCUMENT FOR LIBRARY MANAGEMENT SYSTEM:

The Library Management System is an online application for assisting a librarian


imagining 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 .This
test report is the result for testing in the LMS. It mainly focuses on two problems

1.

1. What we will test


2. How we will test.
GUI test
Pass criteria: librarians could use this GUI to interface with the backend library database
without any difficulties.

2. Database test

Pass criteria: Results of all basic and advanced operations are normal (refer to section 4)

3. Basic function Test


Add a student
1. Each customer/student should have following attributes: Student ID/SSN (unique),
Name, Address and Phone number.
2. The retrieved customer information by viewing customer detail should contain
the four at-tributes.
4. Update/delete student

1. The record would be selected using the student ID.


2. Updates can be made on full. Items only: Name, Address, Phone number .The
record can be deleted if there are no books issued by user. The updated values
would be reflected if the same customer's ID/SSN is called for.
5. Check-in book
1. Librarians can check in a book using its call number
2. The check-in can be initiated from a previous search operation where user has
selected a set of books.
3. The return date would automatically reflect the current system date.
4. Any late fees would be computed as difference between due date and return date at
rate of 10 cents a day.

You might also like