Testing. Everybody claims to do it, but few do it
well. Throwing random input at a program to see what happens is not true
testing. As for "regression testing"? Testing everything that has been
tested before to PROVE the new changes haven't broken something? The mind
boggles. The first part of this series starts to explore how the "main
stream" (non-MultiValue) developers do it, and why MultiValue will always
considered archaic if we don't get on board.
Unit Tests are a fundamental building block in the modern Test Driven
Design method of software development. Unfortunately, most of the literature
on the subject concentrates on objectoriented design and programming. Even
though several of our MultiValue platforms now support object-orientation,
our legacy code from years ago does not. Second in a series, this article
explores both the concept of Unit Tests and how to implement them in our
non-object oriented environment.
Part 1 of this series explained how "mainstream" technologies develop and
use automated testing and makes the case for pulling MultiValue testing
methodologies into the 21st century if we are to continue to be seen as a
viable application development platform. Part 2 tackled the topic of the
Unit Test and how we might implement it in a well structured MultiValue
solution. This article moves on to the topic of Integration Testing — do all
the pieces fit together and work properly?
The first three articles in this series introduced the concepts of
automated testing, test driven development, and explored the details of unit
testing and integration testing. This article digs into the real-world
problem most MultiValue developers grapple with on a day-to-day basis —
trying to flog old legacy code into the 21st century.
The previous article looked at techniques for refactoring legacy code to
expose individual functional pieces for unit testing. Although unit tests
for individual routines is fairly straightforward, putting them all together
and testing the whole can be challenging. The fifth article in this series
examines some of the problems and techniques for handling these issues.