summaryrefslogtreecommitdiff
path: root/index.mdwn
blob: 66825bc657ca63240019840ec4c89fe1718d22f9 (plain)
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"]]