Testing

Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

Six Sigma

Verification and Validation (V&V)


• Verification: “Are we building the product right?”
• Validation: “Are we building the right product?”

• Verification refers to the set of tasks that ensure that


software correctly implements a specific function.

• Validation refers to a different set of tasks that ensure


that the software that has been built is traceable to
customer requirements.
Software Testing Strategy
Software Testing Strategy
• Unit testing begins at the vortex of the spiral and concentrates
on each unit of the software as implemented in source code.

• Integration testing where the focus is on design and the


construction of the software architecture.

• Taking another turn outward on the spiral, encounters


validation testing, where requirements established as part of
requirements modeling are validated against the software that
has been constructed.

• Finally, you arrive at system testing, where the software and


other system elements are tested as a whole.
Software Testing Strategy
Unit Testing
• Unit testing focuses verification effort on the smallest unit of
software design—the software component or module.

• The unit test focuses on the internal processing logic and data
structures within the boundaries of a component.

• This type of testing can be conducted in parallel for multiple


components.

• The purpose is to validate that each unit of the software


performs as designed.

• A unit is the smallest testable part of any software. It usually


has one or a few inputs and usually a single output.
Unit-test considerations
Integration Testing
• Integration testing is a systematic technique for constructing
the software architecture while at the same time conducting
tests to uncover errors associated with interfacing.

• Avoid “big bang” approach - All components are combined in


• advance. The entire program is tested as a whole.
Regression Testing
• Regression testing is the process of testing changes to
computer programs to make sure that the older programming
still works with the new changes.

• Regression tests are performed whenever anything has been


changed in the system, in order to check that no new bugs
have been introduced
Smoke Testing
• Smoke testing came to software testing from a similar
hardware test -where the device passed if it did not catch fire
(or smoked) the first time it was turned on!

• It is designed as a pacing mechanism for time-critical projects,


allowing the software team to assess the project on a frequent
basis.

• commonly used when


product software is developed
Smoke Testing Benefits
• Integration risk is minimized:
– Conducted daily,
– Incompatibilities and other show-stopper errors are
uncovered early
– reducing the likelihood of serious schedule impact when
errors are uncovered.

• The quality of the end product is improved


• Error diagnosis and correction are simplified.
• Progress is easier to assess
• Differences between
– Smoke testing and Regression testing
– Unit testing and Integration testing
– Integration testing and Regression testing
Alpha and Beta Testing
• It is virtually impossible for a software developer to
foresee how the customer will really use a program.

• When custom software is built for one customer, a series


of acceptance tests are conducted to enable the customer
to validate all requirements.

• In fact, acceptance testing can be conducted over a period


of weeks or months, thereby uncovering cumulative
errors that might degrade the system over time.
Alpha and Beta Testing
• If software is developed as a product to be used by
many customers, it is impractical to perform formal
acceptance tests with each one.

• Most software product builders use a process called


alpha and beta testing to uncover errors that only the
end user seems able to find.
Alpha and Beta Testing
• The alpha test is conducted at the developer’s site by
a representative group of end users.

• The software is used in a natural setting with the


developer “looking over the shoulder” of the users
and recording errors and usage problems.

• Alpha tests are conducted in a controlled


environment.
Alpha and Beta Testing
• The beta test is conducted at one or more end-user
sites.

• Unlike alpha testing, the developer generally is not


present.

• Therefore, the beta test is a “live” application of the


software in an environment that cannot be controlled
by the developer. customer base.
Alpha and Beta Testing
• The customer records all problems (real or imagined)
that are encountered during beta testing and reports
these to the developer at regular intervals.

• As a result of problems reported during beta tests,


you make modifications and then prepare for release
of the software product to the entire customer base.
Software Testing Methods
Any software product can be tested in one of two ways:
-Black-box testing
-White-box testing
Black-box testing
• Black-box testing is conducted at the software interface

• A black-box test examines some fundamental aspect of


a system with little regard for the internal logical
structure of the software.

• Black-box tests are used to demonstrate that software


functions are operational, that input is properly
accepted and output is correctly produced, and that the
integrity of external information (e.g., a database) is
maintained.
Black-box testing

• Black-box testing, also called behavioral


testing, focuses on the functional requirements
of the software.

• Black box testing enables the software


engineer to derive sets of input conditions that
will fully exercise all functional requirements
for a program.
Black-box testing
• Black-box testing is not an alternative to white -box
techniques. Rather, it is a complementary approach that
is likely to uncover a different class of errors than
white-box methods.

• Black-box testing attempts to find errors in the


following categories:
(1) incorrect or missing functions,
(2) interface errors,
(3) errors in external data base access,
(4) behavior or performance errors, and
(5) initialization and termination errors.
Black-box testing
• Advantages and disadvantages:

• The black box tester has no "bonds" with the code, and a
tester's perception is very simple: a code must have bugs.
Using the principle, black box testers find bugs where
programmers do not.

• But, on the other hand, because the tester doesn't know how
the software(being tested) was actually constructed. As a
result, there are situations when

(1) A tester writes many test cases to check something that


could have been tested by only one test case, and/or

(2) Some parts of the back-end are not tested at all.


White-box testing
• White-box testing of software is predicated on close
examination of procedural detail.

• Logical paths through the software are tested by providing


test cases that exercise specific sets of conditions and/or
loops.

• white -box testing would lead to "100 percent correct


programs."

• All we need do is define all logical paths, develop test


cases to exercise them, and evaluate results.
White-box testing
Using white-box testing methods, the software
engineer can derive test cases that

• guarantee that all independent paths within a module


have been exercised at least once

• exercise all logical decisions on their true and false


sides

• execute all loops at their boundaries and within their


operational bounds, and

• exercise internal data structures to ensure their validity.

You might also like