Best Practices in Module Testing

How to Test Your GenePattern Module Before You Submit It to GParc

Once you have wrapped your code into a GenePattern module, there is some basic testing that you should do before submitting it to GParc.

  1. Test the module for algorithmic integrity. Create unit tests that run through common cases as well as some edge cases, and verify the output against data that is known to be good. This known-to-be-good data should be created outside GenePattern. To ensure the robustness of the module, create negative tests to be sure user-friendly errors are thrown if bad/incorrect data or parameters are provided by the user.
  2. Use a basic (but appropriate) dataset (such as one of the datasets on the GenePattern FTP server: to run your module. Run with the default parameter settings, and then permute through each method/option. Verify the output for each permutation and combination of parameters and input values.
  3. Pass output files from your module to some appropriate public GenePattern modules. Verify that they run and produce correct output.
  4. Create a pipeline that contains your module and make sure the pipeline executes successfully.
  5. Verify that your module can be run on all platforms it has been compiled to run on.
  6. Verify that your module can be exported and run on a GenePattern server other than the server on which you developed the module. This will ensure that there are no server-specific dependencies in your code.

Remember to include your test files (or a representative subset of your test files) in your module ZIP archive so other people can use them as example data.  You can include test files as Support files when you create your module.

These are some of the basic QA testing practices for modules released by the GenePattern development team. If you would like assistance in formulating a test plan or if you run into problems you can't solve during testing, you can talk to fellow users on the GParc forum or contact the GenePattern development team for assistance.