0% found this document useful (0 votes)
55 views

Software Testing and Quality Assurance ETCS - 453

The document describes a practical record for software testing and quality assurance experiments conducted by a student. It includes the index, experiments conducted according to the prescribed syllabus, and details of 10 experiments. The experiments include designing test cases for an automated banking application and an airline booking application using techniques like boundary value analysis. It also discusses generating state transition tables, calculating cyclomatic complexity, studying various testing tools like Selenium and Jira.

Uploaded by

Aayush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views

Software Testing and Quality Assurance ETCS - 453

The document describes a practical record for software testing and quality assurance experiments conducted by a student. It includes the index, experiments conducted according to the prescribed syllabus, and details of 10 experiments. The experiments include designing test cases for an automated banking application and an airline booking application using techniques like boundary value analysis. It also discusses generating state transition tables, calculating cyclomatic complexity, studying various testing tools like Selenium and Jira.

Uploaded by

Aayush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 135

SOFTWARE TESTING AND

QUALITY ASSURANCE
ETCS -453

Submitted in the partial fulfillment of the requirements


for the award of degree
BACHELOR OF TECHNOLOGY
IN
COMPUTER SCIENCE AND ENGINEERING

Submitted to Submitted By:


Ms Karuna Middha Student Name : Rishabh Sharma
Roll No. : 08214802718
Semester :7
Batch : CSE 2018-2022

Maharaja Agrasen Institute of Technology, PSP area, Sector – 22, Rohini, New Delhi – 110085
(Affiliated to Guru Gobind Singh Indraprastha University, New Delhi
PRACTICAL RECORD

Paper Code : ETCS-453


Name of Student : Rishabh Sharma
University Roll No : 08214802718
Branch : CSE
Section/Group : 7C-4

Practical Details
A) Experiments according to ITC lab syllabus prescribed by GGSIPU

INDEX
S.No EXPERIMENT NAME DATE SIGNATURE

LAB1 A )Consider an automated banking 15/10/21


application. The user can dial the
bank from a personal computer,
provide a six-digit password, and
follow with a series of keyword
commands that activate the banking
function. Design adhoc test cases to
test the system

B)For the above problem design the test 15/10/21


cases to test the system using following
Black Box testing technique:  BVA,
Worst BVA, Robust BVA, Robust Worst
BVA  Equivalence class testing
(Input/Output domain)
LAB2 A ) To determine the nature of roots of a 22/10/21
quadratic equations, its input is triple of
+ve integers (say x,y,z) and values may
be from interval[1,100] the program
output may have one of the following:-
[Not a Quadratic equations, Real roots,
Imaginary roots, Equal roots] Perform
BVA.

B )To determine the type of triangle. Its 22/10/21


input is triple of +ve integers (say x,y,z)
and the values may be from
interval[1,100].The program output may
be one of the following [Scalene,
Isosceles, Equilateral, Not a
Triangle].Perform BVA

LAB3 A) Consider the example of an app 29/10/21


that classified Risk Exposure (RE) as
High, Moderate, or Low on the basis
of Risk Probability (RP) and Risk
Impact (RI). Consider the following
specification for such an app: 1) the
app accepts two integers , RP and RI,
as input, 2) both RP and RI must be in
the range [1, 5], 3) if either input is
not an integer, it is invalid and the
app outputs “Invalid, 4) if either input
is an integer outside the range
specified in (2), it is invalid and the
app outputs “Out of Range”, 5) given
valid inputs, the app calculates RE as
the product of RP and RI, and
outputs: a. “High”, if RE is greater
than 9 b. “Low” if RE is less than or
equal to 2 c. “Moderate” if neither (a)
nor (b) are satisfied
B) Develop a complete limited entry 29/10/21
decision table for the following decision
situation: An airline offers only flights in
Germany and Europe. Under special
conditions a discount is offered - a
discount with respect to the normal
airfare.
Rules:. Passengers older than 18 with
destinations in Germany are offered a
discount at 20%, if the departure is not on
a Monday or Friday. If the passengers
stay at least 6 days at the destination, an
additional discount of 10% is offered..
For destinations outside of Germany
passengers are offered a discount of 25%,
if the departure is not on a Monday or
Friday.Passengers older than 2 but
younger than 18 years are offered a
discount of 40% for all
destinations.Children under 2 travel for
free.For each rule, design the test case
LAB4 Generate State Transition table 12/11/21
and test cases

LAB5 A) Cyclomatic Complexity 19/11/21


Problem Statement 8

B) Problem Statement 9 19/11/21

LAB6 Problem Statement 10 – Code 26/11/21


Coverage – Statement,Decision
,Branch etc
LAB7 Study of Selenium – an open source 26/11/21
testing tool.

LAB8 Study of Win Runner Testing 26/11/21


Tool

LAB9 Study of Test Management tool 03/12/21


(QA Complete)

LAB10 Learn how to raise and report 03/12/21


Bugs using Bug tracking tool
(Bugzilla,Jira using QA Complete)
Experiment 1 (A)
Aim: Design Adhoc test cases to test the system .Consider an automated banking
application. The user can dial the bank from a personal computer, provide a six-
digit password, and follow with a series of keyword commands that activate the
banking function. The software for the application accepts data in the following
form

Theory :
Adhoc testing is an informal testing type with an aim to break the system. This
testing is usually an unplanned activity. It does not follow any test design
techniques to create test cases. In fact is does not create test cases altogether!
This testing is primarily performed if the knowledge of testers in the system under
test is very high. Testers randomly test the application without any test cases or
any business requirement document. Ad hoc Testing does not follow any
structured way of testing and it is randomly done on any part of application. Main
aim of this testing is to find defects by random checking. Adhoc testing can be
achieved with the testing technique called Error Guessing.Error guessing can be
done by the people having enough experience on the system to "guess" the most
likely source of errors.
Some Advantages –
1.Ad-hoc testing gives freedom to the tester to apply their own new ways of
testing the application which helps them to find out more number of defects
compared to the formal testing process.
2.This type of testing can be done at anytime anywhere in the Software
Development Life cycle (SDLC) without following any formal process.
3.This type of testing is not only limited to the testing team but this can be done
by the developer while developing their module which helps them to code in a
better way.
Some Disadvantages –
1.Since ad-hoc testing is done without any planning and in unstructured way so
recreation of bugs sometime becomes a big trouble.
2.The test scenarios executed during the ad-hoc testing are not documented so
the tester has to keep all the scenarios in their mind which he/she might not be
able to recollect in future.

3.Ad-hoc testing is very much dependent on the skilled tester who has thorough
knowledge of the product it cannot be done by any new joiner of the team.
The testing with no proper test cases and planning is known as adhoc testing. It is
generally performed at the end of the project completion before submission.
Here were are performing a type of adhoc testing called pair testing where there
are two teaters as a pair while one is writing test cases , other will be performing
the test
Source Code
TEST CASE SCENARIO 1:-
AREA CODE:-
Blank or three digit number
TEST CASE1:

INPUT EXPECTED OUTPUT ACTUAL RESULT


RESULT
111 accepted accepted Accepted
ANALYSIS:-No defects . Test case 1 can be resolved.
TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Abc accepted accepted Accepted

ANALYSIS:-defects found
TEST CASE3:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Ab1 Not accepted Not accepted Not accepted

ANALYSIS:-no defects .test case3 can be closed


TEST CASE SCENARIO 2:-
Prefix:-three digit number, not beginning with ‘0’ or ‘1’ ]
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Ab1 Not accepted Not accepted Not accepted

ANALYSIS:- No defects . Test case 1 can be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
231 accepted accepted Accepted

ANALYSIS:- No defects . Test case 2 can be resolved.


TEST CASE3:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
40a accepted accepted Accepted

ANALYSIS:- defects found . Test case 3 can not be resolved.

TEST CASE SCENARIO 3:-


Suffix:-four digit number
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
9489 accepted accepted Accepted

ANALYSIS:- No defects . Test case 1 can be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
12ab accepted accepted Accepted

ANALYSIS:- defects found. Test case 2 can not be resolved.

TEST CASE3:

INPUT EXPECTED OUTPUT ACTUAL RESULT


RESULT
Abc Not accepted Not accepted Not accepted

ANALYSIS:- No defects . Test case 3 can be resolved.

TEST CASE SCENARIO 4:-


Password:-six character alphanumeric
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
1bcd1 accepted accepted Accepted

ANALYSIS:- defects found .Test case 1 can not be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
12345a accepted accepted Accepted

ANALYSIS:- No defects . Test case 2 can be resolved.


TEST CASE3:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
123456 accepted accepted Accepted

ANALYSIS:- defects found . Test case 3 can not be resolved.

TEST CASE SCENARIO 5:-


Check status:
Rule1:-transactions shown should be 10 of previous performed transactions (mini
statements)
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
mini statement card last 10 transaction Last 10 Last 10
transactions transactions

ANALYSIS:- No defects . Test case 1 can be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Mini statement Last 12 transactions Last 12 Last 12
transactions transactions

ANALYSIS:- defects found . Test case 2 can not be resolved.


Deposit:-
for a normal undergraduate account, max deposit is 50000/- and min deposit is
1000/-
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Deposits 80,000 accepted accepted Accepted

ANALYSIS:- defects found . Test case 1 can not be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Deposit 20,000 accepted accepted Accepted

ANALYSIS:- No defects . Test case 2 can be resolved.


Withdraw:-
Minimum amount in the account should be 100 and max withdraw should not
exceed 5000/- at a time minimum balance present is 10,000/-
TEST CASE1:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Draw 6000 Not accepted Not accepted Not accepted

ANALYSIS:- No defects . Test case 1 can be resolved.


TEST CASE2:
INPUT EXPECTED OUTPUT ACTUAL RESULT
RESULT
Draw 4000 accepted accepted accepted

ANALYSIS:- No defects . Test case 2 can be resolved

RESULT -Successfully Designed ADHOC test cases for testing.

Viva Question
Q1. What is Test bed and Test data ?
The test execution environment configured for testing. Test bed consists of
specific hardware, software, Operating system, network configuration, the
product under test, other system software and application software. Data
created or selected to satisfy the execution preconditions and inputs to
execute one or more test cases

Q2. Why does software have bugs?


There are bugs in software due to unclear or constantly changing requirements,
Similarly software complexity, programming errors, timelines, errors in bug
tracking, communication gap, documentation errors, deviation from standards
etc.
Q3. How do you decide when you have 'tested enough’?
Testing done is enough when :

1. 100% requirements coverage is achieved.


2. More than 95% of test coverage and 100% functional coverage is achieved.
3. When we achieved the target time.
4. All showstopper and Major defect are identified, verified and closed.
5. Less than 5%Minor defect are open, and if open work around is available.
6. All defects are retested and closed.
7. All corresponding regression scenario of retested and closed defect are also
tested

Q4. Describe the difference between validation and verification


he distinction between the two terms is largely due to the role of specifications.
Validation is the process of checking whether the specification captures the
customer’s requirements, while verification is the process of checking that the
software meets specifications.
Verification includes all the activities associated with the producing high quality
software. It is a relatively objective process in that no subjective judgement
should be needed in order to verify software.
In contrast, validation is an extremely subjective process. It involves making
subjective assessments of how well the (proposed) system addresses a real-world
need. Validation includes activities such as requirements modelling, prototyping
and user evaluation

Q5: What are the benefits of Automation testing?


• Lower operating costs
• Improved worker safety
• Reduced factory lead times
• Faster ROI
• Ability to be more competitive
• Increased production output.
• Consistent and improved part production and quality
• Smaller environmental footprint.

Q6:On what basis you can map the success of Automation testing?

The mapping criteria for successful automation testing are:

1. Defect Detection Ratio


2. Automation execution time
3. Time saved to release the product
4. The decrease in Labour employed
5. The decrease in overall costs
Experiment 1 (B)
Aim: For the above problem design the test cases to test the system using
following Black Box testing technique:
 BVA, Worst BVA, Robust BVA, Robust Worst BVA
 Equivalence class testing (Input/Output domain)

Simple BVA
Problem Statement-
Consider an automated banking application. The user can dial the bank from a PC,
provide a 6-digit password and follow with a series of keyword commands that
activate the banking function. The software for the application accepts the data.

Test Cases-
Input
Expected Actual
Area Result
Prefix Suffix Password Command Output Output
Code
600 5500 Dgd3gs deposit Valid Valid Valid

100 600 5500 Sna1d2 checkstatus Valid Valid Valid


101 600 5500 xhwd22 withdrawal Valid Valid Valid
998 600 5500 S32523 checkstatus Valid Valid Valid
999 600 5500 hgcr32 deposit Valid Valid Valid
550 600 5500 jkfdq3 checkstatus Valid Valid Valid
550 200 5500 wrwr23 checkstatus Valid Valid Valid
550 201 5500 1asde4 checkstatus Valid Valid Valid
550 998 5500 Q2z4zd withdrawal Valid Valid Valid
550 999 5500 Zdds1t checkstatus Valid Valid Valid
550 600 1000 Yere0d withdrawal Valid Valid Valid

550 600 1001 Jds2es checkstatus Valid Valid Valid


