Story

A QA Engineer has been given the unenviable task of quickly and thoroughly testing a new module of a global data processing platform.  The module under test must process small to huge volumes of documents with each containing small to huge amounts of complex nested XML data.  Each XML document contains nested organizational content with the following constraints:

  • One organization may exist per document.
  • An organization may contain many departments. 
  • Departments may contain many users.
  • And users may contain many addresses.



Considering the level of nested data, hundreds to thousands of test documents will need to be created in order to thoroughly test the new module. So, the QA Engineer calls a project meeting with his Manager and other project members to determine and define a set of test cases necessary to thoroughly test the new module.  At the end of the two hour meeting the QA Engineer repeated back to the team the list of test cases they all settled on:  


Integration Tests

  • Generate a document having 1 organization, having 1 unique department, having 1 user, having 1 address 
  • Generate a document having 1 organization, having 3 unique departments, having 1 user, having 1 address 
  • Generate a document having 1 organization, having 1 department, having 3 unique users, having 1 address
  • Generate a document having 1 organization, having 1 department, having 1 user, having 3 unique addresses

Negative Tests

  • Generate a document having 3 organizations, having 1 department, having 1 user, having 1 address
  • Generate a document having 0 organizations
  • Generate a document having 1 organization, having 0 departments
  • Generate a document having 1 organization, having 1 department, having 0 users
  • Generate a document having 1 organization, having 1 department, having 1 user, having 0 addresses
  • Generate a document having 1 organization, having 3 departments with 2 that are not unique
  • Generate a document having 1 organization, 1 department, having  3 users with 2 that are not unique
  • Generate a document having 1 organization, 1 department, having  1 user, 3 address with 2 that are not unique

Load Tests

  • Generate a document having 1 organization, having 3 departments, having 10 users, having 1 address
  • Generate a document having 1 organization, having 5 departments, having 100 users, having 2 address
  • Generate a document having 1 organization, having 10 departments, having 1000 users, having 3 address

Performance Tests

  • Generate a document having 1 organization, having 1 to 10 departments, having 100 to 500 users, having 1 to 3 addresses

Stress Tests

  • Generate 100 documents each having 1 organization, having 3 departments, having 10 users, having 1 address
  • Generate 1000 documents each having 1 organization, having 5 departments, having 100 users, having 2 address
  • Generate 10000 documents each having 1 organization, having 10 departments, having 1000 users, having 3 address


The Manager and the rest of the team members looked at the QA Engineer and their conversation went something like this: 


Manager 

This seems like an impossible task to produce all of this nested XML data to successfully implement all of these test cases.  How do you plan to accomplish this task and how many weeks or months is this going to take you?"  


QA Engineer 

Well... if I had to manually generate enough XML documents to test the above defined test cases, most of these test cases would not be implemented. And even if I could get one of our software engineers to write a program that would generate enough XML documents to test the above defined test cases, most of these test cases would still not be implemented in any reasonable period of time. In fact, in the real world, 80% of the above defined test cases would not be implemented, simply because creating this level of nested XML test data is too difficult and much too time consuming.


Manager 

So, what are we, or more specifically, what are you going to do about this? 


QA Engineer

Well... I have one question for you before I give you my answer.


Manager 

OK, get on with it!  What is your question?


QA Engineer 

Is there an XSD that describes this XML document and if not can we create an XSD to describe this XML document?


Manager 

Yes, there is an XSD that describes this document and even if there wasn't, it would be easy enough to create.

  

QA Engineer

Then my answer is simple. I'm going to use The GenRocket Test Data Generation Platform. More specifically, I'm going to use GenRocket's XSD importer feature.  It will consume the XSD and automatically model and create the necessary components on its platform that will enable us to create Scenarios to generate data for our test cases.  It will only take GenRocket a few minutes to import the XSD, then an hour or so for me to modify GenRocket Generators, set loopCounts and things like that.  Then I will start creating test data generation Scenarios and we can start testing.


The QA Engineer looked at his Manager, then at the rest of the members of the team; there was silence... no one was said a thing.  So, the QA Engineer simply said:


OK, let's all pick our mouths up off the floor, end this meeting, and somebody get me that XSD.