徒然なるままに

学習メモがメインです

ソフトウェアテストの教科書を読んだ感想

テストの学習をするために以下の本を読んだので、その感想を記載します。
【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践

この本を読んだ理由

筆者のレベル感としては、単体テスト結合テストは感覚で設計することは作成することができます。システムテストも大体は設計することはでき、なんとなくテスト工程を把握/できている状態です。 そして、なんとなくテストが好きではないと思っています。ふわふわしている知識で「好きではない」と思うことに違和感を覚え、そもそも好きになろうするための学習もしてなかったので、テストを学習してみようと思った次第です。(あわよくばテストが楽しいと思えるようになりたい)

テストについて学べる本を探していたところ、評判が良さそうであることと体系的にテストを学べそうだと思いこの本を読んでみました。 読む上ではこの本が2012年発売なので情報が古い可能性があることは少し注意して読みすすめました。

学んだ内容(ざっくりと)

テスト技法

同値クラステスト

同じ動作をする条件ごとにテストを行うテスト技法。
例)パスワードの文字数が4文字以上15文字以下の場合、4~15文字が有効同値クラス、3文字以下16文字以上が無効同値クラス

境界値テスト

以上以下未満超過等、仕様の曖昧さ、等号不等号の記述ミスなどに対応するため、仕様の条件の境界となる値とその隣の値に対するテスト技法。
以下の値でテストする。

デシジョンテーブルテスト

デシジョンテーブル(決定表)→複数の条件によって決定されるソフトウェアの動作を一覧するための表。これを使ってテストをしたものがデシジョンテーブルテスト。
複雑な仕様を整理できることができる。

組み合わせテスト

主に機能確認テストや環境テストで使用できる、複数の条件を組み合わせて動作確認するテスト。この本ではテストする組み合わせの数を減らした上でテストする方法としている。 組み合わせテストを行う上で重要な考え方が2因子間網羅。

2因子間網羅とは

前提知識として、因子とはテスト対象の機能名や設定項目であり、水準とは因子が持つ選択肢や設定値のこと。

2因子間網羅は2つの因子間の組み合わせをすべて網羅する考え方。D.Richard Kuhn氏の論文によると、多くの欠陥は2因子間で見つかるため。 やり方としては直交表やAll-Pairs法がある。因子すべての組み合わせよりも大幅にテストケースが減ることがメリット。

デシジョンテーブルと組み合わせテストの違いに関する筆者の理解

どちらも複数条件を確認するもので、どちらを使えば良いのだろう...と少し悩みました。大まかにですが、下記表のような違いがあるものだと認識しています。

デシジョンテーブルテスト 組み合わせテスト
すべての複数条件を網羅して一覧化してテストを行う テストケースを減らして効率的にテストを実施できる
仕様を明確化できる副次的効果がある 仕様を明確化できる効果はない

テスト技法以外で学んだこと

  • すべての値をテストすることは当然できないので、効率的に行うことが必要。
  • テスト工数と欠陥を見逃すリスクはトレードオフ
  • テスト観点を抽出する際、テストの目的を品質特性に変換し、品質特性に対応したテスト観点を抽出する。

  • 満足と品質の関係を示したのが狩野モデル

品質要素 充足 不充足
当たり前品質 当たり前 不満
一元的品質 満足 不満
魅力的品質 満足 仕方がない
  • テスト設計とテストケース設計の違い
    • テスト設計->機能に対してテスト観点の割当、テスト技法の検討と適用
    • テストケース設計->期待結果、判定欄を記入するドキュメントを作成する

わからないこと

テスト計画書に、予想不具合とあるがどうやって算出するのだろうか。(勘?)

感想

記載すべてを実PJへの適用することはハードルが高そう

テストに関するドキュメントが多すぎること、そして開発する上でのドキュメントもかなり揃ってなければならないので、ウォーターフォール型かつ予算がある大規模PJでのテスト工程が進む前提でないと難しい印象を受けました。

筆者が考えるソフトウェアテスト

本書では、 「ソフトウェアテストとは、欠陥を取り除いて、ユーザーの要求を満たす、品質の良いソフトウェアを作ること 」と定義されています。 ですが、筆者はソフトウェアテストは「欠陥を取り除くために品質を検査するもの」であると考えています。テストは品質を測るものであって、欠陥そのものを取り除くことはできない認識です。欠陥を取り除く事ができるのはあくまでPGソースであるはず。その上で、理想は狩野モデル魅力的品質を提供できるようなるための支援をテストを通して実現していきたいです。

正しいテストの知識を得ることができ面白かった

なんとなくテスト設計/実施を行ってき他部分があったので、同値クラスや境界値クラスといった単語/方法を正しい意味を理解できていませんでした。今回この本を読んだことで正しい進め方、正しい意味を理解できた部分が良かったです。また、組み合わせテストでPictmasterを使用したAll-Pairs法と直交表を知ることができたのが非常に良かったです。

終わりに

テストについて学ぶきっかけとして体系的に学べる事ができたのは良かったです。テストのやり方にとっても様々な方法、考え方がありとても奥深いんだなと言うことをしれてよかったです。

最後まで読んでいただいてありがとうございました。