単体テストの効率化を考える(16)
単体テスト設計書の再考(テスト対象関数について)
どもです。
以前投稿した単体テストの効率化を考える(15)で、単体テストの設計書/デシジョンテーブルについて記載しました。
このエントリで書いたのは、「デシジョンテーブルについて」のみです。
テストを実施するためには、テストコードを自動で生成するためには、「テスト対象関数の情報」が必要になります。
そこで今回は、この「テスト対象関数の情報」の書き方を考えてみた内容について書きます。
1. いきなり結論
色々書く前に、まず結論を示します。
テスト対象関数の情報、コレでいいんじゃないか?
2. テーブルの内容
テーブルの内容について、簡単に説明します。
2.1. 「種類」列
先頭の列です。
ココには、各行の内容を記載します。
テスト対象関数に関係する情報は、基本的に以下になると思います。
- テスト対象関数(関数本体)
- テスト対象関数が呼び出す別の関数
子関数/サブ関数 - テスト対象関数が参照するグローバル変数
他の言語になれば、もっと違う要素が加わると思いますが、C言語に限ればこのくらいかと思います。
2.2. 内容
次に「内容」列です。
この列には、「種類」列の補足的な情報を記載します。
具体的には、「種類」が「テスト対象関数」または「子関数」の場合には、その行の内容が「関数本体」と「関数の引数」のいずれなのかを記載します。
また、「種類」が「グローバル変数」の場合には、「内部」なのか「外部」なのかを設定します。
補足ですが、「グローバル変数」の「内部」と「外部」は、ココでは以下のように定義しています。
- 外部
- テスト対象関数が実装されたソースファイルとは別のファイルで定義されたグローバル変数
- テスト対象関数が実装されたソースファイルでは、"extern"で宣言されているグローバル変数
- 内部
- テスト対象関数が実装されたソースファイルで定義/宣言されたグローバル変数
2.3. データ型前置修飾
「データ型前置修飾」列には、データ型の前に記述する修飾子を記載します。
「const」か「static」くらいしか無いと思います…。
2.4. データ型
データ型を記載します。
関数(テスト対象関数/子関数)の場合には、関数の戻り値を記載します。
2.5. データ型後置修飾
「データ型後置修飾子」列には、データ型の後ろに記述する修飾子を記載します。
ポインタ型の場合の「*」は、このセルに記述します。
2.6. 名前
名前を記述します。
関数(テスト対処関数/子関数)の場合には関数名を、変数(引数/グローバル変数)の場合には変数名を記述します。
2.7. 入出力
変数(とくに引数)の「入出力」を記載します。
先頭で示した図では、「in」または「out」で記述しています。
引数が「入力」なのか「出力」なのか、あるいはその両方なのかを記述します。
(表には現れていませんが、「両方」の場合には「in/out」と記述するようにしています。)
2.8. 備考/説明
備考や説明など、追加の補足情報があれば記述します。
3. テーブル作成時のルール
このテーブルは、テストコード(テストドライバ/スタブ)の自動生成の入力となることを前提としています。
そのため、
セルの結合は絶対禁止
です。
これは、以前の投稿でも書いたように、総務省が公開している統計表における機会判読可能なデータの表記方法の統一ルールの策定の内容を参考にしています。
それなりに納得できる、(というか、よくよく考えれば当たり前)の内容が書かれているので、参考にしています。
4. まとめ
今回は、単体テストの対象となる関数の記述について書きました。
本当に簡単な内容と説明のみですが、コレで最低限の条件は満たせているのではないかと考えています。
なお、今回の記述で照会した各列の記述(「テスト対象関数」や「本体」、「引数」など)は、私の「趣味」での記述です。
「この書き方が正解☆」ということでは、全くありません。
現場や状況に合せて、記述内容は適宜変更してください。
今回紹介したテスト対象関数のテーブルの書式が、誰かの助けになれば幸いです。
ではっ!
ディスカッション
コメント一覧
まだ、コメントがありません