1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
[[!meta title="Subplot"]]
[[Download]] —
[[Documentation|docs]] —
[[Contact]] —
[[License]] —
[[Blog]]
[[!img subplot.svg class=float_right
alt="Subplot alpha logo"]]
## When all stakeholders really need to understand acceptance criteria
Capture and communicate acceptance criteria for software and systems,
and how they are verified, in a way that's understood by all project
stakeholders, including end-users.
Subplot is a set of tools for specifying, documenting, and
implementing automated acceptance tests for systems and software.
Subplot tools help produce a human-readable document of acceptance
criteria and a program that automatically tests a system against those
criteria.
Subplot is currently in its ALPHA stage.
## Latest from the project
<div class="newslist">
[[!inline pages="page(blog/*)"
limit=5 template=titlepage archive=yes trail=no feeds=no]]
</div>
## Participate
Subplot is a community project: it is developed by some people who
want to do it. You could help!
* [[Governance]] model
* [[Code of conduct|conduct]]
* [[Architecture]]
* [[Definition of success|success]]
* [[Contributing]] to the project
* [[Contact]] the project
Please note that this project is released with a [[Contributor Code of
Conduct|conduct]]. By participating in this project you agree
to abide by its terms.
## Examples
The [documentation][] site has examples that are from the Subplot
source repository and typeset and tested by CI, so they're always up
to date. This means the examples always work.
[documentation]: https://doc.subplot.liw.fi/
Below is a pretty minimal example.
~~~~~{.markdown .numberLines}
---
title: "**echo**(1) acceptance tests"
template: python
bindings: echo.yaml
functions: echo.py
...
Introduction
=============================================================================
**echo**(1) is a Unix command line tool, which writes its command line
arguments to the standard output. This is a simple acceptance test
suite for the `/bin/echo` implementation.
No arguments
=============================================================================
```scenario
when user runs echo without arguments
then exit code is 0
then standard output contains a newline
then standard error is empty
```
Hello, world
=============================================================================
```scenario
when user runs echo with arguments hello, world
then exit code is 0
then standard output contains "hello, world"
then standard error is empty
```
~~~~~
See actual, working, tested examples:
* The Unix echo command
([html](https://doc.subplot.liw.fi/echo.html),
[PDF](https://doc.subplot.liw.fi/echo.pdf),
[source](https://gitlab.com/subplot/subplot/-/blob/main/echo.md)).
* A hypothetical JSON store with access control and a web API
([html](https://doc.subplot.liw.fi/muck.html),
[PDF](https://doc.subplot.liw.fi/muck.pdf),
[source](https://gitlab.com/subplot/subplot/-/blob/main/muck.md)).
* Subplot's own acceptance criteria, a non-trivial example
([html](https://doc.subplot.liw.fi/subplot.html),
[PDF](https://doc.subplot.liw.fi/subplot.pdf),
[source](https://gitlab.com/subplot/subplot/-/blob/main/subplot.md)).
# A bonus kitten
Because you scrolled all the way down.
[[!img kitten.jpg class=float_right
alt="Kitten being adorable. By Ckahler on English Wikipedia"]]
|