550 600 9998 232wdd withdrawal Valid Valid Valid
550 600 9999 Ab2dzs checkstatus Valid Valid Valid

Worst BVA
Problem Statement-
Consider an automated banking application. The user can dial the bank from a PC,
provide a 6-digit password and follow with a series of keyword commands that
activate the banking function. The software for the application accepts the data.
Test Cases-

Input
Expected Actual
Area Result
Prefix Suffix Password Command Output Output
Code
Blank 200 1000 Zx2vbn checkstatus Valid Valid Valid
Blank 200 1001 Zx2vbn withdrawal Valid Valid Valid
Blank 200 5500 Qazw3x checkstatus Valid Valid Valid
Blank 200 9998 Sfwq78 deposit Valid Valid Valid
Blank 200 9999 Abc5ef withdrawal Valid Valid Valid
Blank 201 1000 Zx2vbn withdrawal Valid Valid Valid
Blank 201 1001 Zx2vbn checkstatus Valid Valid Valid

Blank 201 5500 Qazw3x withdrawal Valid Valid Valid


Blank 201 9998 Sfwq78 deposit Valid Valid Valid
Blank 201 9999 Abc5ef withdrawal Valid Valid Valid
Blank 600 1000 Zx2vbn checkstatus Valid Valid Valid
Blank 600 1001 Zx2vbn withdrawal Valid Valid Valid
Blank 600 5500 Qazw3x deposit Valid Valid Valid
Blank 600 9998 Sfwq78 withdrawal Valid Valid Valid
Blank 600 9999 Abc5ef checkstatus Valid Valid Valid
Blank 998 1000 Zx2vbn checkstatus Valid Valid Valid
Blank 998 1001 Zx2vbn withdrawal Valid Valid Valid
Blank 998 5500 Qazw3x checkstatus Valid Valid Valid
Blank 998 9998 Sfwq78 deposit Valid Valid Valid
Blank 998 9999 Abc5ef withdrawal Valid Valid Valid
Blank 999 1000 Zx2vbn withdrawal Valid Valid Valid
Blank 999 1001 Zx2vbn checkstatus Valid Valid Valid
Blank 999 5500 Qazw3x withdrawal Valid Valid Valid
Blank 999 9998 Sfwq78 deposit Valid Valid Valid
Blank 999 9999 Abc5ef Withdrawal Valid Valid Valid

100 200 1000 Zx2vbn checkstatus Valid Valid Valid


100 200 1001 Zx2vbn withdrawal Valid Valid Valid
100 200 5500 Qazw3x checkstatus Valid Valid Valid
100 200 9998 Sfwq78 deposit Valid Valid Valid
100 200 9999 Abc5ef withdrawal Valid Valid Valid
100 201 1000 Zx2vbn withdrawal Valid Valid Valid
100 201 1001 Zx2vbn checkstatus Valid Valid Valid
100 201 5500 Qazw3x withdrawal Valid Valid Valid
100 201 9998 Sfwq78 deposit Valid Valid Valid
100 201 9999 Abc5ef withdrawal Valid Valid Valid
100 600 1000 Zx2vbn checkstatus Valid Valid Valid

100 600 1001 Zx2vbn withdrawal Valid Valid Valid


100 600 5500 Qazw3x deposit Valid Valid Valid
100 600 9998 Sfwq78 withdrawal Valid Valid Valid
100 600 9999 Abc5ef checkstatus Valid Valid Valid
100 998 1000 Zx2vbn checkstatus Valid Valid Valid
100 998 1001 Zx2vbn withdrawal Valid Valid Valid
100 998 5500 Qazw3x checkstatus Valid Valid Valid
100 998 9998 Sfwq78 deposit Valid Valid Valid
100 998 9999 Abc5ef withdrawal Valid Valid Valid
100 999 1000 Zx2vbn withdrawal Valid Valid Valid
100 999 1001 Zx2vbn checkstatus Valid Valid Valid
100 999 5500 Qazw3x withdrawal Valid Valid Valid
100 999 9998 Sfwq78 deposit Valid Valid Valid
100 999 9999 Abc5ef Withdrawal Valid Valid Valid
101 200 1000 Zx2vbn checkstatus Valid Valid Valid
101 200 1001 Zx2vbn withdrawal Valid Valid Valid

101 200 5500 Qazw3x checkstatus Valid Valid Valid


101 200 9998 Sfwq78 deposit Valid Valid Valid
101 200 9999 Abc5ef withdrawal Valid Valid Valid
101 201 1000 Zx2vbn withdrawal Valid Valid Valid
101 201 1001 Zx2vbn checkstatus Valid Valid Valid
101 201 5500 Qazw3x withdrawal Valid Valid Valid
101 201 9998 Sfwq78 deposit Valid Valid Valid
101 201 9999 Abc5ef withdrawal Valid Valid Valid
101 600 1000 Zx2vbn checkstatus Valid Valid Valid
101 600 1001 Zx2vbn withdrawal Valid Valid Valid
101 600 5500 Qazw3x deposit Valid Valid Valid

101 600 9998 Sfwq78 withdrawal Valid Valid Valid


101 600 9999 Abc5ef checkstatus Valid Valid Valid
101 998 1000 Zx2vbn checkstatus Valid Valid Valid
101 998 1001 Zx2vbn withdrawal Valid Valid Valid
101 998 5500 Qazw3x checkstatus Valid Valid Valid
101 998 9998 Sfwq78 deposit Valid Valid Valid
101 998 9999 Abc5ef withdrawal Valid Valid Valid
101 999 1000 Zx2vbn withdrawal Valid Valid Valid
101 999 1001 Zx2vbn checkstatus Valid Valid Valid
101 999 5500 Qazw3x withdrawal Valid Valid Valid
101 999 9998 Sfwq78 deposit Valid Valid Valid
101 999 9999 Abc5ef Withdrawal Valid Valid Valid
550 200 1000 Zx2vbn checkstatus Valid Valid Valid
550 200 1001 Zx2vbn withdrawal Valid Valid Valid
550 200 5500 Qazw3x checkstatus Valid Valid Valid
550 200 9998 Sfwq78 deposit Valid Valid Valid

550 200 9999 Abc5ef withdrawal Valid Valid Valid


550 201 1000 Zx2vbn withdrawal Valid Valid Valid
550 201 1001 Zx2vbn checkstatus Valid Valid Valid
550 201 5500 Qazw3x withdrawal Valid Valid Valid
550 201 9998 Sfwq78 deposit Valid Valid Valid
550 201 9999 Abc5ef withdrawal Valid Valid Valid
550 600 1000 Zx2vbn checkstatus Valid Valid Valid
550 600 1001 Zx2vbn withdrawal Valid Valid Valid
550 600 5500 Qazw3x deposit Valid Valid Valid
550 600 9998 Sfwq78 withdrawal Valid Valid Valid
550 600 9999 Abc5ef checkstatus Valid Valid Valid

550 998 1000 Zx2vbn checkstatus Valid Valid Valid


550 998 1001 Zx2vbn withdrawal Valid Valid Valid
550 998 5500 Qazw3x checkstatus Valid Valid Valid
550 998 9998 Sfwq78 deposit Valid Valid Valid
550 998 9999 Abc5ef withdrawal Valid Valid Valid
550 999 1000 Zx2vbn withdrawal Valid Valid Valid
550 999 1001 Zx2vbn checkstatus Valid Valid Valid
550 999 5500 Qazw3x withdrawal Valid Valid Valid
550 999 9998 Sfwq78 deposit Valid Valid Valid
550 999 9999 Abc5ef Withdrawal Valid Valid Valid
998 200 1000 Zx2vbn checkstatus Valid Valid Valid
998 200 1001 Zx2vbn withdrawal Valid Valid Valid
998 200 5500 Qazw3x checkstatus Valid Valid Valid
998 200 9998 Sfwq78 deposit Valid Valid Valid
998 200 9999 Abc5ef withdrawal Valid Valid Valid
998 201 1000 Zx2vbn withdrawal Valid Valid Valid

998 201 1001 Zx2vbn checkstatus Valid Valid Valid


998 201 5500 Qazw3x withdrawal Valid Valid Valid
998 201 9998 Sfwq78 deposit Valid Valid Valid
998 201 9999 Abc5ef withdrawal Valid Valid Valid
998 600 1000 Zx2vbn checkstatus Valid Valid Valid
998 600 1001 Zx2vbn withdrawal Valid Valid Valid
998 600 5500 Qazw3x deposit Valid Valid Valid
998 600 9998 Sfwq78 withdrawal Valid Valid Valid
998 600 9999 Abc5ef checkstatus Valid Valid Valid
998 998 1000 Zx2vbn checkstatus Valid Valid Valid
998 998 1001 Zx2vbn withdrawal Valid Valid Valid

998 998 5500 Qazw3x checkstatus Valid Valid Valid


998 998 9998 Sfwq78 deposit Valid Valid Valid
998 998 9999 Abc5ef withdrawal Valid Valid Valid
998 999 1000 Zx2vbn withdrawal Valid Valid Valid
998 999 1001 Zx2vbn checkstatus Valid Valid Valid
998 999 5500 Qazw3x withdrawal Valid Valid Valid
998 999 9998 Sfwq78 deposit Valid Valid Valid
998 999 9999 Abc5ef Withdrawal Valid Valid Valid
999 200 1000 Zx2vbn checkstatus Valid Valid Valid
999 200 1001 Zx2vbn withdrawal Valid Valid Valid
999 200 5500 Qazw3x checkstatus Valid Valid Valid
999 200 9998 Sfwq78 deposit Valid Valid Valid
999 200 9999 Abc5ef withdrawal Valid Valid Valid
999 201 1000 Zx2vbn withdrawal Valid Valid Valid
999 201 1001 Zx2vbn checkstatus Valid Valid Valid
999 201 5500 Qazw3x withdrawal Valid Valid Valid

999 201 9998 Sfwq78 deposit Valid Valid Valid


999 201 9999 Abc5ef withdrawal Valid Valid Valid
999 600 1000 Zx2vbn checkstatus Valid Valid Valid
999 600 1001 Zx2vbn withdrawal Valid Valid Valid
999 600 5500 Qazw3x deposit Valid Valid Valid
999 600 9998 Sfwq78 withdrawal Valid Valid Valid
999 600 9999 Abc5ef checkstatus Valid Valid Valid
999 998 1000 Zx2vbn checkstatus Valid Valid Valid
999 998 1001 Zx2vbn withdrawal Valid Valid Valid
999 998 5500 Qazw3x checkstatus Valid Valid Valid
999 998 9998 Sfwq78 deposit Valid Valid Valid

999 998 9999 Abc5ef withdrawal Valid Valid Valid


999 999 1000 Zx2vbn withdrawal Valid Valid Valid
999 999 1001 Zx2vbn checkstatus Valid Valid Valid
999 999 5500 Qazw3x withdrawal Valid Valid Valid
999 999 9998 Sfwq78 deposit Valid Valid Valid
999 999 9999 Abc5ef Withdrawal Valid Valid Valid

Robust BVA
Problem Statement-
Consider an automated banking application. The user can dial the bank from a PC,
provide a 6-digit password and follow with a series of keyword commands that
activate the banking function.
Test Cases-

Input

Area Expected Actual


Prefix Suffix Password Command Result
Code Output Output

600 5500 Abd34s Checkstatus Valid Valid Valid


099 600 5500 Abddds Checkstatus Invalid Invalid Invalid
100 600 5500 Zsss22 withdrawal Valid Valid Valid
101 600 5500 Yup1op Checkstatus Valid Valid Valid
550 600 5500 Zsss22 Deposit Valid Valid Valid
998 600 5500 Abc1ef withdrawal Valid Valid Valid
999 600 5500 Zsss22 Withdrawal Valid Valid Valid
1000 600 5500 Ytre5q checkstatus Invalid Invalid Invalid

550 199 5500 Zsss22 withdrawal Invalid Invalid Invalid


550 200 5500 Zxc1bn Deposit Valid Valid Valid
550 201 5500 Zsss24 withdrawal Valid Valid Valid
550 998 5500 Jan4eb checkstatus Valid Valid Valid
550 999 5500 Zsss22 Withdrawal Valid Valid Valid
550 1000 5500 A56def Deposit Invalid Invalid Invalid
550 600 999 Zsss22 Deposit Invalid Invalid Invalid
550 600 1000 Abc34z Checkstatus Valid Valid Valid
550 600 1001 Zsss22 withdrawal Valid Valid Valid
550 600 9998 Y1234p Checkstatus Valid Valid Valid

550 600 9999 Zsss22 Deposit Valid Valid Valid


550 600 10000 Abcd2f withdrawal Invalid Invalid Invalid
Robust Worst BVA
Problem Statement-
Consider an automated banking application. The user can dial the bank from a PC,
provide a 6-digit password and follow with a series of keyword commands that
activate the banking function.
Test Cases-

Input
Expected Actual
Area Result
Prefix Suffix Password Command Output Output
Code
199 999 zsss22 Deposit Invalid Invalid Invalid
199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid

199 1001 Hy78ga Check Status Invalid Invalid Invalid


