On Fri, Sep 27, 2013 at 11:42:10AM +0200, Jens Rehsack wrote:
> Am 27.09.2013 um 00:03 schrieb Tim Bunce <tim.bu...@pobox.com>:
> 
> > On Wed, Sep 25, 2013 at 08:36:22PM +0200, Jens Rehsack wrote:
> > 
> >> For me, a G10 is interesting (handling SQL::Statement as a DBD)
> >> 
> >> G10: Provide tools/infrastructure to combines several test cases in
> >>     particular order into tests to allow workflows being tested
> >>     and stress tests by looping can be performed.
> > 
> > Also here. I'm not quite sure what problem this is trying to address.
> 
> 
> This is more or less an idea I had during test development. For a lot
> of tests, we write some sequences of statements to finally prove one
> or a few things working fine (at least for DBD::CSV, DBD::DBM and a
> lot of SQL::Statement tests - but IIRC, this is true for SQLite, too).
> 
> So for testing whether UPDATE/DELETE works, we create some tables, do
> some inserts and after that, modify them. For SELECT testing, same.
> For ChopBlank testing (via select, of course), similar. For JOIN testing,
> more tables - but finally the same. This goes on … (different edge cases
> to test, but finally all the same).
> 
> For SQL::Statement I added a performance check )for being run through
> the profilers we have) which is assembled from one or more of the above
> tests. But by hand.
> 
> If there is a design of combining test cases to a sequence of tests (eg.
> create tables -> fill data -> select -> update -> delete -> drop), it
> could help simplifying test cases and allow put loops around sequences
> to redo some test sequence for 100 times for profiling.
> 
> The design finally choosen for this goal might be a composite for test
> cases - but the test case design shall allow doing that.

Test files need to be self-contained, so they can be run in parallel and
in randomized order.

They'd naturally have a setup-fixture phase, a run-tests phase, and a
teardown-fixture phase.

Repeating the whole sequence of phases N-times would be easy enough.
For some, but not all tests, repeating the run-tests phase N-times
between the setup and teardown phases would be possible, and faster.

I think this ability would fall-out nicely from defining a suitable API
to the code in the test modules. Then it's a simple change to the code
that calls the subs/methods in the test modules.

Tim.

p.s. I'll add parallel running to the requirements - it has significant
implications on the design, e.g., unique names for tables.

Reply via email to