![]() | |
Original author(s) | David Peterson |
---|---|
Developer(s) | Nigel Charman, et al. |
Stable release | 3.0.1 / July 4, 2020 |
Repository | |
Written in | Java, .NET |
Operating system | Cross-platform |
Type | Specification by example tool |
License | Apache License 2.0 |
Website | concordion |
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.
Inspired by the Fit Framework, David states the following aims were behind Concordion: [3]
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]
Before instrumentation | The greeting for World is Hello World! |
---|---|
After instrumentation | The greeting for [World](- "#name") is [Hello World!](- "?=greetingFor(#name)") |
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> |
packageorg.wikipedia;importorg.concordion.integration.junit4.ConcordionRunner;importorg.junit.runner.RunWith;@RunWith(ConcordionRunner.class)publicclassHelloWorldTest{publicStringgreetingFor(StringfirstName){return"Hello "+firstName+"!";}}
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]
Concordion has been ported to other languages including:
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.
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.
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.
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.
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.
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.
Nodeclipse is a set of third-party developer solutions for Eclipse for programming in JavaScript, CoffeeScript with focus on Node.js.
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.
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.
Project Jupyter is a project to develop open-source software, open standards, and services for interactive computing across multiple programming languages.
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.
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.
MkDocs is static site generator designed for building project documentation. It is written in Python, and also used in other environments.
{{cite conference}}
: |access-date=
requires |url=
(help); |archive-url=
requires |url=
(help)