7

「統合テスト」の概念はわかりにくいと思います。かなりの数の説明と範囲があるようです:

  • 機能/受け入れテスト(例: Selenium を使用したユーザー インターフェイスのテスト)
  • ソフトウェアの異なるクラス/モジュールの統合を一緒にテストする (db 呼び出しなどの特別なことをせずに、2 つ以上のクラスを一緒にテストするだけです)
  • システム構成機能/機能に依存しないテスト(データベース統合が機能し、依存関係が正しく注入され、セキュリティ基本クラスが機能する)
  • システム全体のテスト(データベース、Web サービスなどを使用するサービスの実行)
  • などなど

私は統合テストを包括的な用語として見始めています (プログラミングの話で統合テストを定義するのとは対照的に、具体的/厳密な意味が与えられることがよくあります):

  • 統合テストには以下が含まれます。
    • 単体統合テスト(外部ライブラリを呼び出さずに、同じパッケージ内の異なるクラスの統合をテストします)
    • 機能/受け入れテスト(たとえば、Selenium によるソフトウェアの最終出力のテスト)
    • システム テスト(ウィキペディアの記事に記載されている、より技術的で機能に関連しないさまざまなテストを含む)

Maven のデフォルトのライフサイクルには、「テスト」フェーズと「統合テスト」フェーズのみがあります。これは、テストを大まかに 2 つのカテゴリに分割するように思われ、これらの仮定に沿ったものになります。

一般に、単体テスト、機能テスト、回帰テストなどの違いを探す多くの既存の質問と回答があります。ただし、統合テストに関するより具体的な回答を探しています。統合テストをどのように分類し、その中に何を含めますか? また、私が行ったように、ソフトウェア テストを大まかに 2 つのカテゴリに分割することを避けますか? ユニット テスト (1 ユニット) と統合テスト (2 ユニット以上) です。

4

3 に答える 3

3

コンピューティングは、あなたが話しているプログラマーとはわずかに(そして時にはそれほどわずかではない)異なる意味を持つ過負荷の用語でいっぱいです。統合テストはその1つです。

統合テストは、2つ以上のユニットを接続してテストするという解釈を好む傾向があります。しかし、「ユニット」とは異なる定義がある可能性があるため、これはまだかなりあいまいです。

開発者のチームが、統合テストの1つの真の定義を見つけるよりも、統合テストの意味に同意することがより重要だと思います。

于 2010-07-14T12:46:59.400 に答える
3

私のチームは(あなたの言葉を使って)統合テストをカバーしていると見ています

  • ソフトウェアの異なるクラス/モジュールの統合を一緒にテストする(db呼び出しなどの特別なことを行わずに、2つ以上のクラスを一緒にテストするだけです)
  • システム構成機能/機能に依存しないテスト(データベース統合が機能し、依存関係が正しく挿入され、セキュリティ基本クラスが機能します)

何もありません。システムテストと受け入れテストは、異なるファミリと見なされます。

テストについて話すとき、私たち全員が同じ言語を話していることを確認するために、これについていくつかの長い議論がありました。

私はあなたが統合テストとして定義するものに強く反対しているわけではありませんが、あなたが一緒に働いているすべての人々が分類に同意するのはいいことだと言っているだけです。

于 2010-07-14T15:51:05.637 に答える
2

ユニット テストがあります。正確な定義はさまざまですが、JUnit のようなツールで定義され、ソース コードと同じ方法で編成されたすべてのテストが確実に含まれています。任意のソース コード ファイルに対して 1 つのテストしか見つからない場合、見つかったのは単体テストです。

そして、システム テストがあります。これは、完全なシステムを可能な限り顧客が確認できるようにテストします。

これら 2 つの間のギャップに存在するすべてのテストは、統合テストです。ソース コードと同形でもなく、エンド ユーザー エクスペリエンスの代表でもありません。

これは、実際には大きく異なる 2 つのカテゴリ間のかなり大きなギャップです。そのギャップには、潜在的に役立つ多くのテストが含まれる可能性がありますが、それらのテストの性質は当然、かなり劇的に異なります。

于 2010-07-27T07:15:07.160 に答える