Verification and Validation
Verification: Verification
is to determine the right thing, which involves the testing the implementation
of right process. Example: Are we building the product right?
Verification
is Static. This means in Verification the s/w is inspected by looking into the
code going line by line or function by function. In
verification code is reviewed, location of the defect can be found.
Verification
Techniques: There are
many different verification techniques but they all basically fall into 2 major
categories – dynamic testing and static testing.
Dynamic
testing – Testing that involves the execution of a system or component.
Basically, a number of test cases are chosen where each test case consists of
test data. These input test cases are used to determine output test results.
Dynamic testing can be further divided into three categories – functional
testing, structural testing, and random testing.
Structural
testing – Testing that has full knowledge of the implementation of the system
and is an example of white-box testing. It uses the information from the
internal structure of a system to devise tests to check the operation of
individual components. Functional and structural testing both chooses test
cases that investigate a particular characteristic of the system.
Functional testing
– Testing that involves identifying and testing all the functions of the system
as defined within the requirements. This form of testing is an example of
black-box testing since it involves no knowledge of the implementation of the
system.
Random testing
– Testing that freely chooses test cases among the set of all possible test
cases. The use of randomly determined inputs can detect faults that go
undetected by other systematic testing techniques. Exhaustive testing, where
the input test cases consists of every possible set of input values, is a form
of random testing. Although exhaustive testing performed at every stage in the
life cycle results in a complete verification of the system, it is
realistically impossible to accomplish.
Static
testing – Testing that does not involve the operation of the system or
component. Some of these techniques are performed manually while others are
automated. Static testing can be further divided into 2 categories – techniques
that analyze consistency and techniques that measure some program property.
Measurement
techniques – Techniques that measure properties such as error proneness,
understandability, and well-structuredness.
Validation –
is to perform the things in right direction, like checking the developed software
adheres the requirements of the client. Ex: right product was built.Validation
is Dynamic. In Validation, code is executed and s/w is run to find defects.In
Validation location of the defect can’t be found.
Validation
Techniques: There are
also numerous validation techniques, including formal methods, fault injection,
and dependability analysis.
Formal
methods – Formal methods is not only a verification technique but also a
validation technique. Formal methods mean the use of mathematical and logical
techniques to express, investigate, and analyze the specification, design,
documentation, and behavior of both hardware and software.
Fault
injection – Fault injection is the intentional activation of faults by either
hardware or software means to observe the system operation under fault
conditions.
Software
fault injection – Errors are injected into the memory of the computer by
software techniques. Software fault injection is basically a simulation of
hardware fault injection.
Risk
analysis – Takes hazard analysis further by identifying the possible
consequences of each hazard and their probability of occurring.
Hardware
fault injection – Can also be called physical fault injection because we are
actually injecting faults into the physical hardware.
Comments
Post a Comment