電子書籍の厳選無料作品が豊富!

IT業界の研修生です。

単体試験についてご質問したいことがあります。
どういう内容を試験すべきかという内容です。
以下の3パターンの場合どういう試験項目を作成すべきでしょうか?

【パターン1】
private void Run()
{
FormatCheck();
AutoRun();
}

【パターン2】
private void Run()
{
//g_Lenghtはグローバル変数
g_Length = 10;
AutoRun();
}

【パターン3】
private void Run()
{
//g_Length、rec_Length共にグローバル変数
g_Length = rec_Length;
AutoRun();
}

【パターン4】
private void Run()
{
if(g_Length == 10)
{
g_Length = rec_Length;
}
else if(g_Length == 4)
{
g_Length += 1;
}
}

【パターン5】
private void GetString(string c)
{
return c + "\n";
}

私の考えではパターン4以外は試験が必要ないような気もするのですが
認識はあっていますでしょうか?

A 回答 (4件)

何となくお考えになっていることがわかりますが、そもそも単体は


何か、何のためにやるのかを考えておくべきでしょう。

1) 詳細仕様と同じロジックになっていればOK なのか
想定された結果と合致していればOKなのか?

2) 自分が作った各モジュールの個別の試験までが単体何が、
それらの組み合わせのある程度の検証までが単体なのか?

3) 試験とは、詳細設計をなぞることなのか、詳細設計の問題点を探ることなのか?

結構立場によって答えが違ったりしますが(^^;
よく考えれば自ずと答えが出ると思います。

はずしていたらすいません。
    • good
    • 0
この回答へのお礼

ありがとうございました。ちょっと情報が不足していたようなので再度新しい質問をさせていただきます。

お礼日時:2013/05/15 01:15

1の回答者です。


研修課題(?でしょうか?)の内容がよくわからないのですが、質問に書かれているソースコードが課題の題材ではないということなのですね。
そうであれば、2の回答者様が仰るように、テスト項目はプログラムの設計書から起こすものなので、この情報では不十分です。

この回答への補足

すいません、ありがとうございました

補足日時:2013/05/13 01:40
    • good
    • 0

テストする内容は、テスト対象の関数などの仕様を元に決める事で、テスト対象のコードを見て決める事ではないです。



例えばパターン5ですが、GetString(String c)の本来の仕様が「第1引数をそのまま返す。」だったらどうしますか?
質問に書かれているコードから考えられるテスト内容とでは差があることになりませんか?

この回答への補足

難しいですね、なかなか

補足日時:2013/05/13 01:40
    • good
    • 0

PG兼SEです。


どんな簡単なプログラムでも、処理を行うコード(ソースコード)にはテストが必要です。
例えば一番簡単なパターン5。(関数の戻り値はvoidではなくStringですね)
1. cに文字列が設定された場合
2. cに空文字列が設定された場合
3. cにnullが設定された場合
など、設定される可能性があるパターンはすべてテストします。(ここまでが基本)
さらに、この関数を呼ぶ側がcにどんな文字列を設定する可能性があるのかをプログラムの用途から考え、テスト項目に追加します。
例えばこの関数では末尾に改行コードを付加していますが、画面に出力するための編集でしょうか?ファイルに出力するためでしょうか?ファイルだとしたらテキストファイルでしょうか?csvあるいはxmlでしょうか?
用途により「正しく末尾に改行が付いているかどうか」を確認するためのテスト項目の書き方が変わってきます。
また設定される文字種も考慮します。
機種依存文字が設定される可能性があるのならそれもテストするし、といった具合です。

他のパターンも同様です。テスト項目作成には想像力が必要です。
・どんなケースが考えられるか
・最も一般的な正常ケースは何か
・一般的ではないが論理上可能な正常ケースにはどんなケースがあるか
・どんなエラーケースが考えられるか

処理を行うプログラムである限り、テストが不要ということはあり得ません。

研修中との事ですので、今の段階で求められている成果物がどこまでのレベルのものなのかがわかりませんが、基礎は絶対に手を抜かずにご自分でどんどん書籍や学習サイトで勉強なさって下さい。
二年後三年後、力の差が誰の目にも明らかになってきます。

この回答への補足

回答ありがとうございます。パターン5は記述ミスです。すいません。この全例文は質問時に想像で描き上げたものなので、意味はありません。

>・どんなケースが考えられるか
>・最も一般的な正常ケースは何か
>・一般的ではないが論理上可能な正常ケースにはどんなケースがあるか
>・どんなエラーケースが考えられるか

こちらの概要的な内容は重々承知なのですが、この上記のような内容を考える力が今なくて今回質問させていただきました。

補足日時:2013/05/10 08:06
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2013/05/13 01:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!