テストケースの設計方法

これはあなたのほとんどのための非常に素朴な質問かもしれませんが、私はそれで混乱しています。

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

0

3 答え

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

2
追加された
@Bilalあなたは手でそれを解決することができます、それはちょっと時間がかかります。しかし、他にどのようにそれを行うつもりですか?テストケースを作成しているときは、プログラムと同じステップを踏んで、すべての代入ステートメントの新しい値を書き込んで、期待どおりのものであることを確認する必要があります。
追加された 著者 Nick Rolando,
プログラムでアルゴリズムが実装されている場合、私たちはかなりあなたに従いませんでした。私たちのテストケースは、プログラムがアルゴリズムを正しく実装したことをどのように検証しますか?これは非常に基本的な質問と思われるかもしれませんが、私はテストには新しいです。
追加された 著者 comatose,
例えば、私は現在、ナップザック問題のような問題に取り組んでいます。私が実装したこのプログラムのテストケースを書く場合、どうすればいいですか?小さな入力(私は鉛筆/紙でそれを解決することができるところ)のいくつかのケースを書くことができますが、大きな入力のプログラムをチェックしたい場合、私はそれを手で解決できません。
追加された 著者 comatose,
私はあまりにも他の選択肢を考えることができませんでしたが、おそらくいくつかの "魔法の"方法があったと思っていた、とにかく、私は今、それを得る
追加された 著者 comatose,

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

テストとは、テスト中のシステムをブラックボックスとして扱う活動です。あなたがシステムに尋ねるもの(あなたの場合:計算)は、基本的にはこれです:これらの値をメソッドに渡すと、この値を返すようにします

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

1
追加された

あなたの質問は、「オラクル」問題と呼ばれるソフトウェアテストで最も難しい問題になります。

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

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

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

This page gives a summary of the book and links to Amazon http://www.robertvbinder.com/home/thought-leadership/books/

ボブ

1
追加された