5 | | The Boost libraries are intended to be both reliable and |
6 | | portable. Every experienced programmer knows that means each |
7 | | library must be tested against a suitable number of test cases, |
8 | | on a wide range of platforms, and then tested again (regression |
9 | | tested) every time a change is made and before every |
10 | | release. |
11 | | |
12 | | "Quality assurance based on a wide range of targeted tests" |
13 | | as one of the key answers to C.A.R Hoare's question "How did |
14 | | software get so reliable without proof." |
15 | | |
16 | | == Regression test == #regression |
17 | | |
18 | | Boost uses an automatic |
19 | | [http://www.boost.org/doc/libs/release/tools/regression/doc/index.html regression test suite] |
20 | | which generates HTML |
21 | | [http://www.boost.org/development/testing.html#RegressionTesting compiler status tables]. |
22 | | |
23 | | == Test Policy == #policy |
24 | | |
25 | | === Required === #policy.required |
26 | | |
27 | | * Every Boost library should supply one or more suitable |
28 | | test programs to be exercised by the Boost |
29 | | [http://www.boost.org/doc/libs/release/tools/regression/doc/index.html regression test suite]. |
30 | | In addition to the usual compile-link-run |
31 | | tests expecting successful completion, compile-only or |
32 | | compile-and-link-only tests may be performed, and success for |
33 | | the test may be defined as failure of the steps. |
34 | | * Test program execution must report errors by returning a |
35 | | non-zero value. They may also write to stdout or stderr, but |
36 | | that output should be relatively brief. Regardless of other |
37 | | output, a non-zero return value is the only way the |
38 | | regression test framework will recognize an error has |
39 | | occurred. Note that test programs to be included in the |
40 | | status tables must compile, link, and run quickly since the |
41 | | tests are executed many, many, times. |
42 | | * Libraries with time consuming tests should be divided |
43 | | into a fast-execution basic test program for the status |
44 | | tables, and a separate full-coverage test program for |
45 | | exhaustive test cases. The basic test should concentrate on |
46 | | compilation issues so that the status tables accurately |
47 | | reflect the library's likelihood of correct compilation on a |
48 | | platform. |
49 | | * If for any reason the usual test policies do not apply to |
50 | | a particular library, an alternate test strategy must be |
51 | | implemented. |
52 | | * A |
53 | | [http://www.boost.org/doc/libs/release/tools/regression/doc/index.html#Adding_new_test Jamfile] |
54 | | to drive the regression tests for the |
55 | | library. |
56 | | |
57 | | === Optional (but highly recommended) === #policy.optional |
58 | | |
59 | | The |
60 | | [http://www.boost.org/doc/libs/release/libs/test/index.html Boost Test Library] |
61 | | provides many useful components which ease the |
62 | | construction of test programs. |
63 | | |
64 | | * Use the library's |
65 | | [http://www.boost.org/doc/libs/release/libs/test/doc/components/test_tools/index.html Test Tools] |
66 | | for the construction of simple test programs |
67 | | that do not need much structure. |
68 | | * Use the library's |
69 | | [http://www.boost.org/doc/libs/release/libs/test/doc/components/utf/index.html Unit Test Framework] |
70 | | for the construction of more complex test |
71 | | programs that need to be structured into individual tests and |
72 | | test suites. |
73 | | |
74 | | == Suggested Protocol for Fixing Bugs or Adding Features. == #fixing-bugs |
75 | | |
76 | | * First, add regression test cases that detects the bug or |
77 | | tests the feature. Sometimes adding one case suggests similar |
78 | | untested cases, and they are added too. |
79 | | * Second, for bugs, run the regression test and verify that |
80 | | the bug is now detected. |
81 | | * Third, then, and only then, fix the bug or add the feature. |
82 | | * Finally, rerun the full regression tests - sometimes the |
83 | | change breaks something else. |
84 | | |
85 | | == History == #history |
86 | | |
87 | | [http://www.boost.org/doc/libs/release/tools/regression/doc/index.html#History See Regression Test History]. |
88 | | |
89 | | == Acknowledgements == #acknowledgements |
90 | | |
91 | | Written by Beman Dawes. Jens Maurer, Paul Moore, Gary Powell |
92 | | and Jeremy Siek contributed helpful suggestions. |
93 | | |
94 | | Copyright Beman Dawes 2001. |
| 3 | This has been move back to the [http://www.boost.org/development/test.html main site] |