We are currently in the process of implementing a keyword drivensystem in which steps to be performed are entered into a database and an engine parses the steps and performs the actions required. I am currently faced with these problems and was wondering if there was anyone else who had encountered something similar:
1) Using a seperate data source for the purpose of looping and performing a set of steps nth times where nth = number of records in a data source.
2) Calling test cases from a test case, and choosing to use different data.
What is the protocol here - do we simply say that for situation 1 the testers have to input the steps for how ever many records there are?
And situation 2 would require them to re-enter the steps for the called test case and change the data?
I have really been struggling with this part of the implementation and I do not know where to go from here.
I am not sure whether I understand you well, as there may be different meanings for word "step", "record", "data" etc., but I take Carl J. Nagle's white paper as the reference and here you are:
1) As "step" I understand a detailed description how to do a unit piece of work, for exemple: LaunchSite (open the browser, type <mySiteAddress>, click OK button). You can define different steps (in a database, in an external file or as scripts) , each of them accepting parameters (data). The steps are then assembled in a suite table. Each line of this table contains the step name and the parameters that should be passed to it. Then the answer to your first question is: Define the step once (it must accept parameters!), then the testers should indicate the step name for each data record. Example:
No need for the testers to input twice the detailed description how to launch a site.
2) Create a keyword to execute a step. Example: You have defined a step "ScreenCopy" that saves the screen shot in a folder and you want to call it at the end of each "business" step. In your "business" step add at the end:
("^" indicates that this is a variable and not a data value).
Lines in the suite table look like:
LaunchSite; mySiteAddress=www.google.com; folderName=c:\temp
(I put all data for the called step and for all steps called by it together).