Commit f6349c3c4cd334148637c83bcfb6017b195102f5
test: Add a README
Add a few notes about how testing works in U-Boot. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Teddy Reed <teddy.reed@gmail.com>
Showing 1 changed file with 82 additions and 0 deletions Side-by-side Diff
1 | +Testing in U-Boot | |
2 | +================= | |
3 | + | |
4 | +U-Boot has a large amount of code. This file describes how this code is | |
5 | +tested and what tests you should write when adding a new feature. | |
6 | + | |
7 | + | |
8 | +Sandbox | |
9 | +------- | |
10 | +U-Boot can be built as a user-space application (e.g. for Linux). This | |
11 | +allows test to be executed without needing target hardware. The 'sandbox' | |
12 | +target provides this feature and it is widely used in tests. | |
13 | + | |
14 | + | |
15 | +Pytest Suite | |
16 | +------------ | |
17 | + | |
18 | +Many tests are available using the pytest suite, in test/py. This can run | |
19 | +either on sandbox or on real hardware. It relies on the U-Boot console to | |
20 | +inject test commands and check the result. It is slower to run than C code, | |
21 | +but provides the ability to unify lots of test and summarise their results. | |
22 | + | |
23 | +You can run the tests on sandbox with: | |
24 | + | |
25 | + ./test/py/test.py --bd sandbox --build | |
26 | + | |
27 | +This will produce HTML output in build-sandbox/test-log.html | |
28 | + | |
29 | +See test/py/README.md for more information about the pytest suite. | |
30 | + | |
31 | + | |
32 | +tbot | |
33 | +---- | |
34 | + | |
35 | +Tbot provides a way to execute tests on target hardware. It is intended for | |
36 | +trying out both U-Boot and Linux (and potentially other software) on a | |
37 | +number of boards automatically. It can be used to create a continuous test | |
38 | +environment. See tools/tbot/README for more information. | |
39 | + | |
40 | + | |
41 | +Ad-hoc tests | |
42 | +------------ | |
43 | + | |
44 | +There are several ad-hoc tests which run outside the pytest environment: | |
45 | + | |
46 | + test/fs - File system test (shell script) | |
47 | + test/image - FIT and lagacy image tests (shell script and Python) | |
48 | + test/stdint - A test that stdint.h can be used in U-Boot (shell script) | |
49 | + trace - Test for the tracing feature (shell script) | |
50 | + vboot - Test for verified boot (shell script) | |
51 | + | |
52 | +The above should be converted to run as part of the pytest suite. | |
53 | + | |
54 | + | |
55 | +When to write tests | |
56 | +------------------- | |
57 | + | |
58 | +If you add code to U-Boot without a test you are taking a risk. Even if you | |
59 | +perform thorough manual testing at the time of submission, it may break when | |
60 | +future changes are made to U-Boot. It may even break when applied to mainline, | |
61 | +if other changes interact with it. A good mindset is that untested code | |
62 | +probably doesn't work and should be deleted. | |
63 | + | |
64 | +You can assume that the Pytest suite will be run before patches are accepted | |
65 | +to mainline, so this provides protection against future breakage. | |
66 | + | |
67 | +On the other hand there is quite a bit of code that is not covered with tests, | |
68 | +or is covered sparingly. So here are some suggestions: | |
69 | + | |
70 | +- If you are adding a new uclass, add a sandbox driver and a test that uses it | |
71 | +- If you are modifying code covered by an existing test, add a new test case | |
72 | + to cover your changes | |
73 | +- If the code you are modifying has not tests, consider writing one. Even a | |
74 | + very basic test is useful, and may be picked up and enhanced by others. It | |
75 | + is much easier to add onto a test - writing a new large test can seem | |
76 | + daunting to most contributors. | |
77 | + | |
78 | + | |
79 | +Future work | |
80 | +----------- | |
81 | + | |
82 | +Converting existing shell scripts into pytest tests. |
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c
-
mentioned in commit bcbd0c