Test Driven Modernization Methodology
One of the central tenets of agile development methodologies such as Extreme Programming is the development of test cases prior to programming. Our Test Driven Modernization methodology extends this principle to modernization projects. We develop a complete set of test cases, sufficient to exercise all active logical pathways in the legacy application, convert the data against which the tests were executed, and then execute the same test cases against the modernized application.
Conventional testing asks the question, “did we do this thing right?”. Test Driven Modernization asks, “did we do the right thing?”
In the process of creating a 100% complete set of test cases, using code coverage analysis on the legacy code, we also expose the ambiguities, errors and omissions in the active business rules in the legacy application. These business rules must be carried forward in order for the replacement system to go into production. We will also identify errors and omissions in the requirements, but Test Driven Modernization does not assert to identify all requirements, only whether all business rules have been implemented and done so equivalently in the replacement system.
The critical concept here is that the results be based on execution rather than understanding. Execution is a binary, either/or proposition. Either the test is passed or it failed. Ambiguities that derive from human analysis are driven out.
Understanding is an analog concept. Our understanding may be greater or lesser, but it will never be 1. (Presumably, it will never be 0 either, or so we can hope.) Execution is unambiguous with results of 1 (true) or 0 (false), whereas understanding will always have some degree of ambiguity in non-trivial cases.
Once we accept that the business rules for the new system should be proven using unambiguous executable test cases, we turn to the question of what constitutes a complete set of business rules. This is discussed at length in our Business Rule Extraction essay.