Software test design refers to the process of designing different tests that validate the eligibility of a software before its release in the market. The process of test designing assumes high priority, as a poorly designed test will lead to improper testing of an application. This, in turn, leads to failure in identifying defects and consequently, an application containing errors may be released.
While a developer has to ensure that the software meets the specifications, a business owner has to ensure that it meets the business’ operational needs. To satisfy these individual goals and the main aim of the software development process, that is a high-quality output, one will have to plan, design, and conduct tests in different environments. To ensure that the testing strategy chalked out is an effective one, following the below-mentioned steps is essential:
- Gathering and understanding the requirements of the users
- Deriving all important business scenarios
- Designing test scenarios for all the important business scenarios
- Assigning all the designed test scenarios to different test cases
Once done with all the above-mentioned steps, one will have to choose a test design technique as per the requirements of their business. Some of the most common design techniques are listed below.
Software Test Design Techniques
There are various types of designing techniques, each of which is suitable for identifying a particular type of error. Hence, the challenge lies in selecting the right set of relevant test design techniques for the particular application. Software test design techniques can be broadly classified into two major categories: static and dynamic techniques.
Static Test Design Technique
Static testing refers to the testing of software manually or with the help of tools. Static testing is usually carried out during the early phase of software development life cycle. Static testing is useful for testing multiple aspects of a software, including source code, functional and requirement specifications, and design documents and models. Static testing can be further divided into two categories based upon whether it is performed manually or with the help of tools.
Classes of Static Test Design Techniques:
Manual | With Help of Tools |
Walk through | Analysis of coding standard using compiler |
Informal review | Analysis of code metrics |
Technical review | Analysis of code structure |
Audit | |
Inspection | |
Management review |
Dynamic Test Design Techniques
Dynamic testing involves execution of the test object (application) on a computer. The input data is fed into the test object (application) and the program is executed. In dynamic testing, various variable quantities such as memory usage, response time, CPU usage and overall performance of the software are analyzed against the expected output. Dynamic testing is carried out during the validation process. Dynamic test design techniques can be further classified into:
- Specification-based (black-box, also known as behavioral techniques)
- Structure-based (white-box or structural techniques
- Experience- based
Dynamic Testing Techniques:
Specification-based | Structure-based | Experience-based |
Boundary Value Analysis (BVA) | Statement Coverage or Line Coverage | Exploratory Testing |
Equivalence Partitioning (EP) | Condition Coverage or Predicate Coverage | Fault Attack |
Decision Table Testing | Decision Coverage or Branch Coverage | |
State Transition Diagrams | Multiple Condition Coverage | |
Use Case Testing |