Last week I started working on a test case management tool for my current work.
I decided to build it as a plugin for Redmine, an open source project management application, which is based on Ruby on Rails. There seems to be quite a bit of interest in the community, and I hope I can leverage that to get help developing it — that’s the real point of open source anyway, isn’t it?
I’m moving slowly, working on it in my spare time. I’m deliberately keeping the feature set small in order to get something useful out there, get feedback, and let it evolve into the product that has the most use for the most people, with my own personal needs coming first, of course.
The first challenge is learning how to create a Redmine plugin, which I think I’m starting to turn the corner on. Next will be learning Rails well enough to take advantage of its features and have a code base that others can understand.
I think I’ve got a pretty good basic model of TestCases, TestSuites, TestRuns, TestResults, and TestReports.
- A Test Case has a title and a description, nothing else for now
- A Test Result has a status (pass/fail) and notes
- A Test Suite is a collection of Test Cases
- A Test Run is an execution of a collection of Test Cases
- A Test Report is the collected results of Test Cases in a Test Run
The basic workflow will be:
- Create Test Cases
- Add Test Cases to Test Runs
- Execute Test Run
- Click pass/fail on each test case, generating a test result
- Viewing the results for a Test Run
I have an idea for the UI as well, but could really use help on that.
Other things that might be included to expand the model in future versions
- A Test Environment can be associated with a Test Run
- A Test Plan describes a collection of tests and their execution
- Test conditions, steps, & data
- Agile / Scrum concepts
Additional features to be added in the future may include versioning of tests, integration with automation tools, consuming (and producing) JUnit Reports, continuous integration, requirements management, other bug tracking and test management tools (like TestLink, Testopia, Test Director)
Right now, I have a basic Redmine plugin that can do CRUD on a test case. You can see it at http://redmine-tcm.one-shore.com/test_cases
The next steps will be
- Associate test cases to a project.
- Create a test runs and add test cases
- Execute test cases in a test run and save the results
- View a report
I’ll work on getting a clean repository up (if there’s interest) on Github, Rubyforge, Sourceforge, or my own SVN repo. I hope to have a very basic version 1 within a month or so.