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

Reply via email to