summaryrefslogtreecommitdiff
path: root/yarns/0010-introduction.yarn
blob: e1338928d0fb6ca29cafdbfa59b68ec37c3349de (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
% Obnam integration test suite
% http://obnam.org/

Introduction
============

This is the Obnam integration test suite. Obnam is a backup program.
The test suite is implemented using yarn, which is a black box testing
tool for Unix programs, inspired by the BDD tools used by the Ruby
community (Cucumber, Gherkin).

Obnam has extensive unit tests, which ensure individual functions,
classes, and method work in isolation. The goal of the integration
test suite is to make sure all the pieces work together. Thus, a
typical integration test is to run Obnam in a specific kind of way, or
against a specific kind of data, and then verify that the data can be
restored correctly and that the repository is correct.

With yarn, tests are written up as "scenarios", and each scenario may
consist of several steps. Each scenario, or some group of steps within
a scenario, may tests one aspect of Obnam, or one way to use Obnam, or
one error situation.

This test suite is meant to be comprehensible to those who would use
Obnam, but aren't programmers, and would not understand the quite
low-level unit tests. Test scenarios written for yarn are written as a
document (this document), and each scenario consists of two parts: the
scenario itself, and the nitty-gritty implementation part. The
scenario is for everyone to understand, while the implementation part
is meant for programmers, and others who understand shell script. The
scenario describes, to any Obnam user, what is being tested, and at a
very high level how, without having to understand the implementation
part.

For more information:

* Obnam: <http://obnam.org/>
* Yarn: <http://liw.fi/cmdtest/>

FIXME: Outline of test suite
============================

This chapter will be removed, later, when all the outlined parts have
been implemented.

* De-duplication
    - single client vs multiple clients
    - across generations
    - with encryption
* Lock handling
    - force-lock
* Repository management
    - fsck
* System administration
    - nagios-last-backup-age

Open questions:

* test accessing live data over sftp
* what errors should I test? can I test?
* different filesystems? run test suite multiple times, and set TMPDIR
  to point at a particular filesystem each time