Presentation on theme: "Software Testing Technique. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves."— Presentation transcript:
Software Testing Technique
Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity aimed at evaluating an attribute or capability of a program or system and determining that it meets its required results
Testing Objectives 1. Testing is a process of executing a program with the intent of finding an error. 2. A good test case is one that has high probability of finding an undiscovered error. 3. A successful test is one that uncovers an as-yet undiscovered error. The major testing objective is to design tests that systematically uncover types of errors with minimum time and effort.
Testing Principals All tests should be traceable to customer requirements. Tests should be planned long before testing begins. The Pareto principle applies to software testing. 80% of all errors uncovered during testing will likely be traceable to 20% of all program modules. Testing should begin in the small and progress toward testing in the large. Exhaustive testing is not possible. To be most effective, testing should be conducted by an independent third party.
Software Testability Operability if it works better it can be tested more efficiently Observability what you see is what you test Controllability if software can be controlled better the it is more that testing can be automated and optimized
Software Testability Decomposability controlling the scope of testing allows problems to be isolated quickly and retested intelligently Stability the fewer the changes, the fewer the disruptions to testing Understandability the more information that is known, the smarter the testing can be done
Good Test Attributes A good test has a high probability of finding an error. A good test is not redundant. A good test should be best of breed. A good test should not be too simple or too complex.
Test Strategies Black-box or behavioral testing knowing the specific functions of a software, design tests to demonstrate each function and check its errors. White-box or glass-box testing knowing the internals of a software, design tests to exercise all internals of a software to make sure they operates according to specifications and designs.
Black Box Testing
Test cases are derived from formal specification of the system. Test case selection can be done without any reference to the program design or code. Only tests the functionality and features of the program. Not the internal operation. Advantages Test case selection is done before the implementation of a program. Help in getting the design and coding correct with respect to the specification.
White Box Testing Test cases are derived from the internal design specification or actual code for the program. Advantages Tests the internal details of the code; Checks all paths that a program can execute. Limitations Wait until after designing and coding the program under test in order to select test cases.
White Box Testing Using white-box testing methods, we derive test cases that Guarantee that all independent paths within a module have been exercised at least once. Exercise all logical decisions one their true and false sides. Execute all loops at their boundaries and within their operational bounds. Exercise internal data structures to assure their validity.
White Box Testing White-box test design techniques include: Control flow testing Data flow testing Branch testing Path testing
Basis Path Testing White-box technique usually based on the program flow graph The cyclomatic complexity of the program computed from its flow graph using the formula V(G) = E – N + 2 Determine the basis set of linearly independent paths (the cardinality of this set is the program cyclomatic complexity) Prepare test cases that will force the execution of each path in the basis set.
Deriving Test Cases Step 1 : Using the design or code as a foundation, draw a corresponding flow graph. Step 2: Determine the cyclomatic complexity of the resultant flow graph. Step 3: Determine a basis set of linearly independent paths. For example, path 1: path 2: path 3: path 4: … path 5: Path 6: Step 4: Prepare test cases that will force execution of each path in the basis set.