Software Quality Testing
Software Quality Testing
○ Bottom-up Integration
■ Modules are integrated from the bottom to top, in this
approach processing required for modules subordinate
to a given level is always available and the needs for
subs is eliminated
■ A bottom-up integration strategy may be implemented
with the following steps:
1. Low-level modules are combined into clusters
that perform a specific software sub function.
2. A driver is written to coordinate test case input
and output.
3. The cluster is tested.
4. Drivers are removed and clusters are combined
moving upward in the program structure.
■ As integration moves upward, the need for separate
test drivers lessens.
■ In fact, if the top two levels of program structure are
integrated top-down, the number of drivers can be
reduced substantially and integration of clusters is
greatly simplified.
33. System Testing
○ Once the entire system has been built then it has to be
tested against the “System Specification” to check if it
delivers the features required. It is still developer focussed,
although specialist developers known as systems testers are
normally employed to do it.
○ In essence System Testing is not about checking the
individual parts of the design, but about checking the system
as a whole. In effect it is one giant component.
○ System testing can involve a number of specialist types of
tests to see if all the functional and non- functional
requirements have been met.
○ In addition to functional requirements these may include the
following types of testing for the non-functional requirements:
■ Performance - Are the performance criteria met?
■ Volume - Can large volumes of information be
handled?
■ Stress - Can peak volumes of information be handled?
■ Documentation - Is the documentation usable for the
system?
■ Robustness - Does the system remain stable under
adverse circumstances?
○ There are many others, the needs for which are dictated by
how the system is supposed to perform
34. Acceptance Testing
○ Acceptance Testing checks the system against the
“Requirements”.
○ It is similar to systems testing in that the whole system is
checked but the important difference is the change in focus.
○ Systems Testing checks that the system that was specified
has been delivered.
○ Acceptance Testing checks that the system delivers what
was requested.
○ The customer and not the developer should always do
acceptance testing.
○ The customer knows what is required from the system to
achieve value in the business and is the only person
qualified to make that judgement.
35. Define Alpha Testing
○ The alpha test conducted at the developer’s site by a
customer software is used in a natural setting with the
developer “Looking over the shoulder” of the user and
recording errors and usage problems. Alpha tests are
conducted in a controlled environment.
36. Define Beta Testing
○ The beta test is conducted at one or more customer sites by
the end user(S) of the software. Unlike alpha testing the
developer is generally not present; therefore the beta test is
"live". Application of the software is in an environment that
cannot be controlled by the developer
37. Define Static Testing
○ Static testing is a non-execution-based testing and carried
through by mostly human effort.
○ In static testing, we test, design, code or any document
through inspection, walkthroughs and reviews.
○ Many studies show that the single most effective defect
reduction process is the classic structural test; the code
inspection or walk-through.
○ Code inspection is like proofreading and developers will be
benefited in identifying the typographical errors, logic errors
and deviations in styles and standards normally followed.
38. Define Dynamic Testing
○ Dynamic testing is an execution based testing technique.
Program must be executed to find the possible errors.
○ Here, the program, module or the entire system is executed
(run) and the output is verified against the expected result.
○ Dynamic execution of tests is based on specifications of the
program, code and methodology.
39. Advantages & Disadvantages of Automatic Testing
○ Advantages:
■ If you have to run a set of tests repeatedly automation
is a huge gain
■ Helps performing "compatibility testing" - testing the
software on different configurations
■ It gives you the ability to run automation scenarios to
perform regressions in a shorter time
■ It gives you the ability to run regressions on a code that
is continuously changing
■ Can be run simultaneously on different machines thus
decreasing testing time
■ Long term costs are reduced
○ Disadvantages:
■ It's more expensive to automate. Initial investments are
bigger than manual testing
■ You cannot automate everything, some tests still have
to be done manually
40. Advantages & Disadvantages of Manual Testing
○ Advantages:
■ If Test Cases have to be run a small number of times
it's more likely to perform manual testing
■ It allows the tester to perform more ad-hoc (random
testing)
■ Short term costs are reduced
■ The more time tester spends testing a module the
greater the odds to find real user bugs
○ Disadvantages:
■ Manual tests can be very time consuming
■ For every release you must rerun the same set of tests
which can be tiresome
41. Explain Testers Workbench
○ A tester's workbench is a virtual environment used to verify
the correctness or soundness of a design or model (e.g., a
software product).
○ In the context of software or firmware or hardware
engineering, a test bench refers to an environment in which
the product under development is tested with the aid of a
collection of testing tools.
○ Often, though not always, the suite of testing tools is
designed specifically for the product under test.