Project Lead @concordion
Press the space bar to navigate sequentially, or the left/right/up/down buttons to jump to specific sections.
Press alt and click to zoom in/out of an element.
describe in plain language the business requirements and show examples of desired behaviour
Are written in HTML
(by anyone on the team, typically by a BA or tester)
<html>
<body>
Splitting Names
To help personalise our mailshots we want to have the first name and last name
of the customer.
Unfortunately the customer data that we are supplied only contains full names.
The system therefore attempts to break a supplied full name into its constituents by
splitting around whitespace.
Example
The full name Jane Smith will be broken into first name Jane and last name Smith.
</body>
</html>
In order to make the specification executable, it must be instrumented with commands.
Commands are added as HTML attributes
<span concordion:set="#name">Jane Smith</span> |
|
<span concordion:execute="#result = split(#name)"> |
|
<span concordion:assert-equals="#result.firstName">Jane</span> |
<html xmlns:concordion="http://www.concordion.org/2007/concordion">
<head>
<link href="../concordion.css" rel="stylesheet" type="text/css" />
</head>
<body>
<p>The full name Jane Smith
will be broken
into first name Jane
and last name Smith.
</body>
</html>
the instrumentation is hidden
Runs as a NUnit test
(typically written by a tester or developer)
using Concordion.NET.Integration;
namespace Marketing.Mailshot.Complete
{
[ConcordionTest]
public class SplittingNamesFixture
{
public Result Split(string fullName)
{
Result result = new Result();
string[] words = fullName.Split(' ');
result.firstName = words[0];
result.lastName = words[1];
return result;
}
}
public class Result
{
public string firstName;
public string lastName;
}
}
Executes .NET code directly,
or other interfaces via "driver" classes
Shipping
Full Name
First Name
Last Name
John Smith
John
Smith
David Peterson
David
Peterson
Matching Usernames
george.harrison
ringo.starr
See https://concordion.org/integrations/csharp/html/
See https://concordion.org/tutorial/csharp/html/
Cloned from https://github.com/concordion/concordion.net
"I found it a little hard to start at first"
"everything is really cool, it feels like magic"
"it does what it says"
"write your specs, write your code, feel free to continue by adding more specs and by improving the code"
2009 - Concordion ported to C# by Jeffrey Cameron (which inspired him to write Pickles)
2014 - Picked up by Jacek Ratzinger
2015 - Decision to cross-compile Concordion (Java) code to C# using IKVM
Markdown is a simple, natural format for creating rich text:
## This is a H2
This is a paragraph
* This is a
* bullet point list
This is an [example](example.html "Title") link
| Table | Heading |
| ----- | ------- |
| Table | Row 1 |
| Table | Row 2 |
Markdown can be created/edited with all sorts of tools:
# Splitting names
To help personalise our mailshots we want to have the first name and
last name of the customer. Unfortunately the customer data that we are
supplied only contains full names.
The system therefore attempts to break a supplied full name into its
constituents by splitting around whitespace.
### Basic Example
The full name [Jane Smith](- "#name")
is [broken](- "#result = split(#name)")
into first name [Jane](- "?=#result.firstName")
and last name [Smith](- "?=#result.lastName").
Excel,
Parallel Runner,
Storyboard,
Screenshot,
Logging Tooltip,
Log Viewer
and more...
Concordion | SpecFlow | |
---|---|---|
Grammar | Plain English | Gherkinglish |
Input Format | HTML, MD, Excel | Text |
Publishes doc with tests | Completely flexible | Limited |
Screenshots, logs etc in output | Extensible | Limited |
Instrumentation | In specification | Regexp in code |
Extensions (Parallel, Excel) | Free, open-source | SpecFlow+ (paid) |
Languages | Java, Groovy, C# * | 13+ languages |
* C# only supports HTML input currently. Parallel and Excel only currently available for Java.
Reducing the friction of using Concordion.NET
This presentation - http://tinyurl.com/concordion-net