2019-03-15

『この一冊でよくわかる ソフトウェアテストの教科書 品質を決定づけるテスト工程の基本と実践』を読んだ

ソフトウェアのテスト技法などを学んだ.

undefined

ソフトウェアのテスト技法とテストドキュメント,モニタリングについて解説した本.テストについての概念ではなく技法についての実践的な内容になっている.平坦な言葉で説明されているので,ソフトウェアテストについての知識がなくとも十分読める.初学者向け.練習問題付き.

例として挙げられているのは組み込みソフトウェアなので,Web系だとあまり参考にならない部分もありそう.ただ,テストの知識がないと,テストが冗長になったり抜けが起きたりするので,基礎的な部分を身につけるために読むのはあり.

メモ

求められる品質意識

  • Verification and Validation(検証と妥当性確認)

    • Verification 開発仕様書通りにソフトウェアが作成されているかを確認
    • Validation ユーザーの要求が満たされているか確認
  • 品質とユーザー満足度の関係

    狩野モデル(かのうモデル)

テスト工程

  1. テスト計画

    テストの目的を決める.次に,テストする方法(テスト観点)を決める.目的を品質特性に変換することで,テスト観点を抽出できる.

    テスト観点一覧表 機能 * テスト観点の表で,各マスに必要な観点かどうかを真偽値で示す.

  2. テスト設計

  3. テストケース作成

  4. テスト実施

  5. テスト報告

ホワイトボックステスト

主に単体テストで行われる.

制御フローテスト

フローチャートからカバレッジ基準を満たす経路を見つけ,その経路を通るテストをする.

  • ステートメントカバレッジ 全てのノードを通る
  • デシジョンカバレッジ 分岐網羅.全てのエッジを通る
    • 条件式の真偽を少なくとも1回試すのは条件網羅.
  • 複合条件カバレッジ 複合条件網羅.分岐の真偽の組み合わせを全てカバーする

データフローテスト

データや変数が,定義→使用→消滅の順に処理されているか確認する.

メモリリークが起こるようなバグを検出できそう.

テスト技法

  • 同値クラステスト 結果が同じになるテストをまとめる

  • 境界値テスト [tex: C(x) = True, C(x + 1) = Flase] みたいなことを確かめるテスト

  • デシジョンテーブルテスト 全ての条件をどのように満たすか(真偽値,不等号)全列挙し,その結果を示す表.ワイルドカードを使ったり,表を分割したりする.

  • 状態遷移図 オートマトンのあれ.エッジを網羅したりノードを網羅したりする.

  • 状態遷移表 状態 * アクションの表を作り,動作結果を記入する.N/Aで仕様書にはない「できないこと」がわかる

  • 組み合わせテスト

    条件を組み合わせて行うテスト.そのままだと組合せ爆発するので,以下の手法を用いて減らす.

    二因子間網羅 どの要素の組み合わせも[tex: 2]つ以上,テストケースに存在する.

    • All-Pair法 二因子間網羅を満たすテストケースのみ
    • 直交表 二因子網羅+α

テストドキュメント

テスト工程で作られるドキュメントの総称

項目:https://ieeexplore.ieee.org/document/4578383

思ったこと

  • 機能が正しいか調べるのはかなり大変

    そもそもテストは間違っていることは示せるが,正しいことを示せない. テストは単にやればいいだけじゃなくて,何を目的にしていて,それがどのようなテストで達成できるかを考える必要がある.その上,全てのテストケースを全列挙すると爆発するので,上手に減らさないといけない.

  • 厳しい時間的制約のため,テストが十分に行えないところも多そう

  • アジャイルみたいなウォーターフォールではない開発ではどのようなテストを行っているのか?