
Frequently Asked Questions
What exactly do you mean by Executable Specifications
"Executable Specifications" is a concept in software development that tries to have human written specification documents automatically run onto the targeted system to instantly verify their compliance. In a way, it tries to minimize the risk of having a system that supports a requested feature "but not exactly the way the users need it". Of course, it is not just a question of tools; there are some recognized practices to help create more accurate specifications. It is well known that the success of communication relay on a common language. If the success of a project depends on the communication between the business expert and the developer, Executable Specifications must be created using the business language that the system is supposed to serve. Another extremely valuable practice is to add real business examples to specifications. Using executable business examples brings efficiency to a new level.
To know more, you may be interested in our Accurate sofware development whitepaper
.
Back to the list
What is the added value of executable specifications compared to other types of specifications
Before talking about the value of executable specifications, let's focus on the value of written specifications. The Agile approach does not forbid written documents, but the approach prompts us to think about their value, especially in comparison to the efforts of creating and maintaining them. No document is entirely clear, exhaustive, and accurate. "The requirements represent the needs of the user; the requirement specifications is our imperfect attempt at documenting this need", says Rick Graig in The Value of Requirements-Based Testing
.
The traditional approaches involve many different written specifications (customer requirements, software requirements, QA test plan, etc.). As the project goes on, these documents get out of sync. Even worse the code itself is often out of sync. Executable specifications are a mean to keep everything in sync, source code included.
Having these executable specifications requires a high level of collaboration between the business analysts and software developers. Beyond the ES themselves, this collaboration is the true added value for the success of the project.
Back to the list
What is the purpose of GreenPepper software
GreenPepper is the tool in which you implement the concept of executable specification. GreenPepper is a set of tools allowing development teams to design and maintain the executable specifications for the system under development.
Back to the list
What is included with GreenPepper
GreenPepper includes the following tools :
- An enterprise wiki (Confluence) interface to edit specifications, simple enough for non developers
- Integration with development environments such as Eclipse and Visual Studio for effective writing of fixtures (source code that interfaces between the specification and the system under development)
- An engine to execute the specifications under different environemnts such as Java, .NET, Python, Ruby or Grails.
- Tools to make integration tools (Maven, Nant, Ant, MSBuild, Buildr ou Bamboo) execute specifications
Back to the list
Can you show me an example
Let's take an actual example to illustrate how a fictive team is following a SE approach thanks to GreenPepper .
Be careful, this exemple does not correspond to what every team has to do, because each project is unique and requires an unique approach.
During a meeting to prepare the product backlog, the product owner reads a business rule to the team : "Whenever the down payment on the property is less than 25% of the sale price, the buyer has to pay a premium for insuring the mortgage. The premium fee amounts is 2.5% of the financed amount (which is sale price - down payment)."
Immediately a ton of questions are asked to the product owner in order to clarify this business rule. After a while, there is an agreement to write down different exemples showing how the "insurance premium fee" should work. These exemples are directly written into GreenPepper this way:
| rule for |
insurance premium fee calculation |
| sale price |
down payment |
premium fee? |
| $100,000 |
$15,000 |
$2,125.00 |
| $100,000 |
$30,000 |
$0.00 |
| $100,000 |
$25,000 |
$0.00 |
If you run this SE, an error appears telling that no fixture is found to perform the execution. This is correct because the team did not yet implement anything.
From now on, the team has a good understanding of the user story. We don't detail here about the way the feature will be implemented but at the end, the specification written in GreenPepper can be executed. The tests pass as the following:
| rule for |
insurance premium fee calculation |
| sale price |
down payment |
premium fee? |
| $100,000 |
$15,000 |
$2,125.00 |
| $100,000 |
$30,000 |
$0.00 |
| $100,000 |
$25,000 |
$0.00 |
That kind of results means that the system under development totally meets the expected behavior as defined in the SE.
Get more? Look at the Video "What's in for me?"
Back to the list
How does GreenPepper integrate with my continuous integration process
Continuous integration is one of agile practices : the point is to build and test the pending software product as soon as new source code has been integrated. The goal is to check the sanity of the baseline and to solve integration issues as soon as they occur. GreenPepper can be connected very easily to existing third party build tools like Maven, Ant, Nant, Buildr or MSBuild. Please note that GreenPepper can be also integrated with Bamboo, the continuous integration tool from Atlassian.
GreenPepper product team is working on integrating with other build tools, and listens to your needs and suggestions.
Back to the list
Why should I use GreenPepper rather than Fitnesse
Fitnesse is an ad-hoc wiki that enables writing and executing of specifications. GreenPepper provides a different way of editing specifications, thanks to Confluence: it provides WYSIWYG (What you see is what you get) capabilities, user right management, many other extensions to connect to Office products and does not require to learn the wiki markup language because a rich editor is provided. Another point is that the GreenPepper specification language is less intrusive regarding people who are writing specifications : technical and configuration artifacts can be totally hidden to the specification writer which is not the case with Fitnesse. GreenPepper provides a collection of tools that form a consistent package allowing integration to a large choice of third party tools . Although there are some equivalent tools for Fitnesse, these ones rely on different contributors which can be harmful to the consistency of the whole package.
A powerful wiki like Confluence, a domain-focused language and a coherent package of tools give to the whole project team (domain experts and programmers) the opportunity to collaborate and choose the better way to implement this collaboration.
Back to the list
Why shoud I use GreenPepper rather than Concordion
Concordion is a tool for writing automated acceptance tests. Specifications with Concordion are HTML files in which assertions are written. There is no dedicated editor and specifications must be written in HTML. This constraint can limit collaboration within the team since the language used is not commonly known to non developers.
Back to the list