You are on page 1of 19

Software Testing

Presenter : Ambili P K

Sources of Problems

Requirements Definition: Erroneous, incomplete, inconsistent requirements. Design: Fundamental design flaws in the software. Implementation: Mistakes in chip fabrication, wiring, programming faults, malicious code. Support Systems: Poor programming languages, faulty compilers and debuggers, misleading development tools.

Sources of Problems (Contd)

Inadequate Testing of Software: Incomplete testing, poor verification, mistakes in debugging. Evolution: Sloppy redevelopment or maintenance, introduction of new flaws in attempts to fix old flaws, incremental escalation to inordinate complexity.

How to define Software Testing Principles


Testing The execution of a program to find its faults Verification The process of proving the programs correctness. Validation The process of finding errors by executing the program in a real environment Debugging Diagnosing the error and correct it

Principles of Testing

Testing must be traceable to the requirements. Testing should be planned for early in a software process. Testing efforts should be based on data about the errors detected. Testing should be incremental. Testing should focus on exceptions. Debugging should be planned for separately so that there is enough time and budget to understand and resolve bugs.

What are the Types of Software Tests


Unit Testing (White Box) Integration Testing Function Testing (Black Box) Regression Testing System Test Acceptance and Installation Tests

Unit Testing (White Box)


Individual components are tested. It is a path test. To focus on a relatively small segment of code and aim to exercise a high percentage of the internal path Disadvantage: the tester may be biased by previous experience. And the test value may not cover all possible values.

White-box techniques: These are based on knowledge of the program structure and are used to check for logical mistakes. Black-box techniques: These are used to test software as a whole and do not depend on the internal design and structure of the software.

Integration Testing

Top-down Integration Test Bottom-up Integration Test

Top-down Integration Test


The control program is tested first. Modules are integrated one at a time. Emphasize on interface testing Advantages: No test drivers needed Interface errors are discovered early Modular features aid debugging Disadvantages: Errors in critical modules at low levels are found late.

Top-down Testing

T1 A T2 B

T1

T2

T3

T3 C T4

Bottom-up Integration Test

Allow early testing aimed at proving feasibility Emphasize on module functionality and performance Advantages: Errors in critical modules are found early Disadvantages: Test drivers are needed Interface errors are discovered late

Bottom-up testing

Test Drivers

Test Drivers

Test Drivers

Level N
Test Drivers

Level N
Test Drivers Level N-1

Level N

Level N-1

Function Testing (Black Box)


1.
2.

Designed to exercise its external specifications Testers not biased by knowledge of the programs design. Disadvantages: The need for explicitly stated requirements Only cover a small portion of the possible test conditions.

Regression Testing

1.

Test the effects of the newly introduced changes on all the previously integrated code. The common strategy is to accumulate a comprehensive regression bucket but also to define a subset. The full bucket is run only occasionally, but the subset is run against every spin. Disadvantages: To decide how much of a subset to use and which tests to select.

What is Test Planning


1. 2. 3.

4.

Define the functions, roles and methods for all test phases. Test planning usually start during the requirements phase. Major test plan elements are: Objectives for each test phase Schedules and responsibilities for each test activity Availability of tools, facilities and test libraries. Set the criteria for test completion

Test Execution & Reporting


Testing should be treated like an experiment. Testing require that all anomalous behavior be noted and investigated. Big companies keep a special library with all copies of test reports, incident forms, and test plans

Real-Time Testing

1.

2. 3. 4.

Real-Time testing is necessary because the deployment system is usually more complicate than development system Rules apply for testing real time system Evaluate possible deadlocks, thrashing to special timing conditions Use tests to simulate hardware faults. Use hardware simulation to stress the software design. Design ways to simulate modules missing in the development system.

Limitations of Software Testing


Testing cannot be exhaustive. Selective testing cannot detect all errors. Testing itself may have bugs. Testing cannot prevent errors; it only detects them. Testing is not as cost-effective as other quality filters such as formal technical reviews because it comes late in the cycle when errors are more in number and costlier to rectify.

You might also like