Tests and software process

Howard Stearns hstearns at wisc.edu
Wed Nov 1 15:07:52 UTC 2006


Daniel Vainsencher wrote:
> ...
> unfortunately, in a large scale, distributed, diverse effort like 
> Squeak, things are more complicated.
> 
> Examples:
> ...And the problem is that our current choice about "where/when
> should this test run" is currently binary - everywhere, or nowhere. ...
> 
> Do you know of some set of abstractions/practices/framework to deal with 
> this problem?

In the lisp community (which is also based on image+package), the 
abstraction for software-package (called a "system") encompasses 
version, dependencies, and operation, where operation is generally 
considered to include test.

A system is defined as a set of modules with a type tag, including 
"test", as well as "foreign libraries", "documentation", Lisp "source 
code", and other systems recursively. Modules define other metadata, 
including various kinds of dependencies.

You perform an operation on a system, such as "load" or "test". The 
machinery collects all the dependencies based on the operation and any 
operations that the specified operation requires. This collection is 
based on knowledge of what has already been successfully performed in 
the current running image and which is still valid (e.g., that source 
hasn't changed). The resulting partial orderings of dependencies are 
then topologically sorted to produce a total ordering of operations on 
modules.

The more general such system tools allow developers to define their own 
operation and module types, without having to re-engineer the system 
tools themselves.

The result is that developer's can pretty readily test any combination 
of systems in a meaningful way.

The code for doing all this was really quite small and understandable. I 
was part of a group who used it for planning manufacturing operations in 
a factory.

Alas, every Lisp organization and nearly every programmer has written 
his own version of this general mechanism, so no standard emerged (as of 
  my last experience with this, circa '99). I don't know whether this 
means that the model wasn't quite right, or that Lisp programmers are 
perverse.

References:
http://www.google.com/search?q=lisp+defsystem
http://www.google.com/search?q=lisp+define-system
http://www.google.com/search?q=lisp+waters+regression+test

-- 
Howard Stearns
University of Wisconsin - Madison
Division of Information Technology
voice:+1-608-262-3724



More information about the Squeak-dev mailing list