Testing is typically viewed as an expense within software development projects, an activity needed to find bugs before the software is deployed to production. When viewed as an expense, the primary focus becomes how to reduce the cost of testing. Quite the contrary, testing activities (when performed properly) produce valuable corporate assets called manual test cases or automated test scripts, similar to development activities producing software code. All software has two critical assets – its code base in a code repository and its test cases or scripts in a test repository. Microsoft’s Visual Studio/Team Foundation Server is an excellent example of recognizing both code and tests as assets housed in a single repository.
Is the term asset appropriate for a manual test case or automated test script? The dictionary defines an asset as ‘a useful or valuable thing, person, or quality’. Surely a reusable manual test case or automated test script that can be executed repeatedly as part of a smoke test or regression test is a useful or valuable thing. The term asset is used in accounting. The International Accounting Standards Board’s definition is “An asset is a resource controlled by the enterprise as a result of past events and from which future economic benefits are expected to flow to the enterprise”. Clearly test cases and scripts fit this definition. They are created during a past software development project and provide future benefit for testing bug/fix releases and enhancement releases of the software.
So why is it important to view test cases and test scripts as assets?
Raise the value of testing through test assets
Testing organizations find their budgets cut or their testing activities offshored to reduce IT costs. If senior management measures the value of testing only in terms of bugs discovered, and many non-critical bugs never get fixed, then indeed testing is a major expense to be targeted for cost reduction. Instead testing professionals must speak the language of senior management, namely assets, risk, and technical debt. The conversation with senior management about testing becomes more like . . . . Testing creates reusable test assets to mitigate risk of production disruption due to software deployment and safeguards against the build-up of software’s technical debt from latent defects.
Build your test cases and scripts as assets
In order to be an asset your manual test cases and automated test scripts must be built to provide benefit to the initial software development project AND be capable of contributing to testing future release projects. A poorly written manual test case with unclear test steps or expected results is not a reusable test asset. An automated script that is recorded and not developed using a viable test automation framework is not a reusable test asset. Test cases and scripts naming conventions, standard formatting, consistent style, level of detail, frameworks, etc. along with test suites organization are essential for reusability and ease of maintenance. Test assets written today must be reusable, one month, six months, one year, three years, etc. in the future by testers who did not originally create the test asset.
Refactor your test assets in the test repository
Software developers understand the importance of their code as a corporate asset and perform refactoring. Refactoring is used to restructure code without changing its behavior. Refactoring improves code readability and reduces complexity to improve code maintainability. It also creates an internal architecture that is more extendable. We can apply this software development concept to testing. As the application under test is enhanced and test assets are updated accordingly, your test assets require periodic refactoring to ensure their usability, reduce their complexity, remove redundancy, and provide a test suite architecture that is easy to use and expandable. If refactoring is not performed, test assets deteriorate over time and the initial investment becomes a sunken cost.
As testing professionals, let’s start using the language of management and developers to create awareness that when we test, we create valuable test assets for our companies. Testing is not an expense; it is an investment and risk mitigation method.