Definition: A family of test strategies based on selecting paths through the program's control flow to explore sequences of events related to the status of variables or data objects.
Focus: On the points at which variables receive values and the points at which these values are used.
Data Flow Testing Levels
Static data flow testing
Identify potential defects, commonly known as data flow anomaly.
Analyze source code.
Do not execute code.
Dynamic data flow testing
Involves actual program execution.
Bears similarity with control flow testing.
Identify paths to execute them.
Paths are identified based on data flow testing criteria.
Advantages of Data Flow Testing
Helps to pinpoint:
A variable that is declared but never used within the program.
A variable that is used but never declared.
A variable that is defined multiple times before it is used.
Deallocating a variable before it is used.
Conditional Coverage
Definition: Reveals how the variables or subexpressions in the conditional statement are evaluated. Expressions with logical operands are only considered.
Boolean operations: Expressions may have Boolean operations like AND, OR, XOR, which indicate total possibilities.
Sensitivity: Offers better sensitivity to the control flow than decision coverage.
Guarantee: Does not give a guarantee about full decision coverage.
Example
Expression: IF (x < y) AND (a>b) THEN
Possible combinations:
TT
FF
TF
FT
Experienced-based Testing Techniques
Exploratory Testing
Error Guessing
Error Guessing
Requirement: Experienced and good testers are required to recognize the defects in the component.
How it works: Experienced testers can find weaknesses of a system, making this approach effective after more formal techniques.
Assumption: Assumptions and guesses are constructed by experienced testers, saving time.
Success: Absolutely dependent on the skills and experience of the tester.
Exploratory Testing
Purpose: Examines or explores the software to find out if it works or not.
Process: Testers continuously make decisions about what to test next and where to spend time.
Usefulness: Useful when there is limited time and poor specifications are available.
Involvement: Testers are involved in minimum planning and maximum test execution.
Objective: Checks formal test processes (planning, test design, test execution, etc.) to ensure that most serious defects are found.
Dynamic Test: Choice of Test Design Techniques
Basis: Which testing technique is best for a particular project is based on the number of internal and external factors.
Internal Factors
The model used in the development of the system
Tester's knowledge and experience.
Experience with a similar previous system
Objectives of the test
Initial documentation of the content and its style.
Use of life cycle model
External Factors
Risk Assessment
If the risk is high, then it requires more detailed and formal testing. Commercial risk can be affected by quality issue hence the exploratory testing is suitable.
The requirements of customer and commitments in the contract.
The type of system used
The type of system i.e embedded, graphical, financial etc. will affect the choice of techniques. For example: The financial application consists of a lot of calculations. In this case, boundary value analysis is beneficial.
Regulatory requirements
Some industries have regulatory standards or guidelines that guide the testing techniques to be used.
Time and budget of the project
The available time always affects the choice of testing techniques. If more time is available then we can select more techniques and if limited time is available then find the most important defects only.