199 5500 ftgyu3 Deposit Invalid Invalid Invalid
199 9998 678h9a Withdrawal Invalid Invalid Invalid
199 9999 6f6vgh Check Status Invalid Invalid Invalid
199 10000 yurtf6 Deposit Invalid Invalid Invalid
200 999 zsss22 Deposit Invalid Invalid Invalid
200 1000 Ftgy67 Withdrawal Valid Valid Valid
200 1001 Hy78ga Check Status Valid Valid Valid
200 5500 ftgyu3 Deposit Valid Valid Valid
200 9998 678h9a Withdrawal Valid Valid Valid
200 9999 6f6vgh Check Status Valid Valid Valid

200 10000 yurtf6 Deposit Invalid Invalid Invalid


201 999 zsss22 Deposit Invalid Invalid Invalid
201 1000 Ftgy67 Withdrawal Valid Valid Valid
201 1001 Hy78ga Check Status Valid Valid Valid
201 5500 ftgyu3 Deposit Valid Valid Valid
201 9998 678h9a Withdrawal Valid Valid Valid
201 9999 6f6vgh Check Status Valid Valid Valid
201 10000 yurtf6 Deposit Invalid Invalid Invalid
600 999 zsss22 Deposit Invalid Invalid Invalid
600 1000 Ftgy67 Withdrawal Valid Valid Valid
600 1001 Hy78ga Check Status Valid Valid Valid
600 5500 ftgyu3 Deposit Valid Valid Valid

600 9998 678h9a Withdrawal Valid Valid Valid


600 9999 6f6vgh Check Status Valid Valid Valid
600 10000 yurtf6 Deposit Invalid Invalid Invalid
998 999 zsss22 Deposit Invalid Invalid Invalid
998 1000 Ftgy67 Withdrawal Valid Valid Valid
998 1001 Hy78ga Check Status Valid Valid Valid
998 5500 ftgyu3 Deposit Valid Valid Valid
998 9998 678h9a Withdrawal Valid Valid Valid
998 9999 6f6vgh Check Status Valid Valid Valid
998 10000 yurtf6 Deposit Invalid Invalid Invalid
999 999 zsss22 Deposit Invalid Invalid Invalid

999 1000 Ftgy67 Withdrawal Valid Valid Valid


999 1001 Hy78ga Check Status Valid Valid Valid
999 5500 ftgyu3 Deposit Valid Valid Valid
999 9998 678h9a Withdrawal Valid Valid Valid
999 9999 6f6vgh Check Status Valid Valid Valid
999 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 999 zsss22 Deposit Invalid Invalid Invalid
1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 10000 yurtf6 Deposit Invalid Invalid Invalid
99 199 999 zsss22 Deposit Invalid Invalid Invalid
99 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 199 1001 Hy78ga Check Status Invalid Invalid Invalid

99 199 5500 ftgyu3 Deposit Invalid Invalid Invalid


99 199 9998 678h9a Withdrawal Invalid Invalid Invalid
99 199 9999 6f6vgh Check Status Invalid Invalid Invalid
99 199 10000 yurtf6 Deposit Invalid Invalid Invalid
99 200 999 zsss22 Deposit Invalid Invalid Invalid
99 200 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 200 1001 Hy78ga Check Status Invalid Invalid Invalid
99 200 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 200 9998 678h9a Withdrawal Invalid Invalid Invalid
99 200 9999 6f6vgh Check Status Invalid Invalid Invalid
99 200 10000 yurtf6 Deposit Invalid Invalid Invalid

99 201 999 zsss22 Deposit Invalid Invalid Invalid


99 201 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 201 1001 Hy78ga Check Status Invalid Invalid Invalid
99 201 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 201 9998 678h9a Withdrawal Invalid Invalid Invalid
99 201 9999 6f6vgh Check Status Invalid Invalid Invalid
99 201 10000 yurtf6 Deposit Invalid Invalid Invalid
99 600 999 zsss22 Deposit Invalid Invalid Invalid
99 600 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 600 1001 Hy78ga Check Status Invalid Invalid Invalid
99 600 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 600 9998 678h9a Withdrawal Invalid Invalid Invalid
99 600 9999 6f6vgh Check Status Invalid Invalid Invalid
99 600 10000 yurtf6 Deposit Invalid Invalid Invalid
99 998 999 zsss22 Deposit Invalid Invalid Invalid
99 998 1000 Ftgy67 Withdrawal Invalid Invalid Invalid

99 998 1001 Hy78ga Check Status Invalid Invalid Invalid


99 998 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 998 9998 678h9a Withdrawal Invalid Invalid Invalid
99 998 9999 6f6vgh Check Status Invalid Invalid Invalid
99 998 10000 yurtf6 Deposit Invalid Invalid Invalid
99 999 999 zsss22 Deposit Invalid Invalid Invalid
99 999 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 999 1001 Hy78ga Check Status Invalid Invalid Invalid
99 999 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 999 9998 678h9a Withdrawal Invalid Invalid Invalid
99 999 9999 6f6vgh Check Status Invalid Invalid Invalid

99 999 10000 yurtf6 Deposit Invalid Invalid Invalid


99 1000 999 zsss22 Deposit Invalid Invalid Invalid
99 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
99 1000 1001 Hy78ga Check Status Invalid Invalid Invalid
99 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
99 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
99 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
99 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
100 199 999 zsss22 Deposit Invalid Invalid Invalid
100 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
100 199 1001 Hy78ga Check Status Invalid Invalid Invalid
100 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
100 199 9998 678h9a Withdrawal Invalid Invalid Invalid
100 199 9999 6f6vgh Check Status Invalid Invalid Invalid
100 199 10000 yurtf6 Deposit Invalid Invalid Invalid
100 200 999 zsss22 Deposit Invalid Invalid Invalid

100 200 1000 Ftgy67 Withdrawal Valid Valid Valid


100 200 1001 Hy78ga Check Status Valid Valid Valid
100 200 5500 ftgyu3 Deposit Valid Valid Valid
100 200 9998 678h9a Withdrawal Valid Valid Valid
100 200 9999 6f6vgh Check Status Valid Valid Valid
100 200 10000 yurtf6 Deposit Invalid Invalid Invalid
100 201 999 zsss22 Deposit Invalid Invalid Invalid
100 201 1000 Ftgy67 Withdrawal Valid Valid Valid
100 201 1001 Hy78ga Check Status Valid Valid Valid
100 201 5500 ftgyu3 Deposit Valid Valid Valid
100 201 9998 678h9a Withdrawal Valid Valid Valid

100 201 9999 6f6vgh Check Status Valid Valid Valid


100 201 10000 yurtf6 Deposit Invalid Invalid Invalid
100 600 999 zsss22 Deposit Invalid Invalid Invalid
100 600 1000 Ftgy67 Withdrawal Valid Valid Valid
100 600 1001 Hy78ga Check Status Valid Valid Valid
100 600 5500 ftgyu3 Deposit Valid Valid Valid
100 600 9998 678h9a Withdrawal Valid Valid Valid
100 600 9999 6f6vgh Check Status Valid Valid Valid
100 600 10000 yurtf6 Deposit Invalid Invalid Invalid
100 998 999 zsss22 Deposit Invalid Invalid Invalid
100 998 1000 Ftgy67 Withdrawal Valid Valid Valid
100 998 1001 Hy78ga Check Status Valid Valid Valid
100 998 5500 ftgyu3 Deposit Valid Valid Valid
100 998 9998 678h9a Withdrawal Valid Valid Valid
100 998 9999 6f6vgh Check Status Valid Valid Valid
100 998 10000 yurtf6 Deposit Invalid Invalid Invalid

100 999 999 zsss22 Deposit Invalid Invalid Invalid


100 999 1000 Ftgy67 Withdrawal Valid Valid Valid
100 999 1001 Hy78ga Check Status Valid Valid Valid
100 999 5500 ftgyu3 Deposit Valid Valid Valid
100 999 9998 678h9a Withdrawal Valid Valid Valid
100 999 9999 6f6vgh Check Status Valid Valid Valid
100 999 10000 yurtf6 Deposit Invalid Invalid Invalid
100 1000 999 zsss22 Deposit Invalid Invalid Invalid
100 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
100 1000 1001 Hy78ga Check Status Invalid Invalid Invalid
100 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid

100 1000 9998 678h9a Withdrawal Invalid Invalid Invalid


100 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
100 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
101 199 999 zsss22 Deposit Invalid Invalid Invalid
101 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
101 199 1001 Hy78ga Check Status Invalid Invalid Invalid
101 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
101 199 9998 678h9a Withdrawal Invalid Invalid Invalid
101 199 9999 6f6vgh Check Status Invalid Invalid Invalid
101 199 10000 yurtf6 Deposit Invalid Invalid Invalid
101 200 999 zsss22 Deposit Invalid Invalid Invalid
101 200 1000 Ftgy67 Withdrawal Valid Valid Valid
101 200 1001 Hy78ga Check Status Valid Valid Valid
101 200 5500 ftgyu3 Deposit Valid Valid Valid
101 200 9998 678h9a Withdrawal Valid Valid Valid
101 200 9999 6f6vgh Check Status Valid Valid Valid

101 200 10000 yurtf6 Deposit Invalid Invalid Invalid


101 201 999 zsss22 Deposit Invalid Invalid Invalid
101 201 1000 Ftgy67 Withdrawal Valid Valid Valid
101 201 1001 Hy78ga Check Status Valid Valid Valid
101 201 5500 ftgyu3 Deposit Valid Valid Valid
101 201 9998 678h9a Withdrawal Valid Valid Valid
101 201 9999 6f6vgh Check Status Valid Valid Valid
101 201 10000 yurtf6 Deposit Invalid Invalid Invalid
101 600 999 zsss22 Deposit Invalid Invalid Invalid
101 600 1000 Ftgy67 Withdrawal Valid Valid Valid
101 600 1001 Hy78ga Check Status Valid Valid Valid

101 600 5500 ftgyu3 Deposit Valid Valid Valid


101 600 9998 678h9a Withdrawal Valid Valid Valid
101 600 9999 6f6vgh Check Status Valid Valid Valid
101 600 10000 yurtf6 Deposit Invalid Invalid Invalid
101 998 999 zsss22 Deposit Invalid Invalid Invalid
101 998 1000 Ftgy67 Withdrawal Valid Valid Valid
101 998 1001 Hy78ga Check Status Valid Valid Valid
101 998 5500 ftgyu3 Deposit Valid Valid Valid
101 998 9998 678h9a Withdrawal Valid Valid Valid
101 998 9999 6f6vgh Check Status Valid Valid Valid
101 998 10000 yurtf6 Deposit Invalid Invalid Invalid
101 999 999 zsss22 Deposit Invalid Invalid Invalid
101 999 1000 Ftgy67 Withdrawal Valid Valid Valid
101 999 1001 Hy78ga Check Status Valid Valid Valid
101 999 5500 ftgyu3 Deposit Valid Valid Valid
101 999 9998 678h9a Withdrawal Valid Valid Valid

101 999 9999 6f6vgh Check Status Valid Valid Valid


101 999 10000 yurtf6 Deposit Invalid Invalid Invalid
101 1000 999 zsss22 Deposit Invalid Invalid Invalid
101 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
101 1000 1001 Hy78ga Check Status Invalid Invalid Invalid
101 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
101 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
101 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
101 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
550 199 999 zsss22 Deposit Invalid Invalid Invalid
550 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid

550 199 1001 Hy78ga Check Status Invalid Invalid Invalid


550 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
550 199 9998 678h9a Withdrawal Invalid Invalid Invalid
550 199 9999 6f6vgh Check Status Invalid Invalid Invalid
550 199 10000 yurtf6 Deposit Invalid Invalid Invalid
550 200 999 zsss22 Deposit Invalid Invalid Invalid
550 200 1000 Ftgy67 Withdrawal Valid Valid Valid
550 200 1001 Hy78ga Check Status Valid Valid Valid
550 200 5500 ftgyu3 Deposit Valid Valid Valid
550 200 9998 678h9a Withdrawal Valid Valid Valid
550 200 9999 6f6vgh Check Status Valid Valid Valid
550 200 10000 yurtf6 Deposit Invalid Invalid Invalid
550 201 999 zsss22 Deposit Invalid Invalid Invalid
550 201 1000 Ftgy67 Withdrawal Valid Valid Valid
550 201 1001 Hy78ga Check Status Valid Valid Valid
550 201 5500 ftgyu3 Deposit Valid Valid Valid

550 201 9998 678h9a Withdrawal Valid Valid Valid


550 201 9999 6f6vgh Check Status Valid Valid Valid
550 201 10000 yurtf6 Deposit Invalid Invalid Invalid
550 600 999 zsss22 Deposit Invalid Invalid Invalid
550 600 1000 Ftgy67 Withdrawal Valid Valid Valid
550 600 1001 Hy78ga Check Status Valid Valid Valid
550 600 5500 ftgyu3 Deposit Valid Valid Valid
550 600 9998 678h9a Withdrawal Valid Valid Valid
550 600 9999 6f6vgh Check Status Valid Valid Valid
550 600 10000 yurtf6 Deposit Invalid Invalid Invalid
550 998 999 zsss22 Deposit Invalid Invalid Invalid

