From a45382ba3e839242af2c24e01ac80e4388ee0016 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 11 Jul 2013 23:42:35 +0900 Subject: [PATCH] =?utf8?q?=E4=B8=8D=E8=A6=81=E3=83=95=E3=82=A1=E3=82=A4?= =?utf8?q?=E3=83=AB=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/autotest_mk.html | 2498 ------------------------------------------ 1 file changed, 2498 deletions(-) delete mode 100644 doc/autotest_mk.html diff --git a/doc/autotest_mk.html b/doc/autotest_mk.html deleted file mode 100644 index 2cde4ed..0000000 --- a/doc/autotest_mk.html +++ /dev/null @@ -1,2498 +0,0 @@ - - -Autotest.mk - ソフトウェアテストの自動化 - - - - - - - - - - -

Autotest.mk - ソフトウェアテストの自動化

-
- -


-Next:  - -
- - - -
-

Table of Contents

- -
- -
- -


-Next: , -Previous: Top, -Up: Top - -
- -

1 Autotest.mk 概要

- -

Autotest.mkはソフトウェアテスト自動化のための、GNU Makeを利用したフレームワークです。何回かmakeコマンドを実行し、コマンドファイルとテスト結果の想定をあらわすファイルを作成すれば、テストの準備は完了です。あとはmakeコマンドを1回実行すれば、テストを実行できます。テストが実行されると、詳細なログが出力されます。 - -

1.1 特徴

- -

Autotest.mkの特徴は次のとおりです。 - -

- -
- -


-Next: , -Previous: About, -Up: Top - -
- -

2 Autotest.mk インストール

- - - -
- -


-Next: , -Previous: Install, -Up: Install - -
- -

2.1 要件

- -

Autotest.mkは、LinuxやMac OS Xなどで動作します。現在動作を確認しているのは、次のディストリビューションです。 - -

- -

Mac OS Xでは、GNU Findutilsをインストールしてください。 - -

- -


-Next: , -Previous: Requirements, -Up: Install - -
- -

2.2 ダウンロード

- -

Autotest.mkのサイトまたはgithubのダウンロードページから最新版のtar.gzファイルをダウンロードします。 - -

- -


-Next: , -Previous: Download, -Up: Install - -
- -

2.3 検証

- -

ダウンロードが完了したら、opensslとdiffで正しくファイルがダウンロードができているかを検証します。 - -

$ openssl md5 autotest_mk.tar.gz | diff -s autotest_mk.tar.gz.md5sum -
-Files autotest_mk.tar.gz.md5sum and - are identical
-
-
- -


-Next: , -Previous: Verify, -Up: Install - -
- -

2.4 展開

- -

autotest_mkファイルをダウンロードしたら、展開先のディレクトリーに移動してから、展開します。 -次のコマンドでは、現在ログインしているユーザーのホームディレクトリーに展開します。 - -

$ cd ~
-$ tar xvzf autotest_mk.tar.gz
-
-

展開したら、Autotest.mkは使えるようになります。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(./configureやmake、make install)は必要ありません。 - -

- -


-Previous: Expand, -Up: Install - -
- -

2.5 ディレクトリー

- -

Autotest.mkでテストを実行するときは、次の3つのディレクトリーを使います。 - -

-
テンプレートディレクトリー
テストグループとテストのテンプレートとなるディレクトリー - -
テストグループディレクトリー
1つまたは複数のテストを含むディレクトリー - -
テストディレクトリー
テスト実行のためのファイルと、実行結果をあらわすファイルを含むディレクトリー -
- -
- -


-Next: , -Previous: Install, -Up: Top - -
- -

3 Autotest.mk チュートリアルI - 三角形判定プログラムのテスト

- - - -
- -


-Next: , -Previous: Tutorial triangle, -Up: Tutorial triangle - -
- -

概要

- -

ここでは、Glenford J Myers『ソフトウェア・テストの技法』(近代科学社、1980)の記載を元にした、次の仕様の三角形判定プログラムをテストする手順を取り上げます1。 - -

-プログラムtriangleは、整数をあらわす3つの引数をとる。この3つの値は、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`scalene triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形の場合は`equilateral triangle'を印字する。 -
- -

この三角形判定プログラムの動作を検証するには、次のテスト・ケースが必要です2。 - -

-
    -
  1. 有効な不等辺三角形をあらわすテスト・ケース - -
  2. 有効な正三角形をあらわすテスト・ケース - -
  3. 有効な二等辺三角形をあらわすテスト・ケース - -
  4. 有効な二等辺三角形で2つの等辺を含む3種類の組合せすべてをためすことができる3つのテスト・ケース - -
  5. 1つの辺がゼロの値をもつテスト・ケース - -
  6. 1つの辺が負の値をしめすテスト・ケース - -
  7. ゼロより大きい3つの整数をもち、そのうち2つの和がそれ以外の1つと等しいようなテスト・ケース - -
  8. 1辺の長さが他の2辺の長さの和に等しいことを3種類の順列のすべてに対してためすことのできるテスト・ケース - -
  9. ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなるテスト・ケース - -
  10. ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなることにおいて、3種類の順列すべてを考慮することのできるテスト・ケース - -
  11. すべての辺がゼロであるテスト・ケース - -
  12. 整数でない値をもつテスト・ケース - -
  13. 数値の個数が間違っていることをためすテスト・ケース -
-
- -

三角形判定プログラムは、サンプルとして用意されているものを準備するか、または自作してください。 - -

準備ができたら、Autotest.mkを使った次の手順でテストを実行できます。 - -

    -
  1. グループディレクトリーの作成 - -
  2. テストディレクトリーの作成 - -
  3. テスト説明ファイルの作成 - -
  4. テストコマンドファイルの作成 - -
  5. テスト想定ファイルの作成 - -
  6. テストの実行 - -
  7. テストログファイルの確認 - -
  8. テストグループの実行 - -
  9. テストグループログファイルの確認 -
- -
- -


-Next: , -Previous: Tutorial triangle About, -Up: Tutorial triangle - -
- -

準備

- -

作業用フォルダの作成

- -

