]> git.donarmstrong.com Git - neurodebian.git/blob - sphinx/proj_debtest.rst
Also for stats report which repo and which job number use our setup
[neurodebian.git] / sphinx / proj_debtest.rst
1 .. -*- mode: rst; fill-column: 78 -*-
2 .. ex: set sts=4 ts=4 sw=4 et tw=79:
3
4 .. _project_debtest:
5
6 *************************
7 Thorough testing: DebTest
8 *************************
9
10 Ideally software comes with an exhaustive test suite that can be used to
11 determine whether this particular software works as expected on the Debian
12 platform. However, especially for complex software, these test suites are often
13 resource hungry (CPU time, memory, disk space, network bandwidth) and cannot be
14 ran at package build time by Debian's buildds. Consequently, test suites are
15 typically utilized manually and only by the respective packager on a particular
16 machine, before uploading a new version to the archive.
17
18 However, Debian is an integrated system and packaged software typically relies
19 on functionality provided by other Debian packages (e.g. shared libraries)
20 instead of shipping duplicates with different versions in every package -- for
21 many good reasons. Unfortunately, there is also a downside to this: Debian
22 packages often use versions of 3rd-party tools that are different from those
23 tested by upstream, and moreover, the actual versions of dependencies might
24 change frequently between subsequent uploads of a dependent package.  Currently
25 a change in a dependency that introduces an incompatibility cannot be detected
26 reliably even if upstream provides a test suite that would have caught the
27 breakage.  Therefore integration testing heavily relies on users to detect
28 incorrect functioning and file bug reports. Although there are archive-wide QA
29 efforts (e.g. constantly rebuilding all packages) these tests can only detect
30 API/ABI breakage or functionality tested during build-time checks -- they are
31 not exhaustive for the aforementioned reasons.
32
33 This is a proposal to, first of all, package upstream test suites in a way that
34 they can be used to run expensive archive-wide QA tests. However, this is also
35 a proposal to establish means to test interactions between software from
36 multiple Debian packages to provide more thorough continued integration and
37 regression testing for the Debian systems.
38
39
40 To address these open issues we are working on *DebTest* -- a framework with
41 conventions and tools that allow Debian to distribute test batteries developed
42 by upstream or Debian developers. It aims at complementing existing QA efforts
43 by going beyond single-package, build-time tests and cover interactions between
44 software from multiple Debian packages to provide more thorough continued
45 integration and regression testing for the Debian systems DebTest aims to
46 enable developers and users to perform extensive testing of a deployed Debian
47 system or a particular software of interest in a uniform fashion.
48
49
50 Status
51 ------
52
53 The project is still in an early conceptual stage. We are currently working on
54 a SPEC_ draft that will be submitted to the Debian community for further
55 discussion of the desired properties of a more comprehensive testing framework.
56 Furthermore, we started looking for existing (free) software solutions that
57 might be used to implement such a framework.
58
59 We have already started packaging :ref:`versatile datasets <pkgs-by_purpose-neuroscience_datasets>`
60 that can be used to develop test suites.
61
62
63 .. todo:: DebTest
64
65   * Finish the SPEC_.
66   * Initiate discussion.
67   * Identify and package relevant neuroscience datasets that can be used to
68     develop multi-software regression/pipeline tests.
69
70 .. _SPEC: http://git.debian.org/?p=pkg-exppsy/neurodebian.git;a=blob_plain;f=sandbox/proposal_regressiontestframwork.moin
71
72
73 References
74 ----------
75
76 * :ref:`pkgs-by_purpose-neuroscience_datasets`
77 * `DebTest discussions on debian-devel <http://lists.debian.org/debian-devel/2011/01/msg00704.html>`_
78
79 .. include:: link_names.txt