Data-driven testing (DDT), also known as table-driven testing or parameterized testing, is a software testing technique that is used in the testing of computer software to describe testing done using a table of conditions directly as test inputs and verifiable outputs as well as the process where test environment settings and control are not hard-coded.[1][2]
Many techniques are available for testing software. They co-exist because they differ in the effort required to create and subsequently maintain. The advantage of data-driven testing is the ease to add additional inputs to the table when new partitions are discovered or added to the product or system under test. Also, in the data-driven testing process, the test environment settings and control are not hard-coded. The cost aspect makes DDT cheap for automation but expensive for manual testing.
Overview
Data-driven testing involves a framework that executes tests based on an input table. The framework provides re-usable test logic to reduce maintenance. Input and result data can be stored in centralized storage or databases.
Often, a table provides a complete set of stimulus input and expected outputs in each row of the table. Stinulus input values typically cover values that correspond to boundary or partition input spaces. In advanced testing systems, data can be harvested from a running system using a purpose-built tool (sniffer). The DDT framework can playback harvested data; producing a regression testing tool.
Automated test suites contain user's interactions through the system's GUI, for repeatable testing. Each test begins with a copy of the "before" image reference database. The "user interactions" are replayed through the "new" GUI version and result in the "post test" database. The reference "post test" database is compared to the "post test" database, using a tool.[3] Differences reveal probable regression. Navigation the System Under Test user interface, reading data sources, and logging test findings may be coded in the table.
Data driven
Anything that has a potential to change (also called "variability," and includes elements such as environment, end points, test data, locations, etc.) is separated out from the test logic (scripts) and moved into an 'external asset'. This can be a configuration or test dataset. The logic executed in the script is dictated by the data values.
Keyword-driven testing is similar except that the logic for the test case itself is encoded as data values in the form of a set of "action words", and not embedded or "hard-coded" in the test script. The script is simply a "driver" (or delivery mechanism) for the data that is held in the data source.
The databases used for data-driven testing can include:
- Data pools
- DAO objects
- ADO objects
See also
References
- ^ "golang/go TableDrivenTests". GitHub.
- ^ "JUnit 5 User Guide". junit.org.
- ^ "Home". diffkit.org.