[Q] A new attempt to create a Squeak Test Server + Image Fingerprints

Markus Gaelli gaelli at emergent.de
Mon Dec 13 11:46:14 UTC 2004


Hi Hannes,

> Yes, today for example this would be
>
> ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.8beta/Squeak3.8g-6527.zip
>
> and
>
> ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.9alpha/Squeak3.9a-6532.zip
>
Ok.
>
>
>> Big thanks goes to Daniel Vainsencher, who installed it, and made 
>> work the first time! But somehow university got both of us distracted 
>> again...
>
> I see. So where is the server and the last emails which were sent out?
>
He installed it on some machine in Israel :-) using some scheme-shell 
script. I am very bad with shell scripts so I actually tried to fork 
the images using OSProcess, but as this was not ready for prime time 
for OS-X the last time I tried, I was ending up trying to build some 
VMs for Mac with OSProcess included.
Though we did some progress with the help of David T Lewis, Ian 
Piumarta and John McIntosh, I am actually not sure, on which Mac-VM 
OSProcess is running now, with which features of OSProcess included and 
which missing. David, John, Ian?
>
>>> I do not see the fingerprint thing to be an issue.
>>
>
>> I did not explain it very well, I guess. The idea is to harvest all 
>> the unary methods (at least the ones on the class sides) and use them 
>> as "smoke tests".
>> Some of them might never run, but if some ran in an earlier version 
>> and now not anymore, that might mean sth.
>> In order to get them I was thinking to use this fingerprint approach, 
>> as you want to make sure, that no side-effects of some earlier tests 
>> occur.
>> For academic reasons I would be quite interested in this approach: 
>> has this been done before, is it useful, is it feasible?
>
> I see, you are looking for some heuristics to find out which unary 
> methods might be candidates as test cases.
>
> An related idea to this is to look for unary method calls and 
> autogenerate test cases for the classes they belong to.
>
Right, you want to store the knowledge if they are supposed to run or 
not sometime. But this needs manual intervention, and I don't have the 
time for doing this right now. So I just would take the deltas between 
running and not running for the moment, so that I do not need to make 
them explicit / store them as test cases.

What I do need first is to identify if they are running or not, and 
that is why I was looking for some trick, so that I do not have to 
build the image for _each_ method again. Test cases are supposed to 
leave the state of the image untouched (though one could check this 
with the fingerprint too)

By the way: we have only two or so (!!!!!!) assertions in the code, 
pre- and post conditions _are_ a great idea, and they are even better, 
if they are automatically executed from time to time.
Note that I am not arguing that all randomly selected unary methods 
would fulfill these postconditions, but some of them might, and they 
can be treated as full blown tests.
Somehow the whole unit testing culture obviously distracted many from 
writing post- or preconditions, all the effort seems to be spend to 
write some very specific assertions inside the test cases...

There is even an implementation of assertions from Vassili Bykov
http://www.smalltalkchronicles.net/edition2-1/st_compiler.htm
which would make assertions in code pluggable without any performance 
hits, at least that is what he claims.

> For the test cases there might be an interface / query tool for 
> selecting them easily and moving them to the actual test case pool.
>
> However the first step I perceive the very crude test
>
> load a packacke
> 	succeeds
>         fails
>
> already giving 50% of the success of automatic testing.
>
> Or even more basic just to try get working again with the most recent 
> images what Daniel had working.
>
> Or if you do not have time at least document it enough so that somebody
> other in the list might have enough knowledge to help out.
>
I will keep you informed - this time. ;-)

Markus




More information about the Squeak-dev mailing list