hi, In a project I am working on there is a separate automation team. This team gets test descriptions from the manual QA people including steps how to implement each step:
Test A Step 1 - Setup a smadge and set it to operation Blue Step 2 - Setup another smadge and set it to operation Black Step 3 - Put a table between the two smadges Step 4 - Launch a zbong from each smadge towards the table at level 10 Step 5 - Check if the table is full of food Step 5.1 - Check if there are at least 3 types of eggs Step 5.2 - Check if there are at least 4 types of bread ... Step 5.19 - Check if there are both blue and black berries Step 6 - Launch a zbong from each smadge towards the table at level 1 Step 7 - Check if the table is empty now Steps might have an arbitrary depth of sub steps. Once I get such description I implement each step. Usually each step breaks down into several "technical" steps. Such as Step 1 - Setup a smadge and set it to operation Blue TS 1 - Setup an empty smadgeholder TS 2 - Put an empty smadge on the smadgeholder TS 3 - Copy the blue smadge definition file to the smadgeholder TS 4 - Load the smadge definition file ... These technical steps could also have a hierarchy of arbitrary depth of sub steps. We write functions (later maybe methods) to implement each step and each "technical step". The people who run the tests expect to get some HTML report that says "Test A is successful" though they would also settle if sometimes it says "Test A failed". Then they want to be able to click on the link "Test A" and see the Steps and drill down all the way to the lowest level of technical steps. It is important for them as they want to "debug" the test runs and tell if a failure was due to bad test implementation, temporary network failure, broken smadgeholder, or a real bug in the implementation of a smadge. Occasionally they event want to execute the test manually step by step. Having such a drilldown will help them create the test. Can I use TAP for this? Can TAP be used to represent such hierarchy? Is there a module already doing something like this even without the HTML report? Am I missing something in the concept? I thought of creating something I could call MyTest::Hierarchy that would do $t = MyTest::Hierarchy->new; $t->start_test("Test A"); $t->start_step("Step 1"); $t->start_ts("TS 1"); ... $t->ok(1); # call to Test::Builder $t->is_num($received, $expected); # call to Test::Builder $t->end_ts(); # marks the end of the latest Technical Step The TAP representation might be simple indentation of the output (both the diag messages and the ok 1 prints). In addition on each ok() call they might want to print several values, as if there were several titles. I am not sure if an xml output would not be better than TAP to represent all this. Gabor