結合テスト
メニューを表示するにはスワイプしてください
はじめに
結合テストは広範な概念ですが、この章では結合テストの重要な側面をすべて取り上げます。
結合テストは機能テストに分類されるテスト手法です。結合テストは幅広い概念であり、さまざまな種類があります。
結合テストでは、ソフトウェアの個々のユニットやモジュールを組み合わせてテストし、それらが正しく連携し、相互作用に問題がないことを確認します。
このため、結合テストは通常単体テストの後に実施されます。結合テストの例としては、正しい認証情報を入力した後にユーザーが正しくアカウントにログインできるかどうかを確認することが挙げられます。前のセクションでも同様のテストを多数実施しました。前のセクションで行ったテストのほとんど、あるいはすべてが結合テストに該当します。
チャットアプリケーションでは、ログイン/登録システムが複数のユニットで構成されています。ログインや登録フォーム、入力フィールドやボタンを含むアプリのフロントエンドは独立したモジュールであり、ユーザー情報を保存するデータベースなどのバックエンドは別のモジュールです。これら2つのモジュールが連携してログイン/登録システムを構成しています。
アプリケーションの更新内容
チャットアプリケーションにいくつかの更新が加えられました。更新内容の概要は以下の通りです:
- ユーザーは空のメッセージをチャットに送信できなくなりました。
- チャット履歴がデータベースに保存され、ユーザーに表示されます。
結合テストの種類
この新しいバージョンのアプリケーションでいくつかの結合テストを実施します。ただし、その前に結合テストのさまざまな種類について確認しましょう。
-
ビッグバンテスト: このテストでは、すべてのモジュールを一度に結合してテストします。
-
トップダウンテスト: このテストでは、上位レベルのコンポーネントを先にテストし、その後下位レベルのコンポーネントをテストします。このアプローチは、上位レベルやユーザー側の機能に関するエラーや問題を早期に発見するのに役立ちます。
-
ボトムアップテスト: このテストアプローチでは、ユーザー側の抽象化の背後にある下位レベルのコンポーネントを先にテストし、その後上位レベルのコンポーネントをテストします。下位レベルのコンポーネントはより安定しており、アプリケーションの機能コードに近いため、テストしやすいです。
-
サンドイッチ結合テスト: このアプローチはトップダウンとボトムアップの両方を組み合わせたものです。最上位と最下位のコンポーネントまたはモジュールから同時にテストを開始します。
-
インクリメンタルテスト: このアプローチでは、新しいモジュールが追加されるたびにアプリケーションをテストします。各増分ごとに十分なテストを行い、次に進みます。
どのアプローチを使用するかは、アプリケーションの構造や、特に開発プロセスの進行状況によって決まります。
例えば、すべてのモジュールが同じペースで進行している、または同時に準備ができている場合は、ビッグバンテストが最適です。すべてのモジュールを同時にテストできるからです。
モジュールが下位レベルから開発されている場合は、ボトムアップアプローチが最適です。上位レベルのモジュールが下位レベルより先に完成している場合は、トップダウンアプローチが適しています。モジュールの開発順序が特に決まっていない場合は、インクリメンタルテストが適しています。サンドイッチテストはトップダウンとボトムアップの両方を組み合わせているため、上位レベルと下位レベルの両方から同時に開発が進んでいる場合に適しています。
本アプリケーションでは、上位レベルモジュール(ユーザーインターフェース)と下位レベルモジュール(データベース)が同時に部分的に完成しており、当初計画していた中間レベルのモジュール(API)が欠けています。ただし、UIとデータベースはAPIがなくても動作可能であり、この2つのモジュールは連携してテストできます。したがって、今回最も適した結合テストの形式はサンドイッチ結合テストです。
テストケースを作成する最初のステップは、アプリケーションの要件を特定することです。アプリケーションが特定の方法で開発されている場合、技術的な要件や制約が重要になることがあります。例えば、チャットアプリケーションのデータベースは最大36文字のユーザー名を保存できます。これはコードを見れば分かりますが、テスターがコードにアクセスできない、または知識がない場合もあります。そのような場合、テスターは定義されたプロジェクト要件や制約を利用できます。
登録機能の要件:
- ユーザー名は36文字以内。
- ユーザー名には
! @ # $ % ^ & * ( ) _ - + = { } [ ] : . ? /以外の特殊文字を含めないこと。 - パスワードには
! @ # $ % ^ & * ( ) _ - + = { } [ ] : . ? /以外の特殊文字を含めないこと。 - パスワードは8文字以上であること。
チャット機能の要件:
- チャットメッセージはリアルタイムで他のユーザーに送信されること。
- アプリケーションはチャット履歴を保存すること。
- アプリケーションは保存されたチャット履歴をチャットボックスに表示すること。
- チャットボックスは内容があふれた場合、自動的に最下部までスクロールすること。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください