In this post, I will describe different types of Static and Dynamic Software testing techniques. Static testing techniques include Walkthrough, Technical Reviews, Inspection and Static Code Analysis. Dynamic testing techniques include Equivalence partitioning, Boundary Value Analysis, Error guessing, State Transition Testing and Decision table.
Static Testing techniques are as mentioned below:
1. Walkthrough: In software engineering, a walkthrough or walk-through is a form of software peer review “in which a designer or programmer leads members of the development team and other interested parties through a software product, and the participants ask questions and make comments about possible errors, violation of development standards, and other problems.
2. Technical Reviews: Technical Review is a formal review meeting for identifying and resolving defects. Technical review is conducted by team of peers It is led by trained moderators but also can be led by a technical expert. Defects found during review are found by the participants. Goal of technical review is to technical concepts are used at early stages. Consistency in the use and representation of technical concepts and inform participants about technical concepts of the documents.
3. Inspection: It is one of the most common formal review practice. Its a peer review with an intention to find defects using a define process. Inspection is led by trained moderator. Defects found during inspection are logged as bugs. A formal is also followed up moderator. Goal of inspection is to remove defects efficiently and are early as possible. Improve the quality of product. It helps in prevention of similar defects.
4. Static Code Analysis: Static program analysis is the analysis of computer software that is performed without actually executing programs (analysis performed on executing programs is known as dynamic analysis). In most cases the analysis is performed on some version of the source code, and in the other cases, some form of the object code.
Dynamic testing techniques are as mentioned below:
1. Equivalence Partitioning: Equivalence Partitioning is software testing technique in which input data is divided in equivalence class. In this method test data is partitioned from which test cases can be derived. Test case prepared should cover each partition at least once. Classes are identified such that each member of the class causes the same kind of processing and same output will be shown.
Example of implementation of equivalence partitioning technique will be:
Program for adding two digit values. According to equivalence partitioning method for positive testing will be any value between 10 to 99,and for invalid values any value less than 9 and greater than 100, and value less than -10 and greater -99, greater than -9 and less than-100.
Equivalence partitioning should be used because it reduces the number of test cases and it is always good to get maximum error with minimum number of test cases.
2. Boundary Value Analysis: Boundary Value Analysis is a software testing technique in which test cases are designed to such that boundary values are considered so that efforts on creating test cases can be reduced. This method is used with a perception that a more errors occurs at boundary values. In this method input data is the values at the extreme ends or limits which might cause more errors in system. Values can also be the smallest value in either side of limits. Boundary values analysis is next step of equivalence partitioning method.
Example for implementation of boundary value analysis method will be:
Program for adding two digit values. According to boundary value analysis set of values could be 10 and 99, 9 and 100, -10 and -99, -9 and -100.Boundary value analysis is useful for negative testing.
The purpose of boundary value analysis is to concentrate the testing effort by reducing the total number of test cases to specific number of test cases which will be executed on software to be tested.
3. Error guessing: Error guessing is testing technique which used for creating test cases used to find bugs. Error guessing technique is useful if the resource that will be creating the test cases will be having prior knowledge about testing or about the business or about the application. In error guessing tester uses intuition, instincts to find out in what all situation a software might fail. It is an ad hoc method to identify bugs depending upon the tester’s intuitiveness and gut feeling. There are no specific tools and software available. Error guessing has no explicit rules for testing.
4. State Transition Testing: State Transition is testing technique which is use when tester has to verify state of the system is changed as per the input conditions. This testing technique is used when the series of events are based upon the conditions associated which are applied those events. This technique is used for the where different state transitions are involved
5. Decision table: When we use equivalence portioning a boundary value analysis we might get a wide variety of inputs for testing. We need to make smart decision to eliminate the repetition of the inputs. A decision table is a smart way to deal with wide variety of inputs and its output. Decision table is also called as cause-effect table. Reason to call cause-effect table is an associated logical diagramming technique called ’cause-effect graphing.
Decision table is an ideal to kick off testing of more complex business scenarios. As I have mentioned before decision table are very much helpful in test design technique – it helps testers to search the effects of combinations of different inputs and other software states that must correctly implement business rules. Testing combinations can be a challenge, as the number of combinations can often be huge. It assists in development process with developer to do a better job. Verifying all combination might be unrealistic or unfeasible. We have to be happy with testing just a small subset of combinations but making the option of which combinations to test and which to leave out is also significant. If we do not have an efficient way of selecting combinations, an arbitrary subset will be used and this may well result in an ineffective test effort. A decision table is basically an outstanding technique used in both testing and requirements management.