Test Design Techniques helps you design your test cases more effective to test different areas and test application in different ways. In this post we will take a look at different categories of test design techniques.
Each testing technique falls into one of a number of different categories. Broadly speaking there are two main categories.
- Static Test Design Techniques
- Dynamic Test Design Techniques
Static Test Design Techniques: Static techniques mainly applied to documentation work, such as test case reviews, walkthroughs, Analysis of
Static Test Design Techniques:
Informal Reviews: In Informal Review, Code or document review done informally. It means no formal meetings setup prior to the review also review comments are not documented.
Walkthrough: Walkthough typically done by Programmer where Programmer conduct code walkthrough meeting with other team members and explain them the code written by him/her.
Static Analysis: Analyzing code without executing it. Generally used to find bugs or ensure conformance to coding guidelines. The classic example is a compiler which finds lexical, syntactic and even some semantic mistakes.
Static Analysis further classified into two types
- Control flow
- Data Flow
Technical Reviews: Technical reviews usually performed by Peers who has good technical knowledge and who focus on the content of the document.
Inspections: This is the most formal review type. It is conducted by trained moderators.During inspection, Prepared documents are well checked and review comments are well documented.The defects found are documented in a logging list or issue log system.
Dynamic Test Design Techniques
Statement Coverage: In this Technique, test cases are designed to execute each statement at least once. Statement coverage metric reports what percentage of statements are executed at least once through the test cases.
Decision: It id also called Branch coverage. In this technique, test cases are designed to exercise all the decisions or branches of the code such that each condition in a decision evaluates to all possible outcomes at least once and each decision evaluates to all possible outcomes at least once.It typically covers all switch case statements and error or exception handling code.
Condition/Multiple conditions: In this techniques, program code have single or multiple conditions which gets executed as per the workflow of an application. condition coverage measures the sub-expressions independent of each other while multiple condition coverage reports whether every possible combination of Boolean sub-expressions is exercised by the test cases or not.
Error Guessing:error guessing is a test method in which test cases used to find bugs in programs are established based on experience in prior testing. The scope of test cases usually rely on the software tester involved, who uses past experience and intuition to determine what situations commonly cause software failure, or may cause errors to appear. Typical errors include divide by zero, null pointers, or invalid parameters.
Exploratory Testing: Exploratory testing means to test the application while learning or exploring. tester may not have much knowledge of the application but on the prior experience, tester can evaluate and test the application. now a days ET(exploratory testing) is become more famous.
Equivalence Partitioning: Equivalence Class Partitioning is a black box testing method that divides the input domain of a program into classes of data from which test cases can be derived. It defines a test case that uncovers classes of errors and therefore the total number of gets reduced. now more about it here
Boundary Value Analysis: Boundary Value Analysis is a test design technique which does a selection of test case that exercises bounding values. Boundary Value Analysis is complement to Equivalence Class Partitioning (ECP). BVA selects test cases at boundary/edge of equivalence class. now more about it here
State Transition: Any application or feature in an application where you get a different output for the same input, depending on what has happened before, is a finite state system. simple example will be ATM, depending on your correct, incorrect pin, you will get different screen but you input is remains same i.e. PIN where it is correct or incorrect.
Decision Tables: Decision table based test case design is very effective in addressing functional testing in requirements-based testing. In this technique, number of test cases reduce drastically. In order to write these test cases, we need unambiguous and complete functional description along with conditions in the form of decision table. If functional specification in the form of decision tables does not exist for a given requirements specification, then we need to develop the decision table.
Use Case Testing: This nothing but the business workflow where test cases are based on real world scenario.