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
|