プログラミングにおけるテストについて

概要

プログラミングにおいて、テストはソフトウェアの品質を確保し、バグを見つけて修正するための重要な活動である。

テストはソフトウェア開発のライフサイクル全体にわたって実施され、以下のような存在意義と役割を果たす。

ウォータフォールモデルにおいて下流工程に位置する。

内容

バグの発見と修正

テストはソフトウェア内のバグやエラーを見つける手段だ。テストを通じてバグが見つかれば、それを修正してソフトウェアの品質を向上させることができる。

品質保証テスト

品質保証テストは、ソフトウェアが正しく動作し、要件を満たしていることを確認する手段だ。品質保証を通じて、ユーザーエクスペリエンスを向上させ、高品質なソフトウェアを提供できる。

変更の検証

ソフトウェアに変更が加えられた際、テストを実行して変更が正しく行われたことを確認できる。これにより、新しい機能の追加や既存の機能の修正が正しく行われていることを確認する。

リグレッションテスト

ソフトウェアに変更が加えられた場合、新たなバグが導入されないよう、既存の機能にもテストを実行する。これをリグレッションテストと呼び、ソフトウェアの安定性を維持する。

ドキュメンテーション

テストはソフトウェアの動作や機能に関するドキュメントとしても役割を果たす。テストケースやテストスクリプトを通じて、ソフトウェアの振る舞いが明確に記録される。

デバッグ支援

テストを通じてバグが発見された場合、そのバグの特定や修正に役立つ。テストケースの実行結果やエラーメッセージを通じて、バグの原因を特定しやすくなる。

プロセス改善

テスト結果を分析することで、ソフトウェア開発プロセスの改善点を特定できる。繰り返しテストを行うことで、品質管理やプロジェクト管理の向上に寄与する。

総じて、テストはソフトウェア開発プロセスの不可欠な一部であり、ソフトウェアの品質向上やバグの早期発見に重要な役割を果たしている。適切なテスト戦略を採用することで、安定性の高い、信頼性のあるソフトウェアを開発することができる。

種類

ホワイトボックステスト

このテスト方法はモジュールの内部構造に着目して実施するテストである。

  • 命令網羅
    • 全命令を実行
  • 判定条件網羅
    • 全経路を実行
  • 複数条件網羅
    • x, yの組み合わせ(4つ)すべてを網羅

ブラックボックステスト

このテスト方法はモジュールの入力と出力に着目して実施するテストである。
例えば以下の例
モジュールの仕様がの場合。

以下のように数値を分割する。

もし同値分析なら{7, 21, 39}
もし限界値分析なら{9,10,30,31}
をテストする。

結合テスト

増加テスト

トップダウンテスト

最上位のモジュールから下位モジュールへと結合していくテストである。

ここで下位モジュールに見せかけたものをスタブという。

ボトムアップテスト

最下位のモジュールから上位モジュールへと結合していくテストである。

ここで上位モジュールに見せかけたものをドライバという。

折衷テスト

モジュールの上位と下位でテスト手法を分けるものである。

非増加テスト

ビックバンテスト

各モジュールを作成し終わってから、個別に単体テストするもの。

参考

Flutterのテスト
Pythonのテスト