Concordion
| Company type | Open source software framework |
|---|---|
| Industry | Software testing |
| Founder | David Peterson |
Key people | Nigel Charman (team lead) |
| Products | Specification by example framework |
| Website | www |
Concordion is a specification by example framework initially created by David Peterson and currently overseen by a team of contributors led by Nigel Charman.
Drawing inspiration from the Fit Framework, Concordion's objectives include:
- Enhancing the clarity of documentation
- Adopting a more "opinionated" stance (discouraging scripting)
- Streamlining ease of use
Operational Overview
Specifications in Concordion are crafted using Markdown, HTML, or Excel formats and enriched with specialized links, attributes, or comments. During test execution, Concordion processes these annotations to run tests. This method empowers product owners to articulate requirements in natural language through paragraphs and tables, fostering better understanding and agreement on feature goals.
These specification documents are generally stored in version control systems alongside source code, facilitating coordinated branching and merging aligned with software development.
Concordion provides a versatile extension framework that supports adding capabilities such as custom commands, event listeners, or output customization. These extensions allow incorporation of screenshots, storyboards, or logging details, thereby improving test visibility without limiting implementation flexibility.
Frequently utilized within agile methodologies, Concordion aids efficient acceptance testing and has proven its value in industrial settings.
Specification in Markdown
| Original content |
The greeting for World is Hello World! |
|---|---|
| After adding instrumentation | <syntaxhighlight lang="md">
The greeting for [World](- "#name") is [Hello World!](- "?=greetingFor(#name)") </syntaxhighlight> |
Specification in HTML
| Original content | <syntaxhighlight lang="html">
<html> <body> The greeting for World is Hello World! </body> </html> </syntaxhighlight> |
|---|---|
| After adding instrumentation | <syntaxhighlight lang="html">
<html xmlns:concordion="http://www.concordion.org/2007/concordion"> <body> The greeting for World is Hello World! </body> </html> </syntaxhighlight> |
Fixture Implementation
- HelloWorldTest.java
- Fixture interacting with the instrumentation
<syntaxhighlight lang="java"> package org.wikipedia;
import org.concordion.integration.junit4.ConcordionRunner; import org.junit.runner.RunWith;
@RunWith(ConcordionRunner.class) public class HelloWorldTest {
public String greetingFor(String firstName) {
return "Hello " + firstName + "!";
}
} </syntaxhighlight>
Development Environment Integration
The Concordion Support plugin designed for the IntelliJ IDEA IDE enhances the creation of fixtures and specifications by offering functionalities such as code completion, seamless navigation between specifications and test fixtures, renaming capabilities, test execution features, inspections, and quick fixes.
Conversely, the Concordion plugin for Eclipse (software) is outdated and limited in functionality, having last received updates in 2011. Its original developer no longer maintains it due to changing priorities.
Ports
Concordion has been adapted for use in several other programming languages, such as:
- C# (available at Concordion.NET)
- Python (accessible via PyConcordion)
- Ruby (archived at Ruby-Concordion)