Concordion

Last updated
Concordion
Original author(s) David Peterson
Developer(s) Nigel Charman, et al.
Stable release
3.0.1 / July 4, 2020;3 years ago (2020-07-04)
Repository
Written in Java, .NET
Operating system Cross-platform
Type Specification by example tool
License Apache License 2.0
Website concordion.org OOjs UI icon edit-ltr-progressive.svg

Concordion is a specification by example framework originally developed by David Peterson, [1] and now maintained by a team of contributors, [2] led by Nigel Charman.

Contents

Inspired by the Fit Framework, David states the following aims were behind Concordion: [3]

How it works

Concordion specifications are written in Markdown, HTML or Excel [4] and then instrumented with special links, attributes or comments respectively. When the corresponding test fixture class is run, Concordion interprets the instrumentation to execute the test. Rather than forcing product owners to specify requirements in a specially structured language, Concordion lets you write them in normal language using paragraphs, tables and proper punctuation. This makes the specifications much more natural to read and write, and helps everyone to understand and agree about what a feature is supposed to do. [5]

The Markdown, HTML or Excel files are typically stored with the source code, which has the benefit that they can be under the same version control system as the rest of the code ensuring the specification and tests are branched and merged along with the main source code.

Concordion includes a flexible extension mechanism [6] for adding functionality, for example implementing new commands, listening to events, or modifying the output documentation. By providing functionality such as embedding screenshots, [7] storyboards [8] or logging output, [9] extensions provide confidence in what the test is doing without locking the test into a specific implementation. [10]

Concordion enriches agile processes [11] and has been successfully applied in industrial context. [12]

Example

Markdown format specification

HelloWorld.md
Before instrumentation
The greeting for World is Hello World!
After instrumentation
The greeting for [World](- "#name") is [Hello World!](- "?=greetingFor(#name)") 

HTML format specification

HelloWorld.html
Before instrumentation
<html><body><p>The greeting for <b>World</b> is <b>Hello World!</b></p></body></html>
After instrumentation
<htmlxmlns:concordion="http://www.concordion.org/2007/concordion"><body><p>The greeting for <bconcordion:set="#name">World</b> is         <bconcordion:assertEquals="greetingFor(#name)">Hello World!</b></p></body></html>

The fixture code

HelloWorldTest.java
The fixture that works with the instrumentation
packageorg.wikipedia;importorg.concordion.integration.junit4.ConcordionRunner;importorg.junit.runner.RunWith;@RunWith(ConcordionRunner.class)publicclassHelloWorldTest{publicStringgreetingFor(StringfirstName){return"Hello "+firstName+"!";}}

Integrated Development Environment Support

The Concordion Support plugin for the IntelliJ IDEA Integrated development environment (IDE) simplifies development of fixtures and specifications with features including autocompletion, navigation between spec and test fixture, renaming, running tests, inspections and quick fixes. [13]

The Eclipse (software) Concordion plugin is much more limited and hasn't been updated since 2011. [14] The original author has stopped using Concordion and Eclipse and is unable to accommodate the necessary time to extend and maintain the plugin. [15]

Ports

Concordion has been ported to other languages including:

Related Research Articles

<span class="mw-page-title-main">IntelliJ IDEA</span> Integrated development environment

IntelliJ IDEA is an integrated development environment (IDE) written in Java for developing computer software written in Java, Kotlin, Groovy, and other JVM-based languages. It is developed by JetBrains and is available as an Apache 2 Licensed community edition, and in a proprietary commercial edition. Both can be used for commercial development.

<span class="mw-page-title-main">Markdown</span> Plain text markup language

Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber created Markdown in 2004 as a markup language that is easy to read in its source code form. Markdown is widely used for blogging and instant messaging, and also used elsewhere in online forums, collaborative software, documentation pages, and readme files.

Azure DevOps Server is a Microsoft product that provides version control, reporting, requirements management, project management, automated builds, testing and release management capabilities. It covers the entire application lifecycle and enables DevOps capabilities. Azure DevOps can be used as a back-end to numerous integrated development environments (IDEs) but is tailored for Microsoft Visual Studio and Eclipse on all platforms.

<span class="mw-page-title-main">GitHub</span> Hosting service for software projects

GitHub, Inc. is a platform and cloud-based service for software development and version control, allowing developers to create, store and manage their code. It uses Git software, providing the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous integration, and wikis for every project. Headquartered in California, it has been a subsidiary of Microsoft since 2018.

<span class="mw-page-title-main">Etherpad</span> Open-source web-based collaborative real-time editor

Etherpad is an open-source, web-based collaborative real-time editor, allowing authors to simultaneously edit a text document, and see all of the participants' edits in real-time, with the ability to display each author's text in their own color. There is also a chat box in the sidebar to allow meta communication.

DevOps is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle.

<span class="mw-page-title-main">Jenkins (software)</span> Open source automation server

Jenkins is an open source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration, and continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat. It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase, and RTC, and can execute Apache Ant, Apache Maven, and sbt based projects as well as arbitrary shell scripts and Windows batch commands.

