The term specification testing implies conducting tests in accordance with the requirement specifications. A commonly used synonym for Specification based testing is Black-box Testing. Requirements Specifications are basically a detailed description of a system's functionality and constraints, it is a document which acts as a bridge between the developers and the intended customers.
A specification has many forms. Let's understand what does each stand for.
Written Document - It is a textual document consisting of all that needs to be done keeping in mind the constraints as well.
Use Cases - It forms a very strong component in understanding a system's functionality. Lets see the diagram.
Use cases are represented somewhat in this manner. The ovals are the 'system' performing the necessary functions. On the right and left hand side are the users interacting with the system. This diagram clearly outlines the flow of work.
Set of Models - A model is again something that lays down the detailed description of the system but in the form of diagrams, tables, various notations etc. Various modelling techniques are -
Information modelling using E-R diagrams.
Structured analysis and design technique.
UML diagrams for Object Oriented Analysis.
The flowchart simply shows the standard pattern that is followed in the process of carrying out specification based testing. Functional specifications give us the various components required to execute our test case. Inputs that hold any value should be selected.
Input selection can be done on the basis of various techniques. There are seven different techniques for conducting specification based testing. They are listed as follows :
Equivalence Partitioning -Test conditions are grouped into various partitions. Coverage Criteria includes number of coverage partitions or total number of partitions. Basically, in this, the inputs are categorised into valid and invalid ones.
Boundary Value Analysis -Involves defining certain boundary values for the inputs. Values are considered below or above the extreme edges of inputs. For eg. If my test case accepts input between 1 and 1000, then my test values will be 0 and 999 , 2 and 1001. One set of value is just below the input value and another set is above.
Decision tables -These tables consist of conditions and its corresponding actions. It actually evaluates a set of conditions and their resultant action. Example : if conditions c1 and c2 become true, then action a1 takes place.
State Transition Tables -These are the state machines for checking the state of the inputs.
For example, on the trigger of an event, the state of a machine changes from one to another.
All pair testing -It is the identification of various combinations of configurations that need to be tested. The following picture is quite self explanatory.
Classification Tree Method -Uses graphical notations to describe the classes or the test conditions and various combinations handled by the test cases.
Use case Testing -Identifying various scenarios and carrying out testing in the light of those scenarios.
Often more than one techniques are combined to be applied to the test cases, depending on the prevailing conditions.
The entire process of implementing specification based testing is to keep a track of the requirements and ensure that those reflect in the software development. The choice of inputs for implementing test cases should be done wisely based on the technique adopted.