Professional Documents
Culture Documents
SET Pract
SET Pract
PRACTICAL
Anmoldeep Singh
Class: B.Tech CSE 6th Semester
Roll no.: 17032001550
Overview
Software testing is a process of verification and Validation. These two
terms have entirely different dimensions to them. Verification is to ensure
that product quality is maintained. The product is free from defects,
whereas Validation is more about market research and acceptance. For
instance, the primary reason Google Lens failed was that Google lens was
a software integrated with many functionalities and was heavy on quality.
But, due to privacy concerns, many governments banned the product.
Hence, Google Lens was a verified product but didn't pass the validation
criteria.
Scope
This article will discuss the two important aspects of testing: verification and
Validation. Verification discusses building the product right, vs. Validation is
more about if the product is right. Verification is about technical challenges,
whereas Validation is about business aspects.
Introduction
Verification comes from the term verify. The main objective is to ensure
everyone is on the same page—developer, tester, and client. Everyone
knows the requirements, development steps, and the final product goal.
Validation is finding the supreme truth. That is finding if the process is right
and the approach is correct. That Validation comes from market research
and user acceptance.
Verification Testing
1. Verification testing is involved in the requirement gathering phase,
product planning, and product development
2. Verification testing ensures the process is going correctly.
Requirements are correct, and development is going in accordance.
3. Verification helps to find the bugs and issues at the earlier stage of
development. Verification testing is cheaper.
4. The quality assurance team does verification testing.
Validation Testing
1. Validation testing is done in the testing phase of SDLC. Validation is
also done at the maintenance stage.
2. Validation testing is done to find the correct way of a process. And
also ensuring that the process chosen is the best.
3. Validation is a costlier affair. If process A is used, after that, process
B is found to be better. The validation testing took the duration of
finding the better approach.
4. The product team does validation testing.
Conclusion
1. Verification testing ensures a bug-free product reaches the market.
2. Validation testing is done to ensure the public receives the product
well.
3. A well-developed and tester product can fail if the customer doesn't
accept the functionalities. And a validated product would only work if
it is a good product with no bugs.
4. Verification testing is cheaper compared to validation testing.
Boundary Value Analysis
We have seen that there are high chances of finding the defects at the
boundaries of a partition (E.g., A developer using >10 instead of >= 10 for a
condition). Equivalence partitioning alone was not sufficient to catch such
defects.
Boundary value analysis can perform at all test levels, and its primarily
used for a range of numbers, dates, and time.
Now that we have got some idea on boundary value analysis let's
understand how to derive test conditions using this technique. We will refer
to the same example of gym form where we need to enter Age.
The first step of Boundary value analysis is to create Equivalence
Partitioning, which would look like below.
Now Concentrate on the Valid Partition, which ranges from 16-60. We have
a 3 step approach to identify boundaries:
It's straightforward to see that valid boundary conditions fall under Valid
partition class, and invalid boundary conditions fall under Invalid partition
class.
Can you figure out why we have not used 16.1, 15.9, 59.9, and 60.1 as the
boundary increment and decrement values? It's a concept that has an
insufficient explanation in most of the articles. Therefore, let's take another
example to explain this. Assume that you are entering your weight on a
website. Based on your weight and height, the site will tell you the Body
Mass Index (BMI). You can enter values from 30 to 150 kg in the weight
input field. The weight input field only allows natural numbers i.e., positive
integers!
In this case, if you will create the boundaries using the same method - you
will end up with
Now consider the same scenario, but the weight input field allows decimal
numbers up to 1 decimal place. In this case, the boundary conditions will
come as:
Pitfalls of BVA
Boundary value assume that the application will not allow you to enter any
other characters or values. Such characters, like @ or negative values or
even alphabets, will not be allowed to enter. This assumption is, however,
not valid for all applications, and it's essential to test these out before we
can say that the field value is completely working.
Apart from that, we can have situations where the input value depends on
the decision of another value. E.g., If the Gym form has another field Male
and Female, and the age limit will vary according to that selection.
Boundary value alone cannot handle such variations, and this leads us to
another black box technique called Decision Table Testing. We will discuss
that in detail in our next article. Stay tuned!
The Debugging Process
Debugging Strategies
Regardless of the approach that is taken, debugging has one overriding
objective—to find and correct the cause of a software error or defect. The
objective is realized by a combination of systematic evaluation, intuition,
and luck. In general, three debugging strategies have been proposed: brute
force, backtracking, and cause elimination
The brute force category of debugging is probably the most common and
least efficient method for isolating the cause of a software error. Memory
dumps are taken, run-time traces are invoked, and the program is loaded
with output statements. You hope that somewhere in the morass of
information that is produced you’ll find a clue that can lead us to the cause
of an error.
Backtracking is a fairly common debugging approach that can be used
successfully in small programs. Beginning at the site where a symptom has
been uncovered, the source code is traced backward (manually) until the
cause is found.
Automated Debugging
Each of these debugging approaches can be supplemented with debugging
tools that can provide you with semi-automated support as debugging
strategies are attempted. A wide variety of debugging compilers, dynamic
debugging aids (“tracers”), automatic test-case generators, and cross-
reference mapping tools are available. However, tools are not a substitute
for careful evaluation based on a complete design model and clear source
code.
2. What “next bug” might be introduced by the fix I'm about to make?
3. What could we have done to prevent this bug in the first place?
Selenium Tool
Selenium Tools
FirefoxDriver
InternetExplorerDriver
ChromeDriver
SafariDriver
OperaDriver
AndroidDriver
IPhoneDriver
HTMLUnitDriver