家studyをつづって

IT技術やセキュリティで勉強したことをつづっています。

テストの種類とテスト技法

ソフトウェアテストに関する言葉を整理しました。

 

 

 

Vモデル

f:id:iestudy:20191204235734p:plain

V字モデル

V字の左半分は、ウォーターフォールに沿った開発工程を上流工程から順番に右下がりに並べています。
V字の右半分は、左の開発工程に対応したテスト工程が並んでおり、それぞれの工程で行うテストを確認できます。

 

単体テスト
単体テストは、クラスや関数等、プログラム単位でのテストです。

  • 機能確認テスト
    1つのモジュールが設計書や仕様書通りに動作することを確認するテスト
  • 制御フローテスト
    プログラム構造に沿って、命令や分岐が実行されるかを確認するテスト
  • データフローテスト
    データや変数が定義されたから消滅するまでを確認するテスト

※モジュール内で使用されるデータや変数は、「定義→使用→消滅」というライフサイクルがあり、これをデータフローと呼びます。

 

結合テスト
結合テストは、単体テストで検証したプログラムを組みわせて行うテストです。

  • 状態遷移テスト
    状態遷移図や状態遷移表に基づいて動作を確認するテスト

 

システムテスト
システムテストは、個々のプログラムや機能を結合したプログラムが仕様通りに動くかを検証するためのテストです。

  • 回帰テスト
    修正・変更した後に、変更箇所が正しく動くか、過去のバグが再び作りこまれていないかを確認するテスト
    また、修正・変更を行ったことで新たな不具合が生まれていないかを確認するテスト
  • セキュリティテスト
    脆弱性が存在しないかを確認するためのテスト
  • ユーザビリティテスト
    操作性、見やすさといったユーザーに対しての使いやすさを確認するテスト
  • 障害許容性テスト
    障害が発生した場合に指定された機能が維持されていることを確認するテスト
  • 性能テスト
    処理能力が仕様を満たしているか確認するテスト
  • 負荷テスト
    高い負荷をかけた状況下での動作を確認するテスト

受け入れテスト
対象のシステムがユーザーの要求を満たしているのかを確認するテストです。

  • 運用テスト
    実際の操作環境下でシステムが正しく動くかを確認するテスト
  • アルファテスト
    開発者以外の人が操作して、不具合がないことを確認するテスト
  • ベータテスト
    発売・リリース前の製品を開発者以外の一般ユーザーが操作して、不具合がないことを確認するテスト

 

 代表的なテスト技法

技法名 概要
同値分割法 入出力の関係性に基づいて、入力の条件をグループにまとめる
境界値分析 数値の境界を識別し、境界に対するテストケースを作成する
デシジョンテーブルテスト 条件の組み合わせの相互作用をデシジョンテーブルで整理し、それを網羅するテストケースを作る
原因結果グラフ法 仕様の論理構造を原因結果グラフで整理し、それを網羅するテストケースを作る
状態遷移テスト 状態遷移を状態遷移図・表で整理し、それを網羅するテストケースを作る
直交表 直交表を使って、2つのパラメータ間の組み合わせを全網羅するテストケースを作成する
オールペア法 ツールを使って、2つのパラメータ間の組み合わせを全網羅するテストケースを作成する
nワイズテスト ツールを使って、任意のn個のパラメータ間の組み合わせを全網羅するテストケースを作成する
ドメイン分析 関係性のある複数の入力変数を同時にテストする場合で、それぞれの入力変数の条件判定を網羅するテストケースを作成する
クラシフィケーションツリー法 入力条件をクラシフィケーションツリーで整理し、それを網羅するテストケースを作成する
ユースケーステスト 仕様をユースケースで整理し、それを網羅するテストケースを作成する
制御フローテスト 処理の流れを制御フローで整理し、それを網羅するテストケースを作成する。条件テスト、判定条件テストなどはこの技法に含まれる
データフローテスト データの状態をデーターフローで整理し、それを網羅するテストケースを作成する
エラー推測 エラーを推測し、その存在を確認するテストを行う
チェックリストベースドテスト テストの目的に沿ってチェックリストを作成し、そのチェック項目ごとにテストを行う
探索的テスト テストを実施して得られたフィードバックを活かしながら、テストの作成・実施を一緒に進める

 

参考にさせていただいたサイト

thinkit.co.jp

https://seminar-materials.iijlab.net/iijlab-seminar/iijlab-seminar-20180829.pdf