550 998 1000 Ftgy67 Withdrawal Valid Valid Valid


550 998 1001 Hy78ga Check Status Valid Valid Valid
550 998 5500 ftgyu3 Deposit Valid Valid Valid
550 998 9998 678h9a Withdrawal Valid Valid Valid
550 998 9999 6f6vgh Check Status Valid Valid Valid
550 998 10000 yurtf6 Deposit Invalid Invalid Invalid
550 999 999 zsss22 Deposit Invalid Invalid Invalid
550 999 1000 Ftgy67 Withdrawal Valid Valid Valid
550 999 1001 Hy78ga Check Status Valid Valid Valid
550 999 5500 ftgyu3 Deposit Valid Valid Valid
550 999 9998 678h9a Withdrawal Valid Valid Valid
550 999 9999 6f6vgh Check Status Valid Valid Valid
550 999 10000 yurtf6 Deposit Invalid Invalid Invalid
550 1000 999 zsss22 Deposit Invalid Invalid Invalid
550 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
550 1000 1001 Hy78ga Check Status Invalid Invalid Invalid

550 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid


550 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
550 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
550 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
998 199 999 zsss22 Deposit Invalid Invalid Invalid
998 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
998 199 1001 Hy78ga Check Status Invalid Invalid Invalid
998 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
998 199 9998 678h9a Withdrawal Invalid Invalid Invalid
998 199 9999 6f6vgh Check Status Invalid Invalid Invalid
998 199 10000 yurtf6 Deposit Invalid Invalid Invalid

998 200 999 zsss22 Deposit Invalid Invalid Invalid


998 200 1000 Ftgy67 Withdrawal Valid Valid Valid
998 200 1001 Hy78ga Check Status Valid Valid Valid
998 200 5500 ftgyu3 Deposit Valid Valid Valid
998 200 9998 678h9a Withdrawal Valid Valid Valid
998 200 9999 6f6vgh Check Status Valid Valid Valid
998 200 10000 yurtf6 Deposit Invalid Invalid Invalid
998 201 999 zsss22 Deposit Invalid Invalid Invalid
998 201 1000 Ftgy67 Withdrawal Valid Valid Valid
998 201 1001 Hy78ga Check Status Valid Valid Valid
998 201 5500 ftgyu3 Deposit Valid Valid Valid
998 201 9998 678h9a Withdrawal Valid Valid Valid
998 201 9999 6f6vgh Check Status Valid Valid Valid
998 201 10000 yurtf6 Deposit Invalid Invalid Invalid
998 600 999 zsss22 Deposit Invalid Invalid Invalid
998 600 1000 Ftgy67 Withdrawal Valid Valid Valid

998 600 1001 Hy78ga Check Status Valid Valid Valid


998 600 5500 ftgyu3 Deposit Valid Valid Valid
998 600 9998 678h9a Withdrawal Valid Valid Valid
998 600 9999 6f6vgh Check Status Valid Valid Valid
998 600 10000 yurtf6 Deposit Invalid Invalid Invalid
998 998 999 zsss22 Deposit Invalid Invalid Invalid
998 998 1000 Ftgy67 Withdrawal Valid Valid Valid
998 998 1001 Hy78ga Check Status Valid Valid Valid
998 998 5500 ftgyu3 Deposit Valid Valid Valid
998 998 9998 678h9a Withdrawal Valid Valid Valid
998 998 9999 6f6vgh Check Status Valid Valid Valid

998 998 10000 yurtf6 Deposit Invalid Invalid Invalid


998 999 999 zsss22 Deposit Invalid Invalid Invalid
998 999 1000 Ftgy67 Withdrawal Valid Valid Valid
998 999 1001 Hy78ga Check Status Valid Valid Valid
998 999 5500 ftgyu3 Deposit Valid Valid Valid
998 999 9998 678h9a Withdrawal Valid Valid Valid
998 999 9999 6f6vgh Check Status Valid Valid Valid
998 999 10000 yurtf6 Deposit Invalid Invalid Invalid
998 1000 999 zsss22 Deposit Invalid Invalid Invalid
998 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
998 1000 1001 Hy78ga Check Status Invalid Invalid Invalid
998 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
998 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
998 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
998 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
999 199 999 zsss22 Deposit Invalid Invalid Invalid

999 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid


999 199 1001 Hy78ga Check Status Invalid Invalid Invalid
999 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
999 199 9998 678h9a Withdrawal Invalid Invalid Invalid
999 199 9999 6f6vgh Check Status Invalid Invalid Invalid
999 199 10000 yurtf6 Deposit Invalid Invalid Invalid
999 200 999 zsss22 Deposit Invalid Invalid Invalid
999 200 1000 Ftgy67 Withdrawal Valid Valid Valid
999 200 1001 Hy78ga Check Status Valid Valid Valid
999 200 5500 ftgyu3 Deposit Valid Valid Valid
999 200 9998 678h9a Withdrawal Valid Valid Valid

999 200 9999 6f6vgh Check Status Valid Valid Valid


999 200 10000 yurtf6 Deposit Invalid Invalid Invalid
999 201 999 zsss22 Deposit Invalid Invalid Invalid
999 201 1000 Ftgy67 Withdrawal Valid Valid Valid
999 201 1001 Hy78ga Check Status Valid Valid Valid
999 201 5500 ftgyu3 Deposit Valid Valid Valid
999 201 9998 678h9a Withdrawal Valid Valid Valid
999 201 9999 6f6vgh Check Status Valid Valid Valid
999 201 10000 yurtf6 Deposit Invalid Invalid Invalid
999 600 999 zsss22 Deposit Invalid Invalid Invalid
999 600 1000 Ftgy67 Withdrawal Valid Valid Valid
999 600 1001 Hy78ga Check Status Valid Valid Valid
999 600 5500 ftgyu3 Deposit Valid Valid Valid
999 600 9998 678h9a Withdrawal Valid Valid Valid
999 600 9999 6f6vgh Check Status Valid Valid Valid
999 600 10000 yurtf6 Deposit Invalid Invalid Invalid

999 998 999 zsss22 Deposit Invalid Invalid Invalid


999 998 1000 Ftgy67 Withdrawal Valid Valid Valid
999 998 1001 Hy78ga Check Status Valid Valid Valid
999 998 5500 ftgyu3 Deposit Valid Valid Valid
999 998 9998 678h9a Withdrawal Valid Valid Valid
999 998 9999 6f6vgh Check Status Valid Valid Valid
999 998 10000 yurtf6 Deposit Invalid Invalid Invalid
999 999 999 zsss22 Deposit Invalid Invalid Invalid
999 999 1000 Ftgy67 Withdrawal Valid Valid Valid
999 999 1001 Hy78ga Check Status Valid Valid Valid
999 999 5500 ftgyu3 Deposit Valid Valid Valid

999 999 9998 678h9a Withdrawal Valid Valid Valid


999 999 9999 6f6vgh Check Status Valid Valid Valid
999 999 10000 yurtf6 Deposit Invalid Invalid Invalid
999 1000 999 zsss22 Deposit Invalid Invalid Invalid
999 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
999 1000 1001 Hy78ga Check Status Invalid Invalid Invalid
999 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
999 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
999 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
999 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 199 999 zsss22 Deposit Invalid Invalid Invalid
1000 199 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 199 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 199 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 199 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 199 9999 6f6vgh Check Status Invalid Invalid Invalid

1000 199 10000 yurtf6 Deposit Invalid Invalid Invalid


1000 200 999 zsss22 Deposit Invalid Invalid Invalid
1000 200 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 200 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 200 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 200 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 200 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 200 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 201 999 zsss22 Deposit Invalid Invalid Invalid
1000 201 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 201 1001 Hy78ga Check Status Invalid Invalid Invalid

1000 201 5500 ftgyu3 Deposit Invalid Invalid Invalid


1000 201 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 201 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 201 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 600 999 zsss22 Deposit Invalid Invalid Invalid
1000 600 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 600 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 600 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 600 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 600 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 600 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 998 999 zsss22 Deposit Invalid Invalid Invalid
1000 998 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 998 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 998 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 998 9998 678h9a Withdrawal Invalid Invalid Invalid

1000 998 9999 6f6vgh Check Status Invalid Invalid Invalid


1000 998 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 999 999 zsss22 Deposit Invalid Invalid Invalid
1000 999 1000 Ftgy67 Withdrawal Invalid Invalid Invalid
1000 999 1001 Hy78ga Check Status Invalid Invalid Invalid
1000 999 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 999 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 999 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 999 10000 yurtf6 Deposit Invalid Invalid Invalid
1000 1000 999 zsss22 Deposit Invalid Invalid Invalid
1000 1000 1000 Ftgy67 Withdrawal Invalid Invalid Invalid

1000 1000 1001 Hy78ga Check Status Invalid Invalid Invalid


1000 1000 5500 ftgyu3 Deposit Invalid Invalid Invalid
1000 1000 9998 678h9a Withdrawal Invalid Invalid Invalid
1000 1000 9999 6f6vgh Check Status Invalid Invalid Invalid
1000 1000 10000 yurtf6 Deposit Invalid Invalid Invalid
Equivalence Class Testing
Problem Statement-
Consider an automated banking application. The user can dial the bank from a PC,
provide a 6-digit password and follow with a series of keyword commands that
activate the banking function
Test Cases-

I1 : { A:Blank & P:3-digit number not beginning with 1 & S:4-digit number }
I2 : { A:Blank & P:3-digit number beginning with 1 & S:4-digit number }
I3 : { A:3-digit number & P:3-digit number not beginning with 1 & S:4-digit number }
I4 : { A:3-digit number & P:3-digit number beginning with 1 & S:4-digit number }
I5 : { A:3-digit number & P:3-digit number & S<4-digit number }
I6 : { A:3-digit number & P:3-digit number & S>4-digit number }
I7 : { A:3-digit number & P<3-digit number & S:4-digit number }
I8 : { A:3-digit number & P<3-digit number & S<4-digit number }
I9 : { A:3-digit number & P<3-digit number & S>4-digit number }
I10 : { A:3-digit number & P>3-digit number & S:4-digit number }
I11 : { A:3-digit number & P>3-digit number & S<4-digit number }
I12 : { A:3-digit number & P>3-digit number & S>4-digit number }
I13 : { A<3-digit number & P:3-digit number & S:4-digit number }
I14 : { A<3-digit number & P:3-digit number & S<4-digit number }
I15 : { A<3-digit number & P:3-digit number & S>4-digit number }
I16 : { A<3-digit number & P<3-digit number & S:4-digit number }
I17 : { A<3-digit number & P<3-digit number & S<4-digit number }
I18 : { A<3-digit number & P<3-digit number & S>4-digit number }
I19 : { A<3-digit number & P>3-digit number & S:4-digit number }
I20 : { A<3-digit number & P>3-digit number & S<4-digit number }
I21 : { A<3-digit number & P>3-digit number & S>4-digit number }
I22 : { A>3-digit number & P:3-digit number & S:4-digit number }
I23 : { A>3-digit number & P:3-digit number & S<4-digit number }
I24 : { A>3-digit number & P:3-digit number & S>4-digit number }
I25 : { A>3-digit number & P<3-digit number & S:4-digit number }
I26 : { A>3-digit number & P<3-digit number & S<4-digit number }
I27 : { A>3-digit number & P<3-digit number & S>4-digit number }
I28 : { A>3-digit number & P>3-digit number & S:4-digit number }
I29 : { A>3-digit number & P>3-digit number & S<4-digit number }
I30 : { A>3-digit number & P>3-digit number & S>4-digit number }

Input Result
Area Expected Actual
Prefix Suffix Password Command
Code Output Output
211 2121 Zsss22 Deposit Valid Valid Valid
111 2121 ftuy78 Withdrawal Invalid Invalid Invalid
454 556 6566 Abd5ds Deposit Valid Valid Valid
454 156 6566 aghy7s Withdrawal Invalid Invalid Invalid
454 143 500 Zsss22 Check status Invalid Invalid Invalid
454 143 99985 Yup23p Withdrawal Invalid Invalid Invalid
454 34 1322 Zsss22 Check status Invalid Invalid Invalid

454 23 500 Ab77ef Deposit Invalid Invalid Invalid


454 90 97889 Zsss22 Withdrawal Invalid Invalid Invalid
454 3333 1322 Y2re7q Withdrawal Invalid Invalid Invalid
454 3233 978 Zsss22 Check status Invalid Invalid Invalid
454 3233 13222 zxc0bn Check status Invalid Invalid Invalid
9 323 5000 Zsss22 Withdrawal Invalid Invalid Invalid
9 299 500 Jan4eb Check status Invalid Invalid Invalid
9 299 97845 Zsss22 Deposit Invalid Invalid Invalid
29 1323 Zsss22 Withdrawal Invalid Invalid Invalid
10 500 ab18ds Deposit Invalid Invalid Invalid
10 97856 Zsss22 Check status Invalid Invalid Invalid

67 1033 1322 yu67op Withdrawal Invalid Invalid Invalid


