Unit 2 STM
Unit 2 STM
Unit – II
Dynamic Testing I: Black Box testing techniques: Boundary Value Analysis, Equivalence class
Testing, State Table based testing, Decision table based testing, Cause-Effect Graphing based testing,
Error guessing
V&V activities can be best understood with the help of phases of SDLC activities:
High Level Design or Functional Design: A functional design assures that each modular part of a
device has only one responsibility and performs that responsibility with the minimum of side effects
on other parts. Functionally designed modules tend to have low coupling. High-level design (HLD)
explains the architecture that would be used for developing a software product. The architecture
diagram provides an overview of an entire system, identifying the main components that would be
developed for the product and their interfaces. The HLD uses possibly nontechnical to mildly
technical terms that should be understandable to the administrators of the system.
Verification: Verification is done at the starting of the development process. It includes reviews
and meetings, walkthroughs, inspection, etc. to evaluate documents, plans, code, requirements and
specifications. It answers the questions like:
--Am I building the product right?
--Am I accessing the data right (in the right place; in the right way).
--It is a Low level activity
According to the Capability Maturity Model(CMMI-SW v1.1) we can also define verification as
“the process of evaluating software to determine whether the products of a given development
phase satisfy the conditions imposed at the start of that phase. [IEEE-STD-610]”.
Advantages of Software Verification :
--Verification helps in lowering down the count of the defect in the later stages of development
. -- Verifying the product at the starting phase of the development will help in understanding the
product in a better way.
An SRS is verifiable if, and only if, every requirement stated therein is verifiable. A requirement
is verifiable if, and only if, there exists some finite cost-effective process with which a person or
machine can check that the software product meets the requirement. In general any ambiguous
requirement is not verifiable. Nonverifiable requirements include statements such as “works
well", “good human interface", and “shall usually happen". These requirements cannot be
verified because it is impossible to define the terms “good", “well", or “usually". An example of a
verifiable statement is “Output of the program shall be produced within 20 s of event x 60%
of the time; and shall be produced within 30 s of event x 100% of the time". This statement
can be verified because it uses concrete terms and measurable quantities. If a method cannot
be devised to determine whether the software meets a particular requirement, then that
requirement should be removed or revised. Following are the points against which every
requirement in SRS should be verified.
Correctness: An SRS is correct if, and only if, every requirement stated therein is one
that the software shall meet. However, generally speaking there is no tool or procedure
to ensure correctness. That’s why the SRS should be compared to superior documents
(including the System Requirements Specification, if exists) during a review process in
order to filter out possible contradictions and inconsistencies. Reviews should also be
used to get a feedback from the customer side on whether the SRS correctly reflects the
actual needs. This process can be made easier and less error-prone by traceability.
Unambiguity. An SRS is unambiguous if, and only if, every requirement stated therein has only one
interpretation. As a minimum, this requires that each characteristic of the final product be described
using a single unique term. In cases where a term used in a particular context could have multiple
meanings, the term should be included in a glossary where its meaning is made more specific.
Completeness. An SRS is complete if, and only if, it includes the following elements:
--All significant requirements imposed by a system specification should be
acknowledged and treated.
--Full labels and references to all figures, tables, and diagrams in the SRS and definition
of all terms and units of measure.
However, completeness is very hard to achieve, especially when talking about business
systems where the requirements always change and new requirements raise.
Consistency: Consistency refers to internal consistency. If an SRS does not agree with some higher-
level document, such as a system requirements specification, then it is a violation of correctness.
An SRS is internally consistent if, and only if, no subset of individual requirements described in it
conflict. The three types of likely conflicts in an SRS are as follows:
--The specified characteristics of real-world objects may conflict. For example, the
format of an output report may be described in one requirement as tabular but in
another as textual or one requirement may state that all lights shall be green while
another may state that all lights shall be blue.
--There may be logical or temporal conflict between two specified actions. For example,
one requirement may specify that the program will add two inputs and another may
specify that the program will multiply them or one requirement may state that “A" must
always follow “B", while another may require that “A and B" occur simultaneously.
--Two or more requirements may describe the same real-world object but use different
terms for that object. For example, a program’s request for a user input may be called a
“prompt" in one requirement and a “cue" in another. The use of standard terminology and
definitions promotes consistency.
Modifiability or Updation: An SRS is modifiable if, and only if, its structure and style are
such that any changes to the requirements can be made easily, completely, and consistently
while retaining the structure and style. Modifiability generally requires an SRS to
a. Have a coherent and easy-to-use organization with a table of contents, an index,
and explicit crossreferencing;
b. Not be redundant (i.e., the same requirement should not appear in more than one
place in the SRS);
c. Express each requirement separately, rather than intermixed with other requirements.
Traceability:An SRS is traceable if the origin of each of its requirements is clear and if it
facilitates the referencing of each requirement in future development or enhancement
documentation. The following two types of traceability are recommended:
a. Backward traceability (i.e., to previous stages of development). This depends
upon each requirement explicitly referencing its source in earlier documents.
b. Forward traceability (i.e., to all documents spawned by the SRS). This depends
upon each requirement in the SRS having a unique name or reference number.
Like the verification of requirements, the tester is responsible for two parallel activities in this place
as well:
1. The tester verifies the high level design. Since the system has been decomposed in a number of
sub-system or componens, the tester should verify the functionality of these components and their
interfaces. Every requirement in SRS should map the design.
2.The tester also prepares a Function Test Plan which is based on the SRS. This plan will be
referenced at the time of Fucntion Testing.
--Incorrect initialization
--Precision Inaccuracy
--Incorrect symbolic representation of an
expression --Different data types
--Improper or nonexistent loop termination
--Failure to exit.
Validation:
Validationis a set of activities that ensures the software under consideration has been
built right and is traceable to customer requirements. The reason for doing validation are:
--Developing tests that will determine whether the product satisfies the users’
requirements, as stated in the requirement specification.
--Developing tests that will determine whether the product’s actual behavior matches
the desired behavior, as described in the functional design specification.
--The bugs, which are still existing in the software after coding need to be uncovered.
--Last chance to discover the bugs otherwise these bugs will move to the final product
released to the customer.
--Validation enhances the quality of software.
Validation Activities:
The Validation activities are divided into Validation Test Plan and Validaion Test
Execution which are described as follows:
Validation Test Plan: It starts as soon as the first output of SDLC i.e the SRS is
prepared. In every phase, the tester performs two parallel activities - Verification and
Validation. For preparing a vlaidation test plan, testers must follow the following points: --
Testers must understand the current SDLC phase.
--Testers must study the relevant documents in the corresponding SDLC phase.
--On the basis of the understanding of SDLC phase and related documents, testers
must prpepare the related test plans which are used at the time of validation testing.
The following test plans have been recognized which the testers have already
prpepared witht he incremental progress of SDLC phases:
Acceptance Test Plan: The test plan document describes a series of operations to perform on
the software. Whenever there is a visible change in the state of the software (new window,
change in the display, etc.) the test plan document asks the testers to observe the changes, and
verify that they are as expected, with the expected behavior described precisely in the test plan.
System Test Plan: This plan i s prepared to verify the objectives specified in the SRS.
The plan is used at the time of System Testing.
Fuction Test Plan: The functional test plan is not testing the underlying implementation of
the application components. It is testing the application from the customer's viewpoint. The
functional test is concerned with how the application is meeting business requirements.
Integration Test Plan: Integration test planning is carried out during the design stage.
An integration test plan is a collection of integration tests that focus on functionality.
Unit Test Plan: This document describes the Test Plan in other words how the tests will
be carried out. This will typically include the list of things to be Tested, Roles and
Responsibilities, prerequisites to begin Testing, Test Environment, Assumptions, what to
do after a test is successfully carried out, what to do if test fails, Glossary and so on.
Validaion Test Execution:
Unit Validation Testing: A unit is the smallest testable part of an application like functions,
classes, procedures, interfaces. Unit testing is a method by which individual units of source
code are tested to determine if they are fit for use.
∙Unit tests are basically written and executed by software developers to make sure that
code meets its design and requirements and behaves as expected.
∙The goal of unit testing is to segregate each part of the program and test that the
individual parts are working correctly.
∙This means that for any function or procedure when a set of inputs are given then it should
return the proper values. It should handle the failures gracefully during the course of
execution when any invalid input is given.
∙A unit test provides a written contract that the piece of code must assure. Hence it
has several benefits.
Functional Testing: Functional testing verifies that each function of the software application
operates in conformance with the requirement specification. This testing mainly involves
black box testing and it is not concerned about the source code of the application. Each and
every functionality of the system is tested by providing appropriate input, verifying the output
and comparing the actual results with the expected results. This testing involves checking of
User Interface, APIs, Database, security, client/ server applications and functionality of the
Application Under Test. The testing can be done either manually or using automation
System Testing: System testing is most often the final test to verify that the system to
be delivered meets the specification and its purpose. System testing is carried out by
specialists testers or independent testers. System testing should investigate both
functional and non-functional requirements of the testing.
Acceptance testing: After the system test has corrected all or most defects, the system will be
delivered to the user or customer for acceptance testing. Acceptance testing is basically done by the
user or customer although other stakeholders may be involved as well. The goal of acceptance
testing is to establish confidence in the system. Acceptance testing is most often
focused on a validation type testing.
Dynamic Testing I
Black Box testing techniques: Boundary Value Analysis, Equivalence class Testing, State Table
based testing, Decision table based testing, Cause-Effect Graphing based testing, Error guessing
Example 1:
Anom, Bmin
Anom, Bmin+
Anom, Bmax
Anom, Bmax-
Amin, Bnom
Amin+, Bnom
Amax, Bnom
Amax-, Bnom
Anom, Bnom
Amax+, Bnom
Amin-, Bnom
Anom, Bmax+
Anom, Bmin-
Worst Case Testing Method:
We mcan again extend the concept of BVC by assuming more than one variable on the
boundary. It is called Worst Case testing method:
Example 2:
A program reads an integer number within the range [1,100] and determines whether the
number is a prime number or not. Design all test cases for this program using BVC, Robust
testing and worst-case testing methods:
In equivalence-partitioning technique we need to test only one condition from each partition. This is
because we are assuming that all the conditions in one partition will be treated in the same way by
the software. If one condition in a partition works, we assume all of the conditions in that partition
will work, and so there is little point in testing any of these others. Similarly, if one of the conditions
in a partition does not work, then we assume that none of the conditions in that partition will work
so again there is little point in testing any more in that partition.
Different equivalent classes are formed by grouping inputs for which the behaviour pattern
of the module is similar. The rationale for forming Equivalence classes like this is the
assumption that if the specifications requiress exactly the same behaviour for each
element in a class of values. Two types of classes can always be identified:
--Valid Equivalence class: The classes consider valid inputs to the programs.
--Invalid Equivalence class: The other class contains invalid inputs that will
generate error conditions or unexpected behaviour of the program.
Identifying the Test Cases:
--Assign a unique identification number to each Equivalence class.
--Write a new test case covering as many of the uncovered valid Equivalence class as
possible, until all valid Equivalence classes have been covered by test cases.
--Write a test case that covers one, and only one, of the uncovered invalid Equivalence
classes. until all invalid Equivalence classes have been covered by test case.
Example: A program reads three numbers A, B and C with range [1,50] and prints largest
number. Design all test cases for this program using equivalence class testing technique.
Example test cases are:
I1 = {<A,B,C> : 1 ≤ A ≤ 50}
I2 = {<A,B,C> : 1 ≤ B ≤ 50}
I3 = {<A,B,C> : 1 ≤ C ≤ 50}
I4 = {<A,B,C> : A < 1}
I5 = {<A,B,C> : A > 50}
I6 = {<A,B,C> : B < 1}
I7 = {<A,B,C> : B > 50}
I8 = {<A,B,C> : C < 1}
I9 = {<A,B,C> : C > 5
State Table:
State graphs of larger systems may not be easy to understand. Therefore, state graphs are
converted into tabular form for convinience sake, which are known as state tables. State table
also specify, inputs, transitions and outputs. The following conventions are used for state table:
--Each row of the table corresponds to an input condition.
--Each column corresponds to an input condition.
--The box at the intersection of a row and a column specifies the next state (transition)
and the output.
Identifiaction of causes and effects: A cause is a distinct input condition identified in the problem.
Transformation of specification into a cause-effect graph: Based on the analysis of the specification it
is transformed into a boolean graph linking the causes and effetcs. This is the cause-effect graph.
Converison into decision table: The cause-effect graph obtained is converted into a
limitedentry decision table by verifying state conditions in the graph.
Deriving test cases: The columns in the decision table are converted into tst cases.
Example:
A program has been designed for the determination of nature of roots of a quadratic equation.
Quadratic equation takes three input values from the range [0,100]. Design all test cases using
Cause-Effect graphing technique.
C1: a ≠ 0
C2: b = 0
C3: c = 0
C4: D > 0 where D is b2 – 4 * a * c
C5: D < 0
C6: D = 0
C7: a = b = c
C8: a = c = b/2
E1: Not a quadratic equation
E2: Real Roots
E3: Imaginary Roots
E4: Equal Roots