Test implementation is the activity during which tests are organized and prioritized by the Test Analysts. In formally-documented contexts, test implementation is the activity in which test designs are implemented as concrete test cases, test procedures, and test data. Following the IEEE 829 standard, it defines inputs and their associated expected results in test case specifications and test steps in test procedure specifications. More commonly, each test’s inputs expected results, and test steps are documented together. Test implementation also includes the creation of stored test data (e.g., in flat files or database tables).
Test implementation also involves final checks to ensure the test team is ready for test execution to take place. Checks could include ensuring delivery of the required test environment, test data, and code (possibly running some test environment and/or code acceptance tests) and that all test cases have been written, reviewed, and are ready to be run. It may also include checking against explicit and implicit entry criteria for the test level in question. Test implementation can also involve developing a detailed description of the test environment and test data.
The level of detail and the associated complexity of work done during test implementation is influenced by the detail of the test work products (e.g., test cases and test conditions). In some cases, particularly where tests are to be archived for long-term re-use in regression testing, tests may provide detailed descriptions of the steps necessary to execute a test, so as to ensure reliable, consistent execution regardless of the tester executing the test. If regulatory rules apply, tests are providing evidence of compliance with applicable standards.
During test implementation, the order in which manual and automated tests are to be run is included in a test execution schedule. Our Test Managers are carefully checking for constraints, including risks and priorities, that might require tests to be run in a particular order or on particular equipment. Dependencies on the test environment or test data must be known and checked.
There are some disadvantages to early test implementation. With an Agile lifecycle, for example, the code may change dramatically from iteration to iteration, rendering much of the implementation work obsolete. Even without a lifecycle as change-prone as Agile, any iterative or incremental
lifecycle may result in significant changes between iterations, making scripted tests unreliable or subject to high maintenance needs. The same is true for poorly-managed sequential lifecycles where the requirements change frequently, even late into the project. Before embarking on an extensive test implementation effort, it is wise to understand the software development lifecycle and the predictability of the software features that are available for testing.
There are some advantages to early test implementation. For example, concrete tests provide worked examples of how the software should behave if written in accordance with the test basis. Business domain experts are likely to find verification of concrete tests easier than verification of abstract business rules, and may thereby identify further weaknesses in software specifications. Such verified tests may provide illuminating illustrations of required behavior for software designers and developers.