67 3233 978 Zsss22 Check status Invalid Invalid Invalid
67 3233 13222 ab12ef Withdrawal Invalid Invalid Invalid
5689 323 5000 Zsss22 Deposit Invalid Invalid Invalid
5689 299 500 ytr6wq Withdrawal Invalid Invalid Invalid
5689 299 97823 Zsss22 Check status Invalid Invalid Invalid
5689 19 1322 zxc945 Deposit Invalid Invalid Invalid
5689 10 500 Zsss22 Withdrawal Invalid Invalid Invalid
5689 10 97856 j34561 Withdrawal Invalid Invalid Invalid
5689 1033 1322 Zsss22 Check status Invalid Invalid Invalid
5689 3233 978 Zsss22 Withdrawal Invalid Invalid Invalid
5689 3233 13222 a66dds Deposit Invalid Invalid Invalid

Viva Question
Q1. What is Test bed and Test data ?
The test execution environment configured for testing. Test bed consists of
specific hardware, software, Operating system, network configuration, the
product under test, other system software and application software. Data
created or selected to satisfy the execution preconditions and inputs to
execute one or more test cases

Q2. Why does software have bugs?


There are bugs in software due to unclear or constantly changing requirements,
Similarly software complexity, programming errors, timelines, errors in bug
tracking, communication gap, documentation errors, deviation from standards
etc.
Q3. How do you decide when you have 'tested enough’?
Testing done is enough when :

1. 100% requirements coverage is achieved.


2. More than 95% of test coverage and 100% functional coverage is achieved.
3. When we achieved the target time.
4. All showstopper and Major defect are identified, verified and closed.
5. Less than 5%Minor defect are open, and if open work around is available.
6. All defects are retested and closed.
7. All corresponding regression scenario of retested and closed defect are also
tested
Q4. Describe the difference between validation and verification
he distinction between the two terms is largely due to the role of specifications.
Validation is the process of checking whether the specification captures the
customer’s requirements, while verification is the process of checking that the
software meets specifications.
Verification includes all the activities associated with the producing high quality
software. It is a relatively objective process in that no subjective judgement
should be needed in order to verify software.
In contrast, validation is an extremely subjective process. It involves making
subjective assessments of how well the (proposed) system addresses a real-world
need. Validation includes activities such as requirements modelling, prototyping
and user evaluation

Q5: What are the benefits of Automation testing?


• Lower operating costs
• Improved worker safety
• Reduced factory lead times
• Faster ROI
• Ability to be more competitive
• Increased production output.
• Consistent and improved part production and quality
• Smaller environmental footprint.

Q6:On what basis you can map the success of Automation testing?

The mapping criteria for successful automation testing are:

6. Defect Detection Ratio


7. Automation execution time
8. Time saved to release the product
9. The decrease in Labour employed
10.The decrease in overall costs
Experiment 2 (A)
Aim: To determine the nature of roots of a quadratic equations, its input is triple of +ve
integers (say x,y,z) and values may be from interval[1,100] the program output may have
one of the following:- [Not a Quadratic equations, Real roots, Imaginary roots, Equal
roots] Perform BVA.

#include<iostream.h>
#include<conio.h>
void main()
{
int a,b,c,d;
clrscr();
cout<<"The Quadratic equation is of the type
a(x^2)+bx+c=0"<<endl; cout<<"Enter the value of a: "<<endl;
cin>>a;
cout<<"Enter the value of b: "<<endl;
cin>>b;
cout<<"Enter the value of c: "<<endl;
cin>>c;
d=(b*b)-4*a*c;
if((a<0)||(b<0)||(c<0)||(a>100)||(b>100)||(c>100))
cout<<"Invalid input"<<endl;
else if(a==0)
cout<<"Not a quadratic equation"<<endl;
else if (d==0)
cout<<"Roots are equal"<<endl;
else if(d<0)
cout<<"Imaginary roots"<<endl;
else
cout<<"Real Roots"<<endl;
getch();

Output of the above program:

The quadratic equation is of the type a(x^2) +bx +c = 0


Enter the value of a:
50
Enter the value of b:
50
Enter the vaule of c:
0
Real roots

The quadratic equation is of the type a(x^2) +bx +c = 0


Enter the value of a:
50
Enter the value of b:
50
Enter the vaule of c:
50

Imaginary roots
The quadratic equation is of the type a(x^2) +bx +c = 0
Enter the value of a:
10
Enter the value of b:
40
Enter the vaule of c:
40

Roots are equal


The quadratic equation is of the type a(x^2) +bx +c = 0
Enter the value of a:
0
Enter the value of b:
50
Enter the vaule of c:
50
Not a quadratic equation

Boundary Value analysis: The basic idea of boundary value analysis is to use input variable
at their manimum, just above manimum, normal value, just below maximum and maximum.

In this program, we consider the value as 0 (minimum), 1(just above minimum), 50


(normal), 99 (just below maximum) and 100 (maximum).

Test case ID a b c Expected output


1. 50 50 0 Real roots
2. 50 50 1 Real roots
3. 50 50 50 Imaginary roots
4. 50 50 99 Imaginary roots
5. 50 50 100 Imaginary roots
6. 50 0 50 Imaginary roots
7. 50 1 50 Imaginary roots
8. 50 99 50 Imaginary roots
9. 50 100 50 Equal roots
10. 0 50 50 Not a QE
11. 1 50 50 Real roots
12. 99 50 50 Imaginary roots
13. 100 50 50 Imaginary roots
Experiment 2 (B)
Aim: To determine the type of triangle. Its input is triple of +ve integers (say x,y,z) and the
values may be from interval[1,100].The program output may be one of the following
[Scalene, Isosceles, Equilateral, Not a Triangle].Perform BVA

#include<iostream.h>
#include<conio.h>
#include<process.h>
void main()
{
clrscr();
int ch;
char c;
float b,h,a;

1: cout<<"Enter your
choice"; cout<<"\n 1.
Triangle"; cout<<"\n 2.
Square"; cout<<"\n 3.
Rectangle"; cout<<"\n 4.
Circle"; cout<<"\n 5.
Exit\n"; cin>>ch;
switch(ch)
{
case 1: b: cout<<"\Enter the base of the triangle (1-
200)"; cin>>b;
if((b<=0)||(b>200))
{
cout<<"\n Invalid entry for base \n";
goto b;
}

h: cout<<"\n Enter the height of the triangle (1-


200)"; cin>>h;
if((h<=0)||(h>200))
{

cout<<"\n Invalid height\n Enter the valid height (1-


200)"; goto h;
}
a= 0.5*b*h;
cout<<"\n The area is : "<<a;
cout<<"\n Want to enter more?(y/n)";
cin>>c;
if((c=='y')||(c=='y'))
goto 1;
break;

case 2 : s: cout<<"\n Enter the side of the squre (1-


200)"; cin>>b;
if((b<=0)||(b>200))
{
cout<<"\n Invalid entry for base \n";
goto s;
}
a=b*b;
cout<<"\n The area is :"<<a;
cout<<"\n Want to enter more?(y/n)";
cin>>c;
if((c=='y')||(c=='y'))
goto 1;
break;

case 3: d: cout<<"\n Enter the Base of the rectangle (1-


200)"; cin>>b;
if((b<=0)||(b>200))
{ cout<<"\n Invalid entry for base \n";
goto d; }
p: cout<<"\n Enter the height of the rectangle (1-
200)"; cin>>h;
if((h<=0)||(h>200))

{ cout<<"\n Invalid Height \n Enter the height (1-200)"; goto p; }


a=b*h;
cout<<"\n The area is :"<<a;
cout<<"\n Want to enter more?(y/n)";
cin>>c;
if((c=='y')||(c=='y'))
goto 1;
break;
case 4 : t: cout<<"\n Enter the radius of the circle (1-
200)"; cin>>b;
if((b<=0)||(b>200))
{ cout<<"\n Invalid entry for radius \n";
goto t; }
a=3.14*b*b;
cout<<"\n The area is :"<<a;
cout<<"\n Want to enter more?(y/n)";
cin>>c;
if((c=='y')||(c=='y'))
goto 1;
break;
case 5 : exit(0);

break;
default : cout<<"\n Wrong Choice:";
goto 1;
}

getch();
Test cases: In Equivalence class testing, we find two types of equivalence classes; input
domain and output domain;
Input domain is formed from one valid sequence and two invalid sequences. The output domain
is obtained from different types of output of a problem.

For Triangle:

Input domain:::

I1 = {h : h<=0}
I2 = {h : H>200}
I3 = {h : 1<=h<=200}
I4 = {b : b<=0}
I5 = {b : b>200}
I6 = {b : 1<=b<=200}

Test cases:
Expected
Test case ID h b output

1. 0 100 Invalid input

2. 100 100 5000

3. 201 100 Invalid input

4. 100 0 Invalid input


5. 100 100 5000
6. 100 201 Invalid input
Output domain:::

O1 = {<h,b> : triangle in h > 0,b>0}

O2 = {<h,b> : Not a triangle if h<=0, b<=0}

Output screen shots for the triangle is:

Enter your choice:


1. Triangle
2. Square
3. Rectangle
4. Circle
5. Exit
1
Enter the base of the triangle (1 – 200) 0
Invalid entry for base
Enter the base of the triangle (1 – 200) 100
Enter the height of the triangle (1 – 200) 201
Invalid height
Enter the Height(1-200)
Enter the height of the triangle(1 – 200) 100
The area is 5000
Want to enter more? (y/n)y
For square:

Input domain:::

I1={s : s<=0}
I2={s : s>200}
I3={s : 1<=s<=200}

Test cases:
Test case ID s Expected output
1. 0 Invalid input
2. 100 10000
3. 201 Invalid input

Output domain:::

O1 = { <s> : square if s>0}

O2 = { <r> : Not a square if s<=0}

Output screen shots for the square is:

Enter your choice:


1. Triangle
2. Square
3. Rectangle
4. Circle
5. Exit
2
Enter the side of the square (1 – 200) 0
Invalid entry for side
Enter the side of the square (1 – 200) 201
Invalid entry for side

Enter the side of the square(1 – 200) 100


The area is 10000

Want to enter more? (y/n)y

For Rectangle:

Input domain:::

I1 = { l : l <=0}
I2 = { l : l>200}
I3 = { I : 1<=l <=200}
I4 = { b : b<=0}
I5 = { b : b>200}
I6 = { b : 1<=b<=200}

Test cases:
Expected
Test case ID l b output
1. 0 100 Invalid input
2. 100 100 10000
3. 201 100 Invalid input
4. 100 0 Invalid input
5. 100 100 10000
6. 100 201 Invalid input
Output domain:::

O1 = {<l,b> : rectangle if l > 0,b>0}

O2 = {<l,b> : Not a triangle if l<=0, b<=0}

Output screen shots for the Rectangle is:

Enter your choice:


1. Triangle
2. Square
3. Rectangle
4. Circle
5. Exit
3
Enter the length of the rectangle (1 – 200) 0
Invalid entry for length
Enter the length of the rectangle (1 – 200) 201
Invalid entry for length
Enter the length of the rectangle(1 – 200) 100

Enter the breadth of the rectangle (1 – 200) 100

The area is 10000


Want to enter more? (y/n)y

For Circle:

Input domain:::

I1 = {r: r<=0}
I2 = {r : r>200}
I3 = { r: 1<=r<=200}

Test cases:
Test Cases r Expected output
1. 0 Invalid input
2. 100 31400
3. 201 Invalid input

Output domain:

O1 : {<r>: Circle if 1<=r<=200}


O2 : {<r>: not a circle if r<=0}

Output screen shots for the Circle is:

Enter your choice:


1. Triangle
2. Square
3. Rectangle
4. Circle
5. Exit
4
Enter the radius of the circle (1 – 200) 0
Invalid entry for radius
Enter the radius of the circle (1 – 200) 201
Invalid entry for radius
Enter the radius of the circle(1 – 200) 100
The area is 31400

Want to enter more? (y/n)y


Experiment 3 (A)

SOLUTION – i)
RP RI Equivalence
Class
RP<1 1<=RP<=5 Invalid
RP>5 1<=RP<=5 Invalid
1<=RP<=5 RP<1 Invalid
1<=RP<=5 RP>5 Invalid
Non Integer 1<=RP<=5 Invalid
Non Integer RP<1 Invalid
Non Integer RP>5 Invalid
RP<1 Non Integer Invalid
RP>5 Non Integer Invalid
1<=RP<=5 Non Integer Invalid
1<=RP<=5 1<=RP<=5 Valid
Solution
ii)
RP RI Equivalence Test Test Expected
Class Case Case Output
RP RI
RP<1 1<=RP<=5 Invalid 0 3 Out of Range
RP>5 1<=RP<=5 Invalid 7 2 Out of Range
1<=RP<=5 RP<1 Invalid 3 -1 Out of Range
1<=RP<=5 RP>5 Invalid 4 23 Out of Range
Non Integer 1<=RP<=5 Invalid 23.4 3 Invalid
Non Integer RP<1 Invalid A 0 Invalid
Non Integer RP>5 Invalid Hello 17 Invalid
RP<1 Non Integer Invalid -45 3.2 Invalid
RP>5 Non Integer Invalid 60 Xyz Invalid
1<=RP<=5 Non Integer Invalid 2 * Invalid
1<=RP<=5 1<=RP<=5 Valid 2 3 Moderate

