source: src/documentation/tests/regression-tests.dox@ 732507

Action_Thermostats Add_AtomRandomPerturbation Add_FitFragmentPartialChargesAction Add_RotateAroundBondAction Add_SelectAtomByNameAction Added_ParseSaveFragmentResults AddingActions_SaveParseParticleParameters Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_ParticleName_to_Atom Adding_StructOpt_integration_tests AtomFragments Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.5.4 Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator CombiningParticlePotentialParsing Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_BoundInBox_CenterInBox_MoleculeActions Fix_ChargeSampling_PBC Fix_ChronosMutex Fix_FitPartialCharges Fix_FitPotential_needs_atomicnumbers Fix_ForceAnnealing Fix_IndependentFragmentGrids Fix_ParseParticles Fix_ParseParticles_split_forward_backward_Actions Fix_PopActions Fix_QtFragmentList_sorted_selection Fix_Restrictedkeyset_FragmentMolecule Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns Fix_fitting_potentials Fixes ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion FragmentAction_writes_AtomFragments FragmentMolecule_checks_bonddegrees GeometryObjects Gui_Fixes Gui_displays_atomic_force_velocity ImplicitCharges IndependentFragmentGrids IndependentFragmentGrids_IndividualZeroInstances IndependentFragmentGrids_IntegrationTest IndependentFragmentGrids_Sole_NN_Calculation JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix MoreRobust_FragmentAutomation ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PdbParser_setsAtomName PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks Rewrite_FitPartialCharges RotateToPrincipalAxisSystem_UndoRedo SaturateAtoms_findBestMatching SaturateAtoms_singleDegree StoppableMakroAction Subpackage_CodePatterns Subpackage_JobMarket Subpackage_LinearAlgebra Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg Switchable_LogView ThirdParty_MPQC_rebuilt_buildsystem TrajectoryDependenant_MaxOrder TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps TremoloParser_setsAtomName Ubuntu_1604_changes stable
Last change on this file since 732507 was d0faa8, checked in by Frederik Heber <heber@…>, 12 years ago

DOCU: Added note on failing regression test only on installcheck.

  • Property mode set to 100644
