こんにちは、 @kz_morita です。
日頃,アプリケーションを開発していると必ず行うのが,ソフトウェアのテストですがよくよく考えると体系的な手法などは知らずに行っていました. 現在参加しているプロジェクトで,ちょうどテストを行うフェーズに入ったということもあり,体系的に学ぶために以下の本を読んでみました.
【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践目次
PART 1 ソフトウェアの基礎
- 第 1 章: ソフトウェアテストとは
- 第 2 章: ソフトウェア開発の流れとテスト工程
- 第 3 章: ホワイトボックステスト
- 第 4 章: ブラックボックステスト
PART 2 さまざまなテスト技法
- 第 5 章: 同値クラステスト・境界値テスト
- 第 6 章: デシジョンテーブルテスト
- 第 7 章: 状態遷移テスト
- 第 8 章: 組み合わせテスト
- 第 9 章: テスト技法適用チャート
PART 3 テストドキュメントとモニタリング
- 第 10 章: テストドキュメントの作成
- 第 11 章: テストドキュメントの正しい書き方
- 第 12 章: テスト実施のモニタリング
感想とか
この本は,PART 1 にてテストの全体像や開発工程の説明がされ,PART 2 で実際のテスト技法について,PART 3 でテストドキュメントについて書かれていました.
個人的に面白かったのが,テストの考え方や,テストドキュメントの書き方についてです.テストケースなどは今までは自分が思いつく限り細かく漏れがないようにケースを出していくというある意味気合に頼った手法でケースを作成していましたが,この本では漏れがないようにどのように組み合わせを定義するかや,テスト工数を削減するためにどのような手段があるかなどが書かれていたことです.
いままでは,とにかく漏れがないように細部までケースを上げるというのが普通と思ってましたが,どのケースをテストすれば全パターン網羅できるといったことをしっかり考えることによる不要な工数の削減についての考え方などを学べたのはよかったです.
具体的には,因子間の組み合わせの話が面白かったです.
因子というのは,対象のソフトウェアの機能名や設定項目のことで,本書の例をお借りすると,炊飯器のソフトウェアの例で,お米の硬さ
や, 炊飯時間
といった項目のことです.
この因子に対して,お米の硬さであれば,やわらかめ
, 普通
, 硬め
などの項目があり,この項目を 水準
と呼びます.
このような 因子
は通常複数存在します.(炊飯器であれば, ご飯の硬さ
, 炊飯時間 (早炊きなど)
, ご飯の種類 (白米 or 玄米)
など)
仮にソフトウェアに5つの因子があった時に,5つ因子のの各水準の組み合わせを考えると膨大な数になります. (因子が5つで各因子の水準がすべて3つだった場合には,3 ^ 5 = 243 通り)
この本では 2因子間網羅
という考え方が紹介されていました.
2因子間網羅はその名の通り,各2つの因子の組においてすべての水準を網羅できるようにするような方法です.
もちろん すべての因子の間で網羅したテストケースのほうが,バグが見つかりやすいですが,多くのバグが 2因子間で見つかるという調査結果から,このような工数削減方法が紹介されていました.テストでバグを完全になくすというよりは,いかに効率よくバグを見つけるかという思考が重要そうです.(もちろん扱うソフトウェアの種類によって変わるとは思いますが)
他にも,テストケース計画書の書き方や,テストケースの書き方などにも触れられているのはとてもありがたかったです.自分のプロジェクトのテストケースなどを見直す良い機会になりました.
一点,本書ではウォーターフォール型の開発手法の場合を想定して書かれているものだと思うので注意が必要だと思います.
ただ,本書はテストの全体像から具体的なドキュメントの書き方まで記載されていましたので,ウォーターフォール型ではない開発手法においても役に立つエッセンスがたくさん得られました.
この書籍で得た知見を,現在のプロジェクトにあった形でカスタマイズして取り入れていくことが重要なので,取り組んで行きたいと思います.