Solution iii)
Test Case Test Case Expected
RP RI Output
4 3 High
1 1 Low
3 2 Moderate
Experiment 3 (B)

Solution
Extracting Rules

If all the conditions and actions from the scenario are extracted, you can
summarize it as follows:

Conditions:

o Destination (Germany, Europe)


o Passenger Age (<= 2, > 2 && < 18, > 18
o Depart on Monday or Friday (Yes, No)
o Stay 6 days or more (Yes, No)
Actions:

o Travel Free
o 0% discount
o 10% discount
o 20% discount
o 40% discount
Number of rules: 2 values * 3 values * 2 values * 2 values = 24 rules

Now we dump the result in a simple table to visualize a combination of all these
conditions.

Scenarios
Reduced Table

Preparing Decision Table

Now we can define the aging groups as shown in the following definition:

o Group1 : <=2
o Group2 : 3-18
o Group3 : >18
It is simpler when we prepare a model to help make a decision. It would
encapsulate all conditions:

o Destination: The destination of travel


o AgeGroup: The aging group as defined
o IsWeekDay: The condition for “Depart Mon/Fri?”
o StaryMoreThan6: The condition for “Stay >= 6 Days?”
Destination Age IsWeekDay MoreThan6 Discount

Rule 1 Group1 100

Rule 2 Germany Group2 Y 40

Rule 3 Germany Group2 N 50

Rule 4 Group3 Y N 0

Rule 5 Group3 Y Y 10

Rule 6 Germany Group3 N Y 30

Rule 7 Germany Group3 N N 20

Rule 8 Europe Group2 Y Y 50

Rule 9 Europe Group2 Y N 40

Rule 10 Europe Group2 N Y 75

Rule 11 Europe Group2 N N 65

Rule 12 Europe Group3 N Y 35

Rule 13 Europe Group3 N N 25


The final table looks like this:

Destination Age IsWeekDay MoreThan6 Discount

Group1 100

Germany Group2 Y 40

Germany Group2 N 50

Group3 Y N 0

Group3 Y Y 10

Germany Group3 N Y 30

Germany Group3 N N 20

Europe Group2 Y Y 50

Europe Group2 Y N 40

Europe Group2 N Y 75

Europe Group2 N N 65

Europe Group3 N Y 35

Europe Group3 N N 25
Experiment 4

FLOWCHART -

Tests depend on your particular interface (blackbox testing) as well as on your particular
implementation (glassbox testing). For a stack, some things I would expect to test:

1. It is possible to push an item on the stack and pop it off.


2. When pushing multiple distinct items on the stack, repeated popping returns them
in reverse order.
3. An uninitialized stack is empty.
4. A stack that has an item pushed is non-empty.
5. A stack that has items pushed and subsequently removed is empty.
6. Attempting to pop when there are no items results in the documented type of
failure, whether that is returning NULL, throwing an exception, or aborting the
program.

A possible test case for accepting strings

Precondition: stack is initialized; state is "empty" push ("hello")

Input:

Expected result: stack contains "hello"

Post-condition: state of the stack is "filled"

Further test cases for the stack example

Test case 1: initialize [empty], push [filled], push, push, push [full]

Test case 2: initialize [empty], push [filled], top, pop [empty], delete

*note: not all states have been reached


PROGRAM
Experiment 5 (A)

SOLUTION-
FORMULA V(G) = edges – node +2p
FIRST GRAPH
EDGES 12
NODE 09
12-9 +2(1) = 5 ANSWER

SECOND GRAPH
EDGES 13
NODE 10
13-10+2(1) =5 ANSWER
COMBINED GRAPH
EDGES 25
NODE 19
25-19+2(2) = 10
Experiment 5 (B)
Aim: Calculate the value of 𝒂𝒃 . Perform Decision Table based testing on it.

#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr();
int a,b;
float c;
char ch;

1: cout<<"To Calculate 'a to the power b'


\n"; cout<<"Enter the value of 'a' \n";
cin>>a;
cout<<"Enter the value of 'b'
\n"; cin>>b;
c=pow(a,b);

cout<<endl<<c;
cout<<"\n Want to enter again?
(y/n)"; cin>>ch;
if((ch=='y')||(ch=='y'))
goto 1;
getch();

Test cases: Decision Table Based testing is useful for describing situations in which a number
of combination of actions are taken for different conditions. There are four parts of a decision
table; condition stub, action stub, condition entries and action entries.
Test case ID A B Expected output

1. 2 3 +ve result

2. -1 3 -ve result

3. -2 -4 +ve result

4. 0 1 Result is 0

5. 0 0 Domain Error

6. -1 -0.6 Result is 1

Decision table is:


Conditions are:::

C1 a = 0, b = 0

C2 a = -ve, b = +ve

C3 a = +ve, b = -ve

C4 a = -ve, b = -ve

C5 a = +ve, b = +ve

C6 a = 0,b = integer

C7 b = 0, a = integer

C8 a = -ve, b= -ve odd


Actions:::

A1 : Domain error
A2 : Negative output
A3 : output =1
A4 : positive output
A5 : output = 0

Condition R1 R2 R3 R4 R5 R6 R7 R8
C1 T - - - - - - -
C2 - T - - - - - -
C3 -- - - T - - - -
C4 - - -- - T - - -
C5 - - - - - T - -
C6 - - - - - - T -
C7 - - - - - - - T
C8 - - T - - - - -
Action
A1 X
A2 X X
A3 X
A4 X X X

A5 X
The output for the above program is:

To calculate’a to the power of b’


Enter the value of ‘a’
0
Enter the value of ‘b’
0
Pow: Domain error
1
Want to enter again? (y/n) y
To calculate ’a to the power of b’
Enter the value of ‘a’
2
Enter the value of ‘b’
3

Want to enter again? (y/n)n


Experiment 6

To measure what fraction of code has been exercised by a test suite, several types of code
coverage criteria may be used. Five basic types are:

• Statement Coverage: Every statement is executed at least once

• Edge Coverage: Every edge is traversed at least once

• ConditionCoverage: For Boolean logical operators (AND, OR), the individual Boolean sub-
expressions are evaluated in every possible combination of TRUE and FALSE

• RelationalCoverage: For relational operators (>, <, >=, <=) the equal condition is treated
as a separate branch
• Path Coverage: Every possible path is executed at least once
Statement Coverage Testing
A statement coverage testing strategy calls for testing each statement in a routine at least once.
Pick a test case and plot its path though the control flow graph. Note each statement that is
exercised by the test case. Continue to pick test cases until all statements along the control flow
graph are covered.

Test Case 1 (CeilingValue = 650000; BusinessType = ‘F’; Commercial = ‘N’) covers statements 5,
6, 6’, 6’’, 7, and 10 (highlighted in color in the pseudo-code and in the control flow graph).

Test Case 2 (CeilingValue = 3000; BusinessType = ‘F’; Commercial = ‘N’) covers statements 5, 6,
9, 10, exercising remaining uncovered statement 9 (also highlighted in color). Statement
coverage is achieved with Test Cases 1 and 2.

Edge Coverage Testing


An edge coverage testing strategy calls for traversing each edge at least once. Pick a test case
and plot its path through the control flow graph. Note each edge that is traversed by the test
case. Continue to pick test cases until all edges along the control flow graph are covered. Edge
coverage is also referred to as branch coverage. Conditional statements (ex: IF…) are traversed
along their TRUE and FALSE edges, without regard to what are referred to as “short-circuit”
Boolean operators (e.g., Boolean operators which do not necessarily test each of their
operands). For example, in statement 6 in the pseudo code:

=650000ANDBusinessType = ‘F’ AND Commercial = ‘N'”>

The truth value of BusinessType = ‘F’ will only be checked if the truth value of CeilingValue >=
650000 is true. If CeilingValue >= 650000 is false, there is no need to check the truth value
of BusinessType = ‘F’ since the entire expression is guaranteed to be false. Likewise, the truth
value of Commercial = ‘N’ will only be checked if the truth value of BusinessType = ‘F’ is true.

Test Case 1 (CeilingValue = 650000; BusinessType = ‘F’; Commercial = ‘N’) covers edges 5-6, 6-
6’, 6’-6’’, 6’’-7, and 7-10 (highlighted in color in the pseudo-code and in the control flow graph).

Test Case 2 (CeilingValue = 3000; BusinessType = ‘F’; Commercial = ‘N’) covers edges 5-6, 6-9,
and 9-10, exercising the remaining required uncovered edge from statement 6: 6-9 (also
highlighted in color). Edges 6’-9 and 6’’-9 are associated with short-circuit operators, so they are
not required to complete edge coverage.Edge coverage is achieved with Test Cases 1 and 2.

Condition Coverage Testing


A condition coverage testing strategy calls for traversing each edge at least once and for
complex conditionals (especially short circuit operators) make sure that all possible
combinations of TRUE and FALSE are tested. Pick a test case and plot its path through the
control flow graph. Note each edge with a conditional that is traversed by the test case.
Continue to pick test cases until all edges along the control flow graph are covered.

Test Case 1 (CeilingValue = 650000; BusinessType = ‘F’; Commercial = ‘N’) covers conditions 5,
6(T), 6’(T), 6’’(T), 7, 10 (highlighted in color in the pseudo-code and in the control flow graph).

Test Case 2 (CeilingValue = 3000; BusinessType = ‘F’; Commercial = ‘N’) covers conditions 5,
6(T), 9, 10 (also highlighted in color). Two additional test cases are needed to cover the FALSE
conditions for Edges 6’-9 and 6’’-9 to complete condition coverage.

Test Case 3 (CeilingValue = 650000; BusinessType = ‘NP’; Commercial = ‘N’) covers conditions 5,
6(T), 6’(F), 9, 10.

Test Case 4 (CeilingValue = 650000; BusinessType = ‘F’; Commercial = ‘Y’) covers conditions 5,
6(T), 6’(T), 6’’(F), 9, 10. Edge coverage is now achieved with Test Cases 1, 2, 3 and 4.

Relational Coverage Testing


A relational coverage testing strategy provides a stronger form of edge coverage testing in
which any relational operator (>, <, >=, <=) has its “equal” condition treated as a separate
branch. Therefore, in statement 6 of the pseudo code example, the “IF (CeilingValue >=
650000…” portion of the conditional should be treated as:

IF (CeilingValue > 650000) THEN (TRUE outcome)


ELSE IF (CeilingValue = 650000) THEN (TRUE outcome)

ELSE IF (CeilingValue < 650000) THEN (FALSE outcome)

Relational coverage is thus a stronger form of edge coverage since it is saying that for any
conditional you should have at least three test cases: x >y, x<y, x==y. If you combine relational
coverage with condition coverage, you will have the strongest form of edge coverage possible.

Test Case 1 (CeilingValue = 650000; BusinessType = ‘F’; Commercial = ‘N’) covers the relation “x
= y”, while

Test Case 2 (CeilingValue = 3000; BusinessType = ‘F’; Commercial = ‘N’) covers the relation “x <
y”. New

Test Case 5 (CeilingValue = 700000; BusinessType = ‘F’; Commercial = ‘N’) is required to cover
the relation “x > y”. Relational coverage is achieved with Test Cases 1, 2 and 5.

Path Coverage Testing


A path coverage testing strategy calls for traversing each path through a program at least once.
Unfortunately, full path coverage is usually impractical or impossible. Any routine with a series
of n decisions in it can have up to 2**n paths within it. To make matters worse, any loop
constructs can result in an infinite number of paths. Additionally, some paths may also be
infeasible to traverse/test since there may be no program input value that can cause that
particular path to be executed.
One testing strategy you may want to consider is to use the cyclomatic complexity of a module
to determine the number of white-box tests that are required to obtain sufficient coverage of
the module you want to test. According to this methodology, in almost all cases a module
should have at least as many tests as its cyclomatic complexity, and this number should be
adequate to exercise all of the relevant paths through that module.

Mathematically, the cyclomatic complexity of a module is defined in terms of the nodes and
edges of a control flow graph containing the basic elements of the module. The complexity is
defined as:

M = E – N + 2P

where:

M = cyclomatic complexity

E = number of edges on the graph

N = number of nodes on the graph

P = number of connected components (for a single routine, P = 1)

For the control flow graph in this article, the function begins executing at node 5 and exits at
node 10. For this graph, there are 7 nodes (5, 6, 6’, 6’’, 7, 9, 10) and 9 edges (5-6, 6-6’, 6’-6’’,
6’’-7, 7-10, 6-9, 6’-9, 6’’-9), so N = 7, E = 9, P = 1, and M = E – N +2P = 4. The function has a
cyclomatic complexity of 4.

According to the above methodology, an adequate white-box testing strategy for this function
should have at least 4 test cases. The condition coverage testing strategy above, with four test
cases which exercise all of the logic path conditions, is consistent with this path coverage testing
methodology.

Functional (Black-Box) Testing


A functional (black-box) test suite to validate the functionality provided by example FUNCTION
DocumentRequired must include test cases to the various combinations of user input values for
CeilingValue, BusinessType, and Commercial. The table below illustrates a test suite which will
address the functional requirements to be tested. This test suite calls for seven test cases,
without including redundant tests, to test the three inputs:
From this example your test suite options may look something like this:

EXPERIMENT – 7
AIM –Study of Selenium – an open source testing tool.

INTRODUCTION
Selenium is a portable software-testing framework for web applications. Selenium provides a
playback (formerly also recording) tool for authoring tests without the need to learn a
test scripting language (Selenium IDE). It also provides a test domain-specific
language(Selenese) to write tests in a number of popular programming languages,
including C#, Groovy, Java, Perl, PHP, Python, Ruby and Scala. The tests can then run
against most modern web browsers. Selenium deploys on Windows, Linux, and OS
X platforms. It is open-source software, released under the Apache 2.0 license: web
developers can download and use it without charge.
HISTORY
Selenium was originally developed by Jason Huggins in 2004 as an internal tool
at ThoughtWorks. Huggins was later joined by other programmers and testers at
ThoughtWorks, before Paul Hammant joined the team and steered the development of the
second mode of operation that would later become "Selenium Remote Control" (RC). The
tool was open sourced that year.
In 2005 Dan Fabulich and Nelson Sproul (with help from Pat Lightbody) made an offer to
accept a series of patches that would transform Selenium-RC into what it became best known
for. In the same meeting, the steering of Selenium as a project would continue as a committee,
with Huggins and Hammant being the ThoughtWorks representatives.
In 2007, Huggins joined Google. Together with others like Jennifer Bevan, he continued with
the development and stabilization of Selenium RC. At the same time, Simon Stewart at
ThoughtWorks developed a superior browser automation tool called WebDriver. In 2009,
after a meeting between the developers at the Google Test Automation Conference, it was
decided to merge the two projects, and call the new project Selenium WebDriver, or Selenium
2.0.
In 2008, Philippe Hanrigou (then at ThoughtWorks) made "Selenium Grid", which provides a
hub allowing the running of multiple Selenium tests concurrently on any number of local or
remote systems, thus minimizing test execution time. Grid offered, as open source, a similar
capability to the internal/private Google cloud for Selenium RC. Pat Lightbody had already
made a private cloud for "HostedQA" which he went on to sell to Gomez, Inc.
The name Selenium comes from a joke made by Huggins in an email, mocking a competitor
named Mercury, saying that you can cure mercury poisoning by taking selenium supplements.
The others that received the email took the name and ran with it.
COMPONENTS
Selenium is composed of several components with each taking on a specific role in aiding the
development of web application test automation.
Selenium IDE
Selenium IDE is a complete integrated development environment (IDE) for Selenium tests. It
is implemented as a Firefox Add-On, and allows recording, editing, and debugging tests. It
was previously known as Selenium Recorder. Selenium-IDE was originally created by Shinya
Kasatani and donated to the Selenium project in 2006. It is little-maintained and is compatible
with Selenium RC, which was deprecated.
Scripts may be automatically recorded and edited manually providing autocompletion support
and the ability to move commands around quickly. Scripts are recorded in Selenese, a special
test scripting language for Selenium. Selenese provides commands for performing actions in a
browser (click a link, select an option), and for retrieving data from the resulting pages.
The Selenium IDE for Firefox stopped working after the Firefox 55 upgrade and will be no
longer maintained.
Selenium client API
As an alternative to writing tests in Selenese, tests can also be written in various programming
languages. These tests then communicate with Selenium by calling methods in the Selenium
Client API. Selenium currently provides client APIs
for Java, C#, Ruby, JavaScript and Python.
With Selenium 2, a new Client API was introduced (with WebDriver as its central
component). However, the old API (using class Selenium) is still supported.
Selenium WebDriver
Selenium WebDriver is the successor to Selenium RC. Selenium WebDriver accepts
commands (sent in Selenese, or via a Client API) and sends them to a browser. This is
implemented through a browser-specific browser driver, which sends commands to a browser,
and retrieves results. Most browser drivers actually launch and access a browser application
(such as Firefox, Chrome, Internet Explorer, or Microsoft Edge); there is also an Html
Unit browser driver, which simulates a browser using Html Unit.
Unlike in Selenium 1, where the Selenium server was necessary to run tests, Selenium
WebDriver does not need a special server to execute tests. Instead, the WebDriver directly
starts a browser instance and controls it. However, Selenium Grid can be used with
WebDriver to execute tests on remote systems (see below). Where possible, WebDriver uses
native operating system level functionality rather than browser-based JavaScript commands to
drive the browser. This bypasses problems with subtle differences between native and
JavaScript commands, including security restrictions.
In practice, this means that the Selenium 2.0 API has significantly fewer calls than does the
Selenium 1.0 API. Where Selenium 1.0 attempted to provide a rich interface for many
different browser operations, Selenium 2.0 aims to provide a basic set of building blocks from
which developers can create their own Domain Specific Language. One such DSL already
exists: the Watir project in the Ruby language has a rich history of good design. Watir-
webdriver implements the Watir API as a wrapper for Selenium-Webdriver in Ruby. Watir-
webdriver is created entirely automatically, based on the WebDriver specification and the
HTML specification.
As of early 2012, Simon Stewart (inventor of WebDriver), who was then with Google and
now with Facebook, and David Burns of Mozilla were negotiating with the W3C to make
WebDriver an internet standard. In July 2012, the working draft was released. Selenium-
Webdriver (Selenium 2.0) is fully implemented and supported in Python, Ruby, Java, and C#.
Selenium Remote Control
Selenium Remote Control (RC) is a server, written in Java, that accepts commands for the
browser via HTTP. RC makes it possible to write automated tests for a web application in any
programming language, which allows for better integration of Selenium in existing unit test
frameworks. To make writing tests easier, Selenium project currently provides client drivers
for PHP, Python, Ruby, .NET, Perl and Java. The Java driver can also be used
with JavaScript (via the Rhino engine). An instance of selenium RC server is needed to launch
html test case - which means that the port should be different for each parallel run. However,
for Java/PHP test case only one Selenium RC instance needs to be running continuously.
Selenium Remote Control was a refactoring of Driven Selenium or Selenium B designed by
Paul Hammant, credited with Jason as co-creator of Selenium. The original version directly
launched a process for the browser in question, from the test language of Java, .Net, Python or
Ruby. The wire protocol (called 'Selenese' in its day) was reimplemented in each language
port. After the refactor by Dan Fabulich, and Nelson Sproul (with help from Pat Lightbody)
there was an intermediate daemon process between the driving test script, and the browser.
The benefits included the ability to drive remote browsers, and the reduced need to port every
line of code to an increasingly growing set of languages. Selenium Remote Control completely
took over from the Driven Selenium code-line in 2006. The browser pattern for 'Driven'/'B'
and 'RC' was response/request, which subsequently became known as Comet.
With the release of Selenium 2, Selenium RC has been officially deprecated in favor of
Selenium WebDriver.
Selenium Grid
Selenium Grid is a server that allows tests to use web browser instances running on remote
machines. With Selenium Grid, one server acts as the hub. Tests contact the hub to obtain
access to browser instances. The hub has a list of servers that provide access to browser
instances (WebDriver nodes), and lets tests use these instances. Selenium Grid allows running
tests in parallel on multiple machines, and to manage different browser versions and browser
configurations centrally (instead of in each individual test).
The ability to run tests on remote browser instances is useful to spread the load of testing
across several machines, and to run tests in browsers running on different platforms or
operating systems. The latter is particularly useful in cases where not all browsers to be used
for testing can run on the same platform.
VIVA VOCE
Q1. What is Selenium? What is the latest version of selenium?
Selenium is a free (open-source) automated testing framework used to validate web
applications across different browsers and platforms. You can use multiple programming
languages like Java, C#, Python etc to create Selenium Test Scripts. Testing done using the
Selenium testing tool is usually referred to as Selenium Testing. Selenium 4 is the lastest
version of selenium

Q2. Briefly discuss the features of Selenium.


• Speed Control – Helps control the speed of test cases.

• Run All – Allows execution of the entire Test Suite.

• Run – Runs the currently selected test.

• Pause/Resume – Allows a user to pause and resume a particular test case.

• Step – Helps step into each specific command in the test script.

Q3. How automation testing beats Manual testing?


Automation Testing easily performs testing at a large scale with the utmost efficiency.
Manual Testing takes more time to complete a cycle of testing, and thus the turnaround
time is higher. Automation Testing completes a cycle of testing within record time and thus
the turnaround time is much lower

Q4. What are the challenges with manual testing?


• Manual Testing is time-consuming mainly while doing regression testing.

• Manual testing is less reliable compared to automation testing because it is conducted


by humans.
• Expensive over automation testing in the long run
Experiment 8
Aim: Study of Win Runner Testing Tool

Theory -WinRunner is a program that is responsible for the automated testing of software.
WinRunner is a Mercury Interactive‘s enterprise functional testing tool for
Microsoft windows applications.

Importance of Automated Testing:

1. Reduced testing time


2. Consistent test procedures – ensure process repeatability and
resource independence. Eliminates errors of manual testing
3. Reduces QA cost – Upfront cost of automated testing is easily recovered over
the lifetime of the product
4. Improved testing productivity – test suites can be run earlier and more often
5. Proof of adequate testing
6. For doing Tedious work – test team members can focus on quality areas.

WinRunner Uses:

1. With WinRunner sophisticated automated tests can be created and run on an application.
2. A series of wizards will be provided to the user, and these wizards can create tests in
an automated manner.
3. Another impressive aspect of WinRunner is the ability to record various interactions, and
transform them into scripts. WinRunner is designed for testing graphical user interfaces.
4. When the user make an interaction with the GUI, this interaction can be
recorded. Recording the interactions allows to determine various bugs that need
to be fixed.

5. When the test is completed, WinRunner will provide with detailed information
regarding the results. It will show the errors that were found, and it will also give
important information about them. The good news about these tests is that they
can be reused many times.
6. WinRunner will test the computer program in a way that is very similar to normal user
interactions. This is important, because it ensures a high level of accuracy and realism.
Even if an engineer is not physically present, the Recover manager will troubleshoot
any problems that may occur, and this will allow the tests to be completed without
errors.
7. The Recover Manager is a powerful tool that can assist users with various scenarios.
This is important, especially when important data needs to be recovered.

The goal of WinRunner is to make sure business processes are properly carried
out. WinRunner uses TSL, or Test Script Language.
WinRunner Testing Modes

Context Sensitive

Context Sensitive mode records your actions on the application being tested in terms of
the GUI objects you select (such as windows, lists, and buttons), while ignoring the physical
location of the object on the screen. Every time you perform an operation on the application
being tested, a TSL statement describing the object selected and the action performed is
generated in the test script. As you record, WinRunner writes a unique description of each
selected object to a GUI map.

The GUI map consists of files maintained separately from your test scripts. If the user
interface of your application changes, you have to update only the GUI map, instead of hundreds
of tests. This allows you to easily reuse your Context Sensitive test scripts on future versions of
your application.

To run a test, you simply play back the test script. WinRunner emulates a user by moving
the mouse pointer over your application, selecting objects, and entering keyboard input.
WinRunner reads the object descriptions in the GUI map and then searches in the application
being tested for objects matching these descriptions. It can locate objects in a window even if
their placement has changed.

Analog

Analog mode records mouse clicks, keyboard input, and the exact x- and y-coordinates
traveled by the mouse. When the test is run, WinRunner retraces the mouse tracks. Use Analog
mode when exact mouse coordinates are important to your test, such as when testing a drawing
application.

The WinRunner Testing Process

Testing with WinRunner involves six main stages:

1. Create the GUI Map

The first stage is to create the GUI map so WinRunner can recognize the GUI objects in
the application being tested. Use the RapidTest Script wizard to review the user interface of
your application and systematically add descriptions of every GUI object to the GUI map.
Alternatively, you can add descriptions of individual objects to the GUI map by clicking objects
while recording a test.

2. Create Tests

Next is creation of test scripts by recording, programming, or a combination of both.


While recording tests, insert checkpoints where we want to check the response of the application
being tested. We can insert checkpoints that check GUI objects, bitmaps, and databases. During
this process, WinRunner captures data and saves it as expected results—the expected response
of the application being tested.

3. Debug Tests

Run tests in Debug mode to make sure they run smoothly. One can set breakpoints,
monitor variables, and control how tests are run to identify and isolate defects. Test results are
saved in the debug folder, which can be discarded once debugging is finished. When WinRunner
runs a test, it checks each script line for basic syntax errors, like incorrect syntax or missing
elements in If, While, Switch, and For statements. We can use the Syntax Check options (Tools
>Syntax Check) to check for these types of syntax errors before running your test.

4. Run Tests

Tests can be run in Verify mode to test the application. Each time WinRunner encounters
a checkpoint in the test script, it compares the current data of the application being tested to
the expected data captured earlier. If any mismatches are found, WinRunner captures them as
actual results.

5. View Results

Following each test run, WinRunner displays the results in a report. The report details all
the major events that occurred during the run, such as checkpoints, error messages, system
messages, or user messages. If mismatches are detected at checkpoints during the test run, we
can view the expected results nd the actual results from the Test Results window. In cases of
bitmap mismatches, one can also view a bitmap that displays only the difference between the
expected and actual results.

We can view results in the standard WinRunner report view or in the Unified report view.
The WinRunner report view displays the test results in a Windows-style viewer. The Unified
report view displays the results in an HTML-style viewer (identical to the style used for QuickTest
Professional test results).
6. Report Defects

If a test run fails due to a defect in the application being tested, one can report
information about the defect directly from the Test Results window.
This information is sent via e-mail to the quality assurance manager, who tracks the
defect until it is fixed.

Using Winrunner Window

Before you begin creating tests, you should familiarize yourself with the
WinRunner main window.

1.4.1 To start WinRunner:

Choose Programs > WinRunner > WinRunner on the Start menu.

The first time you start WinRunner, the Welcome to WinRunner window and the
―What‘s New in WinRunner‖ help open. From the Welcome window you can create a new
test, open an existing test, or view an overview of WinRunner in your default browser.
CASE TOOLS & SOFTWARE TESTING LAB MANUAL

If you do not want this window to appear the next time you start WinRunner, clear the
Show on Startup check box. To show the Welcome to WinRunner window upon startup from
within WinRunner, choose Settings > General Options, click the Environment tab, and select the
Show Welcome screen check box.

1.4.2The Main WinRunner Window


The main WinRunner window contains the following key elements:
WinRunner title bar
Menu bar, with drop-down menus of WinRunner commands
Standard toolbar, with buttons of commands commonly used when running
a test User toolbar, with commands commonly used while creating a test
Status bar, with information on the current command, the line number of
the insertion point and the name of the current results folder

The Standard toolbar provides easy access to frequently performed tasks, such
as opening, executing, and saving tests, and viewing test results.
Standard Toolbar

The User toolbar displays the tools you frequently use to create test scripts. By default,
the User toolbar is hidden. To display the User toolbar, choose Window > User Toolbar. When
you create tests, you can minimize the WinRunner window and work exclusively from the
toolbar. The User toolbar is customizable. You choose to add or remove buttons using the
Settings > Customize User Toolbar menu option. When you re-open WinRunner, the User
toolbar appears as it was when you last closed it. The commands on the Standard toolbar and
the User toolbar are described in detail in subsequent lessons.
Note that you can also execute many commands using softkeys. Softkeys are keyboard
shortcuts for carrying out menu commands. You can configure the softkey combinations for your
keyboard using the Softkey Configuration utility in your WinRunner program group. For more
information, see the ―WinRunner at a Glance‖ chapter in your WinRunner User’s Guide.

Now that you are familiar with the main WinRunner window, take a few minutes to
explore these window components before proceeding to the next lesson.

The Test Window


You create and run WinRunner tests in the test window. It contains the following key elements:

Test window title bar, with the name of the open test
Test script, with statements generated by recording and/or programming in
TSL, Mercury Interactive‘s Test Script Language
Execution arrow, which indicates the line of the test script being executed during a
test run, or the line that will next run if you select the Run from arrow option
Insertion point, which indicates where you can insert or
edit text
Experiment 9
Aim: Study of Test Management tool (QA Complete)

QA Complete
• Test management tool that can be used for both manual
and automated Testing
• Tool that allow us to track all aspects of software quality in
an efficient manner
• Supports all aspects of test process and ensures the delivery
of high quality software.
Benefits
• QA Complete can be integrated with any number of tools
• Customizable as per the tester’s needs
• Requirements and tests can be traced to defect effectively
• Reports and Dashboards are the key features of QA
Complete
Features
• Test Case Management – Simple Test Case structuring also
allows for focused metrics and clear status report
• Test Environment Management – Various environments are
linked to individual test cases for effective Test Coverage(
across different platforms, operating systems, and devices)
• Defect and Issue Management – Mainly tracks
the resolution process of bugs for each release and
automatically creates bugs when test cases fail.
• Test Automation Integration – Can be integrated with
various automation tools, and it allows us to track and
report overall (manual and automated)
• Bug Tracker Integration – Can be integrated with various
Bug tracking tools
• Shared Documents – Stores all test documents in one
central location to improve collaboration
Step 1: Log into QA Complete Tool

Step 2: Create a New Release as E-Work under the Release


tab by clicking the Add New icon and click the Add New
Item to add an Iteration/Build
Step 3: Navigate to the Test Management Tab -> Test
Library -> Add New folder
Step 4: Navigate to Test Management Tab -> Test Sets ->
Create a folder (Add the ‘+’ @ left panel) -> Create a new
test set using the Add New icon -> After entering the
details click the Submit button -> Navigate to the Tests Tab
and Design the steps accordingly
Step 5: To run the Test Sets -> Test
Management Tool -> Test Sets -> Click
the RUN icon
Step 6: Click the Start Run at the top right
corner. Based on the working
functionality, select the Run Status and click
the End Run option finally

Step 7: If any of the steps fail in a Test Set


during the run, it prompts to create a defect
automatically
Step 8: When the YES option is selected,
a defect is created automatically

Step 9: Navigate to the Defects Tab and view


the automatically created bug(s).
TEST CASES GENERATION
Experiment 10
Aim: Learn how to raise and report Bugs using Bug
tracking tool (Bugzilla,Jira using QA Complete)

Introduction- What is Bugzilla

Bugzilla is an open-source issue/bug tracking system that allows developers


effectively to keep track of outstanding problems with their product. It is
written in Perl and uses MYSQL database.

Bugzilla is a Defect tracking tool, however it can be used as a test management


tool as such it can be easily linked with other Test Case management tools like
Quality Center, Testlink etc.

This open bug-tracker enables users to stay connected with their clients or
employees, to communicate about problems effectively throughout the
data-management chain.

How to log-in to Bugzilla

Step 1) Use the following link for your handons. To create an account in Bugzilla
or to login into the existing account go to New Account or Log in option in the
main menu.
Step 2) Now, enter your personal details to log into Bugzilla

