Project: A Scheme Unit Testing Framework

Student Researchers: Sara von Mosch, Yer Yang
Advisors: Scott W. Lewandowski, Janet Kinney
Institution: University of Minnesota - Morris



The purpose of this project was the design and development of a Scheme unit testing framework. The framework facilitates the development of better, more correct code by alerting the user to errors revealed during testing.

Our project began by researching testing frameworks and unit testing, with special emphasis on testing in functional programming languages. Based on feedback from people familiar with using Scheme at the introductory level, we created a framework that is concise and easy to use. We also developed a user manual that acts as a tutorial and provides an introduction to unit testing, a guide to using the framework, and several examples.

This project integrates many of the ideas found in Kent Beck's original paper on testing frameworks - "Simple Smalltalk Testing: With Patterns". We felt it was important to model our framework after those already in existence. Doing so not only provided a guide for our research, but should also ease the transition for users to testing frameworks in other languages such as JUnit for Java. The framework consists in part of a collection of assertions, similar to those found in object-oriented programming language testing frameworks. These assertions, along with Scheme's ability to pass functions as arguments, provide the foundation for the rest of the framework.

To make the framework accessible to anyone already familiar with Scheme, regardless of their knowledge of software testing, we created a user manual to guide those users who are unfamiliar with testing. The manual contains an introduction to unit testing and instructions that guide the user through sample exercises. It is set up in a tutorial style format, with each instruction explained in detail, sample code provided, and exercises for the user to try on his/her own. An appendix contains the sample code used throughout the tutorial, which is available to the user for their own testing.

It is our intention to use the framework and user manual in the introductory computer science course at UMM which uses Scheme. The user manual contians several exercises which could be used as homework or in-class lab exercises, and can easily be extended to accomodate new material.

We presented our work via a technical paper and presentation at the 35th Annual Midwest Instructional Computing Symposium (MICS) and a poster at the 2nd Annual UMM Undergraduate Research Symposium.

Project Webpage: http://tyvex.mrs.umn.edu/UMMCSciWIki/bin/view/Crew2001/