Login | Register
My pages Projects Community openCollabNet

testgen
Project home

If you were registered and logged in, you could join this project.

Summary Web service test data generator
Category testing
License BSD License
Owner(s) jrobbins, malhar1
The project currently is named TestOracle, I'll soon be renaming it to TestGen as "TestOracle" gives the project a wrong impression. I'll try to be consistent with the project name through out the site.

Description

TestOracle is a very powerful program that allows developers to quickly generate test data for their web-services before publicly or internally releasing the web service for production. Having a code tested has many intrinsic advantages, including less buggy code and reduced time in fixing and finding these bugs later. There are many products in the market today to automate generating test data, including DataTect. However, some of the major disadvantages and limitations of all these commercially available products make TestOracle a unique-first of its kind-product. For instance, commercial program are not only expensive (at least $600+ per license) but are also limited to producing only scalar data (i.e. records of a database table), and thus can not produce data for complex data objects. Complex objects include are formal function parameters, which can include complex n-level object hierarchy(s).

Comparison

Sample Input for Commercial Programs (e.g. DataTect):

function (int companyID, String companyName, String Location, double stockPrice, DateTime beginDate)

Sample Input for TestGen:

function (Company companyObject)

Parent Object Name Child Object Child Object Type
Company CompanyID Integer
  CompanyName String
  Location String
  StockPrice Double
  BeginDate Date
  Departments Array of Department objects
     
Department DeptID Integer
  DeptName String
  BuildingLocation String
  ManagerName String
  Employees Array of Employee objects
     
Employee FName String
  LName String
  EmployeeID Integer
  DOB Date
  Salary Double
   ...  

Goals

  • User Acceptance: The program should be easy to use (GUI), and should be simple enough for a novice user to use and also at the same time powerful enough to for an expert user to take advantage of all features with ease (less than 2-3 mouse clicks). The interface should also use the GUI standards that are widely used in other popular software to make users more comfortable with the program (e.g. tree structure, standard keyboard shortcuts, etc.). It would be pointless if the developers, testers, and QA engineers find the program's logic hard to understand.
  • Expandability: From development perspective, one should not have to invest enormous amount of time to tailor the program to his/her company's specific needs.
  • Efficiency: Whether one is generating 100 test cases or 100 million test cases, the program should operate efficiently and also properly manage resources.
  • Robustness: TestOracle should also be robust against bad user-inputs (though keyboard, invalid input files, external errors - database connection failures, and also internal errors)
  • Simplicity: TestOracle should that be easy to understand and use, provided that the user has at least a limited understanding of basic programming concepts.
  • Dynamic-ness: The program should offer options to personalizing inputs and outputs without having to re-implement the code.
  • Separation of Concern: Modularize the development such that, though components communicate with each other, they are independent from each other for computational logic.

How it Works

After you install TestOracle, you're ready to start using it. Installation will put an icon on your desktop and also create an icon in the Start Menu.
  See Screenshots for graphical navigation.
   
 

Basic navigation

 
What How
Open a WSDL file Select File > Open Existing Project
Load a function From the dropdown list, select a function and click "Load" button next to the dropdown list.
Specify parameter data randomization options From the parameter tree, select a primitive parameter object (date, number, string, enumeration). From the option pane on the right, select data source, randomization options and any other specific options for the selected data type.
Delete an array element Select the array element and click Delete on the keyboard or select respective option from Edit menu.
Connect to Database Select Edit > Establish Database Connection. Specify data source types, user name, password, and data source. Click Connect to connect.
Specify values from database for a parameter Once you've connected to database, select the parameter you want to specify options for, select "Choose from Database" for source, specify table name, column name, and the amount of data to retrieve (in percent). Click "Save Changes"
Expand/Collapse Parameter Tree/Branch Select appropriate option from View menu.
Export Select Export > Start Export. From the next window, specify file path, overwrite/append option for existing file, the number of test cases to generate. Click Approximate Time & Space to view approximate disk space and time required to finish export. Click Export to begin.

Bugs and Suggestions

If you find a bug in TestOracle, or you have a feature request, please register and join the project. That gives you the ability to enter data into our Issue Tracker.

You can contact me directly to if you experience any difficulty in getting in touch with me using Issue Tracker. I highly recommend using Issue Tracker as it can help not only me but also other developers/observers by making them aware of the outstanding issue(s).

Contribute!

Currently I'm the only one developing the project (Malhar Shah). The project is overseen by Jason Robbins. I'll greatly appreciate your support in further taking the TestOracle to a higher level of standard. Start by registering or logging in. Registration is very simple, and simply validates your email address. Then request to join the project, and download the CVS tree from tigris.org.

 

Anticipated Changes in the Upcoming Version(s)

Supported Languages (WSDL, Java, VB.net, C#)
Sample data (e.g. names, cities, ___ID, ...)
Oracle Connectivity
Specify equation for manual entry using regular language
Handling inherited object types
Ability to specify criteria for multiple parameter of similar types at once
Export to data formats (flat file, Excel, database) for non-complex hierarchies

About the Project

TestOracle was initiated as a project in upper division Software Engineering course (ICS 125) at University of California, Irvine, School of Computer Science. Please see the About section of the program from Help menu for credits.

 

 

Past Contributors (excluding myself)

Andy Jason Robbins
Bindya Shah Sam Robertson
Khoi Phan Twie Tran