テスト技法 - ntuf/Tips GitHub Wiki

テスト技法
テスト手法

全てをテストすることができないので
効果的なテストを絞って行うための手法
いわば、どう手抜きするかの手法

・ブラックボックステスト(ホワイトボックスでも使うことはある)
 ・同値クラステスト: 
   20未満でtrueを返す関数は
   10と30だけをテストする
   他は意味がないのでやらない。
 ・境界値テスト:
   同値分析(同値クラス分析)で境界を見つける。
   境界にプログラムの欠陥が多い
   パスワードの文字列は4文字以上15文字以下である場合
   3と4、15と16をテストする
 ・デシジョンテーブルテスト
   条件と結果の組み合わせのマトリクスを作って網羅的にテストする
    ・条件が複雑に乗算的に組み合わせが生じるのでテーブルを分ける
    ・結果に影響しない条件は条件から外す
 ・ペア構成テスト
   実験計画法の直交表をつくって実施する。詳しくは直交表を調べる。
   7項目が2値持つ場合は、7^2=128パターンのテストとなるが、
   L8(2^7)という直交表ではたった8通りで良い。
   この方法で75〜98%のバグが網羅できる。らしい。
 ・状態遷移テスト
   状態遷移図を使って、状態とイベントのマトリクスで網羅的にテストする。
   テスト実施手法というより、仕様バグに気づくことができる。
 ・ドメイン分析テスト
   同値クラス、境界値テストは、1つの変数を対象にした。
   変数間の相互作用のバグを見つけ出す。
   マトリクスを作る。
 ・ユースケーステスト
   ユーザーがシステムを使用する一連の流れ(ユースケース)を実施してテストする
   重要だが、手抜きの手法ではないような?

・ホワイトボックステスト(ホワイトボックスのみで使う手法)
 ・制御フローテスト
   条件分岐のすべてのパターンではなく、
   処理経路を少なくとも1度は実行できるようなパターンでのテスト
   
 ・データフローテスト
   データの流れデータフローに沿って値が入っているか、きちんと値が消滅しているかをテストする。
   →でも、変数で言えば、一つの目的ごとに宣言して使いまわさず消滅させるのがいいはず。
    データクラスをテストするなら意味があるかも
    
・スクリプト
 ・テスト計画書
 ・テスト設計仕様書
 ・テスト手順書
 ・テスト項目移管レポート
 ・テストログ
 ・テスト不具合レポート
 ・テストサマリーレポート
 
・テスト自動化と テスト手法
 ・自動化する場合はもっと網羅的に全てテストできる場合もあるので
  テスト手法を考える必要がないこともあるかも

・テスト分析ツールと テスト手法
 ・カバレッジ分析など
  swift Xocodeのスキームの設定でカバレッジ分析ができる。

 
■テストの網羅性
要求・仕様ベースのテスト:変更したことができているか当然やるテスト
性能テスト:リクエストに対する応答速度や処理できるデータ量など一定水準の性能か
負荷テスト:大量のデータを処理させる、同時に大量のリクエストを送る、といったテスト
ロングランテスト:長時間にわたりソフトウェアを連続稼働させたときの振る舞いを確認するテスト
ユーザビリティテスト:操作性、視認性を確認
回帰テスト、リグレッションテスト:既存機能に影響が生じていないか

⚠️ **GitHub.com Fallback** ⚠️