+++ /dev/null
-<html lang="en">
-<head>
-<title>Autotest.mk - ソフトウェアテストの自動化</title>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<meta name="description" content="Autotest.mk - ソフトウェアテストの自動化">
-<meta name="generator" content="makeinfo 4.13">
-<link title="Top" rel="top" href="#Top">
-<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
-<!--
-Copyright (C) 2011-2013 j8takagi-->
-<meta http-equiv="Content-Style-Type" content="text/css">
-<style type="text/css"><!--
- pre.display { font-family:inherit }
- pre.format { font-family:inherit }
- pre.smalldisplay { font-family:inherit; font-size:smaller }
- pre.smallformat { font-family:inherit; font-size:smaller }
- pre.smallexample { font-size:smaller }
- pre.smalllisp { font-size:smaller }
- span.sc { font-variant:small-caps }
- span.roman { font-family:serif; font-weight:normal; }
- span.sansserif { font-family:sans-serif; font-weight:normal; }
-body {
- margin-left: 6em;
- margin-right: 12em;
- color: black;
- background-color: #EEE;
-}
-
-h1, h2 {
- margin-left: -2em;
-}
-
-.node{
- margin-left: -3em;
- color: inherit;
- background-color: #DDF;
-}
-
-.menu, .node {
- color: inherit;
- background-color: #DDF;
-}
-
-h2 {
- padding: 0.25em;
- color: white;
- background-color: navy;
-}
-
-.contents {
- background-color: #DDF;
- border: 4px double #000;
-}
-
-.contents h2 {
- margin-left: 0;
- color: black;
- background-color: #DDF;
-}
-
-.shortcontents {
- background-color: #DDF;
- border: 4px double #000;
- }
-
-.shortcontents h2{
- display: none;
-}
-
-.shortcontents a {
- margin-right: 1em;
-}
-
-h3, h4, h5 {
- color: navy;
- margin-left: -1em;
-}
-
-h5 {
- font-size: 100%;
-}
-
-p {
- line-height: 1.25em;
- margin-top: 0;
- margin-bottom: 0.5em;
-}
-
-a:hover {
- color: red;
- text-decoration: underline;
-}
-
-pre.example {
- padding: 0.5em 1em 0.5em 1em;
- color: #CCC;
- background: black;
- font-size: 90%;
-}
-
-a {
- text-decoration: none;
-}
-
-blockquote {
- line-height: 1.25em;
- border: 1px solid #00F;
-}
-
-kbd {
- font-family: monospace;
-}
-
-kbd, code, .file {
- margin-left:0.5em;
- margin-right: 0.5em;
-}
-
-table, th, td {
- border: 1px solid #CCC;
- border-collapse: collapse; /* 枠線の表示方法 */
-}
-
-table.cartouche, table.cartouche th, table.cartouche td {
- border: none;
-}
-
-pre.example .command, pre.example .option, pre.example kbd {
- font-weight: bold;
- font-family: monospace;
- background-color: inherit;
- color: white;
- margin-left:0;
- margin-right: 0;
-}
-
-pre.example strong {
- font: inherit;
- border: 2px solid green;
-}
-
-dt {
- font-weight: bold;
-}--></style>
-</head>
-<body>
-<h1 class="settitle">Autotest.mk - ソフトウェアテストの自動化</h1>
-<div class="node">
-<a name="Top"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#About">About</a>
-
-</div>
-
-<ul class="menu">
-<li><a accesskey="1" href="#About">About</a>: Autotest.mk 概要
-<li><a accesskey="2" href="#Install">Install</a>: Autotest.mk インストール
-<li><a accesskey="3" href="#Tutorial-triangle">Tutorial triangle</a>: Autotest.mk チュートリアルI - 三角形判定プログラムのテスト
-<li><a accesskey="4" href="#Tutorial-sort">Tutorial sort</a>: Autotest.mk チュートリアルII - C言語<code>sort</code>関数のテスト
-<li><a accesskey="5" href="#Template-dir">Template dir</a>: テンプレートディレクトリー マニュアル
-<li><a accesskey="6" href="#Group-dir">Group dir</a>: グループディレクトリー マニュアル
-<li><a accesskey="7" href="#Test-dir">Test dir</a>: テストディレクトリー マニュアル
-</ul>
-
- <div class="contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a name="toc_About" href="#About">1 Autotest.mk 概要</a>
-<ul>
-<li><a href="#About">1.1 特徴</a>
-</li></ul>
-<li><a name="toc_Install" href="#Install">2 Autotest.mk インストール</a>
-<ul>
-<li><a href="#Requirements">2.1 要件</a>
-<li><a href="#Download">2.2 ダウンロード</a>
-<li><a href="#Verify">2.3 検証</a>
-<li><a href="#Expand">2.4 展開</a>
-<li><a href="#Dir">2.5 ディレクトリー</a>
-</li></ul>
-<li><a name="toc_Tutorial-triangle" href="#Tutorial-triangle">3 Autotest.mk チュートリアルI - 三角形判定プログラムのテスト</a>
-<ul>
-<li><a href="#Tutorial-triangle-About">概要</a>
-<li><a href="#Prepare-triangle">準備</a>
-<ul>
-<li><a href="#Prepare-triangle">作業用フォルダの作成</a>
-<li><a href="#Prepare-triangle">三角形判定プログラムのビルド</a>
-<li><a href="#Prepare-triangle">バグを含む三角形判定プログラムのビルド</a>
-</li></ul>
-<li><a href="#Create-triangle-group">3.1 グループディレクトリーの作成</a>
-<li><a href="#Create-triangle-test">3.2 テストディレクトリーの作成</a>
-<li><a href="#Edit-triangle-desc">3.3 テスト説明ファイルの作成</a>
-<li><a href="#Edit-triangle-cmd">3.4 テストコマンドファイルの作成</a>
-<li><a href="#Set-triangle-test">3.5 テスト想定ファイルの作成</a>
-<ul>
-<li><a href="#Set-triangle-test">3.5.1 手動で作成</a>
-<li><a href="#Set-triangle-test">3.5.2 <kbd>make set</kbd></a>
-<li><a href="#Set-triangle-test">3.5.3 <kbd>make reset</kbd></a>
-</li></ul>
-<li><a href="#Execute-triangle-test">3.6 テストの実行</a>
-<ul>
-<li><a href="#Execute-triangle-test">バグを含む三角形判定プログラムの場合</a>
-</li></ul>
-<li><a href="#Check-triangle-log">3.7 テストログファイルの確認</a>
-<ul>
-<li><a href="#Check-triangle-log">バグを含む三角形判定プログラムの場合</a>
-<li><a href="#Check-triangle-log">3.7.1 テストのクリア</a>
-</li></ul>
-<li><a href="#Execute-triangle-group">3.8 テストグループの実行</a>
-<ul>
-<li><a href="#Execute-triangle-group">バグを含む三角形判定プログラムの場合</a>
-</li></ul>
-<li><a href="#Check-triangle-group-log">3.9 テストグループログファイルの確認</a>
-<ul>
-<li><a href="#Check-triangle-group-log">バグを含む三角形判定プログラムの場合</a>
-</li></ul>
-<li><a href="#Associate-triangle">3.10 ビルドとの連携</a>
-</li></ul>
-<li><a name="toc_Tutorial-sort" href="#Tutorial-sort">4 Autotest.mk チュートリアルII - C言語<code>sort</code>関数のテスト</a>
-<ul>
-<li><a href="#Tutorial-sort-About">概要</a>
-<li><a href="#Prepare-sort">準備</a>
-<ul>
-<li><a href="#Prepare-sort">作業用フォルダの作成</a>
-<li><a href="#Prepare-sort"><code>sort</code>関数ファイルの準備</a>
-<li><a href="#Prepare-sort">バグを含む<code>sort</code>関数ファイルの準備</a>
-</li></ul>
-<li><a href="#Create-sort-group">4.1 グループディレクトリーの作成</a>
-<li><a href="#Create-sort-test">4.2 テストディレクトリーの作成</a>
-<li><a href="#Create-sort-src">4.3 関数テスト用プログラムのソース作成</a>
-<li><a href="#Edit-sort-Makefile">4.4 <samp><span class="file">Makefile</span></samp>の編集</a>
-<li><a href="#Edit-sort-desc">4.5 テスト説明ファイルの作成</a>
-<li><a href="#Set-sort-test">4.6 テスト想定ファイルの作成</a>
-<ul>
-<li><a href="#Set-sort-test">4.6.1 手動で作成</a>
-<li><a href="#Set-sort-test">4.6.2 <kbd>make set</kbd></a>
-<li><a href="#Set-sort-test">4.6.3 <kbd>make reset</kbd></a>
-</li></ul>
-<li><a href="#Execute-sort-test">4.7 テストの実行</a>
-<ul>
-<li><a href="#Execute-sort-test">バグを含む<code>sort</code>関数の場合</a>
-</li></ul>
-<li><a href="#Check-sort-log">4.8 テストログファイルの確認</a>
-<ul>
-<li><a href="#Check-sort-log">バグを含む<code>sort</code>関数の場合</a>
-<li><a href="#Check-sort-log">4.8.1 テストのクリア</a>
-</li></ul>
-<li><a href="#Execute-sort-group">4.9 テストグループの実行</a>
-<ul>
-<li><a href="#Execute-sort-group">バグを含む<code>sort</code>関数の場合</a>
-</li></ul>
-<li><a href="#Check-sort-group-log">4.10 テストグループログファイルの確認</a>
-<ul>
-<li><a href="#Check-sort-group-log">バグを含む<code>sort</code>関数の場合</a>
-</li></ul>
-<li><a href="#Iteretive">4.11 開発とテストの反復</a>
-</li></ul>
-<li><a name="toc_Template-dir" href="#Template-dir">5 テンプレートディレクトリー マニュアル</a>
-<ul>
-<li><a href="#make-group">5.1 <kbd>make</kbd>または<kbd>make group</kbd> - グループディレクトリーの作成</a>
-<ul>
-<li><a href="#make-group">5.1.1 変数</a>
-<li><a href="#make-group">使用例</a>
-</li></ul>
-<li><a href="#Template-Files">5.2 テンプレートのファイル</a>
-</li></ul>
-<li><a name="toc_Group-dir" href="#Group-dir">6 グループディレクトリー マニュアル</a>
-<ul>
-<li><a href="#make-create">6.1 <kbd>make create</kbd> - テストの作成</a>
-<ul>
-<li><a href="#make-create">6.1.1 変数</a>
-<li><a href="#make-create">使用例</a>
-</li></ul>
-<li><a href="#Rename-and-Copy">6.2 テスト名の変更とコピー</a>
-<ul>
-<li><a href="#Rename-and-Copy">使用例</a>
-</li></ul>
-<li><a href="#Delete">6.3 テストの削除</a>
-<ul>
-<li><a href="#Delete">使用例</a>
-</li></ul>
-<li><a href="#make-check-at-group">6.4 <kbd>make</kbd>または<kbd>make check</kbd> - テストグループの実行</a>
-<ul>
-<li><a href="#make-check-at-group">使用例</a>
-</li></ul>
-<li><a href="#make-checkall">6.5 <kbd>make checkall</kbd> - グループ内にあるすべてのテストの実行、計時</a>
-<ul>
-<li><a href="#make-checkall">使用例</a>
-</li></ul>
-<li><a href="#make-clean-at-group">6.6 <kbd>make clean</kbd> - グループの実行結果をクリア</a>
-<ul>
-<li><a href="#make-clean-at-group">使用例</a>
-</li></ul>
-<li><a href="#make-time-at-group">6.7 <kbd>make time</kbd> - グループ内にあるすべてのテストを計時</a>
-<ul>
-<li><a href="#make-time-at-group">使用例</a>
-</li></ul>
-<li><a href="#make-time_002dclean-at-group">6.8 <kbd>make time-clean</kbd> - グループの計時結果をクリア</a>
-<ul>
-<li><a href="#make-time_002dclean-at-group">使用例</a>
-</li></ul>
-<li><a href="#Group-Files">6.9 グループディレクトリーのファイル</a>
-</li></ul>
-<li><a name="toc_Test-dir" href="#Test-dir">7 テストディレクトリー マニュアル</a>
-<ul>
-<li><a href="#make-set">7.1 <kbd>make set</kbd> - テスト想定の作成</a>
-<ul>
-<li><a href="#make-set">使用例</a>
-</li></ul>
-<li><a href="#make-reset">7.2 <kbd>make reset</kbd> - テスト想定の作成または更新</a>
-<ul>
-<li><a href="#make-reset">使用例</a>
-</li></ul>
-<li><a href="#make-check-at-test">7.3 <kbd>make</kbd>または<kbd>make check</kbd> - テストの実行</a>
-<ul>
-<li><a href="#make-check-at-test">使用例</a>
-</li></ul>
-<li><a href="#make-clean-at-test">7.4 <kbd>make clean</kbd> - テスト結果のクリア</a>
-<ul>
-<li><a href="#make-clean-at-test">使用例</a>
-</li></ul>
-<li><a href="#make-all_002dclean-at-test">7.5 <kbd>make all-clean</kbd> - テストの想定と結果をクリア</a>
-<ul>
-<li><a href="#make-all_002dclean-at-test">使用例</a>
-</li></ul>
-<li><a href="#make-time-at-test">7.6 <kbd>make time</kbd> - テストの計時</a>
-<ul>
-<li><a href="#make-time-at-test">使用例</a>
-</li></ul>
-<li><a href="#make-time_002dclean-at-test">7.7 <kbd>make time-clean</kbd> - テスト計時結果のクリア</a>
-<ul>
-<li><a href="#make-time_002dclean-at-test">使用例</a>
-</li></ul>
-<li><a href="#Test-Files">7.8 テストディレクトリーのファイル</a>
-</li></ul>
-</li></ul>
-</div>
-
-<div class="node">
-<a name="About"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Install">Install</a>,
-Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">1 Autotest.mk 概要</h2>
-
- <p>Autotest.mkはソフトウェアテスト自動化のための、GNU Makeを利用したフレームワークです。何回か<kbd>make</kbd>コマンドを実行し、コマンドファイルとテスト結果の想定をあらわすファイルを作成すれば、テストの準備は完了です。あとは<kbd>make</kbd>コマンドを1回実行すれば、テストを実行できます。テストが実行されると、詳細なログが出力されます。
-
-<h3 class="section">1.1 特徴</h3>
-
- <p>Autotest.mkの特徴は次のとおりです。
-
- <ul>
-<li>使い方がシンプル
-
- <li>さまざまなプログラムや環境に対応
-
- <li>ビルド作業と連携しやすい
-
- <li>無償で使うことができ、自由に改造できる
-</ul>
-
-<div class="node">
-<a name="Install"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Tutorial-triangle">Tutorial triangle</a>,
-Previous: <a rel="previous" accesskey="p" href="#About">About</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">2 Autotest.mk インストール</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Requirements">Requirements</a>: 要件
-<li><a accesskey="2" href="#Download">Download</a>: ダウンロード
-<li><a accesskey="3" href="#Verify">Verify</a>: 検証
-<li><a accesskey="4" href="#Expand">Expand</a>: 展開
-<li><a accesskey="5" href="#Dir">Dir</a>: ディレクトリー
-</ul>
-
-<div class="node">
-<a name="Requirements"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Download">Download</a>,
-Previous: <a rel="previous" accesskey="p" href="#Install">Install</a>,
-Up: <a rel="up" accesskey="u" href="#Install">Install</a>
-
-</div>
-
-<h3 class="section">2.1 要件</h3>
-
- <p>Autotest.mkは、LinuxやMac OS Xなどで動作します。現在動作を確認しているのは、次のディストリビューションです。
-
- <ul>
-<li>Ubuntu Linux 10.10
-
- <li>Mac OS X バージョン 10.6.5
-</ul>
-
- <p>Mac OS Xでは、<a href="http://www.gnu.org/software/findutils/">GNU Findutils</a>をインストールしてください。
-
-<div class="node">
-<a name="Download"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Verify">Verify</a>,
-Previous: <a rel="previous" accesskey="p" href="#Requirements">Requirements</a>,
-Up: <a rel="up" accesskey="u" href="#Install">Install</a>
-
-</div>
-
-<h3 class="section">2.2 ダウンロード</h3>
-
- <p><a href="http://www.j8takagi.net/autotest_mk/">Autotest.mkのサイト</a>または<a href="http://github.com/j8takagi/Autotest.mk/downloads/">githubのダウンロードページ</a>から最新版の<samp><span class="file">tar.gz</span></samp>ファイルをダウンロードします。
-
-<div class="node">
-<a name="Verify"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Expand">Expand</a>,
-Previous: <a rel="previous" accesskey="p" href="#Download">Download</a>,
-Up: <a rel="up" accesskey="u" href="#Install">Install</a>
-
-</div>
-
-<h3 class="section">2.3 検証</h3>
-
- <p>ダウンロードが完了したら、<kbd>openssl</kbd>と<kbd>diff</kbd>で正しくファイルがダウンロードができているかを検証します。
-
-<pre class="example">$ <kbd>openssl md5 autotest_mk.tar.gz | diff -s autotest_mk.tar.gz.md5sum -</kbd>
-Files autotest_mk.tar.gz.md5sum and - are identical
-</pre>
- <div class="node">
-<a name="Expand"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Dir">Dir</a>,
-Previous: <a rel="previous" accesskey="p" href="#Verify">Verify</a>,
-Up: <a rel="up" accesskey="u" href="#Install">Install</a>
-
-</div>
-
-<h3 class="section">2.4 展開</h3>
-
- <p><samp><span class="file">autotest_mk</span></samp>ファイルをダウンロードしたら、展開先のディレクトリーに移動してから、展開します。
-次のコマンドでは、現在ログインしているユーザーのホームディレクトリーに展開します。
-
-<pre class="example">$ <kbd>cd ~</kbd>
-$ <kbd>tar xvzf autotest_mk.tar.gz</kbd>
-</pre>
- <p>展開したら、Autotest.mkは使えるようになります。多くのプログラムをインストールするときに必要なコンパイルやビルド、システムディレクトリーへのインストール(<kbd>./configure</kbd>や<kbd>make</kbd>、<kbd>make install</kbd>)は必要ありません。
-
-<div class="node">
-<a name="Dir"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#Expand">Expand</a>,
-Up: <a rel="up" accesskey="u" href="#Install">Install</a>
-
-</div>
-
-<h3 class="section">2.5 ディレクトリー</h3>
-
- <p>Autotest.mkでテストを実行するときは、次の3つのディレクトリーを使います。
-
- <dl>
-<dt><samp><span class="option">テンプレートディレクトリー</span></samp><dd>テストグループとテストのテンプレートとなるディレクトリー
-
- <br><dt><samp><span class="option">テストグループディレクトリー</span></samp><dd>1つまたは複数のテストを含むディレクトリー
-
- <br><dt><samp><span class="option">テストディレクトリー</span></samp><dd>テスト実行のためのファイルと、実行結果をあらわすファイルを含むディレクトリー
-</dl>
-
-<div class="node">
-<a name="Tutorial-triangle"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Tutorial-sort">Tutorial sort</a>,
-Previous: <a rel="previous" accesskey="p" href="#Install">Install</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">3 Autotest.mk チュートリアルI - 三角形判定プログラムのテスト</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Tutorial-triangle-About">Tutorial triangle About</a>: 概要
-<li><a accesskey="2" href="#Prepare-triangle">Prepare triangle</a>: 準備
-<li><a accesskey="3" href="#Create-triangle-group">Create triangle group</a>: グループディレクトリーの作成
-<li><a accesskey="4" href="#Create-triangle-test">Create triangle test</a>: テストディレクトリーの作成
-<li><a accesskey="5" href="#Edit-triangle-desc">Edit triangle desc</a>: テスト説明ファイルの作成
-<li><a accesskey="6" href="#Edit-triangle-cmd">Edit triangle cmd</a>: テストコマンドファイルの作成
-<li><a accesskey="7" href="#Set-triangle-test">Set triangle test</a>: テスト想定ファイルの作成
-<li><a accesskey="8" href="#Execute-triangle-test">Execute triangle test</a>: テストの実行
-<li><a accesskey="9" href="#Check-triangle-log">Check triangle log</a>: テストログファイルの確認
-<li><a href="#Execute-triangle-group">Execute triangle group</a>: テストグループの実行
-<li><a href="#Check-triangle-group-log">Check triangle group log</a>: テストグループログファイルの確認
-<li><a href="#Associate-triangle">Associate triangle</a>: ビルドとの連携
-</ul>
-
-<div class="node">
-<a name="Tutorial-triangle-About"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Prepare-triangle">Prepare triangle</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-triangle">Tutorial triangle</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="unnumberedsec">概要</h3>
-
- <p>ここでは、Glenford J Myers『ソフトウェア・テストの技法』(近代科学社、1980)の記載を元にした、次の仕様の三角形判定プログラムをテストする手順を取り上げます<a rel="footnote" href="#fn-1" name="fnd-1"><sup>1</sup></a>。
-
- <blockquote>
-プログラムtriangleは、整数をあらわす3つの引数をとる。この3つの値は、それぞれ三角形の3辺の長さをあらわすものとする。プログラムは、三角形が不等辺三角形の場合は`scalene triangle'、二等辺三角形の場合は`isosceles triangle'、正三角形の場合は`equilateral triangle'を印字する。
-</blockquote>
-
- <p>この三角形判定プログラムの動作を検証するには、次のテスト・ケースが必要です<a rel="footnote" href="#fn-2" name="fnd-2"><sup>2</sup></a>。
-
- <blockquote>
- <ol type=1 start=1>
-<li>有効な不等辺三角形をあらわすテスト・ケース
-
- <li>有効な正三角形をあらわすテスト・ケース
-
- <li>有効な二等辺三角形をあらわすテスト・ケース
-
- <li>有効な二等辺三角形で2つの等辺を含む3種類の組合せすべてをためすことができる3つのテスト・ケース
-
- <li>1つの辺がゼロの値をもつテスト・ケース
-
- <li>1つの辺が負の値をしめすテスト・ケース
-
- <li>ゼロより大きい3つの整数をもち、そのうち2つの和がそれ以外の1つと等しいようなテスト・ケース
-
- <li>1辺の長さが他の2辺の長さの和に等しいことを3種類の順列のすべてに対してためすことのできるテスト・ケース
-
- <li>ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなるテスト・ケース
-
- <li>ゼロより大きな3つの整数のうち、2つの数の和がそれ以外の1つの数より小さくなることにおいて、3種類の順列すべてを考慮することのできるテスト・ケース
-
- <li>すべての辺がゼロであるテスト・ケース
-
- <li>整数でない値をもつテスト・ケース
-
- <li>数値の個数が間違っていることをためすテスト・ケース
- </ol>
-</blockquote>
-
- <p>三角形判定プログラムは、サンプルとして用意されているものを<a href="#Prepare-triangle">準備</a>するか、または自作してください。
-
- <p>準備ができたら、Autotest.mkを使った次の手順でテストを実行できます。
-
- <ol type=1 start=1>
-<li>グループディレクトリーの作成
-
- <li>テストディレクトリーの作成
-
- <li>テスト説明ファイルの作成
-
- <li>テストコマンドファイルの作成
-
- <li>テスト想定ファイルの作成
-
- <li>テストの実行
-
- <li>テストログファイルの確認
-
- <li>テストグループの実行
-
- <li>テストグループログファイルの確認
- </ol>
-
-<div class="node">
-<a name="Prepare-triangle"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Create-triangle-group">Create triangle group</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-triangle-About">Tutorial triangle About</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="unnumberedsec">準備</h3>
-
-<h4 class="unnumberedsubsec">作業用フォルダの作成</h4>
-
- <p>まず、Autotest.mkのパッケージに含まれている<samp><span class="file">sample/triangle</span></samp>以下のファイルを、任意の作業用ディレクトリーにコピーします。ここでは、<samp><span class="file">~/triangle</span></samp>(<samp><span class="file">~</span></samp>は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、<samp><span class="file">autotest.mk</span></samp>は、<samp><span class="file">~</span></samp>に展開されているものとします。
-
-<pre class="example">$ <kbd>cd</kbd>
-$ <kbd>mkdir triangle</kbd>
-$ <kbd>cd autotest.mk/sample/triangle</kbd>
-$ <kbd>cp triangle.c triangle_bug.c Makefile ~/triangle</kbd>
-</pre>
- <p>作業用ディレクトリーに移動し、中のファイルを確認します。
-
-<pre class="example">$ <kbd>cd ~/triangle</kbd>
-$ <kbd>ls</kbd>
-Makefile triangle.c triangle_bug.c
-</pre>
- <h4 class="unnumberedsubsec">三角形判定プログラムのビルド</h4>
-
- <p>三角形判定プログラムをビルドします。
-
-<pre class="example">$ <kbd>make</kbd>
-rm -f triangle
-gcc -o triangle triangle.c
-</pre>
- <p>テストもかねて、三角形判定プログラムを手動で実行します。
-
-<pre class="example">$ <kbd>./triangle 3 4 5</kbd>
-scalene triangle
-$ <kbd>./triangle 4 4 4</kbd>
-equilateral triangle
-$ <kbd>./triangle 2 4 4</kbd>
-isosceles triangle
-</pre>
- <h4 class="unnumberedsubsec">バグを含む三角形判定プログラムのビルド</h4>
-
- <p>バグを含み一部のテストに失敗する三角形判定プログラムをビルドする場合は、次のコマンドを実行します。
-
-<pre class="example">$ <kbd>make bug</kbd>
-rm -f triangle
-gcc -o triangle triangle.c
-</pre>
- <p>テストもかねて、三角形判定プログラムを手動で実行します。
-
-<pre class="example">$ <kbd>./triangle 3 4 5</kbd>
-futohen sankakukei
-$ <kbd>./triangle 4 4 4</kbd>
-equilateral triangle
-$ <kbd>./triangle 2 4 4</kbd>
-isosceles triangle
-</pre>
- <p><kbd>./triangle 3 4 5</kbd>で、仕様で`scalene triangle'となるべきところが、`futohen sankakukei'となっています。
-
-<div class="node">
-<a name="Create-triangle-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Create-triangle-test">Create triangle test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Prepare-triangle">Prepare triangle</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.1 グループディレクトリーの作成</h3>
-
- <p>テンプレートディレクトリーで<kbd>make</kbd>を実行し、グループディレクトリーを作成します。このとき、テストグループのディレクトリーを変数<code>GROUPDIR</code>で指定します。ここでは、<kbd>~/triangle/test</kbd>をテストグループのディレクトリーにします。
-
-<pre class="example">$ <kbd>cd ~/autotest.mk/template</kbd>
-$ <kbd>make GROUPDIR=~/triangle/test</kbd>
-</pre>
- <p>次のコマンドでグループディレクトリーに移動し、その中を確認します。
-
-<pre class="example">$ <kbd>cd ~/triangle/test</kbd>
-$ <kbd>ls</kbd>
-Define.mk Makefile Test.mk
-</pre>
- <div class="node">
-<a name="Create-triangle-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Edit-triangle-desc">Edit triangle desc</a>,
-Previous: <a rel="previous" accesskey="p" href="#Create-triangle-group">Create triangle group</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.2 テストディレクトリーの作成</h3>
-
- <p>グループディレクトリーで<kbd>make create</kbd>を実行し、テストディレクトリーを作成します。このとき、変数<code>TEST</code>でテスト名を指定します。テスト名は、小文字のアルファベットと数字で指定します。ここでは、1つめのテスト・ケースに対応するテストディレクトリーを、<samp><span class="file">01_scalene</span></samp>という名前で作成します。
-
-<pre class="example">$ <kbd>make create TEST=01_scalene</kbd>
-</pre>
- <p>次のコマンドでテストディレクトリーに移動し、その中を確認します。
-
-<pre class="example">$ <kbd>cd 01_scalene</kbd>
-$ <kbd>ls</kbd>
-Makefile
-</pre>
- <div class="node">
-<a name="Edit-triangle-desc"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Edit-triangle-cmd">Edit triangle cmd</a>,
-Previous: <a rel="previous" accesskey="p" href="#Create-triangle-test">Create triangle test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.3 テスト説明ファイルの作成</h3>
-
- <p>テスト説明ファイル<samp><span class="file">desc.txt</span></samp>はテストに関する説明をあらわし、テストの結果と一緒にログに出力されます。
-<samp><span class="file">desc.txt</span></samp>をテキストエディターを使って次の内容で作成します。
-
-<pre class="example"><kbd>有効な不等辺三角形をあらわすテスト・ケース</kbd>
-</pre>
- <div class="node">
-<a name="Edit-triangle-cmd"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Set-triangle-test">Set triangle test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Edit-triangle-desc">Edit triangle desc</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.4 テストコマンドファイルの作成</h3>
-
- <p>テストコマンドファイル<samp><span class="file">cmd</span></samp>は、テスト時に実行されるコマンドをあらわします。
-このコマンドにより、標準出力とエラー出力にテストの結果が出力されるようにします。
-
- <p>ここでは、<samp><span class="file">cmd</span></samp>をテキストエディターを使って次の内容で作成します。
-
-<pre class="example"><kbd>../../triangle 3 4 5</kbd>
-</pre>
- <div class="node">
-<a name="Set-triangle-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Execute-triangle-test">Execute triangle test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Edit-triangle-cmd">Edit triangle cmd</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.5 テスト想定ファイルの作成</h3>
-
- <p>テスト想定ファイル<samp><span class="file">0.txt</span></samp>は、テストが正しく実行された場合の結果をあらわします。<samp><span class="file">0.txt</span></samp>の作成方法は、次の3つがあります。
-
- <ul>
-<li>手動で作成
-
- <li><kbd>make set</kbd>
-
- <li><kbd>make reset</kbd>
-</ul>
-
- <p>エラーが発生するテストでは、標準出力想定の下にエラー出力想定を続けます。
-
-<h4 class="subsection">3.5.1 手動で作成</h4>
-
- <p>テスト想定ファイル<samp><span class="file">0.txt</span></samp>をテキストエディターを使って次の内容で作成します。
-
-<pre class="example"><kbd>scalene triangle</kbd>
-</pre>
- <h4 class="subsection">3.5.2 <kbd>make set</kbd></h4>
-
- <p><kbd>make set</kbd>を実行すると、コマンドファイル<samp><span class="file">cmd</span></samp>が実行されます。実行結果は<samp><span class="file">0.txt</span></samp>ファイルに出力され、その内容が表示されます。
-
-<pre class="example">$ <kbd>make set</kbd>
-scalene triangle
-</pre>
- <p>この方法で<samp><span class="file">0.txt</span></samp>を作成する場合は、作成された内容がテスト想定として本当に正しいかよく検討する必要があります。例えば、バグを含む三角形判定プログラムを準備して<kbd>make set</kbd>を実行すると、仕様と異なる次のようなテスト想定となり、テストを正しく実行できません。
-
-<pre class="example">$ <kbd>make set</kbd>
-futohen sankakukei
-</pre>
- <p><samp><span class="file">0.txt</span></samp>がすでに存在する場合は<kbd>make set</kbd>を実行するとエラーになり、<samp><span class="file">0.txt</span></samp>は更新されません。
-
-<h4 class="subsection">3.5.3 <kbd>make reset</kbd></h4>
-
- <p><samp><span class="file">0.txt</span></samp>がすでに存在する場合は、<kbd>make reset</kbd>で更新できます。
-
-<pre class="example">$ <kbd>make reset</kbd>
-scalene triangle
-</pre>
- <div class="node">
-<a name="Execute-triangle-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Check-triangle-log">Check triangle log</a>,
-Previous: <a rel="previous" accesskey="p" href="#Set-triangle-test">Set triangle test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.6 テストの実行</h3>
-
- <p>コマンドファイルとテスト想定を用意したら、<kbd>make</kbd>または<kbd>make check</kbd>でテストを実行できます。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt Makefile cmd desc.txt
-$ <kbd>make</kbd>
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 10:09:55
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-</pre>
- <p>表示される項目は、次のとおりです。
-
- <ul>
-<li><テスト説明ファイル<samp><span class="file">desc.txt</span></samp>の内容>
-
- <li><テスト名>: <テスト結果(Test SuccessまたはTest Failure)> <テスト実行日時>
-
- <li>Detail in <テスト詳細ログファイルの絶対パス>
-</ul>
-
-<h4 class="unnumberedsubsec">バグを含む三角形判定プログラムの場合</h4>
-
- <p>正しいテスト想定を作成していた場合にバグを含む三角形判定プログラムでテストを実行すると、次のように表示されます。
-
-<pre class="example">$ <kbd>make</kbd>
-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
-</pre>
- <div class="node">
-<a name="Check-triangle-log"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Execute-triangle-group">Execute triangle group</a>,
-Previous: <a rel="previous" accesskey="p" href="#Execute-triangle-test">Execute triangle test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.7 テストログファイルの確認</h3>
-
- <p>テストを実行して作成されたファイルを確認します。<samp><span class="file">1.txt</span></samp> <samp><span class="file">summary.log</span></samp> <samp><span class="file">detail.log</span></samp>が作成されています。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt 1.txt Makefile cmd desc.txt detail.log summary.log
-</pre>
- <p>テストを実行すると作成されるファイルは、次のとおりです。必要に応じてファイルの内容を確認します。
-
- <dl>
-<dt><samp><span class="file">1.txt</span></samp><dd>テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます
-
- <br><dt><samp><span class="file">err.log</span></samp><dd>エラー発生時に、エラーが出力されます。エラーが発生しない場合は作成されません
-
- <br><dt><samp><span class="file">diff.log</span></samp><dd>テスト想定ファイル<samp><span class="file">0.txt</span></samp>とテスト結果ファイル<samp><span class="file">1.txt</span></samp>の差分をあらわします。想定と結果が同一の場合は、作成されません
-
- <br><dt><samp><span class="file">summary.log</span></samp><dd>テストの実行結果を表します。テスト実行時に表示される項目です。
-
- <br><dt><samp><span class="file">detail.log</span></samp><dd>テストの詳細ログを表します。上記の内容がすべて出力されます
-</dl>
-
- <p><samp><span class="file">detail.log</span></samp>は、次のようになります。
-
-<pre class="example">== 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
-----------------------------------------------------------------------
-
-</pre>
- <h4 class="unnumberedsubsec">バグを含む三角形判定プログラムの場合</h4>
-
- <p>バグを含む三角形判定プログラムを準備してテストを実行した場合、<samp><span class="file">1.txt</span></samp> <samp><span class="file">summary.log</span></samp> <samp><span class="file">detail.log</span></samp>のほかに、テスト想定とテスト結果が異なるため<kbd>diff.log</kbd>が作成されます。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt 1.txt Makefile cmd desc.txt detail.log diff.log summary.log
-</pre>
- <p><samp><span class="file">detail.log</span></samp>は次のようになります。
-
-<pre class="example">== 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
-----------------------------------------------------------------------
-
-</pre>
- <h4 class="subsection">3.7.1 テストのクリア</h4>
-
- <p><kbd>make clean</kbd>を実行すると、テストの結果作成されたファイルがクリアされます。
-
-<pre class="example">$ <kbd>make clean</kbd>
-$ <kbd>ls</kbd>
-0.txt Makefile cmd desc.txt
-</pre>
- <div class="node">
-<a name="Execute-triangle-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Check-triangle-group-log">Check triangle group log</a>,
-Previous: <a rel="previous" accesskey="p" href="#Check-triangle-log">Check triangle log</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.8 テストグループの実行</h3>
-
- <p>2つめ以降のテスト・ケースについても、1つめと同じ手順でテストディレクトリーの作成後、テスト説明ファイルとテストコマンドファイル、テスト想定ファイルを作成します。
-
- <p>ここでは、先に作成した<samp><span class="file">01_scalene</span></samp>も含めて、次のようなディレクトリーとファイルを作成します。こうしたディレクトリーやファイルはAutotest.mkの<samp><span class="file">sample/triangle/test</span></samp>以下にあります。
-
- <ul>
-
- <li>01_scalene
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/01_scalene/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/01_scalene/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/01_scalene/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>02_equilateral
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/02_equilateral/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/02_equilateral/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/02_equilateral/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>03_isosceles
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/03_isosceles/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/03_isosceles/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/03_isosceles/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>04_isosceles_c
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/04_isosceles_c/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/04_isosceles_c/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/04_isosceles_c/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>05_zero
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/05_zero/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/05_zero/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/05_zero/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>06_minus
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/06_minus/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/06_minus/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/06_minus/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>07_line
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/01_scalene/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/01_scalene/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/01_scalene/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>08_lines
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/08_lines/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/08_lines/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/08_lines/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>09_less
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/09_less/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/09_less/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/09_less/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>10_lesses
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/10_lesses/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/10_lesses/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/10_lesses/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>11_zeroall
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/11_zeroall/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/11_zeroall/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/11_zeroall/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>12_notint
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/12_notint/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/12_notint/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/12_notint/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>13_argcnt
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/triangle/13_argcnt/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/triangle/13_argcnt/cmd.txt"><samp><span class="file">cmd</span></samp></a> <a href="sample/triangle/13_argcnt/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
- </ul>
-
- <p>テストグループディレクトリーでは、<kbd>make</kbd>または<kbd>make check</kbd>で複数のテストをまとめて実行できます。
-
-<pre class="example">$ <kbd>cd ~/triangle/test</kbd>
-$ <kbd>make</kbd>
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-</pre>
- <p>表示されるのは、次の項目です。
- <ul>
-<li><テスト名>: <成功テスト数>/<全テスト数> test passed. Detail in <テストグループログファイルの絶対パス>
-
- <li>(すべてのテストに成功した場合)<テスト名>: All tests are succeded.
-</ul>
-
-<h4 class="unnumberedsubsec">バグを含む三角形判定プログラムの場合</h4>
-
- <p>バグを含む三角形判定プログラムを準備してテストグループを実行した場合、次のように表示されます。失敗したテストがあることをあらわしています。
-
-<pre class="example">$ <kbd>cd ~/triangle/test</kbd>
-$ <kbd>make</kbd>
-test: 11 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-</pre>
- <div class="node">
-<a name="Check-triangle-group-log"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Associate-triangle">Associate triangle</a>,
-Previous: <a rel="previous" accesskey="p" href="#Execute-triangle-group">Execute triangle group</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.9 テストグループログファイルの確認</h3>
-
- <p>テストグループを実行すると作成されるファイルは、次のとおりです。
-
- <dl>
-<dt><samp><span class="file"><テストグループ名を大文字にした文字列>.log</span></samp><dd>テストグループに含まれるテストとその実行結果の一覧をあらわします。
-
- <br><dt><samp><span class="file">Summary.log</span></samp><dd>テストの実行結果を表します。テストグループ実行時に表示される内容です。
-</dl>
-
- <p>ここではテストグループ名は<samp><span class="file">test</span></samp>なので、<samp><span class="file">TEST.log</span></samp>が次の内容で作成されます。
-
-<pre class="example">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
-</pre>
- <p>テストをまとめて実行した場合も、個別のテストを実行した場合と同様に、テストディレクトリーにテストログが出力されます。特定のテスト結果を詳細に検討する場合は、そのテストのテストディレクトリーを開いてテストログファイルの確認をします。
-
-<h4 class="unnumberedsubsec">バグを含む三角形判定プログラムの場合</h4>
-
- <p>バグを含む三角形判定プログラムを準備してテストグループを実行した場合、<samp><span class="file">TEST.log</span></samp>は次のように表示されます。01_scaleneのほか、11_zeroのテストで失敗しています。すべての辺がゼロである場合に表示が正しくないバグがあることがわかります。
-
-<pre class="example">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
-
-</pre>
- <div class="node">
-<a name="Associate-triangle"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#Check-triangle-group-log">Check triangle group log</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-triangle">Tutorial triangle</a>
-
-</div>
-
-<h3 class="section">3.10 ビルドとの連携</h3>
-
- <p>三角形判定プログラムでは、<samp><span class="file">~/triangle</span></samp>など作業用ディレクトリーのトップで<kbd>make</kbd>を実行すればプログラムをビルドできました。作業用ディレクトリーの<samp><span class="file">Makefile</span></samp>を次のように編集すると、ビルドと連携してテストを実行できるようになります。
-
-<pre class="example">CC = gcc
-
-.PHONY: all <kbd>check</kbd> clean
-
-all:
- $(CC) -o triangle triangle.c
-
-<kbd>check:</kbd>
-<kbd> $(MAKE) -c test</kbd>
-
-clean:
- rm -f triangle
-</pre>
- <p>ビルドとテストは、次のように実行します。
-
-<pre class="example">$ <kbd>make</kbd>
-gcc -o triangle triangle.c
-$ <kbd>make check</kbd>
-make -C test
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-</pre>
- <p>こうした設定をしておけば、プログラムを変更するたびに簡単にビルドとテストを実行することができます。
-
-<div class="node">
-<a name="Tutorial-sort"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Template-dir">Template dir</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-triangle">Tutorial triangle</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">4 Autotest.mk チュートリアルII - C言語<code>sort</code>関数のテスト</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Tutorial-sort-About">Tutorial sort About</a>: 概要
-<li><a accesskey="2" href="#Prepare-sort">Prepare sort</a>: 準備
-<li><a accesskey="3" href="#Create-sort-group">Create sort group</a>: グループディレクトリーの作成
-<li><a accesskey="4" href="#Create-sort-test">Create sort test</a>: テストディレクトリーの作成
-<li><a accesskey="5" href="#Create-sort-src">Create sort src</a>: 関数テスト用プログラムのソース作成
-<li><a accesskey="6" href="#Edit-sort-Makefile">Edit sort Makefile</a>: <samp><span class="file">Makefile</span></samp>の編集
-<li><a accesskey="7" href="#Edit-sort-desc">Edit sort desc</a>: テスト説明ファイルの作成
-<li><a accesskey="8" href="#Set-sort-test">Set sort test</a>: テスト想定ファイルの作成
-<li><a accesskey="9" href="#Execute-sort-test">Execute sort test</a>: テストの実行
-<li><a href="#Check-sort-log">Check sort log</a>: テストログファイルの確認
-<li><a href="#Execute-sort-group">Execute sort group</a>: テストグループの実行
-<li><a href="#Check-sort-group-log">Check sort group log</a>: テストグループログファイルの確認
-<li><a href="#Iteretive">Iteretive</a>: 開発とテストの反復
-</ul>
-
-<div class="node">
-<a name="Tutorial-sort-About"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Prepare-sort">Prepare sort</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-sort">Tutorial sort</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="unnumberedsec">概要</h3>
-
- <p>ここではC言語の関数テストの例として、<code>sort</code>関数をテストします。<a href="http://cunit.sourceforge.net/">CUnit</a>のわかりやすい日本語チュートリアル<a href="http://homepage3.nifty.com/kaku-chan/cunit/index.html">CUnit チュートリアル</a>で使われている関数です。
-
- <p><samp><span class="file">sort_normal.c</span></samp>は、次の内容です。
-
-<pre class="example">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;
- }
- }
- }
-}
-</pre>
- <p>バグを含む<samp><span class="file">sort_normal.c</span></samp>は、次の内容です。
-
-<pre class="example">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;
- }
- }
- }
-}
-</pre>
- <p>プログラムは、サンプルとして用意されているものを<a href="#Prepare-sort">準備</a>してください。
-
- <p>準備ができたら、Autotest.mkを使った次の手順でテストを実行できます。
-
- <ol type=1 start=1>
-<li>グループディレクトリーの作成
-
- <li>テストディレクトリーの作成
-
- <li>テスト説明ファイルの作成
-
- <li>関数テスト用プログラムのソース作成
-
- <li><samp><span class="file">Makefile</span></samp>の編集
-
- <li>テスト想定ファイルの作成
-
- <li>テストの実行
-
- <li>テストログファイルの確認
-
- <li>テストグループの実行
-
- <li>テストグループログファイルの確認
- </ol>
-
-<div class="node">
-<a name="Prepare-sort"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Create-sort-group">Create sort group</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-sort-About">Tutorial sort About</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="unnumberedsec">準備</h3>
-
-<h4 class="unnumberedsubsec">作業用フォルダの作成</h4>
-
- <p>まず、Autotest.mkのパッケージに含まれている<samp><span class="file">sample/sort</span></samp>以下のファイルを、任意の作業用ディレクトリーにコピーします。ここでは、<samp><span class="file">~/sort</span></samp>(<samp><span class="file">~</span></samp>は、現在ログインしているユーザーのホームディレクトリー)を作業用ディレクトリーにします。また、<samp><span class="file">autotest.mk</span></samp>は、<samp><span class="file">~</span></samp>に展開されているものとします。
-
-<pre class="example">$ <kbd>cd</kbd>
-$ <kbd>mkdir sort</kbd>
-$ <kbd>cd autotest.mk/sample/sort</kbd>
-$ <kbd>cp sort_normal.c sort_bug.c Makefile ~/sort</kbd>
-</pre>
- <p>作業用ディレクトリーに移動し、中のファイルを確認します。
-
-<pre class="example">$ <kbd>cd ~/sort</kbd>
-$ <kbd>ls</kbd>
-Makefile sort_normal.c sort_bug.c
-</pre>
- <h4 class="unnumberedsubsec"><code>sort</code>関数ファイルの準備</h4>
-
- <p><kbd>make</kbd>または<kbd>make normal</kbd>で、<samp><span class="file">sort_normal.c</span></samp>が<samp><span class="file">sort.c</span></samp>にコピーされます。
-
-<pre class="example">$ <kbd>make</kbd>
-rm -f sort.c
-cp sort_normal.c sort.c
-</pre>
- <h4 class="unnumberedsubsec">バグを含む<code>sort</code>関数ファイルの準備</h4>
-
- <p><kbd>make bug</kbd>で、<samp><span class="file">sort_bug.c</span></samp>が<samp><span class="file">sort.c</span></samp>にコピーされます。
-この場合、<samp><span class="file">sort.c</span></samp>はバグを含みます。
-
-<pre class="example">$ <kbd>make bug</kbd>
-rm -f sort.c
-cp sort_bug.c sort.c
-</pre>
- <div class="node">
-<a name="Create-sort-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Create-sort-test">Create sort test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Prepare-sort">Prepare sort</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.1 グループディレクトリーの作成</h3>
-
- <p>テンプレートディレクトリーで<kbd>make</kbd>を実行し、グループディレクトリーを作成します。このとき、テストグループのディレクトリーを変数<code>GROUPDIR</code>で指定します。ここでは、<kbd>~/sort/test</kbd>をテストグループのディレクトリーにします。
-
-<pre class="example">$ <kbd>cd ~/autotest.mk/template</kbd>
-$ <kbd>make GROUPDIR=~/sort/test</kbd>
-</pre>
- <p>次のコマンドでグループディレクトリーに移動し、その中を確認します。
-
-<pre class="example">$ <kbd>cd ~/sort/test</kbd>
-$ <kbd>ls</kbd>
-Define.mk Makefile Test.mk
-</pre>
- <div class="node">
-<a name="Create-sort-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Create-sort-src">Create sort src</a>,
-Previous: <a rel="previous" accesskey="p" href="#Create-sort-group">Create sort group</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.2 テストディレクトリーの作成</h3>
-
- <p>グループディレクトリーで<kbd>make create</kbd>を実行し、テストディレクトリーを作成します。このとき、変数<code>GROUPDIR</code>でテスト名を指定し、さらにC言語の関数テスト用の<code>Makefile</code>を作成するため変数<code>SRC=c</code>を指定します。ここでは、1つめのテストを<samp><span class="file">sort_001</span></samp>という名前で作成します<a rel="footnote" href="#fn-3" name="fnd-3"><sup>3</sup></a>。
-
-<pre class="example">$ <kbd>make create TEST=sort_001 SRC=c</kbd>
-</pre>
- <p>次のコマンドでテストディレクトリーに移動し、その中を確認します。
-
-<pre class="example">$ <kbd>cd sort_001</kbd>
-$ <kbd>ls</kbd>
-Makefile
-</pre>
- <div class="node">
-<a name="Create-sort-src"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Edit-sort-Makefile">Edit sort Makefile</a>,
-Previous: <a rel="previous" accesskey="p" href="#Create-sort-test">Create sort test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.3 関数テスト用プログラムのソース作成</h3>
-
- <p>C言語の関数をテストするためのプログラムをC言語で記述した、プログラムのソースファイル<samp><span class="file">cmd.c</span></samp>をテキストエディターで作成します。テスト対象の関数<code>sort</code>を呼び出してソートを実行し、その結果を表示するプログラムです。
-
-<pre class="example">#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;
-}
-</pre>
- <div class="node">
-<a name="Edit-sort-Makefile"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Edit-sort-desc">Edit sort desc</a>,
-Previous: <a rel="previous" accesskey="p" href="#Create-sort-src">Create sort src</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.4 <samp><span class="file">Makefile</span></samp>の編集</h3>
-
- <p><samp><span class="file">Makefile</span></samp>をテキストエディターで編集し、テスト対象ファイルをあらわす変数<code>TESTTARGET_FILES</code>を指定します。
-ここでは、<samp><span class="file">../../sort.c</span></samp>を指定します。
-
-<pre class="example">include ../Define.mk
-include ../Test.mk
-
-CC := gcc
-CFLAGS := -Wall
-
-.INTERMEDIATE: $(CMD_FILE)
-
-CMDSRC_FILE := cmd.c
-TESTTARGET_FILES := <kbd>../../sort.c</kbd> # Set test target files
-
-COMPILE_FILE := compile.log
-
-$(CMD_FILE): $(CMDSRC_FILE) $(TESTTARGET_FILES)
- $(CC) $(CFLAGS) -o $ $^ >$(COMPILE_FILE) 2>&1
- cat $(COMPILE_FILE)
-</pre>
- <div class="node">
-<a name="Edit-sort-desc"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Set-sort-test">Set sort test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Edit-sort-Makefile">Edit sort Makefile</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.5 テスト説明ファイルの作成</h3>
-
- <p>テスト説明ファイル<samp><span class="file">desc.txt</span></samp>はテストに関する説明をあらわし、テストの結果と一緒にログに出力されます。
-<samp><span class="file">desc.txt</span></samp>をテキストエディターを使って次の内容で作成します。
-
-<pre class="example"><kbd>テスト関数1</kbd>
-</pre>
- <div class="node">
-<a name="Set-sort-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Execute-sort-test">Execute sort test</a>,
-Previous: <a rel="previous" accesskey="p" href="#Edit-sort-desc">Edit sort desc</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.6 テスト想定ファイルの作成</h3>
-
- <p>テスト想定ファイル<samp><span class="file">0.txt</span></samp>は、テストが正しく実行された場合の結果をあらわします。<samp><span class="file">0.txt</span></samp>の作成方法は、次の3つがあります。
-
- <ul>
-<li>手動で作成
-
- <li><kbd>make set</kbd>
-
- <li><kbd>make reset</kbd>
-</ul>
-
- <p>エラーが発生するテストでは、標準出力想定の下にエラー出力想定を続けます。
-
-<h4 class="subsection">4.6.1 手動で作成</h4>
-
- <p>テスト想定ファイル<samp><span class="file">0.txt</span></samp>をテキストエディターを使って次の内容で作成します。
-
-<pre class="example"><kbd>3</kbd>
-</pre>
- <h4 class="subsection">4.6.2 <kbd>make set</kbd></h4>
-
- <p><kbd>make set</kbd>を実行すると、<samp><span class="file">Makefile</span></samp>の設定に従い関数テスト用のプログラムソース<samp><span class="file">cmd.c</span></samp>と関数ファイル<samp><span class="file">../../sort.c</span></samp>からコマンドファイル<samp><span class="file">cmd</span></samp>が作成されます。そのあと<samp><span class="file">cmd</span></samp>が実行され、実行結果は<samp><span class="file">0.txt</span></samp>ファイルに出力されます。実行後、次回のテストのため、<samp><span class="file">cmd</span></samp>は自動的に削除されます。
-
-<pre class="example">$ <kbd>make set</kbd>
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-3
-5
-7
-11
-rm cmd
-</pre>
- <p>この方法で<samp><span class="file">0.txt</span></samp>を作成する場合は、作成された内容がテスト想定として本当に正しいかよく検討する必要があります。
-
- <p><samp><span class="file">0.txt</span></samp>がすでに存在する場合は<kbd>make set</kbd>を実行するとエラーになり、<samp><span class="file">0.txt</span></samp>は更新されません。例えば、バグを含む<code>sort</code>関数ファイルを準備して<kbd>make set</kbd>を実行すると、仕様と異なる次のようなテスト想定となり、テストを正しく実行できません。
-
-<pre class="example">$ <kbd>make set</kbd>
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-2
-2
-2
-2
-rm cmd
-</pre>
- <h4 class="subsection">4.6.3 <kbd>make reset</kbd></h4>
-
- <p><samp><span class="file">0.txt</span></samp>がすでに存在する場合は、<kbd>make reset</kbd>で更新できます。
-
-<pre class="example">$ <kbd>make reset</kbd>
-gcc -Wall -o cmd cmd.c ../../sort.c
-2
-3
-5
-7
-11
-rm cmd
-</pre>
- <div class="node">
-<a name="Execute-sort-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Check-sort-log">Check sort log</a>,
-Previous: <a rel="previous" accesskey="p" href="#Set-sort-test">Set sort test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.7 テストの実行</h3>
-
- <p>コマンドファイルとテスト想定を用意したら、<kbd>make</kbd>または<kbd>make check</kbd>でテストを実行できます。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt Makefile cmd.c desc.txt
-$ <kbd>make</kbd>
-sort_001: Test Success 2011-01-24 11:13:04
-Details in /home/foo/sort/test/sort_001/detail.log
-rm cmd
-</pre>
- <p>表示される項目は、次のとおりです。
-
- <ul>
-<li><テスト説明ファイル<samp><span class="file">desc.txt</span></samp>の内容>
-
- <li><テスト名>: <テスト結果(Test SuccessまたはTest Failure)> <テスト実行日時>
-
- <li>Detail in <テスト詳細ログファイルの絶対パス>
-</ul>
-
-<h4 class="unnumberedsubsec">バグを含む<code>sort</code>関数の場合</h4>
-
- <p>正しいテスト想定を作成していた場合にバグを含む<code>sort</code>関数でテストを実行すると、次のように表示されます。
-
-<pre class="example">$ <kbd>make</kbd>
-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
-</pre>
- <div class="node">
-<a name="Check-sort-log"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Execute-sort-group">Execute sort group</a>,
-Previous: <a rel="previous" accesskey="p" href="#Execute-sort-test">Execute sort test</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.8 テストログファイルの確認</h3>
-
- <p>テストを実行して作成されたファイルを確認します。<samp><span class="file">1.txt</span></samp> <samp><span class="file">summary.log</span></samp> <samp><span class="file">detail.log</span></samp>が作成されています。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt 1.txt Makefile cmd desc.txt detail.log summary.log
-</pre>
- <p>テストを実行すると作成されるファイルは、次のとおりです。必要に応じてファイルの内容を確認します。
-
- <dl>
-<dt><samp><span class="file">1.txt</span></samp><dd>テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます
-
- <br><dt><samp><span class="file">err.log</span></samp><dd>エラー発生時に、エラーが出力されます。エラーが発生しない場合は作成されません
-
- <br><dt><samp><span class="file">diff.log</span></samp><dd>テスト想定ファイル<samp><span class="file">0.txt</span></samp>とテスト結果ファイル<samp><span class="file">1.txt</span></samp>の差分をあらわします。想定と結果が同一の場合は、作成されません
-
- <br><dt><samp><span class="file">summary.log</span></samp><dd>テストの実行結果を表します。テスト実行時に表示される項目です。
-
- <br><dt><samp><span class="file">detail.log</span></samp><dd>テストの詳細ログを表します。上記の内容がすべて出力されます
-</dl>
-
- <p><samp><span class="file">detail.log</span></samp>は、次のようになります。
-
-<pre class="example">== 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
-----------------------------------------------------------------------
-
-</pre>
- <h4 class="unnumberedsubsec">バグを含む<code>sort</code>関数の場合</h4>
-
- <p>バグを含む<code>sort</code>関数を準備してテストを実行した場合、<samp><span class="file">1.txt</span></samp> <samp><span class="file">summary.log</span></samp> <samp><span class="file">detail.log</span></samp>のほかに、テスト想定とテスト結果が異なるため<kbd>diff.log</kbd>が作成されます。
-
-<pre class="example">$ <kbd>ls</kbd>
-0.txt 1.txt Makefile cmd desc.txt detail.log diff.log summary.log
-</pre>
- <p><samp><span class="file">detail.log</span></samp>は次のようになります。
-
-<pre class="example">== 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
-----------------------------------------------------------------------
-
-</pre>
- <h4 class="subsection">4.8.1 テストのクリア</h4>
-
- <p><kbd>make clean</kbd>を実行すると、テストの結果作成されたファイルがクリアされます。
-
-<pre class="example">$ <kbd>make clean</kbd>
-$ <kbd>ls</kbd>
-0.txt Makefile cmd.c desc.txt
-</pre>
- <div class="node">
-<a name="Execute-sort-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Check-sort-group-log">Check sort group log</a>,
-Previous: <a rel="previous" accesskey="p" href="#Check-sort-log">Check sort log</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.9 テストグループの実行</h3>
-
- <p>2つめ以降のテスト・ケースについても、1つめと同じ手順でテストディレクトリーの作成後、テスト説明ファイルとテストコマンドファイル、テスト想定ファイルを作成します。
-
- <p>ここでは、先に作成した<samp><span class="file">sort_001</span></samp>も含めて、次のようなディレクトリーとファイルを作成します。こうしたディレクトリーやファイルはAutotest.mkの<samp><span class="file">sample/sort/test</span></samp>以下にあります。
-
- <ul>
-
- <li>sort_001
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/sort/sort_001/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/sort/sort_001/cmd.c.txt"><samp><span class="file">cmd.c</span></samp></a> <a href="sample/sort/sort_001/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>sort_002
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/sort/sort_002/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/sort/sort_002/cmd.c.txt"><samp><span class="file">cmd.c</span></samp></a> <a href="sample/sort/sort_002/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>sort_003
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/sort/sort_003/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/sort/sort_003/cmd.c.txt"><samp><span class="file">cmd.c</span></samp></a> <a href="sample/sort/sort_003/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>sort_004
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/sort/sort_004/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/sort/sort_004/cmd.c.txt"><samp><span class="file">cmd.c</span></samp></a> <a href="sample/sort/sort_004/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
-
- <li>sort_005
-
- <ul>
-<li><samp><span class="file">Makefile</span></samp> <a href="sample/sort/sort_005/desc.txt"><samp><span class="file">desc.txt</span></samp></a> <a href="sample/sort/sort_005/cmd.c.txt"><samp><span class="file">cmd.c</span></samp></a> <a href="sample/sort/sort_005/0.txt"><samp><span class="file">0.txt</span></samp></a>
-</ul>
- </ul>
-
- <p>テストグループディレクトリーでは、<kbd>make</kbd>または<kbd>make check</kbd>で複数のテストをまとめて実行できます。
-
-<pre class="example">$ <kbd>cd ~/sort/test</kbd>
-$ <kbd>make</kbd>
-test: 5 / 5 tests passed. Details in /home/foo/sort/test/TEST.log
-test: All tests are succeded.
-</pre>
- <p>表示されるのは、次の項目です。
- <ul>
-<li><テスト名>: <成功テスト数>/<全テスト数> test passed. Detail in <テストグループログファイルの絶対パス>
-
- <li>(すべてのテストに成功した場合)<テスト名>: All tests are succeded.
-</ul>
-
-<h4 class="unnumberedsubsec">バグを含む<code>sort</code>関数の場合</h4>
-
- <p>バグを含む<code>sort</code>関数を準備してテストグループを実行した場合、次のように表示されます。失敗したテストがあることをあらわしています。
-
-<pre class="example">$ <kbd>cd ~/sort/test</kbd>
-$ <kbd>make</kbd>
-test: 1 / 5 tests passed. Details in /home/foo/sort/test/TEST.log
-</pre>
- <div class="node">
-<a name="Check-sort-group-log"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Iteretive">Iteretive</a>,
-Previous: <a rel="previous" accesskey="p" href="#Execute-sort-group">Execute sort group</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.10 テストグループログファイルの確認</h3>
-
- <p>テストグループを実行すると作成されるファイルは、次のとおりです。
-
- <dl>
-<dt><samp><span class="file"><テストグループ名を大文字にした文字列>.log</span></samp><dd>テストグループに含まれるテストとその実行結果の一覧をあらわします。
-
- <br><dt><samp><span class="file">Summary.log</span></samp><dd>テストの実行結果を表します。テストグループ実行時に表示される内容です。
-</dl>
-
- <p>ここではテストグループ名は<samp><span class="file">test</span></samp>なので、<samp><span class="file">TEST.log</span></samp>が次の内容で作成されます。
-
-<pre class="example">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
-
-</pre>
- <p>テストをまとめて実行した場合も、個別のテストを実行した場合と同様に、テストディレクトリーにテストログが出力されます。特定のテスト結果を詳細に検討する場合は、そのテストのテストディレクトリーを開いてテストログファイルの確認をします。
-
-<h4 class="unnumberedsubsec">バグを含む<code>sort</code>関数の場合</h4>
-
- <p>バグを含む<code>sort</code>関数を準備してテストグループを実行した場合、<samp><span class="file">TEST.log</span></samp>は次のように表示されます。sort_001、sort_003、sort_004、sort_005のテストで失敗していることがわかります。
-
-<pre class="example">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
-
-</pre>
- <div class="node">
-<a name="Iteretive"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#Check-sort-group-log">Check sort group log</a>,
-Up: <a rel="up" accesskey="u" href="#Tutorial-sort">Tutorial sort</a>
-
-</div>
-
-<h3 class="section">4.11 開発とテストの反復</h3>
-
- <p>あとはテスト対象となっている関数を変更するたびに、テストを実行できるようになります。つまり、関数の単位で開発とテストを反復してできます。
-
- <p>関数の実装だけが変更されて仕様が変わっていない場合は、テストグループのディレクトリーで<kbd>make</kbd>を実行するだけでテストができます。
-
- <p>関数の入力または出力の仕様が変わった場合には、<samp><span class="file">0.txt</span></samp>と<samp><span class="file">cmd.c</span></samp>の変更を検討します。関数のコンパイル方法(依存するファイル)が変わった場合は、<samp><span class="file">Makefile</span></samp>の変更を検討します。
-
-<div class="node">
-<a name="Template-dir"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Group-dir">Group dir</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tutorial-sort">Tutorial sort</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">5 テンプレートディレクトリー マニュアル</h2>
-
- <p>テンプレートディレクトリーは、Autotest.mkをインストールするときに展開により作成された<samp><span class="file">template</span></samp>ディレクトリーです。
-
-<ul class="menu">
-<li><a accesskey="1" href="#make-group">make group</a>: <kbd>make</kbd>または<kbd>make group</kbd> - グループディレクトリーの作成
-<li><a accesskey="2" href="#Template-Files">Template Files</a>: テンプレートのファイル
-</ul>
-
-<div class="node">
-<a name="make-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Template-Files">Template Files</a>,
-Previous: <a rel="previous" accesskey="p" href="#Template-dir">Template dir</a>,
-Up: <a rel="up" accesskey="u" href="#Template-dir">Template dir</a>
-
-</div>
-
-<h3 class="section">5.1 <kbd>make</kbd>または<kbd>make group</kbd> - グループディレクトリーの作成</h3>
-
- <p>変数<code>GROUPDIR</code>で指定されたディレクトリーをテストグループディレクトリーとして作成し、テストの実行に必要な次のファイルを配置します。
-
- <ul>
-<li><samp><span class="file">Define.mk</span></samp>
-
- <li><samp><span class="file">Makefile</span></samp>
-
- <li><samp><span class="file">Test.mk</span></samp>
-</ul>
-
- <p>通常、テストに必要なファイルテンプレートディレクトリーからグループディレクトリーにコピーされます。変数<code>LINKMK</code>を指定した場合は、シンボリックリンクが作成されます。
-
-<h4 class="subsection">5.1.1 変数</h4>
-
- <dl>
-<dt><code>GROUPDIR</code><dd>テストディレクトリーを指定します。指定しない場合や既存のディレクトリーを指定した場合は、エラーが発生してテストグループディレクトリーは作成されません。
-
- <br><dt><code>LINKMK</code><dd>指定した場合、グループディレクトリーにテストの実行に必要なファイルのシンボリックリンクが作成されます。値は任意です。シンボリックリンクのリンク先は、テンプレートディレクトリーの中です。
-</dl>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
- <p>グループディレクトリーとして<samp><span class="file">~/triangle/test</span></samp>を作成します。
-
-<pre class="example">$ <kbd>make GROUPDIR=~/triangle/test</kbd>
-</pre>
- <div class="node">
-<a name="Template-Files"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#make-group">make group</a>,
-Up: <a rel="up" accesskey="u" href="#Template-dir">Template dir</a>
-
-</div>
-
-<h3 class="section">5.2 テンプレートのファイル</h3>
-
- <p>テンプレートディレクトリーには、次のファイルが含まれます。
- <dl>
-<dt><samp><span class="file">Makefile</span></samp><dd>テンプレートディレクトリーのMakefile
-
- <br><dt><samp><span class="file">Group.mk</span></samp><dd>グループディレクトリーのMakefile。<kbd>make</kbd>または<kbd>make group</kbd>で、グループディレクトリーに<samp><span class="file">Makefile</span></samp>として配置されます。
-
- <br><dt><samp><span class="file">Test.mk</span></samp><dd>テストディレクトリーから参照されるMakefile。<kbd>make</kbd>または<kbd>make group</kbd>で、グループディレクトリーに配置されます。
-
- <br><dt><samp><span class="file">Define.mk</span></samp><dd>テストとテストグループに関する項目を定義したMakefile。<kbd>make</kbd>または<kbd>make group</kbd>で、グループディレクトリーに配置されます。
-</dl>
-
-<div class="node">
-<a name="Group-dir"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Test-dir">Test dir</a>,
-Previous: <a rel="previous" accesskey="p" href="#Template-dir">Template dir</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">6 グループディレクトリー マニュアル</h2>
-
- <p><a href="#make-group">グループディレクトリーの作成</a>後、グループディレクトリーに移動すると次の操作ができます。
-
-<ul class="menu">
-<li><a accesskey="1" href="#make-create">make create</a>: <kbd>make create</kbd> - テストの作成
-<li><a accesskey="2" href="#Rename-and-Copy">Rename and Copy</a>: テスト名の変更とコピー
-<li><a accesskey="3" href="#Delete">Delete</a>: テストの削除
-<li><a accesskey="4" href="#make-check-at-group">make check at group</a>: <kbd>make</kbd>または<kbd>make check</kbd> - テストグループの実行
-<li><a accesskey="5" href="#make-checkall">make checkall</a>: <kbd>make checkall</kbd> - グループ内にあるすべてのテストの実行、計時
-<li><a accesskey="6" href="#make-clean-at-group">make clean at group</a>: <kbd>make clean</kbd> - グループ内にあるすべてのテストで、実行結果をクリア
-<li><a accesskey="7" href="#make-time-at-group">make time at group</a>: <kbd>make time</kbd> - グループ内にあるすべてのテストを計時
-<li><a accesskey="8" href="#make-time_002dclean-at-group">make time-clean at group</a>: <kbd>make time-clean</kbd> - グループ内にあるすべてのテストで、計時結果をクリア
-<li><a accesskey="9" href="#Group-Files">Group Files</a>: グループのファイル
-</ul>
-
-<div class="node">
-<a name="make-create"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Rename-and-Copy">Rename and Copy</a>,
-Previous: <a rel="previous" accesskey="p" href="#Group-dir">Group dir</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.1 <kbd>make create</kbd> - テストの作成</h3>
-
- <p>変数<code>TEST</code>で指定されたディレクトリーをテストディレクトリーとして作成し、ディレクトリーの中に<code>Makefile</code>を作成します。
-
- <p>テスト名は、小文字のアルファベットと数字で指定します。大文字ではじまる名前を指定した場合、ディレクトリーや<code>Makefile</code>は作成されるものの、テストグループ実行の対象になりません。
-
- <p>変数<code>SRC=c</code>を指定した場合は、C言語の関数テスト用の<code>Makefile</code>が作成されます。
-
-<h4 class="subsection">6.1.1 変数</h4>
-
- <dl>
-<dt><code>TEST</code><dd>テストディレクトリー名を指定します。
-
- <br><dt><code>SRC</code><dd>値<code>c</code>を指定すると、C言語の関数テスト用の<code>Makefile</code>が作成されます。
-
- </dl>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
- <p>テストディレクトリーを、<code>01_scalene</code>という名前で作成します。
-
-<pre class="example">$ <kbd>make create TEST=01_scalene</kbd>
-</pre>
- <div class="node">
-<a name="Rename-and-Copy"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Delete">Delete</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-create">make create</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.2 テスト名の変更とコピー</h3>
-
- <p>テスト名を変更したりテストをコピーしたりする場合は、<kbd>mv</kbd>や<kbd>cp</kbd>などでテストディレクトリーを移動、コピーします。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
- <p>テスト名<code>01_scalene</code>を<code>01</code>に変更します。
-
-<pre class="example">$ <kbd>mv 01_scalene 01</kbd>
-</pre>
- <p>テスト<code>01</code>をコピーし、テスト<code>02</code>を作成します。
-
-<pre class="example">$ <kbd>cp -r 01 02</kbd>
-</pre>
- <div class="node">
-<a name="Delete"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-check-at-group">make check at group</a>,
-Previous: <a rel="previous" accesskey="p" href="#Rename-and-Copy">Rename and Copy</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.3 テストの削除</h3>
-
- <p>テストを削除する場合は、<kbd>rm</kbd>などでテストディレクトリーを削除します。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>rm -rf 01_scalene</kbd>
-</pre>
- <div class="node">
-<a name="make-check-at-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-checkall">make checkall</a>,
-Previous: <a rel="previous" accesskey="p" href="#Delete">Delete</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.4 <kbd>make</kbd>または<kbd>make check</kbd> - テストグループの実行</h3>
-
- <p><kbd>make</kbd>または<kbd>make check</kbd>で、グループ内にあるすべての<a href="#make-check-at-test">テストの実行</a>をし、次の項目を表示します。
-
- <ul>
-<li><テスト名>: <成功テスト数>/<全テスト数> test passed. Detail in <テストグループログファイルの絶対パス>
-
- <li>(すべてのテストに成功した場合)<テスト名>: All tests are succeded.
-</ul>
-
- <p>テストグループを実行すると次のファイルが作成されます。
-
- <dl>
-<dt><samp><span class="file"><テストグループ名を大文字にした文字列>.log</span></samp><dd>テストグループに含まれるテストとその実行結果の一覧をあらわします。
-
- <br><dt><samp><span class="file">Summary.log</span></samp><dd>テスト実行結果の概要を表します。テストグループ実行時に表示される内容です。
-</dl>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make</kbd>
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-</pre>
- <div class="node">
-<a name="make-checkall"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-clean-at-group">make clean at group</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-check-at-group">make check at group</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.5 <kbd>make checkall</kbd> - グループ内にあるすべてのテストの実行、計時</h3>
-
- <p><kbd>make checkall</kbd>でグループ内にあるすべてのテストを、<a href="#make-check-at-test">実行</a>し、<a href="#make-time-at-test">計時</a>します。<a href="#make-check-at-group">テストグループの実行</a>と同じ項目を表示し、出力されるファイルの種類も同じです。<code><テストグループ名を大文字にした文字列>.log</code>には、テストと実行結果に加え、計時結果が一覧として出力されます。
-
- <p>テストの実行と計時は別に行われるため、通常にテストを実行するよりも2倍程度の時間がかかります。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make checkall</kbd>
-test: 13 / 13 tests passed. Detail in /home/foo/triangle/test/TEST.log
-test: All tests are succeded.
-</pre>
- <div class="node">
-<a name="make-clean-at-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-time-at-group">make time at group</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-checkall">make checkall</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.6 <kbd>make clean</kbd> - グループの実行結果をクリア</h3>
-
- <p><kbd>make clean</kbd>で、<a href="#make-check-at-group"><kbd>make</kbd>または<kbd>make check</kbd></a>や<a href="#make-checkall"><kbd>make checkall</kbd></a>により作成されたファイルをすべて削除します。グループディレクトリーのほか、テストディレクトリーのファイルも削除されます。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make clean</kbd>
-</pre>
- <div class="node">
-<a name="make-time-at-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-time_002dclean-at-group">make time-clean at group</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-clean-at-group">make clean at group</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.7 <kbd>make time</kbd> - グループ内にあるすべてのテストを計時</h3>
-
- <p><kbd>make time</kbd>で、グループ内にあるすべてのテストを計時し、その結果が表示されます。計時結果は、<samp><span class="file"><テストグループ名を大文字にした文字列>_time.log</span></samp>に格納されます。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make time</kbd>
-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
-</pre>
- <div class="node">
-<a name="make-time-clean-at-group"></a>
-<a name="make-time_002dclean-at-group"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Group-Files">Group Files</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-time-at-group">make time at group</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.8 <kbd>make time-clean</kbd> - グループの計時結果をクリア</h3>
-
- <p><kbd>make cleatime</kbd>で、<kbd>make time</kbd>により作成されたテストグループディレクトリーと各テストディレクトリーのファイルをすべて削除します。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make time-clean</kbd>
-</pre>
- <div class="node">
-<a name="Group-Files"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#make-time_002dclean-at-group">make time-clean at group</a>,
-Up: <a rel="up" accesskey="u" href="#Group-dir">Group dir</a>
-
-</div>
-
-<h3 class="section">6.9 グループディレクトリーのファイル</h3>
-
- <p>グループディレクトリーには、テストディレクトリーに加えて、次のファイルが含まれます。
-
- <dl>
-<dt><samp><span class="file">Makefile</span></samp><dd>グループディレクトリーのMakefile
-
- <br><dt><samp><span class="file">Test.mk</span></samp><dd>テストディレクトリーから参照されるMakefile
-
- <br><dt><samp><span class="file">Define.mk</span></samp><dd>テストとテストグループに関する項目を定義したMakefile
-
- <br><dt><samp><span class="file"><テストグループ名を大文字にした文字列>.log</span></samp><dd><a href="#make-check-at-group"><kbd>make</kbd>または<kbd>make check</kbd></a>や<a href="#make-checkall"><kbd>make checkall</kbd></a>を実行したときに作成されます。<kbd>make</kbd>や<kbd>make check</kbd>の場合は、テストグループに含まれるテストと実行結果の一覧です。<kbd>make checkall</kbd>の場合は、テストと実行結果と計時結果の一覧です。
-
- <br><dt><samp><span class="file">Summary.log</span></samp><dd>テスト実行結果の概要です。<a href="#make-check-at-group"><kbd>make</kbd>または<kbd>make check</kbd></a>や<a href="#make-checkall"><kbd>make checkall</kbd></a>を実行すると作成され、その内容が表示されます。
-</dl>
-
-<div class="node">
-<a name="Test-dir"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#Group-dir">Group dir</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">7 テストディレクトリー マニュアル</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#make-set">make set</a>: <kbd>make set</kbd> - テスト想定の作成
-<li><a accesskey="2" href="#make-reset">make reset</a>: <kbd>make reset</kbd> - テスト想定の作成または更新
-<li><a accesskey="3" href="#make-check-at-test">make check at test</a>: <kbd>make</kbd>または<kbd>make check</kbd> - テストの実行
-<li><a accesskey="4" href="#make-clean-at-test">make clean at test</a>: <kbd>make clean</kbd> - テスト結果のクリア
-<li><a accesskey="5" href="#make-all_002dclean-at-test">make all-clean at test</a>: <kbd>make all-clean</kbd> - テストの想定と結果をクリア
-<li><a accesskey="6" href="#make-time-at-test">make time at test</a>: <kbd>make time</kbd> - テストの計時
-<li><a accesskey="7" href="#make-time_002dclean-at-test">make time-clean at test</a>: <kbd>make time-clean</kbd> - テスト計時結果のクリア
-<li><a accesskey="8" href="#Test-Files">Test Files</a>: テストディレクトリーのファイル
-</ul>
-
-<div class="node">
-<a name="make-set"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-reset">make reset</a>,
-Previous: <a rel="previous" accesskey="p" href="#Test-dir">Test dir</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.1 <kbd>make set</kbd> - テスト想定の作成</h3>
-
- <p><kbd>make set</kbd>で、テストコマンド<samp><span class="file">cmd</span></samp>が実行され、テスト想定ファイル<samp><span class="file">0.txt</span></samp>が作成されます。また、実行時に<samp><span class="file">0.txt</span></samp>の内容が表示されます。<samp><span class="file">0.txt</span></samp>がすでにある場合は、エラーが発生して<samp><span class="file">0.txt</span></samp>は更新されません。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make set</kbd>
-scalene triangle
-</pre>
- <div class="node">
-<a name="make-reset"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-check-at-test">make check at test</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-set">make set</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.2 <kbd>make reset</kbd> - テスト想定の作成または更新</h3>
-
- <p><kbd>make reset</kbd>で、テストコマンド<samp><span class="file">cmd</span></samp>が実行され、テスト想定ファイル<samp><span class="file">0.txt</span></samp>を作成されます。また、実行時に<samp><span class="file">0.txt</span></samp>の内容が表示されます。<samp><span class="file">0.txt</span></samp>がすでにある場合、<samp><span class="file">0.txt</span></samp>が更新されます。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make reset</kbd>
-scalene triangle
-</pre>
- <div class="node">
-<a name="make-check-at-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-clean-at-test">make clean at test</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-reset">make reset</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.3 <kbd>make</kbd>または<kbd>make check</kbd> - テストの実行</h3>
-
- <p><kbd>make</kbd>または<kbd>make check</kbd>で、テストコマンド<samp><span class="file">cmd</span></samp>が実行され、テスト結果ファイル<samp><span class="file">1.txt</span></samp>が作成されます。また、実行時にテストの結果をあらわす次の項目が表示されます。
-
- <ul>
-<li><テスト説明ファイル<samp><span class="file">desc.txt</span></samp>の内容>
-
- <li><テスト名>: <テスト結果(Test SuccessまたはTest Failure)> <テスト実行日時>
-
- <li>Detail in <テスト詳細ログファイルの絶対パス>
-</ul>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make</kbd>
-有効な不等辺三角形をあらわすテスト・ケース
-01_scalene: Test Success 2011-01-10 10:09:55
-Detail in /home/foo/triangle/test/01_scalene/detail.log
-</pre>
- <div class="node">
-<a name="make-clean-at-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-all_002dclean-at-test">make all-clean at test</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-check-at-test">make check at test</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.4 <kbd>make clean</kbd> - テスト結果のクリア</h3>
-
- <p><kbd>make clean</kbd>で、テストの実行または計時の結果作成された次のファイルが削除されます。
-
- <ul>
-<li><samp><span class="file">1.txt</span></samp>
-
- <li><samp><span class="file">diff.log</span></samp>
-
- <li><samp><span class="file">err.log</span></samp>
-
- <li><samp><span class="file">summary.log</span></samp>
-
- <li><samp><span class="file">time.log</span></samp>
-</ul>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make clean</kbd>
-$ <kbd>ls</kbd>
-0.txt Makefile cmd desc.txt
-</pre>
- <div class="node">
-<a name="make-all-clean-at-test"></a>
-<a name="make-all_002dclean-at-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-time-at-test">make time at test</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-clean-at-test">make clean at test</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.5 <kbd>make all-clean</kbd> - テストの想定と結果をクリア</h3>
-
- <p><kbd>make clean</kbd>で次の、テストの想定ファイルとテストの実行または計時の結果作成されたファイルが削除されます。
-
- <ul>
-<li><samp><span class="file">0.txt</span></samp>
-
- <li><samp><span class="file">1.txt</span></samp>
-
- <li><samp><span class="file">diff.log</span></samp>
-
- <li><samp><span class="file">err.log</span></samp>
-
- <li><samp><span class="file">summary.log</span></samp>
-
- <li><samp><span class="file">time.log</span></samp>
-</ul>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make all-clean</kbd>
-$ <kbd>ls</kbd>
-Makefile cmd desc.txt
-</pre>
- <div class="node">
-<a name="make-time-at-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#make-time_002dclean-at-test">make time-clean at test</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-all_002dclean-at-test">make all-clean at test</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.6 <kbd>make time</kbd> - テストの計時</h3>
-
- <p><kbd>make time</kbd>で、テストを計時しその結果が表示されます。計時結果は、<samp><span class="file">time.log</span></samp>に格納されます。
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make time</kbd>
-real 0m0.006s
-</pre>
- <div class="node">
-<a name="make-time-clean-at-test"></a>
-<a name="make-time_002dclean-at-test"></a>
-<p><hr>
-Next: <a rel="next" accesskey="n" href="#Test-Files">Test Files</a>,
-Previous: <a rel="previous" accesskey="p" href="#make-time-at-test">make time at test</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.7 <kbd>make time-clean</kbd> - テスト計時結果のクリア</h3>
-
- <p><kbd>make time-clean</kbd>で、テストの計時の結果作成された次のファイルが削除されます。
-
- <ul>
-<li><samp><span class="file">time.log</span></samp>
-</ul>
-
-<h4 class="unnumberedsubsec">使用例</h4>
-
-<pre class="example">$ <kbd>make time-clean</kbd>
-</pre>
- <div class="node">
-<a name="Test-Files"></a>
-<p><hr>
-Previous: <a rel="previous" accesskey="p" href="#make-time_002dclean-at-test">make time-clean at test</a>,
-Up: <a rel="up" accesskey="u" href="#Test-dir">Test dir</a>
-
-</div>
-
-<h3 class="section">7.8 テストディレクトリーのファイル</h3>
-
- <dl>
-<dt><samp><span class="file">Makefile</span></samp><dd>テストディレクトリーのMakefile
-
- <br><dt><samp><span class="file">cmd</span></samp><dd>テスト時に実行されるコマンドをあらわすテストコマンドファイル。手動で作成します。
-
- <br><dt><samp><span class="file">desc.txt</span></samp><dd>テストに関する説明をあらわし、テストの結果と一緒にログに出力されます。手動で作成します。
-
- <br><dt><samp><span class="file">0.txt</span></samp><dd>テストが正しく実行された場合の結果をあらわすテスト想定ファイル。エラー発生時は、標準出力のあとにエラー出力を続けます。手動か、<kbd>make set</kbd>か、<kbd>make reset</kbd>で作成します。
-
- <br><dt><samp><span class="file">1.txt</span></samp><dd>テスト結果をあらわします。エラー発生時は、標準出力のあとにエラー出力が続きます。<kbd>make</kbd>または<kbd>make check</kbd>で作成されます。
-
- <br><dt><samp><span class="file">diff.log</span></samp><dd>テストの想定と結果の差分をあらわす差分ファイル。<kbd>make</kbd>または<kbd>make check</kbd>でテストを実行した結果、想定と差分が異なる場合に作成されます。想定と結果が同じ場合は作成されません。
-
- <br><dt><samp><span class="file">err.log</span></samp><dd>テストのエラー出力をあらわすエラーファイル。<kbd>make</kbd>または<kbd>make check</kbd>でテストを実行した結果、エラー出力がある場合に作成されます。なお、エラー出力は<samp><span class="file">1.txt</span></samp>にも含まれます。
-
- <br><dt><samp><span class="file">summary.log</span></samp><dd>テスト実行結果の概要です。<kbd>make</kbd>または<kbd>make check</kbd>で作成され、その内容が表示されます。
-
- <br><dt><samp><span class="file">detail.log</span></samp><dd>テスト実行結果の詳細です。<samp><span class="file">summary.log</span></samp> <samp><span class="file">cmd</span></samp> <samp><span class="file">0.txt</span></samp> <samp><span class="file">err.log</span></samp> <samp><span class="file">diff.log</span></samp> <samp><span class="file">1.txt</span></samp>の内容がコピーされます。<kbd>make</kbd>または<kbd>make check</kbd>で作成されます。
-</dl>
-
- <div class="footnote">
-<hr>
-<a name="texinfo-footnotes-in-document"></a><h4>脚注</h4><p class="footnote"><small>[<a name="fn-1" href="#fnd-1">1</a>]</small> 『ソフトウェア・テストの技法』では「カードから3つの整数を読む」となっているのを、「3つの引数をとる」に変更しています。</p>
-
- <p class="footnote"><small>[<a name="fn-2" href="#fnd-2">2</a>]</small> 『ソフトウェア・テストの技法』では下記の13個に加え、「それぞれのテスト・ケースについて、入力の値に対して予想される値をしめしたか」というテスト・ケースが記載されています。このテスト・ケースは、Autotest.mkを実行している場合は自動的に満たされると考えています。</p>
-
- <p class="footnote"><small>[<a name="fn-3" href="#fnd-3">3</a>]</small> 「CUnit チュートリアル」の「テスト関数1」と「テスト関数2」を、チュートリアルを説明しやすくするため入れ替えています。</p>
-
- <hr></div>
-
-</body></html>
-
-<!--
-\1f
-Local Variables:
-coding: utf-8
-End:
-
--->