1. User ID
2. Password

3. And then click on "Log in"


Step 3) You are successfully logged into Bugzilla system

Creating a Bug-report in Bugzilla

Step 1) To create a new bug in Bugzilla, visit the home-page of Bugzilla and
click on NEW tab from the main men
Step 2) In the next window

1. Enter Product
2. Enter Component

3. Give Component description

4. Select version,

5. Select severity

6. Select Hardware

7. Select OS

8. Enter Summary

9. Enter Description

10. Attach Attachment

11. Submit

NOTE: The above fields will vary as per your customization of Bugzilla
NOTE: The mandatory fields are marked with *.
Summary
Description

Are mandatory

If you do not fill them you will get a screen like below

Step 4) 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
• Large text box

• URL

• Whiteboard

• Keywords

• Tags

• Depends on

• Blocks

• Attachments
Step 5) 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.
Create Graphical Reports

Graphical reports are one way to view the current state of the bug database. You
can run reports either through an HTML table or graphical line/pie/bar-chart-based
one. The idea behind graphical report in Bugzilla is to define a set of bugs using
the standard search interface and then choosing some aspect of that set to plot on
the horizontal and vertical axes. You can also get a 3-dimensional report by
choosing the option of "Multiple Pages".

Reports are helpful in many ways, for instance if you want to know which component
has the largest number of bad bugs reported against it. In order to represent that in the
graph, you can select severity on X- axis and component on Y-axis, and then click on
generate report. It will generate a report with crucial information.
The graph below shows the Bar chart representation for the Bugs severity in
component "Widget Gears". In the graph below, the most severe bug or blockers
in components are 88 while bugs with normal severity is at top with 667 number.

