blob: 1ba3bb6f56ae8ec88bf4125765150d184aa54ab3 [file] [log] [blame]
nstrazf3c98602001-09-24 18:32:45 +00001
2
3Linux Test Project HOWTO
4
Chris Dearman37550cf2012-10-17 19:54:01 -0700510 October 2000
nstrazf3c98602001-09-24 18:32:45 +00006
7Nate Straz
8
9Abstract
10
11This document explains some of the more in depth topics of
12the Linux Test Project and related testing issues. It does
13not cover basic installation procedures. See the INSTALL
14and README files in the tarball for that information.
15
161 Preface
17
18This document was written to help bring the community up
19to speed on the ins and outs of the Linux Test Project.
20
Chris Dearman37550cf2012-10-17 19:54:01 -0700211.1 Copyright
nstrazf3c98602001-09-24 18:32:45 +000022
Chris Dearman37550cf2012-10-17 19:54:01 -070023Copyright (c) 2000 by SGI, Inc.
nstrazf3c98602001-09-24 18:32:45 +000024
25Please freely copy and distribute (sell or give away) this
26document in any format. It's requested that corrections
Yuan Sun6c810502015-04-02 17:11:06 +080027and/or comments be forwarded to the document maintainer.
nstrazf3c98602001-09-24 18:32:45 +000028You may create a derivative work and distribute it provided
Chris Dearman37550cf2012-10-17 19:54:01 -070029that you:
nstrazf3c98602001-09-24 18:32:45 +000030
31* Send your derivative work (in the most suitable format
32 such as sgml) to the LDP (Linux Documentation Project)
33 or the like for posting on the Internet. If not the LDP,
Chris Dearman37550cf2012-10-17 19:54:01 -070034 then let the LDP know where it is available.
nstrazf3c98602001-09-24 18:32:45 +000035
36* License the derivative work with this same license or use
37 GPL. Include a copyright notice and at least a pointer
Chris Dearman37550cf2012-10-17 19:54:01 -070038 to the license used.
nstrazf3c98602001-09-24 18:32:45 +000039
Chris Dearman37550cf2012-10-17 19:54:01 -070040* Give due credit to previous authors and major contributors.
nstrazf3c98602001-09-24 18:32:45 +000041
42If you're considering making a derived work other than a
43translation, it's requested that you discuss your plans
Chris Dearman37550cf2012-10-17 19:54:01 -070044with the current maintainer.
nstrazf3c98602001-09-24 18:32:45 +000045
Chris Dearman37550cf2012-10-17 19:54:01 -0700461.2 Disclaimer
nstrazf3c98602001-09-24 18:32:45 +000047
48Use the information in this document at your own risk. I
49disavow any potential liability for the contents of this
50document. Use of the concepts, examples, and/or other content
Chris Dearman37550cf2012-10-17 19:54:01 -070051of this document is entirely at your own risk.
nstrazf3c98602001-09-24 18:32:45 +000052
53All copyrights are owned by their owners, unless specifically
54noted otherwise. Use of a term in this document should
55not be regarded as affecting the validity of any trademark
Chris Dearman37550cf2012-10-17 19:54:01 -070056or service mark.
nstrazf3c98602001-09-24 18:32:45 +000057
58Naming of particular products or brands should not be seen
Chris Dearman37550cf2012-10-17 19:54:01 -070059as endorsements.
nstrazf3c98602001-09-24 18:32:45 +000060
61You are strongly recommended to take a backup of your system
Chris Dearman37550cf2012-10-17 19:54:01 -070062before major installation and backups at regular intervals.
nstrazf3c98602001-09-24 18:32:45 +000063
Chris Dearman37550cf2012-10-17 19:54:01 -0700642 Introduction
nstrazf3c98602001-09-24 18:32:45 +000065
Chris Dearman37550cf2012-10-17 19:54:01 -0700662.1 What is the Linux Test Project?
nstrazf3c98602001-09-24 18:32:45 +000067
68The Linux Test Project (LTP) is an effort to create a set
69of tools and tests to verify the functionality and stability
70of the Linux kernel. We hope this will support Linux development
71by making unit testing more complete and minimizing user
72impact by building a barrier to keep bugs from making it
Chris Dearman37550cf2012-10-17 19:54:01 -070073to the user.
nstrazf3c98602001-09-24 18:32:45 +000074
Chris Dearman37550cf2012-10-17 19:54:01 -0700752.2 What is wrong with the current testing model?
nstrazf3c98602001-09-24 18:32:45 +000076
77The Linux development community utilizes two important (some
78out argue most important) testing techniques in its normal
79operations: Design and Code Inspections. The intent of LTP
80is to support this by giving developers an ever growing
81set of tools to help identify any operational problems in
82their code that may be missed by human review. One of the
83toughest categories of problems to catch with inspection
84is that of interaction of features. With a continuously
85improving set of tests and tools, developers can get an
86indication of whether their changes may have broken some
Chris Dearman37550cf2012-10-17 19:54:01 -070087other functionality.
nstrazf3c98602001-09-24 18:32:45 +000088
89There is no such thing as a perfect test base. It is only
90useful it if keeps up with new and changing functionality,
Chris Dearman37550cf2012-10-17 19:54:01 -070091and if it actually gets used.
nstrazf3c98602001-09-24 18:32:45 +000092
Chris Dearman37550cf2012-10-17 19:54:01 -0700932.3 Are you doing benchmarking?
nstrazf3c98602001-09-24 18:32:45 +000094
95Not at this time. We are more interested in functional,
96regression, and stress testing the Linux kernel. Benchmarking
97may be workable to compare the performance among kernel
Chris Dearman37550cf2012-10-17 19:54:01 -070098versions.
nstrazf3c98602001-09-24 18:32:45 +000099
Chris Dearman37550cf2012-10-17 19:54:01 -07001002.4 Are you doing standards testing?
nstrazf3c98602001-09-24 18:32:45 +0000101
102No, we are leaving that to the Linux Standards Base (LSB).
103 See the Linux Standards Base [http://www.linuxbase.org/||web site]
Chris Dearman37550cf2012-10-17 19:54:01 -0700104for more information.
nstrazf3c98602001-09-24 18:32:45 +0000105
Chris Dearman37550cf2012-10-17 19:54:01 -07001063 Structure
nstrazf3c98602001-09-24 18:32:45 +0000107
108The basic building block of the test project is a test case
109that consists of a single action and a verification that
110the action worked. The result of the test case is usually
Chris Dearman37550cf2012-10-17 19:54:01 -0700111restricted to PASS/FAIL.
nstrazf3c98602001-09-24 18:32:45 +0000112
113A test program is a runnable program that contains one or
114more test cases. Test programs often understand command
115line options which alter their behavior. The options could
116determine the amount of memory tested, the location of temporary
117files, the type of network packet used, or any other useful
118parameter.
119
120Test tags are used to pair a unique identifier with a test
121program and a set of command line options. Test tags are
122the basis for test suites.
123
Chris Dearman37550cf2012-10-17 19:54:01 -07001244 Writing Tests
nstrazf3c98602001-09-24 18:32:45 +0000125
126Writing a test case is a lot easier than most people think.
127 Any code that you write to examine how a part of the kernel
128works can be adapted into a test case. All that is needed
129is a way to report the result of the action to the rest
130of the world. There are several ways of doing this, some
Chris Dearman37550cf2012-10-17 19:54:01 -0700131more involved than others.
nstrazf3c98602001-09-24 18:32:45 +0000132
Chris Dearman37550cf2012-10-17 19:54:01 -07001334.1 Exit Style Tests
nstrazf3c98602001-09-24 18:32:45 +0000134
135Probably the simplest way of reporting the results of a test
136case is the exit status of your program. If your test program
137encounters unexpected or incorrect results, exit the test
138program with a non-zero exit status, i.e. exit(1). Conversely,
139if your program completes as expected, return a zero exit
140status, i.e. exit(0). Any test driver should be able to
141handle this type of error reporting. If a test program has
142multiple test cases you won't know which test case failed,
Chris Dearman37550cf2012-10-17 19:54:01 -0700143but you will know the program that failed.
nstrazf3c98602001-09-24 18:32:45 +0000144
Chris Dearman37550cf2012-10-17 19:54:01 -07001454.2 Formatted Output Tests
nstrazf3c98602001-09-24 18:32:45 +0000146
147The next easiest way of reporting the results is to write
148the results of each test case to standard output. This allows
149for the testing results to be more understandable to both
150the tester and the analysis tools. When the results are
151written in a standard way, tools can be used to analyze
Chris Dearman37550cf2012-10-17 19:54:01 -0700152the results.
nstrazf3c98602001-09-24 18:32:45 +0000153
1545 Testing Tools
155
156The Linux Test Project has not yet decided on a "final" test
subrata_modak14390fd2009-05-19 09:39:11 +0000157harness. We have provided a simple solution with ltp-pan to
nstrazf3c98602001-09-24 18:32:45 +0000158make due until a complete solution has been found/created
Chris Dearman37550cf2012-10-17 19:54:01 -0700159that compliments the Linux kernel development process.
nstrazf3c98602001-09-24 18:32:45 +0000160Several people have said we should use such and such a test
161harness. Until we find we need a large complex test harness,
Chris Dearman37550cf2012-10-17 19:54:01 -0700162we will apply the KISS concept.
nstrazf3c98602001-09-24 18:32:45 +0000163
subrata_modak14390fd2009-05-19 09:39:11 +00001645.1 Ltp-pan
nstrazf3c98602001-09-24 18:32:45 +0000165
subrata_modak14390fd2009-05-19 09:39:11 +0000166Ltp-pan is a simple test driver with the ability to keep track
nstrazf3c98602001-09-24 18:32:45 +0000167of orphaned processes and capture test output. It works
168by reading a list of test tags and command lines and runs
subrata_modak14390fd2009-05-19 09:39:11 +0000169them. By default ltp-pan will select a command randomly from
nstrazf3c98602001-09-24 18:32:45 +0000170the list of test tags, wait for it to finish. Through command
171line options you can run through the entire list sequentially,
172run n tests, keep n test running at all times, and buffer
subrata_modak14390fd2009-05-19 09:39:11 +0000173test output. Ltp-pan can be nested to create very complex test
nstrazf3c98602001-09-24 18:32:45 +0000174environments.
175
subrata_modak14390fd2009-05-19 09:39:11 +0000176Ltp-pan uses an active file, also called a zoo file to keep track
nstrazf3c98602001-09-24 18:32:45 +0000177of which tests are currently running. This file holds the
178pid, tag, and a portion of the command line. When you start
subrata_modak14390fd2009-05-19 09:39:11 +0000179ltp-pan it becomes a test tag in itself, thus it requires a
180name for itself. Ltp-pan updates the active file to show which
nstrazf3c98602001-09-24 18:32:45 +0000181test tags are currently running. When a test tag exits,
subrata_modak14390fd2009-05-19 09:39:11 +0000182ltp-pan will overwrite the first character with a '#'. The active
183file can be shared between multiple instances of ltp-pan so
nstrazf3c98602001-09-24 18:32:45 +0000184you know which tests were running when the system crashes
Chris Dearman37550cf2012-10-17 19:54:01 -0700185by looking at one file.
nstrazf3c98602001-09-24 18:32:45 +0000186
subrata_modak14390fd2009-05-19 09:39:11 +0000187A ltp-pan file contains a list of test tags for ltp-pan to run. The
188format of a ltp-pan file is as follows:
nstrazf3c98602001-09-24 18:32:45 +0000189
190testtag testprogram -o one -p two other command line options
191
Chris Dearman37550cf2012-10-17 19:54:01 -0700192# This is a comment. It is a good idea to describe the test
nstrazf3c98602001-09-24 18:32:45 +0000193
Chris Dearman37550cf2012-10-17 19:54:01 -0700194# tags in your ltp-pan file. Tests programs can have different
nstrazf3c98602001-09-24 18:32:45 +0000195
Chris Dearman37550cf2012-10-17 19:54:01 -0700196# behaviors depending on the command line options so it is
nstrazf3c98602001-09-24 18:32:45 +0000197
198# helpful to describe what each test tag is meant to verify
199or # provoke.
200
201# Some more test cases
202
203mm01 mmap001 -m 10000
204
205# 40 Mb mmap() test.
206
Chris Dearman37550cf2012-10-17 19:54:01 -0700207# Creates a 10000 page mmap, touches all of the map, sync's
nstrazf3c98602001-09-24 18:32:45 +0000208
209# it, and munmap()s it.
210
211mm03 mmap001 -i 0 -I 1 -m 100
212
213# repetitive mmapping test.
214
215# Creates a one page map repetitively for one minute.
216
217dup02 dup02
218
219# Negative test for dup(2) with bad fd
220
Chris Dearman37550cf2012-10-17 19:54:01 -0700221kill09 kill09
nstrazf3c98602001-09-24 18:32:45 +0000222
223# Basic test for kill(2)
224
subrata_modak14390fd2009-05-19 09:39:11 +0000225fs-suite01 ltp-pan -e -a fs-suite01.zoo -n fs-suite01 -f runtest/fs
nstrazf3c98602001-09-24 18:32:45 +0000226
227# run the entire set of file system tests
228
229The test tags are simple identifiers, no spaces are allowed.
230The test of the line is the program to run, which is done
231using execvp(3). Lines starting with '#' are comments and
subrata_modak14390fd2009-05-19 09:39:11 +0000232ignored by ltp-pan. It is a good practice to include descriptions
nstrazf3c98602001-09-24 18:32:45 +0000233with your test tags so you can have a reminder what a certain
234obscure test tag tries to do.
235
2365.1.1 Examples
237
subrata_modak14390fd2009-05-19 09:39:11 +0000238The most basic way to run ltp-pan is by passing the test program
nstrazf3c98602001-09-24 18:32:45 +0000239and parameters on the command line. This will run the single
Chris Dearman37550cf2012-10-17 19:54:01 -0700240program once and wrap the output.
nstrazf3c98602001-09-24 18:32:45 +0000241
subrata_modak14390fd2009-05-19 09:39:11 +0000242$ ltp-pan -a ltp.zoo -n tutor sleep 4
nstrazf3c98602001-09-24 18:32:45 +0000243
Chris Dearman37550cf2012-10-17 19:54:01 -0700244<<<test_start>>>
nstrazf3c98602001-09-24 18:32:45 +0000245
246tag=cmdln stime=971450564
247
248cmdline="sleep 4"
249
250contacts=""
251
252analysis=exit
253
254initiation_status="ok"
255
256<<<test_output>>>
257
258<<<execution_status>>>
259
260duration=103341903 termination_type=exited termination_id=0
261corefile=no cutime=0 cstime=0
262
263<<<test_end>>>
264
265$ cat ltp.zoo
266
Chris Dearman37550cf2012-10-17 19:54:01 -0700267#9357,tutor,pan/ltp-pan -a ltp.zoo -n tutor sleep 4
nstrazf3c98602001-09-24 18:32:45 +0000268
269#9358,cmdln,sleep 4
270
Chris Dearman37550cf2012-10-17 19:54:01 -0700271$
nstrazf3c98602001-09-24 18:32:45 +0000272
273How it works
274
275This example shows the two parameters that are always required
subrata_modak14390fd2009-05-19 09:39:11 +0000276by ltp-pan, the active file and a test tag for ltp-pan. The "sleep
nstrazf3c98602001-09-24 18:32:45 +00002774" on the end of the command line is a test program and
subrata_modak14390fd2009-05-19 09:39:11 +0000278parameters that ltp-pan should run. This test is given the tag
279"cmdln." Ltp-pan will run one test randomly, which ends
280up being cmdln since it is the only test that we told ltp-pan
Chris Dearman37550cf2012-10-17 19:54:01 -0700281about.
nstrazf3c98602001-09-24 18:32:45 +0000282
subrata_modak14390fd2009-05-19 09:39:11 +0000283In the active file, ltp.zoo, ltp-pan writes the pid, test tag,
nstrazf3c98602001-09-24 18:32:45 +0000284and part of the command line for the currently running tests.
285The command lines are truncated so each line will fit on
subrata_modak14390fd2009-05-19 09:39:11 +0000286an 80 column display. When a test tag finishes, ltp-pan will
nstrazf3c98602001-09-24 18:32:45 +0000287place a '#' at the beginning of the line to mark it as available.
288Here you can see that cmdln and tutor, the name we gave
subrata_modak14390fd2009-05-19 09:39:11 +0000289ltp-pan, ran to completion. If the computer hangs, you can read
nstrazf3c98602001-09-24 18:32:45 +0000290this file to see which test programs were running.
291
292We have run one test once. Let's do something a little more
293exciting. Let's run one test several times, at the same
Chris Dearman37550cf2012-10-17 19:54:01 -0700294time.
nstrazf3c98602001-09-24 18:32:45 +0000295
subrata_modak14390fd2009-05-19 09:39:11 +0000296$ ltp-pan -a ltp.zoo -n tutor -x 3 -s 3 -O /tmp sleep 1
nstrazf3c98602001-09-24 18:32:45 +0000297
298<<<test_start>>>
299
300tag=cmdln stime=971465653
301
302cmdline="sleep 1"
303
304contacts=""
305
306analysis=exit
307
308initiation_status="ok"
309
310<<<test_output>>>
311
Chris Dearman37550cf2012-10-17 19:54:01 -0700312
nstrazf3c98602001-09-24 18:32:45 +0000313
314<<<execution_status>>>
315
316duration=103326814 termination_type=exited termination_id=0
317corefile=no
318
319cutime=1 cstime=0
320
321<<<test_end>>>
322
323<<<test_start>>>
324
325tag=cmdln stime=971465653
326
327cmdline="sleep 1"
328
329contacts=""
330
331analysis=exit
332
333initiation_status="ok"
334
335<<<test_output>>>
336
Chris Dearman37550cf2012-10-17 19:54:01 -0700337
nstrazf3c98602001-09-24 18:32:45 +0000338
339<<<execution_status>>>
340
341duration=103326814 termination_type=exited termination_id=0
342corefile=no
343
344cutime=0 cstime=1
345
346<<<test_end>>>
347
348<<<test_start>>>
349
350tag=cmdln stime=971465653
351
352cmdline="sleep 1"
353
354contacts=""
355
356analysis=exit
357
358initiation_status="ok"
359
360<<<test_output>>>
361
Chris Dearman37550cf2012-10-17 19:54:01 -0700362
nstrazf3c98602001-09-24 18:32:45 +0000363
364<<<execution_status>>>
365
366duration=103326814 termination_type=exited termination_id=0
367corefile=no
368
369cutime=0 cstime=0
370
371<<<test_end>>>
372
373How it works
374
375In this example we run another fake test from the command
376line, but we run it three times (-s 3) and keep three test
377tags active at the same time (-x 3). The -O parameter is
378a directory where temporary files can be created to buffer
379the output of each test tag. You can see in the output that
380cmdln ran three times. If the -O option were omitted, your
Chris Dearman37550cf2012-10-17 19:54:01 -0700381test output would be mixed, making it almost worthless.
nstrazf3c98602001-09-24 18:32:45 +0000382
subrata_modak14390fd2009-05-19 09:39:11 +0000383* Using a ltp-pan file to run multiple tests
nstrazf3c98602001-09-24 18:32:45 +0000384
subrata_modak14390fd2009-05-19 09:39:11 +0000385* Nesting ltp-pan
nstrazf3c98602001-09-24 18:32:45 +0000386
subrata_modak14390fd2009-05-19 09:39:11 +0000387For more information on ltp-pan see the man page doc/man1/ltp-pan.1.
nstrazf3c98602001-09-24 18:32:45 +0000388
3895.2 Scanner
390
subrata_modak14390fd2009-05-19 09:39:11 +0000391Ltp-scanner is a results analysis tool that understands the rts
392style output which ltp-pan generates by default. It will produce
nstrazf3c98602001-09-24 18:32:45 +0000393a table summarizing which tests passed and which failed.
Chris Dearman37550cf2012-10-17 19:54:01 -0700394
Chris Dearman37550cf2012-10-17 19:54:01 -07003956 To Do
nstrazf3c98602001-09-24 18:32:45 +0000396
397There are a lot of things that still need to be done to make
398this a complete kernel testing system. The following sections
Chris Dearman37550cf2012-10-17 19:54:01 -0700399will discuss some of the to do items in detail.
nstrazf3c98602001-09-24 18:32:45 +0000400
Chris Dearman37550cf2012-10-17 19:54:01 -07004016.1 Configuration Analysis
nstrazf3c98602001-09-24 18:32:45 +0000402
403While the number of configuration options for the Linux kernel
404is seen as a strength to developers and users alike, it
405is a curse to testers. To create a powerful automated testing
406system, we need to be able to determine what the configuration
407on the booted box is and then determine which tests should
Chris Dearman37550cf2012-10-17 19:54:01 -0700408be run on that box.
nstrazf3c98602001-09-24 18:32:45 +0000409
410The Linux kernel has hundreds of configuration options that
411can be set to compile the kernel. There are more options
412that can be set when you boot the kernel and while it is
413running. There are also many patches that can be applied
Chris Dearman37550cf2012-10-17 19:54:01 -0700414to the kernel to add functionality or change behavior.
nstrazf3c98602001-09-24 18:32:45 +0000415
Chris Dearman37550cf2012-10-17 19:54:01 -07004166.2 Result Comparison
nstrazf3c98602001-09-24 18:32:45 +0000417
418A lot of testing will be done in the life of the Linux Test
419Project. Keeping track of the results from all the testing
420will require some infrastructure. It would be nice to take
421that output from a test machine, feed it to a program and
422receive a list of items that broke since the last run on
423that machine, or were fixed, or work on another test machine
Chris Dearman37550cf2012-10-17 19:54:01 -0700424but not on this one.
nstrazf3c98602001-09-24 18:32:45 +0000425
Chris Dearman37550cf2012-10-17 19:54:01 -07004267 Contact information and updates
nstrazf3c98602001-09-24 18:32:45 +0000427
subrata_modak72ff4252007-07-24 10:09:02 +0000428URL: http://ltp.sourceforge.net/
nstrazf3c98602001-09-24 18:32:45 +0000429
Chris Dearman37550cf2012-10-17 19:54:01 -0700430mailing list: ltp-list@lists.sourceforge.net
nstrazf3c98602001-09-24 18:32:45 +0000431
subrata_modak72ff4252007-07-24 10:09:02 +0000432list archive: https://sourceforge.net/mailarchive/forum.php?forum_name=ltp-list
nstrazf3c98602001-09-24 18:32:45 +0000433
434Questions and comments should be sent to the LTP mailing
subrata_modak72ff4252007-07-24 10:09:02 +0000435list at ltp-list@lists.sourceforge.net. To subscribe, please go to
Chris Dearman37550cf2012-10-17 19:54:01 -0700436https://lists.sourceforge.net/lists/listinfo/ltp-list.
nstrazf3c98602001-09-24 18:32:45 +0000437
438The source is also available via CVS. See the web site for
Chris Dearman37550cf2012-10-17 19:54:01 -0700439a web interface and check out instructions.
nstrazf3c98602001-09-24 18:32:45 +0000440
Chris Dearman37550cf2012-10-17 19:54:01 -07004418 Glossary
nstrazf3c98602001-09-24 18:32:45 +0000442
443Test IEEE/ANSI([footnote] Kit, Edward, Software Testing in the Real World:
Chris Dearman37550cf2012-10-17 19:54:01 -0700444Improving the Process. P. 82. ACM Press, 1995.) :
nstrazf3c98602001-09-24 18:32:45 +0000445 (i) An activity in which a system or component is executed
446under specified conditions, the results are observed or
447record, and an evaluation is made of some aspect of the
Chris Dearman37550cf2012-10-17 19:54:01 -0700448system or component.
449 (ii) A set of one or more test cases.
nstrazf3c98602001-09-24 18:32:45 +0000450
451Test Case A test assertion with a single result that
452 is being verified. This allows designations such as PASS
453 or FAIL to be applied to a single bit of functionality.
454 A single test case may be one of many test cases for
Chris Dearman37550cf2012-10-17 19:54:01 -0700455 testing the complete functionality of a system.
456 IEEE/ANSI:
nstrazf3c98602001-09-24 18:32:45 +0000457 (i)A set of test inputs, execution conditions, and expected
Chris Dearman37550cf2012-10-17 19:54:01 -0700458 results developed for a particular objective.
nstrazf3c98602001-09-24 18:32:45 +0000459 (ii) The smallest entity that is always executed as a unit,
Chris Dearman37550cf2012-10-17 19:54:01 -0700460 from beginning to end.
nstrazf3c98602001-09-24 18:32:45 +0000461
462Test Driver A program that handles the execution of
463 test programs. It is responsible for starting the test
464 programs, capturing their output, and recording their
subrata_modak14390fd2009-05-19 09:39:11 +0000465 results. Ltp-pan is an example of a test driver.
nstrazf3c98602001-09-24 18:32:45 +0000466
467Test Framework A mechanism for organizing a group of
468 tests. Frameworks may have complex or very simple API's,
469 drivers and result logging mechanisms. Examples of frameworks
Chris Dearman37550cf2012-10-17 19:54:01 -0700470 are TETware and DejaGnu.
nstrazf3c98602001-09-24 18:32:45 +0000471
472Test Harness A Test harness is the mechanism that connects
473 a test program to a test framework. It may be a specification
474 of exit codes, or a set of libraries for formatting messages
475 and determining exit codes. In TETware, the tet_result()
Chris Dearman37550cf2012-10-17 19:54:01 -0700476 API is the test harness.
nstrazf3c98602001-09-24 18:32:45 +0000477
478Test Program A single invokable program. A test program
479 can contain one or more test cases. The test harness's
480 API allows for reporting/analysis of the individual test
Chris Dearman37550cf2012-10-17 19:54:01 -0700481 cases.
nstrazf3c98602001-09-24 18:32:45 +0000482
483Test Suite A collection of tests programs, assertions,
Chris Dearman37550cf2012-10-17 19:54:01 -0700484 cases grouped together under a framework.
nstrazf3c98602001-09-24 18:32:45 +0000485
486Test Tag An identifier that corresponds to a command
487 line which runs a test. The tag is a single word that
Chris Dearman37550cf2012-10-17 19:54:01 -0700488 matches a test program with a set of command line arguments.