2011-10-27 5 views
0

これはほとんどの人にとってはとても素朴な質問かもしれませんが、私はそれで混乱しています。テストケースの設計方法

いくつかのプログラムのテストケースを設計する必要がある場合、期待値/結果がどのようになっているかはどのようにわかりますか?プログラムはいくつかの複雑な計算を行い、複雑なアルゴリズムを使用して最終的な出力を計算しますが、これは他の手段で計算することはできません。たとえ同じ入力を別の手段で計算してからその平均値を期待値として使用して元のプログラムをテストしても、別のプログラム/プログラムから計算された期待値が、プログラムがまたテストされなければならないことを確かめるために、正しいものだったので、我々は正方形に戻っています。

答えて

1

あなたの質問は本当に意味をなさない。

テストは、テスト対象システムをブラックボックスとして処理するアクティビティです。 これらの値を使ってメソッドを入力すると、この値が返されます。

操作の結果を前もって知る以外の方法はありません。いくつかのケースでは多くの作業があるかもしれませんが、他はすべて論理的に一貫性がなく、テストの作成者がテストフレームワークを使用する方法を知っているという事実のみをテストします...

2

計算が複雑すぎて計算機で紙の上に計算できない場合は、どのようにプログラムすることもできますか?計算を小さなステップで実行しなければならない場合でも、いくつかの異なるテストケースを紙に書いて、その計算ステップをプログラムでテストして、その方法を試すことができます。コンピュータは人間が何をするかを指示するだけです。

+0

I didntのかなりのプログラムは、アルゴリズムを実装する場合、あなたは、どのように行う我々のテストケースは、プログラムが実施していることを確認し従ってくださいアルゴリズムは正しくですか?これは非常に基本的な質問と思われるかもしれませんが、私はテストには新しいです。 – comatose

+0

たとえば、ナップザック問題のような問題に取り組んでいます。今実装しているこのプログラムのテストケースを書きたい場合、どうすればいいですか?小さな入力(私は鉛筆/紙でそれを解決することができるところ)のいくつかのケースを書くことができますが、大きな入力のプログラムをチェックしたい場合、私はそれを手で解決できません。 – comatose

+0

@Bilalあなたは*手でそれを解決することができます、それはちょっと時間がかかります。しかし、他にどのようにそれを行うつもりですか?テストケースを作成しているときは、プログラムと同じステップを踏んで、すべての代入ステートメントの新しい値を書き込んで、期待どおりのものであることを確認する必要があります。 –

1

あなたの質問は最も難しくなります"オラクル"問題として知られるソフトウェアテストの問題。

テストをサポートするには、テスト入力の信頼できる結果を得ることができます。ほとんどのテストシナリオでは、これは本質的に、テスト対象システムの完全なバグのない実装と同等であることを意味します。もちろん、もしそれがあれば、おそらくSUTの開発とそのテストをスキップすることができます。

しかし、通常はそうではありません。したがって、テストケースの期待される結果を生成するための多くの実用的な(そしていくつかのエキゾチックな)戦略があります。これは、スプレッドシートを使用して関数を計算したり、結果を知っているいくつかのクエリを選んだり、既存の同等または類似のシステムの出力をテスト中のシステムの出力と比較したりするのと同じくらい簡単です。

私の本の第18章オブジェクト指向システムのテストは、oraclesのための16のテストデザインパターンを提供しています。そのほとんどは自動化が可能です。

このページでは、Amazon http://www.robertvbinder.com/home/thought-leadership/books/

ボブへの本の要約とリンクを提供します