まず、Autotest.mkのパッケージに含まれているsample/triangle以下のファイルを、任意の作業用ディレクトリーにコピーします。ここでは、~/triangle(~は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、autotest.mkは、~に展開されているものとします。 - -

$ cd
-$ mkdir triangle
-$ cd autotest.mk/sample/triangle
-$ cp triangle.c triangle_bug.c Makefile ~/triangle
-
-

作業用ディレクトリーに移動し、中のファイルを確認します。 - -

$ cd ~/triangle
-$ ls
-Makefile  triangle.c  triangle_bug.c
-
-

三角形判定プログラムのビルド

- -

三角形判定プログラムをビルドします。 - -

$ make
-rm -f triangle
-gcc -o triangle triangle.c
-
-

テストもかねて、三角形判定プログラムを手動で実行します。 - -

$ ./triangle 3 4 5
-scalene triangle
-$ ./triangle 4 4 4
-equilateral triangle
-$ ./triangle 2 4 4
-isosceles triangle
-
-

バグを含む三角形判定プログラムのビルド

- -

バグを含み一部のテストに失敗する三角形判定プログラムをビルドする場合は、次のコマンドを実行します。 - -

$ make bug
-rm -f triangle
-gcc -o triangle triangle.c
-
-

テストもかねて、三角形判定プログラムを手動で実行します。 - -

$ ./triangle 3 4 5
-futohen sankakukei
-$ ./triangle 4 4 4
-equilateral triangle
-$ ./triangle 2 4 4
-isosceles triangle
-
-

./triangle 3 4 5で、仕様で`scalene triangle'となるべきところが、`futohen sankakukei'となっています。 - -

- -


-Next: , -Previous: Prepare triangle, -Up: Tutorial triangle - -
- -

3.1 グループディレクトリーの作成

- -

テンプレートディレクトリーでmakeを実行し、グループディレクトリーを作成します。このとき、テストグループのディレクトリーを変数GROUPDIRで指定します。ここでは、~/triangle/testをテストグループのディレクトリーにします。 - -

$ cd ~/autotest.mk/template
-$ make GROUPDIR=~/triangle/test
-
-

次のコマンドでグループディレクトリーに移動し、その中を確認します。 - -

$ cd ~/triangle/test
-$ ls
-Define.mk  Makefile  Test.mk
-
-
- -


-Next: , -Previous: Create triangle group, -Up: Tutorial triangle - -
- -

3.2 テストディレクトリーの作成

- -

グループディレクトリーでmake createを実行し、テストディレクトリーを作成します。このとき、変数TESTでテスト名を指定します。テスト名は、小文字のアルファベットと数字で指定します。ここでは、1つめのテスト・ケースに対応するテストディレクトリーを、01_scaleneという名前で作成します。 - -

$ make create TEST=01_scalene
-
-

次のコマンドでテストディレクトリーに移動し、その中を確認します。 - -

$ cd 01_scalene
-$ ls
-Makefile
-
-
- -


-Next: , -Previous: Create triangle test, -Up: Tutorial triangle - -
- -

3.3 テスト説明ファイルの作成

- -

テスト説明ファイルdesc.txtはテストに関する説明をあらわし、テストの結果と一緒にログに出力されます。 -desc.txtをテキストエディターを使って次の内容で作成します。 - -

有効な不等辺三角形をあらわすテスト・ケース
-
-
- -


-Next: , -Previous: Edit triangle desc, -Up: Tutorial triangle - -
- -

3.4 テストコマンドファイルの作成

- -

テストコマンドファイルcmdは、テスト時に実行されるコマンドをあらわします。 -このコマンドにより、標準出力とエラー出力にテストの結果が出力されるようにします。 - -

ここでは、cmdをテキストエディターを使って次の内容で作成します。 - -

../../triangle 3 4 5
-
-
- -


-Next: , -Previous: Edit triangle cmd, -Up: Tutorial triangle - -
- -

3.5 テスト想定ファイルの作成

- -

テスト想定ファイル0.txtは、テストが正しく実行された場合の結果をあらわします。0.txtの作成方法は、次の3つがあります。 - -

- -

エラーが発生するテストでは、標準出力想定の下にエラー出力想定を続けます。 - -

3.5.1 手動で作成

- -

テスト想定ファイル0.txtをテキストエディターを使って次の内容で作成します。 - -

scalene triangle
-
-

3.5.2 make set

- -

make setを実行すると、コマンドファイルcmdが実行されます。実行結果は0.txtファイルに出力され、その内容が表示されます。 - -

$ make set
-scalene triangle
-
-

この方法で0.txtを作成する場合は、作成された内容がテスト想定として本当に正しいかよく検討する必要があります。例えば、バグを含む三角形判定プログラムを準備してmake setを実行すると、仕様と異なる次のようなテスト想定となり、テストを正しく実行できません。 - -

$ make set
-futohen sankakukei
-
-

0.txtがすでに存在する場合はmake setを実行するとエラーになり、0.txtは更新されません。 - -

3.5.3 make reset

- -

0.txtがすでに存在する場合は、make resetで更新できます。 - -

$ make reset
-scalene triangle
-
-
- -


-Next: , -Previous: Set triangle test, -Up: Tutorial triangle - -
- -

3.6 テストの実行

- -

コマンドファイルとテスト想定を用意したら、makeまたはmake checkでテストを実行できます。 - -

$ ls
-0.txt  Makefile  cmd  desc.txt
-$ make
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 10:09:55
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-
-

表示される項目は、次のとおりです。 - -

- -

バグを含む三角形判定プログラムの場合

- -

正しいテスト想定を作成していた場合にバグを含む三角形判定プログラムでテストを実行すると、次のように表示されます。 - -

$ make
-make: [diff.log] Error 1 (ignored)
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Failure 2011-01-10 20:25:16
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-
-
- -


-Next: , -Previous: Execute triangle test, -Up: Tutorial triangle - -
- -

3.7 テストログファイルの確認

- -

テストを実行して作成されたファイルを確認します。1.txt summary.log detail.logが作成されています。 - -

$ ls
-0.txt  1.txt  Makefile  cmd  desc.txt  detail.log  summary.log
-
-

テストを実行すると作成されるファイルは、次のとおりです。必要に応じてファイルの内容を確認します。 - -

-
1.txt
テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます - -
err.log
エラー発生時に、エラーが出力されます。エラーが発生しない場合は作成されません - -
diff.log
テスト想定ファイル0.txtとテスト結果ファイル1.txtの差分をあらわします。想定と結果が同一の場合は、作成されません - -
summary.log
テストの実行結果を表します。テスト実行時に表示される項目です。 - -
detail.log
テストの詳細ログを表します。上記の内容がすべて出力されます -
- -

detail.logは、次のようになります。 - -

== summary.log ==
-----------------------------------------------------------------------
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 10:09:55
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-----------------------------------------------------------------------
-
-== cmd ==
-----------------------------------------------------------------------
-../../triangle 3 4 5
-----------------------------------------------------------------------
-
-== 0.txt ==
-----------------------------------------------------------------------
-scalene triangle
-----------------------------------------------------------------------
-
-== 1.txt ==
-----------------------------------------------------------------------
-scalene triangle
-----------------------------------------------------------------------
-
-
-

バグを含む三角形判定プログラムの場合

- -

バグを含む三角形判定プログラムを準備してテストを実行した場合、1.txt summary.log detail.logのほかに、テスト想定とテスト結果が異なるためdiff.logが作成されます。 - -

$ ls
-0.txt  1.txt  Makefile  cmd  desc.txt  detail.log  diff.log  summary.log
-
-

detail.logは次のようになります。 - -

== summary.log ==
-----------------------------------------------------------------------
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Failure 2011-01-10 20:25:16
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-----------------------------------------------------------------------
-
-== cmd ==
-----------------------------------------------------------------------
-../../triangle 3 4 5
-----------------------------------------------------------------------
-
-== 0.txt ==
-----------------------------------------------------------------------
-scalene triangle
-----------------------------------------------------------------------
-
-== diff.log ==
-----------------------------------------------------------------------
-*** 0.txt    Mon Jan 10 20:12:14 2011
---- 1.txt   Mon Jan 10 20:25:16 2011
-***************
-*** 1 ****
-! scalene triangle
---- 1 ----
-! futohen sankakukei
-----------------------------------------------------------------------
-
-== 1.txt ==
-----------------------------------------------------------------------
-futohen sankakukei
-----------------------------------------------------------------------
-
-
-

3.7.1 テストのクリア

- -

make cleanを実行すると、テストの結果作成されたファイルがクリアされます。 - -

$ make clean
-$ ls
-0.txt  Makefile  cmd  desc.txt
-
-
- -


-Next: , -Previous: Check triangle log, -Up: Tutorial triangle - -
- -

3.8 テストグループの実行

- -

2つめ以降のテスト・ケースについても、1つめと同じ手順でテストディレクトリーの作成後、テスト説明ファイルとテストコマンドファイル、テスト想定ファイルを作成します。 - -

ここでは、先に作成した01_scaleneも含めて、次のようなディレクトリーとファイルを作成します。こうしたディレクトリーやファイルはAutotest.mkのsample/triangle/test以下にあります。 - -

- -

テストグループディレクトリーでは、makeまたはmake checkで複数のテストをまとめて実行できます。 - -

$ cd ~/triangle/test
-$ make
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-
-

表示されるのは、次の項目です。 -

- -

バグを含む三角形判定プログラムの場合

- -

バグを含む三角形判定プログラムを準備してテストグループを実行した場合、次のように表示されます。失敗したテストがあることをあらわしています。 - -

$ cd ~/triangle/test
-$ make
-test: 11 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-
-
- -


-Next: , -Previous: Execute triangle group, -Up: Tutorial triangle - -
- -

3.9 テストグループログファイルの確認

- -

テストグループを実行すると作成されるファイルは、次のとおりです。 - -

-
<テストグループ名を大文字にした文字列>.log
テストグループに含まれるテストとその実行結果の一覧をあらわします。 - -
Summary.log
テストの実行結果を表します。テストグループ実行時に表示される内容です。 -
- -

ここではテストグループ名はtestなので、TEST.logが次の内容で作成されます。 - -

01_scalene/
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-
-12_notint/
-整数でない値をもつテスト・ケース
-12_notint: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/12_notint/detail.log
-
-03_isosceles/
-有効な二等辺三角形をあらわすテスト・ケース
-03_isosceles: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/03_isosceles/detail.log
-
-02_equilateral/
-有効な正三角形をあらわすテスト・ケース
-02_equilateral: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/02_equilateral/detail.log
-
-05_zero/
-1つの辺がゼロの値をもつテスト・ケース
-05_zero: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/05_zero/detail.log
-
-13_argcnt/
-数値の個数が間違っていることをためすテスト・ケース
-13_argcnt: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/13_argcnt/detail.log
-
-10_lesses/
-ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなることにおいて、3種類の順列すべてを考慮することのできるテストケース
-10_lesses: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/10_lesses/detail.log
-
-07_line/
-ゼロより大きい3つの整数をもち、そのうち2つの和がそれ以外の1つと等しいようなテスト・ケース
-07_line: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/07_line/detail.log
-
-06_minus/
-1つの辺が負の値をしめすテスト・ケース
-06_minus: Test Success 2011-01-10 12:14:23
-Detail in /home/foo/triangle/test/06_minus/detail.log
-
-11_zeroall/
-すべての辺がゼロであるテスト・ケース
-11_zeroall: Test Success 2011-01-10 12:14:24
-Detail in /home/foo/triangle/test/11_zeroall/detail.log
-
-08_lines/
-1辺の長さが他の2辺の長さの和に等しいことを3種類の順列のすべてに対してためすことのできるテスト・ケース
-08_lines: Test Success 2011-01-10 12:14:24
-Detail in /home/foo/triangle/test/08_lines/detail.log
-
-09_less/
-ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなるテストケース
-09_less: Test Success 2011-01-10 12:14:24
-Detail in /home/foo/triangle/test/09_less/detail.log
-
-04_isosceles_c/
-有効な二等辺三角形で2つの等辺を含む3種類の組合せすべてをためすことができる3つのテストケース
-04_isosceles_c: Test Success 2011-01-10 12:14:24
-Detail in /home/foo/triangle/test/04_isosceles_c/detail.log
-
-

テストをまとめて実行した場合も、個別のテストを実行した場合と同様に、テストディレクトリーにテストログが出力されます。特定のテスト結果を詳細に検討する場合は、そのテストのテストディレクトリーを開いてテストログファイルの確認をします。 - -

バグを含む三角形判定プログラムの場合

- -

バグを含む三角形判定プログラムを準備してテストグループを実行した場合、TEST.logは次のように表示されます。01_scaleneのほか、11_zeroのテストで失敗しています。すべての辺がゼロである場合に表示が正しくないバグがあることがわかります。 - -

01_scalene/
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Failure 2011-01-10 21:45:52
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-
-12_notint/
-整数でない値をもつテスト・ケース
-12_notint: Test Success 2011-01-10 21:45:52
-Detail in /home/foo/triangle/test/12_notint/detail.log
-
-03_isosceles/
-有効な二等辺三角形をあらわすテスト・ケース
-03_isosceles: Test Success 2011-01-10 21:45:52
-Detail in /home/foo/triangle/test/03_isosceles/detail.log
-
-02_equilateral/
-有効な正三角形をあらわすテスト・ケース
-02_equilateral: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/02_equilateral/detail.log
-
-05_zero/
-1つの辺がゼロの値をもつテスト・ケース
-05_zero: Test Failure 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/05_zero/detail.log
-
-13_argcnt/
-数値の個数が間違っていることをためすテスト・ケース
-13_argcnt: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/13_argcnt/detail.log
-
-10_lesses/
-ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなることにおいて、3種類の順列すべてを考慮することのできるテストケース
-10_lesses: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/10_lesses/detail.log
-
-07_line/
-ゼロより大きい3つの整数をもち、そのうち2つの和がそれ以外の1つと等しいようなテスト・ケース
-07_line: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/07_line/detail.log
-
-06_minus/
-1つの辺が負の値をしめすテスト・ケース
-06_minus: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/06_minus/detail.log
-
-11_zeroall/
-すべての辺がゼロであるテスト・ケース
-11_zeroall: Test Failure 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/11_zeroall/detail.log
-
-08_lines/
-1辺の長さが他の2辺の長さの和に等しいことを3種類の順列のすべてに対してためすことのできるテスト・ケース
-08_lines: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/08_lines/detail.log
-
-09_less/
-ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなるテストケース
-09_less: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/09_less/detail.log
-
-04_isosceles_c/
-有効な二等辺三角形で2つの等辺を含む3種類の組合せすべてをためすことができる3つのテストケース
-04_isosceles_c: Test Success 2011-01-10 21:45:53
-Detail in /home/foo/triangle/test/04_isosceles_c/detail.log
-
-
-
- -


-Previous: Check triangle group log, -Up: Tutorial triangle - -
- -

3.10 ビルドとの連携

- -

三角形判定プログラムでは、~/triangleなど作業用ディレクトリーのトップでmakeを実行すればプログラムをビルドできました。作業用ディレクトリーのMakefileを次のように編集すると、ビルドと連携してテストを実行できるようになります。 - -

CC = gcc
-
-.PHONY: all check clean
-
-all:
-	$(CC) -o triangle triangle.c
-
-check:
-    $(MAKE) -c test
-
-clean:
-	rm -f triangle
-
-

ビルドとテストは、次のように実行します。 - -

$ make
-gcc -o triangle triangle.c
-$ make check
-make -C test
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-
-

こうした設定をしておけば、プログラムを変更するたびに簡単にビルドとテストを実行することができます。 - -

- -


-Next: , -Previous: Tutorial triangle, -Up: Top - -
- -

4 Autotest.mk チュートリアルII - C言語sort関数のテスト

- - - -
- -


-Next: , -Previous: Tutorial sort, -Up: Tutorial sort - -
- -

概要

- -

ここではC言語の関数テストの例として、sort関数をテストします。CUnitのわかりやすい日本語チュートリアルCUnit チュートリアルで使われている関数です。 - -

sort_normal.cは、次の内容です。 - -

void sort(int array[], int num) {
-    int i;
-    int j;
-    int val;
-
-    for(i=0; i<(num-1); i++) {
-        for(j=(num-1); j>i; j--) {
-            if (array[j-1] > array[j]) {
-                val = array[j];
-                array[j] = array[j-1];
-                array[j-1] = val;
-            }
-        }
-    }
-}
-
-

バグを含むsort_normal.cは、次の内容です。 - -

void sort(int array[], int num) {
-    int i;
-    int j;
-    int val;
-
-    for(i=0; i<(num-1); i++) {
-        for(j=(num-1); j>i; j--) {
-            if (array[j-1] > array[j]) {
-                val = array[j];
-                array[j] = array[j]; // 本当は array[j] = array[j-1];
-                array[j-1] = val;
-            }
-        }
-    }
-}
-
-

プログラムは、サンプルとして用意されているものを準備してください。 - -

準備ができたら、Autotest.mkを使った次の手順でテストを実行できます。 - -

    -
  1. グループディレクトリーの作成 - -
  2. テストディレクトリーの作成 - -
  3. テスト説明ファイルの作成 - -
  4. 関数テスト用プログラムのソース作成 - -
  5. Makefileの編集 - -
  6. テスト想定ファイルの作成 - -
  7. テストの実行 - -
  8. テストログファイルの確認 - -
  9. テストグループの実行 - -
  10. テストグループログファイルの確認 -
- -
- -


-Next: , -Previous: Tutorial sort About, -Up: Tutorial sort - -
- -

準備

- -

作業用フォルダの作成

- -

まず、Autotest.mkのパッケージに含まれているsample/sort以下のファイルを、任意の作業用ディレクトリーにコピーします。ここでは、~/sort(~は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、autotest.mkは、~に展開されているものとします。 - -

$ cd
-$ mkdir sort
-$ cd autotest.mk/sample/sort
-$ cp sort_normal.c sort_bug.c Makefile ~/sort
-
-

作業用ディレクトリーに移動し、中のファイルを確認します。 - -

$ cd ~/sort
-$ ls
-Makefile  sort_normal.c  sort_bug.c
-
-

sort関数ファイルの準備

- -

makeまたはmake normalで、sort_normal.cがsort.cにコピーされます。 - -

$ make
-rm -f sort.c
-cp sort_normal.c sort.c
-
-

バグを含むsort関数ファイルの準備

- -

make bugで、sort_bug.cがsort.cにコピーされます。 -この場合、sort.cはバグを含みます。 - -

$ make bug
-rm -f sort.c
-cp sort_bug.c sort.c
-
-
- -


-Next: , -Previous: Prepare sort, -Up: Tutorial sort - -
- -

4.1 グループディレクトリーの作成

- -

テンプレートディレクトリーでmakeを実行し、グループディレクトリーを作成します。このとき、テストグループのディレクトリーを変数GROUPDIRで指定します。ここでは、~/sort/testをテストグループのディレクトリーにします。 - -

$ cd ~/autotest.mk/template
-$ make GROUPDIR=~/sort/test
-
-

次のコマンドでグループディレクトリーに移動し、その中を確認します。 - -

$ cd ~/sort/test
-$ ls
-Define.mk  Makefile  Test.mk
-
-
- -


-Next: , -Previous: Create sort group, -Up: Tutorial sort - -
- -

4.2 テストディレクトリーの作成

- -

グループディレクトリーでmake createを実行し、テストディレクトリーを作成します。このとき、変数GROUPDIRでテスト名を指定し、さらにC言語の関数テスト用のMakefileを作成するため変数SRC=cを指定します。ここでは、1つめのテストをsort_001という名前で作成します3。 - -

$ make create TEST=sort_001 SRC=c
-
-

次のコマンドでテストディレクトリーに移動し、その中を確認します。 - -

$ cd sort_001
-$ ls
-Makefile
-
-
- -


-Next: , -Previous: Create sort test, -Up: Tutorial sort - -
- -

4.3 関数テスト用プログラムのソース作成

- -

C言語の関数をテストするためのプログラムをC言語で記述した、プログラムのソースファイルcmd.cをテキストエディターで作成します。テスト対象の関数sortを呼び出してソートを実行し、その結果を表示するプログラムです。 - -

#include <stdio.h>
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
-#endif
-
-void sort(int array[], int num);
-
-int main() {
-    int i, array[] = {11, 7, 5, 3, 2};
-
-    sort(array, ARRAYSIZE(array));
-    for(i = 0; i < ARRAYSIZE(array); i++) {
-        printf("%d\n", array[i]);
-    }
-    return 0;
-}
-
-
- -


-Next: , -Previous: Create sort src, -Up: Tutorial sort - -
- -

4.4 Makefileの編集

- -

Makefileをテキストエディターで編集し、テスト対象ファイルをあらわす変数TESTTARGET_FILESを指定します。 -ここでは、../../sort.cを指定します。 - -

include ../Define.mk
-include ../Test.mk
-
-CC := gcc
-CFLAGS := -Wall
-
-.INTERMEDIATE: $(CMD_FILE)
-
-CMDSRC_FILE := cmd.c
-TESTTARGET_FILES := ../../sort.c      # Set test target files
-
-COMPILE_FILE := compile.log
-
-$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES)
-	$(CC) $(CFLAGS) -o $ $^ >$(COMPILE_FILE) 2>&1
-	cat $(COMPILE_FILE)
-
-
- -


-Next: , -Previous: Edit sort Makefile, -Up: Tutorial sort - -
- -

4.5 テスト説明ファイルの作成

- -

テスト説明ファイルdesc.txtはテストに関する説明をあらわし、テストの結果と一緒にログに出力されます。 -desc.txtをテキストエディターを使って次の内容で作成します。 - -

テスト関数1
-
-
- -


-Next: , -Previous: Edit sort desc, -Up: Tutorial sort - -
- -

4.6 テスト想定ファイルの作成

- -

テスト想定ファイル0.txtは、テストが正しく実行された場合の結果をあらわします。0.txtの作成方法は、次の3つがあります。 - -

- -

エラーが発生するテストでは、標準出力想定の下にエラー出力想定を続けます。 - -

4.6.1 手動で作成

- -

テスト想定ファイル0.txtをテキストエディターを使って次の内容で作成します。 - -

3
-
-

4.6.2 make set

- -

make setを実行すると、Makefileの設定に従い関数テスト用のプログラムソースcmd.cと関数ファイル../../sort.cからコマンドファイルcmdが作成されます。そのあとcmdが実行され、実行結果は0.txtファイルに出力されます。実行後、次回のテストのため、cmdは自動的に削除されます。 - -

$ make set
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-3
-5
-7
-11
-rm cmd
-
-

この方法で0.txtを作成する場合は、作成された内容がテスト想定として本当に正しいかよく検討する必要があります。 - -

0.txtがすでに存在する場合はmake setを実行するとエラーになり、0.txtは更新されません。例えば、バグを含むsort関数ファイルを準備してmake setを実行すると、仕様と異なる次のようなテスト想定となり、テストを正しく実行できません。 - -

$ make set
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-2
-2
-2
-2
-rm cmd
-
-

4.6.3 make reset

- -

0.txtがすでに存在する場合は、make resetで更新できます。 - -

$ make reset
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-3
-5
-7
-11
-rm cmd
-
-
- -


-Next: , -Previous: Set sort test, -Up: Tutorial sort - -
- -

4.7 テストの実行

- -

コマンドファイルとテスト想定を用意したら、makeまたはmake checkでテストを実行できます。 - -

$ ls
-0.txt  Makefile  cmd.c  desc.txt
-$ make
-sort_001: Test Success 2011-01-24 11:13:04
-Details in /home/foo/sort/test/sort_001/detail.log
-rm cmd
-
-

表示される項目は、次のとおりです。 - -

- -

バグを含むsort関数の場合

- -

正しいテスト想定を作成していた場合にバグを含むsort関数でテストを実行すると、次のように表示されます。 - -

$ make
-gcc -Wall -o cmd cmd.c ../../sort.c
-make: [diff.log] Error 1 (ignored)
-テスト関数1
-sort_001: Test Failure 2011-01-24 11:09:34
-Details in /home/foo/sort/test/sort_001/detail.log
-rm cmd
-
-
- -


-Next: , -Previous: Execute sort test, -Up: Tutorial sort - -
- -

4.8 テストログファイルの確認

- -

テストを実行して作成されたファイルを確認します。1.txt summary.log detail.logが作成されています。 - -

$ ls
-0.txt  1.txt  Makefile  cmd  desc.txt  detail.log  summary.log
-
-

テストを実行すると作成されるファイルは、次のとおりです。必要に応じてファイルの内容を確認します。 - -

-
1.txt
テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます - -
err.log
エラー発生時に、エラーが出力されます。エラーが発生しない場合は作成されません - -
diff.log
テスト想定ファイル0.txtとテスト結果ファイル1.txtの差分をあらわします。想定と結果が同一の場合は、作成されません - -
summary.log
テストの実行結果を表します。テスト実行時に表示される項目です。 - -
detail.log
テストの詳細ログを表します。上記の内容がすべて出力されます -
- -

detail.logは、次のようになります。 - -

== summary.log ==
-----------------------------------------------------------------------
-テスト関数1
-sort_001: Test Success 2011-01-24 11:13:04
-Details in /Users/kazubito/2011_01/sort/test/sort_001/detail.log
-----------------------------------------------------------------------
-
-== cmd.c ==
-----------------------------------------------------------------------
-#include <stdio.h>
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
-#endif
-
-void sort(int array[], int num);
-
-int main() {
-    int i, array[] = {11, 7, 5, 3, 2};
-
-    sort(array, ARRAYSIZE(array));
-    for(i = 0; i < ARRAYSIZE(array); i++) {
-        printf("%d\n", array[i]);
-    }
-    return 0;
-}
-----------------------------------------------------------------------
-
-== 0.txt ==
-----------------------------------------------------------------------
-2
-3
-5
-7
-11
-----------------------------------------------------------------------
-
-== 1.txt ==
-----------------------------------------------------------------------
-2
-3
-5
-7
-11
-----------------------------------------------------------------------
-
-
-

バグを含むsort関数の場合

- -

バグを含むsort関数を準備してテストを実行した場合、1.txt summary.log detail.logのほかに、テスト想定とテスト結果が異なるためdiff.logが作成されます。 - -

$ ls
-0.txt  1.txt  Makefile  cmd  desc.txt  detail.log  diff.log  summary.log
-
-

detail.logは次のようになります。 - -

== summary.log ==
-----------------------------------------------------------------------
-テスト関数1
-sort_001: Test Failure 2011-01-24 11:09:34
-Details in /home/foo/sort/test/sort_001/detail.log
-----------------------------------------------------------------------
-
-== cmd.c ==
-----------------------------------------------------------------------
-#include <stdio.h>
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
-#endif
-
-void sort(int array[], int num);
-
-int main() {
-    int i, array[] = {11, 7, 5, 3, 2};
-
-    sort(array, ARRAYSIZE(array));
-    for(i = 0; i < ARRAYSIZE(array); i++) {
-        printf("%d\n", array[i]);
-    }
-    return 0;
-}
-----------------------------------------------------------------------
-
-== 0.txt ==
-----------------------------------------------------------------------
-2
-3
-5
-7
-11
-----------------------------------------------------------------------
-
-== diff.log ==
-----------------------------------------------------------------------
-*** 0.txt	2011-01-24 11:07:39.000000000 +0900
---- 1.txt   2011-01-24 11:09:34.000000000 +0900
-***************
-*** 1,5 ****
-  2
-! 3
-! 5
-! 7
-! 11
---- 1,5 ----
-  2
-! 2
-! 2
-! 2
-! 2
-----------------------------------------------------------------------
-
-== 1.txt ==
-----------------------------------------------------------------------
-2
-2
-2
-2
-2
-----------------------------------------------------------------------
-
-
-

4.8.1 テストのクリア

- -

make cleanを実行すると、テストの結果作成されたファイルがクリアされます。 - -

$ make clean
-$ ls
-0.txt  Makefile  cmd.c  desc.txt
-
-
- -


-Next: , -Previous: Check sort log, -Up: Tutorial sort - -
- -

4.9 テストグループの実行

- -

2つめ以降のテスト・ケースについても、1つめと同じ手順でテストディレクトリーの作成後、テスト説明ファイルとテストコマンドファイル、テスト想定ファイルを作成します。 - -

ここでは、先に作成したsort_001も含めて、次のようなディレクトリーとファイルを作成します。こうしたディレクトリーやファイルはAutotest.mkのsample/sort/test以下にあります。 - -

- -

テストグループディレクトリーでは、makeまたはmake checkで複数のテストをまとめて実行できます。 - -

$ cd ~/sort/test
-$ make
-test:        5 / 5 tests passed. Details in /home/foo/sort/test/TEST.log
-test: All tests are succeded.
-
-

表示されるのは、次の項目です。 -

- -

バグを含むsort関数の場合

- -

バグを含むsort関数を準備してテストグループを実行した場合、次のように表示されます。失敗したテストがあることをあらわしています。 - -

$ cd ~/sort/test
-$ make
-test: 1 / 5 tests passed. Details in /home/foo/sort/test/TEST.log
-
-
- -


-Next: , -Previous: Execute sort group, -Up: Tutorial sort - -
- -

4.10 テストグループログファイルの確認

- -

テストグループを実行すると作成されるファイルは、次のとおりです。 - -

-
<テストグループ名を大文字にした文字列>.log
テストグループに含まれるテストとその実行結果の一覧をあらわします。 - -
Summary.log
テストの実行結果を表します。テストグループ実行時に表示される内容です。 -
- -

ここではテストグループ名はtestなので、TEST.logが次の内容で作成されます。 - -

sort_001/
-テスト関数1
-sort_001: Test Success 2011-01-24 11:37:46
-Details in /home/foo/sort/test/sort_001/detail.log
-
-sort_002/
-テスト関数1
-sort_002: Test Success 2011-01-24 11:37:46
-Details in /home/foo/sort/test/sort_002/detail.log
-
-sort_003/
-テスト関数3
-sort_003: Test Success 2011-01-24 11:37:46
-Details in /home/foo/sort/test/sort_003/detail.log
-
-sort_004/
-テスト関数4
-sort_004: Test Success 2011-01-24 11:37:46
-Details in /home/foo/sort/test/sort_004/detail.log
-
-sort_005/
-テスト関数5
-sort_005: Test Success 2011-01-24 11:37:47
-Details in /home/foo/sort/test/sort_005/detail.log
-
-
-

テストをまとめて実行した場合も、個別のテストを実行した場合と同様に、テストディレクトリーにテストログが出力されます。特定のテスト結果を詳細に検討する場合は、そのテストのテストディレクトリーを開いてテストログファイルの確認をします。 - -

バグを含むsort関数の場合

- -

バグを含むsort関数を準備してテストグループを実行した場合、TEST.logは次のように表示されます。sort_001、sort_003、sort_004、sort_005のテストで失敗していることがわかります。 - -

sort_001/
-テスト関数1
-sort_001: Test Failure 2011-01-24 12:03:02
-Details in /home/foo/sort/test/sort_001/detail.log
-
-sort_002/
-テスト関数1
-sort_002: Test Success 2011-01-24 12:03:02
-Details in /home/foo/sort/test/sort_002/detail.log
-
-sort_003/
-テスト関数3
-sort_003: Test Failure 2011-01-24 12:03:02
-Details in /home/foo/sort/test/sort_003/detail.log
-
-sort_004/
-テスト関数4
-sort_004: Test Failure 2011-01-24 12:03:02
-Details in /home/foo/sort/test/sort_004/detail.log
-
-sort_005/
-テスト関数5
-sort_005: Test Failure 2011-01-24 12:03:04
-Details in /home/foo/sort/test/sort_005/detail.log
-
-
-
- -


-Previous: Check sort group log, -Up: Tutorial sort - -
- -

4.11 開発とテストの反復

- -

あとはテスト対象となっている関数を変更するたびに、テストを実行できるようになります。つまり、関数の単位で開発とテストを反復してできます。 - -

関数の実装だけが変更されて仕様が変わっていない場合は、テストグループのディレクトリーでmakeを実行するだけでテストができます。 - -

関数の入力または出力の仕様が変わった場合には、0.txtとcmd.cの変更を検討します。関数のコンパイル方法(依存するファイル)が変わった場合は、Makefileの変更を検討します。 - -

- -


-Next: , -Previous: Tutorial sort, -Up: Top - -
- -

5 テンプレートディレクトリー マニュアル

- -

テンプレートディレクトリーは、Autotest.mkをインストールするときに展開により作成されたtemplateディレクトリーです。 - -

- -
- -


-Next: , -Previous: Template dir, -Up: Template dir - -
- -

5.1 makeまたはmake group - グループディレクトリーの作成

- -

変数GROUPDIRで指定されたディレクトリーをテストグループディレクトリーとして作成し、テストの実行に必要な次のファイルを配置します。 - -

- -

通常、テストに必要なファイルテンプレートディレクトリーからグループディレクトリーにコピーされます。変数LINKMKを指定した場合は、シンボリックリンクが作成されます。 - -

5.1.1 変数

- -
-
GROUPDIR
テストディレクトリーを指定します。指定しない場合や既存のディレクトリーを指定した場合は、エラーが発生してテストグループディレクトリーは作成されません。 - -
LINKMK
指定した場合、グループディレクトリーにテストの実行に必要なファイルのシンボリックリンクが作成されます。値は任意です。シンボリックリンクのリンク先は、テンプレートディレクトリーの中です。 -
- -

使用例

- -

グループディレクトリーとして~/triangle/testを作成します。 - -

$ make GROUPDIR=~/triangle/test
-
-
- -


-Previous: make group, -Up: Template dir - -
- -

5.2 テンプレートのファイル

- -

テンプレートディレクトリーには、次のファイルが含まれます。 -

-
Makefile
テンプレートディレクトリーのMakefile - -
Group.mk
グループディレクトリーのMakefile。makeまたはmake groupで、グループディレクトリーにMakefileとして配置されます。 - -
Test.mk
テストディレクトリーから参照されるMakefile。makeまたはmake groupで、グループディレクトリーに配置されます。 - -
Define.mk
テストとテストグループに関する項目を定義したMakefile。makeまたはmake groupで、グループディレクトリーに配置されます。 -
- -
- -


-Next: , -Previous: Template dir, -Up: Top - -
- -

6 グループディレクトリー マニュアル

- -

グループディレクトリーの作成後、グループディレクトリーに移動すると次の操作ができます。 - -

- -
- -


-Next: , -Previous: Group dir, -Up: Group dir - -
- -

6.1 make create - テストの作成

- -

変数TESTで指定されたディレクトリーをテストディレクトリーとして作成し、ディレクトリーの中にMakefileを作成します。 - -

テスト名は、小文字のアルファベットと数字で指定します。大文字ではじまる名前を指定した場合、ディレクトリーやMakefileは作成されるものの、テストグループ実行の対象になりません。 - -

変数SRC=cを指定した場合は、C言語の関数テスト用のMakefileが作成されます。 - -

6.1.1 変数

- -
-
TEST
テストディレクトリー名を指定します。 - -
SRC
値cを指定すると、C言語の関数テスト用のMakefileが作成されます。 - -
- -

使用例

- -

テストディレクトリーを、01_scaleneという名前で作成します。 - -

$ make create TEST=01_scalene
-
-
- -


-Next: , -Previous: make create, -Up: Group dir - -
- -

6.2 テスト名の変更とコピー

- -

テスト名を変更したりテストをコピーしたりする場合は、mvやcpなどでテストディレクトリーを移動、コピーします。 - -

使用例

- -

テスト名01_scaleneを01に変更します。 - -

$ mv 01_scalene 01
-
-

テスト01をコピーし、テスト02を作成します。 - -

$ cp -r 01 02
-
-
- -


-Next: , -Previous: Rename and Copy, -Up: Group dir - -
- -

6.3 テストの削除

- -

テストを削除する場合は、rmなどでテストディレクトリーを削除します。 - -

使用例

- -
$ rm -rf 01_scalene
-
-
- -


-Next: , -Previous: Delete, -Up: Group dir - -
- -

6.4 makeまたはmake check - テストグループの実行

- -

makeまたはmake checkで、グループ内にあるすべてのテストの実行をし、次の項目を表示します。 - -

- -

テストグループを実行すると次のファイルが作成されます。 - -

-
<テストグループ名を大文字にした文字列>.log
テストグループに含まれるテストとその実行結果の一覧をあらわします。 - -
Summary.log
テスト実行結果の概要を表します。テストグループ実行時に表示される内容です。 -
- -

使用例

- -
$ make
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-
-
- -


-Next: , -Previous: make check at group, -Up: Group dir - -
- -

6.5 make checkall - グループ内にあるすべてのテストの実行、計時

- -

make checkallでグループ内にあるすべてのテストを、実行し、計時します。テストグループの実行と同じ項目を表示し、出力されるファイルの種類も同じです。<テストグループ名を大文字にした文字列>.logには、テストと実行結果に加え、計時結果が一覧として出力されます。 - -

テストの実行と計時は別に行われるため、通常にテストを実行するよりも2倍程度の時間がかかります。 - -

使用例

- -
$ make checkall
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-
-
- -


-Next: , -Previous: make checkall, -Up: Group dir - -
- -

6.6 make clean - グループの実行結果をクリア

- -

make cleanで、makeまたはmake checkやmake checkallにより作成されたファイルをすべて削除します。グループディレクトリーのほか、テストディレクトリーのファイルも削除されます。 - -

使用例

- -
$ make clean
-
-
- -


-Next: , -Previous: make clean at group, -Up: Group dir - -
- -

6.7 make time - グループ内にあるすべてのテストを計時

- -

make timeで、グループ内にあるすべてのテストを計時し、その結果が表示されます。計時結果は、<テストグループ名を大文字にした文字列>_time.logに格納されます。 - -

使用例

- -
$ make time
-01_scalene/
-real    0m0.007s
-
-02_equilateral/
-real    0m0.007s
-
-03_isosceles/
-real    0m0.007s
-
-04_isosceles_c/
-real    0m0.013s
-
-05_zero/
-real    0m0.010s
-
-06_minus/
-real    0m0.007s
-
-07_line/
-real    0m0.008s
-
-08_lines/
-real    0m0.024s
-
-09_less/
-real    0m0.009s
-
-10_lesses/
-real    0m0.024s
-
-11_zeroall/
-real    0m0.007s
-
-12_notint/
-real    0m0.007s
-
-13_argcnt/
-real    0m0.012s
-
-
- - -


-Next: , -Previous: make time at group, -Up: Group dir - -
- -

6.8 make time-clean - グループの計時結果をクリア

- -

make cleatimeで、make timeにより作成されたテストグループディレクトリーと各テストディレクトリーのファイルをすべて削除します。 - -

使用例

- -
$ make time-clean
-
-
- -


-Previous: make time-clean at group, -Up: Group dir - -
- -

6.9 グループディレクトリーのファイル

- -

グループディレクトリーには、テストディレクトリーに加えて、次のファイルが含まれます。 - -

-
Makefile
グループディレクトリーのMakefile - -
Test.mk
テストディレクトリーから参照されるMakefile - -
Define.mk
テストとテストグループに関する項目を定義したMakefile - -
<テストグループ名を大文字にした文字列>.log
makeまたはmake checkやmake checkallを実行したときに作成されます。makeやmake checkの場合は、テストグループに含まれるテストと実行結果の一覧です。make checkallの場合は、テストと実行結果と計時結果の一覧です。 - -
Summary.log
テスト実行結果の概要です。makeまたはmake checkやmake checkallを実行すると作成され、その内容が表示されます。 -
- -
- -


-Previous: Group dir, -Up: Top - -
- -

7 テストディレクトリー マニュアル

- - - -
- -


-Next: , -Previous: Test dir, -Up: Test dir - -
- -

7.1 make set - テスト想定の作成

- -

make setで、テストコマンドcmdが実行され、テスト想定ファイル0.txtが作成されます。また、実行時に0.txtの内容が表示されます。0.txtがすでにある場合は、エラーが発生して0.txtは更新されません。 - -

使用例

- -
$ make set
-scalene triangle
-
-
- -


-Next: , -Previous: make set, -Up: Test dir - -
- -

7.2 make reset - テスト想定の作成または更新

- -

make resetで、テストコマンドcmdが実行され、テスト想定ファイル0.txtを作成されます。また、実行時に0.txtの内容が表示されます。0.txtがすでにある場合、0.txtが更新されます。 - -

使用例

- -
$ make reset
-scalene triangle
-
-
- -


-Next: , -Previous: make reset, -Up: Test dir - -
- -

7.3 makeまたはmake check - テストの実行

- -

makeまたはmake checkで、テストコマンドcmdが実行され、テスト結果ファイル1.txtが作成されます。また、実行時にテストの結果をあらわす次の項目が表示されます。 - -

- -

使用例

- -
$ make
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 10:09:55
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-
-
- -


-Next: , -Previous: make check at test, -Up: Test dir - -
- -

7.4 make clean - テスト結果のクリア

- -

make cleanで、テストの実行または計時の結果作成された次のファイルが削除されます。 - -

- -

使用例

- -
$ make clean
-$ ls
-0.txt  Makefile  cmd  desc.txt
-
-
- - -


-Next: , -Previous: make clean at test, -Up: Test dir - -
- -

7.5 make all-clean - テストの想定と結果をクリア

- -

make cleanで次の、テストの想定ファイルとテストの実行または計時の結果作成されたファイルが削除されます。 - -

- -

使用例

- -
$ make all-clean
-$ ls
-Makefile  cmd  desc.txt
-
-
- -


-Next: , -Previous: make all-clean at test, -Up: Test dir - -
- -

7.6 make time - テストの計時

- -

make timeで、テストを計時しその結果が表示されます。計時結果は、time.logに格納されます。 - -

使用例

- -
$ make time
-real  0m0.006s
-
-
- - -


-Next: , -Previous: make time at test, -Up: Test dir - -
- -

7.7 make time-clean - テスト計時結果のクリア

- -

make time-cleanで、テストの計時の結果作成された次のファイルが削除されます。 - -

- -

使用例

- -
$ make time-clean
-
-
- -


-Previous: make time-clean at test, -Up: Test dir - -
- -

7.8 テストディレクトリーのファイル

- -
-
Makefile
テストディレクトリーのMakefile - -
cmd
テスト時に実行されるコマンドをあらわすテストコマンドファイル。手動で作成します。 - -
desc.txt
テストに関する説明をあらわし、テストの結果と一緒にログに出力されます。手動で作成します。 - -
0.txt
テストが正しく実行された場合の結果をあらわすテスト想定ファイル。エラー発生時は、標準出力のあとにエラー出力を続けます。手動か、make setか、make resetで作成します。 - -
1.txt
テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます。makeまたはmake checkで作成されます。 - -
diff.log
テストの想定と結果の差分をあらわす差分ファイル。makeまたはmake checkでテストを実行した結果、想定と差分が異なる場合に作成されます。想定と結果が同じ場合は作成されません。 - -
err.log
テストのエラー出力をあらわすエラーファイル。makeまたはmake checkでテストを実行した結果、エラー出力がある場合に作成されます。なお、エラー出力は1.txtにも含まれます。 - -
summary.log
テスト実行結果の概要です。makeまたはmake checkで作成され、その内容が表示されます。 - -
detail.log
テスト実行結果の詳細です。summary.log cmd 0.txt err.log diff.log 1.txtの内容がコピーされます。makeまたはmake checkで作成されます。 -
- -
-
-

脚注

[1] 『ソフトウェア・テストの技法』では「カードから3つの整数を読む」となっているのを、「3つの引数をとる」に変更しています。

- -

[2] 『ソフトウェア・テストの技法』では下記の13個に加え、「それぞれのテスト・ケースについて、入力の値に対して予想される値をしめしたか」というテスト・ケースが記載されています。このテスト・ケースは、Autotest.mkを実行している場合は自動的に満たされると考えています。

- -

[3] 「CUnit チュートリアル」の「テスト関数1」と「テスト関数2」を、チュートリアルを説明しやすくするため入れ替えています。

- -
- - - - -- 2.18.0