to Overview
Mär 27, 2016

Repairing Legacy Code - Automatically

Many Projects already use automated regression testing. Unfortunately we cannot rely on this in situations that afford them most, for maintaining foreign (untested) legacy code. Here I do not only wish for automated regression tests, I also wish for automated test generators. Why does such a tool not exist?

I think that many developers justify this with the fact that code is to complex to clean it automatically. Actually complexity is the main impediment for automation - automation needs simple stupid tasks.

However - test writing is a kind of simple stupid:

  • I choose a method to test
  • I determine the state before this method that could influence the method (pre-state)
  • I determine the state after this method that was written by the method (post-state)
  • I combine the call of the method with different pre-/post-state pairs, setting up the pre-state and checking the post-state after calling the method

It’s yet not easy:

  • the programming language can inhibit you (e.g. information hiding can deny the access to the full state you need)
  • the mere size of the pre-/post-states is often too large to analyze (legacy code in particular tends to depend on large states)

Both of these problems are a typical human developer problem. Scaling and getting access to internal state is simple to an automatic tool. I would have guessed that such a tool already exists. The simple search for a tool generating or recording tests, or at least for a tool searializing program state brought no results. So I decided to create my own prototype.

My solution for the automatic test generator is testrecorder. I will post my progress on this subject in this blog.