<span class="mw-page-title-main">Jasmine (software)</span> Open-source testing framework for JavaScript

Jasmine is an open-source testing framework for JavaScript. It aims to run on any JavaScript-enabled platform, to not intrude on the application nor the IDE, and to have easy-to-read syntax. It is heavily influenced by other unit testing frameworks, such as ScrewUnit, JSSpec, JSpec, and RSpec.

Cucumber is a software tool that supports behavior-driven development (BDD). Central to the Cucumber BDD approach is its ordinary language parser called Gherkin. It allows expected software behaviors to be specified in a logical language that customers can understand. As such, Cucumber allows the execution of feature documentation written in business-facing text. It is often used for testing other software. It runs automated acceptance tests written in a behavior-driven development (BDD) style.

Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.

<span class="mw-page-title-main">Nodeclipse</span>

Nodeclipse is a set of third-party developer solutions for Eclipse for programming in JavaScript, CoffeeScript with focus on Node.js.

<span class="mw-page-title-main">PlantUML</span> Open-source software tool

PlantUML is an open-source tool allowing users to create diagrams from a plain text language. Besides various UML diagrams, PlantUML has support for various other software development related formats, as well as visualisation of JSON and YAML files.

<span class="mw-page-title-main">PhantomJS</span> Headless browser

PhantomJS is a discontinued headless browser used for automating web page interaction. PhantomJS provides a JavaScript API enabling automated navigation, screenshots, user behavior and assertions making it a common tool used to run browser-based unit tests in a headless system like a continuous integration environment. PhantomJS is based on WebKit making it a similar browsing environment to Safari and Google Chrome. It is open-source software released under the BSD License.

Perforce Software, Inc. is an American developer of software used for developing and running applications, including version control software, web-based repository management, developer collaboration, application lifecycle management, web application servers, debugging tools and agile planning software.

<span class="mw-page-title-main">Project Jupyter</span> Open source data science software

Project Jupyter is a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages.

<span class="mw-page-title-main">PureScript</span> Strongly-typed language that compiles to JavaScript

PureScript is a strongly-typed, purely-functional programming language that transpiles to JavaScript, C++11, Erlang, and Go. It can be used to develop web applications, server side apps, and also desktop applications with use of Electron or via C++11 and Go compilers with suitable libraries. Its syntax is mostly comparable to that of Haskell. In addition, it introduces row polymorphism and extensible records. Also, contrary to Haskell, the PureScript language is defined as having a strict evaluation strategy, although there are non-conforming back ends which implement a lazy evaluation strategy.

<span class="mw-page-title-main">BookStack</span>

BookStack is a free and open-source wiki software aimed for a simple, self-hosted, and easy-to-use platform. Based on Laravel, a PHP framework, BookStack is released under the MIT License. It uses the ideas of books to organise pages and store information. BookStack is multilingual and available in over thirty languages.

<span class="mw-page-title-main">MkDocs</span> Documentation generator

MkDocs is static site generator designed for building project documentation. It is written in Python, and also used in other environments.

References

  1. Gärtner, Markus (Jul 2012). ATDD by Example: A Practical Guide to Acceptance Test-Driven Development. Addison-Wesley Professional. ISBN   978-0321784155.
  2. "concordion". GitHub. Retrieved 2016-09-04.
  3. "Concordion FAQ" . Retrieved May 2, 2011..
  4. "concordion/concordion-excel-extension". GitHub. Retrieved 2016-09-04.
  5. Riley, Tim; Goucher, Adam (October 2009). Beautiful Testing: Leading Professionals Reveal How They Improve Software. O'Reilly Media. p. 350. ISBN   978-0596159818.
  6. "Concordion | Extensions | Java". concordion.org. Retrieved 2016-09-04.
  7. "concordion/concordion-screenshot-extension". GitHub. Retrieved 2016-09-04.
  8. "concordion/concordion-storyboard-extension". GitHub. Retrieved 2016-09-04.
  9. "concordion/concordion-logback-extension". GitHub. Retrieved 2016-09-04.
  10. "David Peterson: Concordion Extensions". blog.davidpeterson.co.uk. Archived from the original on 2016-09-11. Retrieved 2016-09-04.
  11. Besson, Felipe M.; Beder, Delano M.; Chaim, Marcos L. (June 2010). "An Automated Approach for Acceptance Web Test Case Modeling and Executing". Agile Processes in Software Engineering and Extreme Programming. 11th International Conference on Agile Software Development, XP 2010. Trondheim, Norway: Springer Berlin Heidelberg. pp. 160–165. doi:10.1007/978-3-642-13054-0_12.{{cite conference}}: |access-date= requires |url= (help); |archive-url= requires |url= (help)
  12. Latorre, Latorre (2014-06-01). "A successful application of a Test-Driven Development strategy in the industrial environment". Empirical Software Engineering. 19 (3): 753–773. doi:10.1007/s10664-013-9281-9. S2CID   15196251.
  13. "concordion/idea-concordion-support". GitHub. Retrieved 2016-09-04.
  14. "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 2016-09-04.
  15. "Google Groups". groups.google.com. Retrieved 2016-09-04.