統合テストは何が含まれており、それらを設定する方法

マイクKNG:

私は現在、ユニットテストと統合テストについて学んだし、私はそれを理解できるように、ユニットテストは、複数のクラスとライブラリの連携を確認するために使用されている特定のクラスと統合テストのロジックをテストするために使用されています。

しかし、それだけで複数のクラスをテストするために使用され、彼らは期待通りに一緒に仕事、またはそれが統合テストにアクセスデータベースへの有効なもである場合には?エラーを両面そうであれば、接続があるため、サーバーをどう確立することができない場合、テストは予想通り、コード自体が仕事だろうが、失敗しないでしょうか?どのように私はテストのこの種で使用するために有効なのですか知っていますか?

私は理解していない第二のものは、それらが設定されている方法です。ユニットテストは次のように、非常に一般的な形式を持っている私には思えます。

public class  classTest {

    @BeforeEach
    public void setUp(){
    }

    @Test
    public void testCase(){
    }
}

しかし、どのように統合テストが書かれていますか?それは、一般的にちょうどより多くのクラスおよび外部要因か、そのために使用されている別の方法があるなど、同じように行われていますか?

ディルク・ハーマン:

[...]は、それが統合テストにもアクセスデータベースへの有効なのですか?[...]どのように私はテストのこの種で使用するために有効なのですか知っていますか?

ユニットテストと統合テストの間の区別は複数のコンポーネントが関与しているかどうかではありません。これらの依存関係は、あなたのユニットテストの目標に達することからあなたを維持していない場合でも、ユニットテストではすべてのあなたの依存関係をからかっずに沿って取得することができます(参照https://stackoverflow.com/a/55583329/5747415)。

どのようなユニットテストや統合テストを区別することで目標のテスト。あなたが書いたように、ユニット・テストであなたの焦点は、関数、メソッドやクラスのロジックにバグを見つけることにあります。統合で目標のテストユニットテスト中に発見することができませんでしたが、統合(サブ)システムで見つけることができるバグを検出するために、明らかに、その後です。常に念頭に置いて、テストの目標を維持することは、より良いテストを作成し、統合テストとユニット・テストの間の不要な重複を避けるのに役立ちます。

統合テストの一つの味は、相互作用のテストである:ここでは、目標は、2つ以上の構成要素間の相互作用のバグを見つけることです。二つの成分の相互作用における典型的な質問は、 - (再び、これは、追加のコンポーネントは、あなたのテストの目標に達することからあなたを保つかどうかに依存して、追加のコンポーネントは嘲笑ない、またはすることができます。)ABあれば可能性があり、例えばBコンポーネントです:図書館でA呼び出しますコンポーネントの右関数はB、構成要素であるBがアクセスする適切な状態でA(その関数を介しBている、まだ初期化されない可能性があります)Aし、正しい順序で引数を渡し引数が予想形式で値が含まれませんB 期待される方法で、期待の形式で結果をお返し?

統合テストのもう一つの味は、サブシステム、コンポーネント間の相互作用に焦点を当てていないテスト、しかし、統合コンポーネントによって形成されたサブシステムの境界を見ています。そして、再び、目標は、前回のテスト(すなわちユニットテストとの相互作用テスト)によって発見することができなかったバグを見つけることです。例えば、正しいバージョンに統合コンポーネントは、所望のユースケースは、集積サブシステム等に行使することができるされています

ユニットテストはの底を形成しながら、テストピラミッドを、統合テストは、統合の異なるレベルに適用された概念であると相互作用ドライバのテストとその対応するハードウェアを行う場合であっても(例えば、ソフトウェア統合戦略と直交インターフェースに集中することができ端末)。

私は理解していない第二のものは、それらが設定されている方法です。[...]どのように統合テストが書かれていますか?

ここでの極端な変動があります。多くの統合テストのためにあなただけのユニット・テストのために使用されるのと同じテストフレームワークを使用することができます。これらのフレームワークでは何もユニットテスト特定があります。あなたは、確かに、テストケースにセットアップが実際に彼らの適切なバージョンへの関心の要素を兼ね備えていることを確認する必要があります。そして、追加の依存関係だけで使用したり、決定する必要性を嘲笑しているかどうか(上記参照)。

もう一つの典型的なシナリオでは、システム・テストのような設定を使用して、完全に統合されたシステムに統合テストを実行することです。完全に統合されたシステムは、ちょうど彼らがすべての組み合わせがあります。これは、多くの場合、単に別の統合テストのために異なる特別なセットアップを作成するために、トラブルを避けるために、利便性のうちに行われます。希望この方法として、すべての統合テストを実行するためにしばしば不可能または少なくとも現実的ではないので、確かに、これは、欠点もあります。この方法をテストし、統合を行う場合や、統合テストとシステムテストの間の境界があいまい取得します。保管はあなたが本当に別のテスト目標の良い理解を持っている必要があり、このような場合の手段に焦点を当てました。

混合形態もありますが、ここではそれらを記述するためにあまりにも多くあります。ほんの一例、の助けを借りて、いくつかの共有ライブラリを模擬する可能性があるLD_PRELOADLD_PRELOADトリックとは何ですか?)。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=233851&siteId=1