Finally! An open source tool for Ruby’s RSpec that helps uncover the root causes of intermittent software failures
Software Development
Bugs
Rspec
Ruby
Ruby on Rails
RoleModel Software’s new Ruby gem — Marshgrass — is designed to address the challenge of finding intermittent test failures in Ruby code.
Fixing intermittent software failures, or failures that occur only under a unique set or combination of conditions, is always a challenge. The conditions leading to failure are difficult to pinpoint. They can slip past sophisticated quality checks, make it into production and not be noticed until the product is in the hands of the user.
RoleModel Software’s new Ruby gem — Marshgrass — is designed to address the challenge of finding intermittent test failures in Ruby code. This gem allows you to subject an intermittently failing test to a variety of circumstances in an attempt to discern what combination of events leads to failure. Using Marshgrass increases the odds of quickly finding the root cause of an intermittent failure, so that it can be fixed in a fast and cost-effective way.
The first step in fixing an intermittent failure is uncovering the set of circumstances that makes it fail consistently. In programming there is no such thing as a truly “random” failure. Under the right set of circumstances, every intermittent failure will fail consistently.
Marshgrass functions as an “add-on” to the Ruby Rspec test runner, boosting Rspec’s ability to more consistently cause intermittent failures to occur. Marshgrass can subject a test to any one of the specific conditions listed below:
Repetitions
Range of speeds in execution
Execution at all times of day
Execution in all time zones
Execution at all the milliseconds surrounding a particular time of day
The gem is available as open source under the terms of the MIT License. See the README for usage instructions. Bug reports and contributions are welcome on Github at https://github.com/RoleModel/marsh_grass. We invite you to try the gem for yourself and let us know what you think.
