0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

テストにおける種類と考え方

Last updated at Posted at 2022-03-12

テストとは?

要件や仕様書の内容と、同じ処理がされているかを確認する。
仕様から漏れたプログラムのミスを見つけることが目的である。

ソフトウェアは常に変更されていくので、テスト当時にはバグが見つからなくても、後の変更されたタイミングで見つかる可能性がある。
つまり常にテストすることが大切。

テスト設計

テストをするときには、テスト設計を行う。

  • 何のためにテストをするのか
  • 何をテストするのか
  • どういったテストをするのか
  • どんな値を入れるのか
  • 欲しい値が取れるか
    • 欲しい値とは何か
  • どのような期待結果を求めるのか

などを踏まえた上でテスト仕様書を作成する。

テストの種類

大きく分けて4種類のテストがある。

  • 単体テスト
  • 結合テスト
  • 総合(システム)テスト
  • 受入テスト

単体テスト

ざっくり言うと、作成したプログラムに対してのテスト。
クラス、メソッド、処理など作成したプログラム

結合テスト

プログラムがまとまり「機能」が作られる。
この機能を確認するテストのこと。
さらに機能と機能の連結確認のテストも行う。

例:ログインした状態で、YouTubeのトップ画面を表示させると、ユーザごとのおすすめ一覧が表示される

総合(システム)テスト

機能がまとまり「システム」としての動作確認のこと。
リリースできるか判断するテストに相当する。

  • 性能確認
    • アクセスして画面に何秒で表示されるのか
    • 登録処理が何秒で終わるのか など
  • 負荷確認
    • 1秒間に1000回などのリクエストを送ったときに、アプリが落ちずに処理できているのか など
  • セキュリティ
    • 社内のセキュリティ専門チームが対応することが多い
  • ユーザが使いやすいのか(UX)

受入テスト

納品されたシステムをユーザが確認するテストのこと。
機能要件、使い勝手、運用などを確認する。

ホワイトボックステスト

システムの機能や内容を把握している状態でのテストのこと。

カバレッジ(網羅率)

プログラムに対して、どこまでテストが実施され網羅されたのか割合を示す。

  • 命令網羅
  • 分岐網羅
  • 条件網羅

仮にこのようなプログラムがあった場合の各網羅を記載する。

Coverageクラス
public class Coverage {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // 標準入力

		System.out.println("Movie or Game");
		System.out.println("↓ 入力待ち");
		String str = scan.nextLine(); // 1行分の入力を取得する
		System.out.println(str + " を選択");

		System.out.println("**********");
		System.out.println("所持金は?");
		System.out.println("↓ 入力待ち");
		int money = scan.nextInt(); // 数値の入力を取得する
		System.out.println("所持金は " + money);

		System.out.println("**********");
		System.out.println("今日は");

		if (str.equals("Movie")) {
			if (money >= 1900) {
				System.out.println("映画を見る");
			} else {
				System.out.println("ゲームする");
			}
		} else if (str.equals("Game")) {
			System.out.println("ゲームする");
		} else {
			System.out.println("入力ミスです");
		}
	}
}
条件
「Movie」を選択かつ、「所持金が1900円以上」
→ 「映画を見る」 が表示される

「Movie」を選択かつ、「所持金が1900円より少ない」
→ 「ゲームする」 が表示される

「Game」を選択かつ、「所持金が1900円以上」
→ 「ゲームする」 が表示される

「Game」を選択かつ、「所持金が1900円より少ない」
→ 「ゲームする」 が表示される
分岐
「Movie」を選択かつ、「所持金が1900円以上」
  |
  |---No 「ゲームする」
  |
  Yes 「映画を見る」

命令網羅

プログラムが実行できているかを確認する。
例の場合、「Movie」を選択し、「所持金が1900円以上」なら「映画を見る」が表示されることを検証する。
全てが網羅できるわけではない。

分岐網羅

YesもしくはNoの分岐処理が実行されたかを確認する。
分岐を網羅しているだけなので、「Game」を選択かつ、「所持金が1900円以上」など条件は、抜けている可能性がある。

条件網羅

各分岐の各条件を全て網羅して、実行されたかを確認する。
ただしテストケースが膨大になる可能性がある。

ブラックボックステスト

要件や機能が実行できるかを確認するためのテストのこと。
プログラムの内容を見ずに、要件や仕様が実現されているかを確認する。

同値分割

入力した内容と出力された結果の組み合わせを確認する。

3つの入力フォームに、「1」「1」「1」と入力
→ 結果:「正三角形」と表示される

3つの入力フォームに、「2」「2」「1」と入力
→ 結果:「二等辺三角形」と表示される

境界値分析

値を入力するときに、「有効な値」と「無効な値」の境界でテストすること。

入力フォームに、「0〜100」の値が入力されると、「OK!」と表示させる機能がある

この場合「-1」「0」「1」「2」「98」「99」「100」「101」の値でテストすることで、全ての値で確認することなく、効率的に検証することができる。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?