43

他の人が Stack Overflow でいくつかの種類のテストについて言及しているのを見てきました。

私が覚えているのは、単体テストと統合テストです。特に単体テストについてはよく言及されています。単体テストとは正確には何ですか?統合テストとは何ですか? 他に知っておくべき重要なテスト手法はありますか?

プログラミングは私の職業ではありませんが、いつかはなりたいと思っています。制作に関することなども大歓迎です。

4

9 に答える 9

36

私の頭の上から:

  • 「アプリケーションの分離可能な最小単位をテストする」という意味での単体テストこれは通常、規模に応じてメソッドまたはクラスです。
  • 統合テスト
  • 機能テスト: これはユニットを横断する可能性があり、TDD の焦点です。
  • ブラックボックス テスト: 物事がどのように機能するかを知らずに、パブリック インターフェイスのみをテストします。
  • グラスボックステスト: 物事がどのように機能するかを完全に理解した上で、物事のすべての部分をテストします。
  • 回帰テスト: バグを再現し、後で再発しないようにするために構築されたテストケース。
  • 無意味なテスト: 同じ基本的なケースを複数の方法でテストする、またはテストする必要がないほど些細なことをテストする (自動生成されたゲッターやセッターなど)
于 2009-01-13T03:48:45.273 に答える
26

コードの他の重要なテストに注意する必要がありますか?

これらは、ソフトウェア ライフサイクルのさまざまなフェーズに応じたさまざまな種類のテストの一部です。

  • 単体テスト: この小さなコードは機能しますか?
  • ユニット テスト スイート: 多くのユニット テストのシーケンス (多くの小さなコード用)
  • 統合テスト: 2 つのコンポーネントが組み合わされた (または「統合された」) 場合に連携するかどうかをテストします。
  • システム テスト:すべてのコンポーネントが組み合わされた (または「統合された」) ときに、すべてのコンポーネントが連携して動作するかどうかをテストします。
  • 受け入れテスト: 顧客が支払いを希望するかどうかを決定するために行うこと (システム テストは、ソフトウェアが設計どおりに機能するかどうかを発見します...受け入れテストは、「設計どおり」が顧客が望んでいたものであるかどうかを発見します)

さらにあります:

  • ユーザビリティテスト
  • 性能テスト
  • 負荷テスト
  • ストレステスト

さらに、ソフトウェアのテストは、ソフトウェアの作成とほぼ同じくらい幅広いテーマです。

于 2009-01-13T04:10:39.143 に答える
16

MSDN: 単体テスト

単体テストの主な目的は、アプリケーション内のテスト可能なソフトウェアの最小部分を取り出し、それをコードの残りの部分から分離し、期待どおりに動作するかどうかを判断することです。各ユニットは、モジュールに統合してモジュール間のインターフェースをテストする前に個別にテストされます。単体テストは、その使用中に大部分の欠陥が特定されるという点で、その価値を証明しています。

MSDN: 統合テスト

統合テストは、単体テストの論理的な拡張です。最も単純な形式では、すでにテスト済みの 2 つのユニットがコンポーネントに結合され、それらの間のインターフェースがテストされます。この意味でのコンポーネントは、複数のユニットの統合された集合体を指します。現実的なシナリオでは、多くのユニットがコンポーネントに結合され、それらはさらにプログラムのさらに大きな部分に集約されます。アイデアは、ピースの組み合わせをテストし、最終的にプロセスを拡張して、他のグループのモジュールでモジュールをテストすることです。最終的に、プロセスを構成するすべてのモジュールが一緒にテストされます。さらに、プログラムが複数のプロセスで構成されている場合は、一度にすべてをテストするのではなく、ペアでテストする必要があります。

詳細については、サイトを確認してください。Microsoft 以外の情報源からの情報もたくさんあります。

于 2009-01-13T03:49:28.843 に答える
8

もう 1 つの重要な手法は回帰テストです。この手法では、一連のテスト (回帰スイートと呼ばれる) を維持します。これらは通常、毎晩、およびすべてのチェックインの前に実行されます。バグを修正するたびに、1 つ以上のテストをスイートに追加します。目的は、既に修正された古いバグを再導入するのを防ぐことです。(この問題は驚くほど一般的です!)

プロジェクトが大きくなる前に、早い段階で回帰スイートの蓄積を開始してください。そうしないと、後悔することになります。私は確かに持っています!

于 2009-01-13T06:12:52.267 に答える
3

単体テストとは、アプリケーションの独立した部分をテストするために (願わくば) 小さなコード ブロックを作成するという単純な考え方です。

たとえば、電卓アプリケーションがあり、加算関数が機能することを確認する必要があるとします。これを行うには、加算関数を直接呼び出す別のアプリケーションを作成します。次に、テスト関数が結果を評価して、期待どおりかどうかを確認します。

基本的に、既知の入力で関数を呼び出し、出力が期待どおりであることを確認します。

于 2009-01-13T03:49:47.983 に答える
2

「テストの種類」に関する Google での最初の 2 つの検索結果は包括的に見えます

私が最も関連性があると思うもの。ここ を参照してください

于 2009-01-13T06:13:31.563 に答える
2

これは私が書いたエントリでした: Different Types of Automated Tests .

于 2009-01-13T06:33:37.827 に答える