File size: 7.0 KB
Line 
1/*
2 * Project: MoleCuilder
3 * Description: creates and alters molecular systems
4 * Copyright (C) 2010 University of Bonn. All rights reserved.
5 * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
6 */
7
8/**
9 * \file regression-tests.dox
10 *
11 * This file contains explanation how to write, launch and use regression tests.
12 *
13 * Created on: Oct 11, 2011
14 * Author: heber
15 */
16
17
18/**
19 * \page regressiontest "Regression tests"
20 *
21 * Regression test with this project are used to check on the functionality of
22 * all Actions. The launch the MoleCuilder from the command line with a given
23 * action and option and basically diff the output against a stored file with
24 * the desired result. This should be the behavior of more than 90% of all
25 * regression tests.
26 *
27 * \section regressiontest-structure Directory structure
28 *
29 * They are contained in the source folder \b tests/regression. There are
30 * categories containing a distinct folder for each action. The folder for the
31 * test of a specific Action has the following structure:
32 * \li a folder \b pre contains all files required as input to the test.
33 * \li a folder \b post contains all output files against which we compare all
34 * or a number of resulting files.
35 * \li a test script \b testsuite-....at which is included in a similarly-
36 * named test script one directory level higher.
37 *
38 * \section regressiontest-launch-all Launching all tests
39 *
40 * Launching all regression tests is as simple as:
41 * -# Enter the build directory
42 * -# There, enter \b tests/regression
43 * -# Run
44 * \code make check \endcode
45 * (at you liberty with option \a -j8 or similar for running the tests in
46 * parallel.
47 *
48 * \section regressiontest-launch-some Launching a specific tests
49 *
50 * Launching a single or just some of the tests is only a little bit more
51 * complicated. There are two options: either by the test number which however
52 * changes when new tests are added, and by keywords.
53 *
54 * Then proceed as follows:
55 * -# Enter the build directory
56 * -# There, enter \b tests/regression
57 * -# Run
58 * \code ../../../tests/regression/testsuite <option> AUTOTEST_PATH="<buildpath>/src" \endcode,
59 * where \a <option> is explained in the subsections below and \a <buildpath>
60 * is the build path (i.e. the variable \a AUTOTEST_PATH should contain the
61 * path to the executable).
62 *
63 * \subsection regressiontest-launch-by-number ... by number
64 *
65 * Tests can be launched by specifying their test number, e.g. then \a <option>
66 * might be \a 283 or \a 283-284 or \a 283,285-286 or alike
67 *
68 * \subsection regressiontest-launch-by-keyword .. by keyword
69 *
70 * Tests may as well be launched by some keywords, e.g. each Action has a
71 * specific token which is also one of its keyword (see above for the
72 * policy). I.e. we may launch the test on fill-void via the \a <option>
73 * \a -k \a fill-void. Also multiple keywords may be given.
74 *
75 * \section regressiontest-results Inspecting test results
76 *
77 * The testsuite can be launched with the additional option of \a -d which
78 * leaves the directory of the test present even though the test has passed
79 * for inspection.
80 *
81 * If a test fails, in whatever way it was launched, will leave in the build
82 * directory a folder \b tests/regression/testsuite.dir/<nr> where \a <nr> is
83 * the number of the test (padded maybe with some zeros).
84 *
85 * \subsection regressiontest-results-failures Typical failure causes
86 *
87 * Here, we note down some typical failure causes:
88 * -# A test fails on installcheck on \code make distcheck \endcode: In the test
89 * a file is probably copied and then some work is done on it. Due to autoconf's
90 * distcheck policy, files copied from the archive are write-protected, hence
91 * cannot be modified. And so is the copy. The remedy is to add the line
92 * \code
93 * AT_CHECK([chmod u+w $file], 0)
94 * \endcode
95 * just after the copying to modify the write permission of the copied file \a $file
96 * and allow its modification.
97 *
98 * \section regressiontest-add Adding a new test
99 *
100 * The basic working is: have a input file, do something with it and compare
101 * to output file against a stored one.
102 *
103 * \attention Name convention of files and directories, e.g.
104 * \b tests/regression/Parser/Pdb with \b testsuite-parser-pdb-save.at
105 * - the test directory should either be called as the token of the Action it
106 * tests or a unique and brief description but with no spaces, no dashes,
107 * but CamelCase (i.e. Capitalize each new word)
108 * - the test script file should be called as follows:
109 * -# testsuite-...
110 * -# ...each directory (non-capital letters) with a dash...
111 * -# ..the name of the test directory...
112 * -# a further description of there are multiple test scripts in the
113 * test directory.
114 *
115 * Adding a new regression tests consists of the following items:
116 * -# Create a new folder in a matching category
117 * -# Create therein subfolders \b pre and \b post
118 * -# Create a test script where the name begins with \b testsuite- and contains
119 * category and the action token. See other test scripts to get an idea on how
120 * to write these and also look here (http://www.gnu.org/s/hello/manual/autoconf/Using-Autotest.html#Using-Autotest).
121 * -# In the command \a AT_KEYWORD which must be present you should given the
122 * token of the Action as it would be called from the command line (see below for
123 * the reason).
124 * -# Include your testscript in the one present one directory-level up.
125 * -# Also include your script in \b tests/scripts/Makefile.am such that the
126 * testsuite is automatically re-compiled when one of the test files has changed.
127 *
128 * On how to write a testsuite test, we refer you to one of these .at files to get a
129 * notion and here to have a reference of the possible autotest commands at hand.
130 * The scheme is always the same basically:
131 * \code
132 * AT_SETUP([General test part - description of this testsuite section])
133 * AT_KEYWORDS([<some keywords>,<actionname>,[undo/redo]])
134 * ...
135 * AT_CHECK([this], <return value>, [ignore], [ignore])
136 * AT_CHECK([that], <return value>, [stdout], [stderr])
137 * AT_CHECk([fgrep "test fine" stdout], 0, [ignore], ignore])
138 * ...
139 * AT_CLEANUP #remove all temporary files
140 * \endcode
141 * where <return value> is some number the code returns to indicate everything
142 * worked fine. The global theme is specified only once per .at file, file
143 * AT_SETUP and AT_CLEANUP sort of embrace every specific test that you want to do.
144 * Note that it is required to list the action name under AT_KEYWORDS and also
145 * give undo oder redo as an additional keyword if the undo or redo of the action
146 * is tested. It is advised to give further keywords, e.g. the directory name
147 * giving the general theme of the tests (selection, analysis, ...). Also note
148 * that all keywords are always lower-case!
149 *
150 * Note that testing the undo/redo-functionality of an Action is always placed
151 * into the same test file along with the normal functionality but in different
152 * tests (i.e. undo and redo each have their own AT_SETUP .. AT_CLEANUP wrapping).
153 *
154 *
155 * \date 2011-10-31
156 *
157 */
Note: See TracBrowser for help on using the repository browser.