This week I have a
new test checked in - it simply deletes pills from the cluster dialog and
validates that the particular piece of data I removed is no longer used by the
k means algorithm. It checks that the
number of clusters is the same after the removal.
And on that point I
am very glad we have a deterministic algorithm.
When I wrote a kmeans classifier for an online class, we
randomly determined starting points, and that led to the possibility of
differing results when the code finished running. Deterministic behavior makes validation much
easier, and the user experience is also easier to understand.
So I added a test to
delete a pill. Not much to it, but now I
and add, remove and reorder each pill in the list. From here, I can use this as a parameter for
other tests. I can write a test to
validate the clusters are computed correctly when a data source is refreshed,
then combine that test with the "parameterized pill order" tests I
have already written. This gets me
integration testing - testing how two or more features interact with each
other. That is often hard, and there can
be holes in coverage. You see this with
a lot of reported bugs - "When I play an ogg vobis file in my firefox
addin while Flash is loading on a separate tab…" Those tests can get very involved and each
setting like the music player, firefox tabs, flash loading and so on can have
many different permutations to test.
The lesson here is
to start small. Find one parameter that
can be automated and automate it. Then
use it to tie into other parameters. That
is the goal here and I will keep you updated.
Questions, comments,
concerns and criticisms always welcome,
John
No comments:
Post a Comment