Regression Testing as a Programming Paradigm


We're all familiar with structured or object-oriented programming paradigms. Both of these techniques have enabled programmers to reduce complexity of software by better organizing their code. Regression testing, on the other hand, is rarely considered as a programming paradigm, but more as just a quality assurance technique. By looking regression testing only as a quality assurance technique we are not seeing other benefits of regression testing, that are perhaps even more important than just testing the code, such as better overall architecture of the application, more maintainable code, and reduced fear of change. While traditional coding captures functionality explicitly, regression testing defines the required functionality implicitly. By specifying both explicit code and desired outputs for a given input, programmer has actually specified what code should be doing twice, with both approaches being quite orthogonal to each other. Since it's quite improbable to end up with the same wrong result when doing things in two different ways, the end result should be code of much higher quality with less bugs.

I consider the current technology supporting regression testing to be very inadequate. It's quite difficult to specify desired outputs for given inputs using current crop of programming languages and frameworks. I think there's quite some room for improvement here and I hope we will get some good tools soon that will make writing unit and functional tests much easier.

Enhanced by Zemanta