- ベストアンサー
単体試験(再)に関する質問 - プログラムのロジック検証のために必要な試験項目を教えてください
- 前回の質問では記載情報が不足していたため、再度質問させていただきます。現在単体試験の試験項目書を作成しておりますが、プログラムのロジック検証をするためにはどのような試験項目が必要でしょうか?以下、考えた試験項目をご教授いただきたいです。
- 単体試験は、条件式処理の正当性検証や限界値分析による処理の正当性検証、同値分割による処理の正当性検証などが行われます。そのため、以下の5つのパターンに関して、試験項目を作成する必要があります。
- 【パターン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 string GetString(string c) { return c + "\n"; } ※上記の5パターンはイメージしながら作成した例です。プログラムに意味はありません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 次の作業として他言語間のコンバート作業が予定されているのですがプログラムの仕様書が残ってないそうなのですがこの場合コンバートした結果を単体試験で確認するには、どうすべきですか? 正攻法としては。 (1)旧プログラムは「仕様通りに作成されていると仮定」して、プログラムを解読して、「仕様書」を作る (1-1)仕様を確認して、期待される処理と一致しているか、等の確認を行う。 (1-2) 上記仕様書を基にテストパターンを作成し、旧プログラムをテストして、仕様書が正しいかどうか確認する (2) (1)で作った仕様書を基に、新言語でプログラムを作成する。 (2-1) 仕様書を基にテストパターンを作成し、新プログラムをテストする。 (2-2)旧プログラムと新プログラムとで、動作に差は無いか確認する
その他の回答 (4)
- wormhole
- ベストアンサー率28% (1626/5665)
>調べた限りでは単体試験は各モジュールごとのIN(引数及び外部変数)とOUT(戻り値及び外部変数)が正しく出ているかを調べる それは試験項目ではなく、単体試験とは何をするものかの説明なだけでは(辞書に「単体試験」という項目があって、その説明みたいな)? 他の人もいわれていますし私も何度も書いていますが、試験項目は関数やモジュールなどの仕様がわからないことには出せません。
- Picosoft
- ベストアンサー率70% (274/391)
少し難しく考えすぎているように感じます。 そもそも「コードを提示して、そのコードにあった試験項目を作る」という考え方が 単体試験の意味からずれています。 「この入力に対してはこの出力を期待する」というパターンのリストを作ればいいだけです。 private void Run() { FormatCheck(); AutoRun(); } ……と、コードだけを提示されても単体テストのテスト項目は作れません。 ・何を意図して作られた関数か? ・システムとして、どういう入力を想定しているか? ・システムとして、どういう処理・出力を期待しているか? という部分がはっきりして初めて単体テストが行えるわけです。
- Tasuke22
- ベストアンサー率33% (1799/5383)
ソフトウェアのテストの技法とか本を入手して、まず多くの知識に目を通した方がいいですよ。 圧倒的な知識不足です。 学生かプロかも提示して欲しいですね。 それに一言単体テストと言いますが、少なくとも3つの方法があるでしょう。 どの方法を取っているのか、質問文の読み手としては気になるところです。 またプログラム的に意味のないものは検討の価値がありません。 この手のものは形から入ろうとしてもダメで、意味から入る必要があります。 なので、テスト対象の具体的な仕様があってこそ、どのテスト項目をどう採用すべきかなどが決まるわけです。
補足
次の作業として他言語間のコンバート作業が予定されているのですがプログラムの仕様書が残ってないそうなのですがこの場合コンバートした結果を単体試験で確認するには、どうすべきですか? ※私はIT企業の研修生です。
- wormhole
- ベストアンサー率28% (1626/5665)
>・全ての条件式処理の正当性検証 > ⇒Aの場合、Bの場合、それ以外の場合などという条件が、 > 仕様通りに処理されるかどうか。 (略) 「仕様通りに」と書かれていますが、その「仕様」はどこですか? 前の回答でも同じような事書いたと思いますけど。 int foo(int a, int b) { return a + b; } という(間違っているかもしれない)コードから本当の仕様がわかりますか? テスト対象となるコードから想定するテスト項目は、そのコードが正しいという仮定の上で作成される事になるので、テスト項目としての意味はありません。
補足
調べた限りでは単体試験は各モジュールごとのIN(引数及び外部変数)とOUT(戻り値及び外部変数)が正しく出ているかを調べる こういう試験ってないのでしょうか? 認識間違ってるのかな
お礼
お礼遅くなりました。 ありがとうございました。