はじめに
単体テスト,結合テスト,結合テストについての学習をまとめて備忘録として投稿させていただきました。内容は初心者向けの基本的な手順や違いの説明になります
単体テスト,結合テスト,総合テストの違い
単体テスト:機能単体のテストを実施すること
結合テスト:機能同士を組み合わせたテストを実施すること
総合テスト:システム全体のテストを実施すること
単体テストとは
プログラムの最小単位である、メソッド単位で行われるテストです。場合によってはクラス全体を対象とすることもあります。
単体テストの目的
単体テストでは単体のメソッド(関数)が期待通りの結果を返すかどうかを確認します。これにより、そのメソッドが正しく機能することを確認します。しかし、そのメソッドが複数の他のメソッドやクラスと連携して機能する場合は、それらの相互作用もテストする必要があります。
単体テストとは、基本的にメソッド単位から始まりますが、そのメソッドが属するクラスや他の関連するメソ度との連携も考慮されます
単体テストの例
以下の計算するメソッドがあります
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
Javaの場合、テスティン部フレームワークのJunitでメソッドの結果が期待通りに機能するかを検証することができます。
以下のassertEqualsメソッドは期待される値と実際の値が等しいかどうか検証できます
assertEquals(期待される値, 実際の結果);
@Test
public void testAddition(){
// Calculatorクラスのインスタンスを生成する
Calculator calculator = new Calculator();
// addメソッドに引数として3と4を与えて計算を行う
int result = calculator.add(3, 4);
// 計算結果が7と等しいか検証する
assertEquals(7, result);
}
結合テストとは
ソフトウェアのクラスやメソッドなどを組み合わせて、うまく動作するかを確かめるテストです。単体テストで個別にメソッドやクラスが動作することが確認できたとしても、組み合わせた場合にエラーが発生しないかを確認するために実施します。
具体的にはそれぞれのメソッドやクラスからによるデータの受け渡しが正常に行われるか、データの受け渡しタイミングは適切かどうかなどを検証します
結合テストの例
例としてオンラインストアのシステムをテストを想定した場合、以下のようなテストが実施されます
-
商品検索機能のテスト
ユーザーが特定のキーワードで商品を検索し、正しい商品を返されることを確認します -
カートへの追加機能のテスト
選択した商品をカートに追加すると、カート内に正しく商品が追加されることを確認します -
支払いページへの遷移テスト
カートに商品が追加されている状態から、支払いページに正しく遷移することを確認します -
支払い情報の入力テスト
支払い情報を入力し、正しいフォーマットで受け入れられることを確認します -
支払いの完了テスト
支払いを完了させ、注文が正常に確定されているかを確認します
このように結合テストではテストシナリオを作成することが一般的です。
テストシナリオとは
システムのさまざまな部分を連携させて、システム全体の動作をテストするための計画や手順を示したものです
## 総合テストとは
ソフトウェア全体を完成させてから行われるテストです。それぞれの部品や機能(メソッドやクラスなど)が単体テストと結合テストで個別にテストされた後、最後にそれらを組み合わせて、全体として正しく動作するかを確認するテストです。
つまり、総合テストは、単体テストや結合テストの後に行われ、ソフトウェア全体が要求通りに機能するかを最終的に確認する重要なテストになります。