Likewise, we will also see the line graph for %complete Vs Deadline
Step 1) To view your report in a graphical presentation,
Click on Report from Main Menu

Click on the Graphical reports from the given option

Step 2) Let's create a graph of % Complete Vs Deadline


In here on the vertical axis we chose % Complete and on our horizontal axis
we chose Deadline. This will give the graph of amount of work done in
percentage against the set-deadline.

Now, set various option to present reports graphically

1. Vertical Axis

2. Horizontal Axis

3. Multiple Images
4. Format- Line graph, Bar chart or Pie chart

5. Plot data set

6. Classify your bug

7. Classify your product

8. Classify your component

9. Classify bug status

10. Select resolution

11. Click on generate report


The image of the graph will appear somewhat like this
Browse Function

Step 1) To locate your bug we use browse function, click on Browse button from
the main menu.

Step 2) As soon as you click on browse button a window will open saying "Select a
product category to browse" as shown below, we browse the bug according to the
category.After clicking the browse button
Select the product "Sam's Widget" as such you have created a bug inside it

Step 3) It opens another window, in this click on component "widget gears".


Bugzilla Components are sub-sections of a product. For instance, here our product
is SAM'S WIDGET whose component is WIDGET GEAR
Step 4) when you click on the component, it will open another window. All the Bugs
created under particular category will be listed over-here. From that Bug-list, choose
your Bug#ID to see more details about the bug
It will open another window, where information about your bug can be seen more
in detail. In the same window, you can also change the assignee, QA contact or
CC list.
How to use Simple search option in BugZilla

Bugzilla provides two ways of searching bugs, they are


Simple Search and Advance Searchmethods.

Step 1) We will first learn the "Simple Search" method. Click on search button
from the main menu and then follow these steps

1. Click on "Simple Search" button


2. Choose the status of the Bug – choose Open if you are looking the bug
in Open status and closed for bug in closed status

3. Choose your category and component, and you can also put
keywords related to your bug

4. Click on the search


Step 2) Here we will search for both option open and closed status, first we have
selected closed status for bug and clicked search button
For closed status, it fetched 12 bugs

Step 3) Likewise we have searched for Open status as well, and it has fetched
37 bugs related to our queries.
Also, at the bottom of the screen you have various options like how you want to see
your bug - an XML format, in Long format or just Time summary. Apart from
that you can also use other option like send mail to bug assignee, change
several bugs at once or change column of the screen, etc.

In next step, we will demonstrate one of this function change column of the screen, through
which we will learn how to add or remove the column to the existing column.

How to add or remove column to default search screen

Step 1) Click on the Change Column as shown in above screen-shot. It will open a new window
where you have to follow these steps.

Select any given option from the column you want to appear in the main screen - here we have
selected % complete
Click on the arrow button, it will move % complete column from Available Column to the
Selected column

These steps will move the selected column from left to right.
The % complete is moved from left to right as shown below, and once we
click on change columnit will appear in the main screen
Before- Search result screen before using "Change Column" option-

There is no % complete column appears in search screen result as


shown below

After- Search result screen after using "Change Column" option

You can see % complete column added to the extreme right in the
existing column in the main screen, which was not their previously.
NOTE: Likewise you can remove or add any column you want.

How to use Advance Search in BugZilla

Step 1) After Simple search we will look into Advanced Search option for that
you have to follow the following steps.

1. Click on advanced search option


2. Select option for summary, how you want to search

3. Enter the keyword for your bug- for example, Widget gears twisted

4. Select the category of your Bug under classification, here we selected Widget

5. Choose your product under which your Bug was created- Sam's Widget

6. Component- Widget gears

7. Status- Confirmed

8. Resolution
Step 2) Once you select all the option, click on search button. It will detect
the bug you created
The advance search will find your bug, and it will appear on the screen like
How to use preferences in BugZilla

Preferences in Bugzilla is used to customize the default setting made by Bugzilla


as per our requirement. There are mainly five preferences available

General Preferences
E-mail Preferences
Saved Searches

Account Information

Permissions

General Preferences
For general preferences , you have various option like changing Bugzilla general
appearance, position of the additional comment box, automatically add me to cc,
etc. Here we will see how to change the general appearance of the Bugzilla.

There are many changes you can do which are self-explanatory, and you
can choose the option as per your requirement.

Step 1)

To set the background Skin of Bugzilla

Go to Bugzilla general preference (Skin)

Select the option you want to see as a change and submit the
change ( Dusk Classic )

A message will appear on the window saying changes have been saved,
as soon as you submit the changes
After the skin preference is changed to Classic from Dusk, the back-ground color
of the screen appears white
Likewise, for other default settings changes can be done.

E-mail preferences

E-mail preferences enable you to decide how to receive the message and
from whom to receive the messages.
Step 1) To set the e-mail preferences
1. Click on e-mail services
2. Enable or disable the mail to avoid receiving notification about changes to
a bug

3. Receiving mail when someone asks to set a flag or when someone sets a
flag you asked for

4. When and from whom you want to receive mail and under which
condition. After marking your option at the end, submit the changes.
Saved Searches Preference

Saved searches preference gives you the freedom to decide whether to share
your bug or not to share.

Step 1) Click on saved searches, it will open window with the option like editbugs,
don't share, canconfirm, etc. Choose the option as per your need.
Step 2) We can run our bug from "Saved Searches".

Go to Saved Searches under


preference Click on the "Run" button

As soon as you run your search from Saved Searches it opens your bug as
shown below
Step 3) In the same window we can also choose specific users with whom we want
to share the search by marking or unmarking the checkbox against the users

You might also like