Test design techniques
Published: 2024-05-01 05:31:23

Test design techniques helps to create better test cases. Testing techniques helps to decrease the amount of test cases to be executed. They assist in identifying test conditions that might otherwise be challenging to identify.
Some of the test design techniques are 
1.	Boundary value analysis
2.	Decision table testing
3.	Use case testing 
4.	LCSAJ ( Linear Code Sequence and Jump ) testing 

## Boundary Value Analysis

Testing at the boundaries between partitions is called Boundary value analysis. It contains the maximum, minimum, typical values, error values, and inside or outside the boundaries. It is generally observed that a many number of errors occur at the boundaries of the defined input values rather than the middle. It provides a range of test cases that exercise bounding values and is also referred to as BVA.
This is Black box testing technique. There are two types of testing technique 
•	White box testing technique-  it verifies the inner working of the software system like its code , infrastructure and its intergration with the external systems 
•	Black box testing technique – it verifies the software’s functionality, checks whether it meets the specified expectation of the client. It checks its performance, security according to client’s expectation.
A boundary value for an invalid partition is an invalid boundary value.
For each variable we check-
o	Minimum value.
o	Just above the minimum.
o	Nominal Value.
o	Just below Max value.
o	Max value.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgrt6c2ge6jwbyvtm09i.jpg)![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9onajs0597kjvkm2k70g.png)
## Decision table testing

Decision Table is also called as Cause-Effect Table. This technique will be used if we have more conditions and corresponding actions. In Decision table technique, we deal with combinations of inputs.  To identify the test cases with decision table, we consider conditions and actions. 
Example 	
Take an example of transferring money online to an account which is already added and approved.
Here the conditions to transfer money are 
•	Account already approved 
•	OTP (one time password) matched 
•	Sufficient money in the account
And the actions performed are 
•	Transfer money 
•	Show a message as insufficient amount 
•	Block the transaction incase of suspicious transaction
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/puz66g382xtedka786r6.png)

## Use case testing 

Use Case Testing is generally a part of black box testing and that helps developers and testers to identify test scenarios that exercise the whole system on each transaction basis from start to finish.
Use case testing is a functional testing technique that helps in identifying and testing scenarios on the whole system or doing start-to-end transactions.
•	It depends upon the user’s actions and the response of the system to the user’s actions.
•	They are user-oriented, not system-oriented.
•	It is a list of actions that will be taken by the user while interacting will the system.
•	It describes the functional requirements of the system.

## LCSAJ ( Linear Code Sequence and Jump ) testing 
LCSAJ stands for “Linear Code Sequence and Jump” testing. It is a white-box testing technique used to assess the coverage of source code within a software program. LCSAJ testing focuses on verifying that all linear code sequences and jumps within the code are exercised by test cases. This technique is commonly used in the context of structural testing or code coverage analysis.
  	It is particularly useful for ensuring thorough code coverage, which is essential for identifying potential defects and vulnerabilities in the code. It helps developers and testers gain confidence that the code has been tested comprehensively and that critical control flow paths have been exercised.
A single LCSAJ has the following three components:
•	Start of the segment, which can be a branch or the start of the program
•	End of the segment, which can be the end of a branch or the end of the program
•	A specific target line
The code executes sequentially from the start of the segment until the end of the segment, and then the control flow breaks the sequential execution and jumps to the target line.