デシジョンテーブルテストについてちゃんと勉強してみた
書いている人の経歴
こんにちは。SHIFTのDevOps推進部のアジャイル開発2Gに所属している野口 真人です。2019年9月にSJHIFTに入社しまして、最初の1年ほどはAPIテストの自動化をしていました。
その後、半年ほどは手動テストの設計~実装~実行~完了作業をおこない、ここ1年ほどはテスト管理作業をメインでおこなっています。 SHIFTに入社するまでは15年ほどシステム開発をしていました。ただし、ソフトウェアテストについて学んだことはなく、経験と勘で単体テスト、結合テスト、システムテストなどを実施していました。
きっかけ
JSTQBのテストアナリストを受験するにあたり、テスト技法を学んだため、せっかくなら学んだことをアウトプットしようと思ってブログを書いてみます。
読んで欲しい人
私と同じようなキャリアの人に読んでいただきたいです。
ソフトウェア開発の経験はあるが、ソフトウェアテストの勉強をきちんとやったことがなく、これから勉強したいと思っている方に読んでいただけると参考になると思います。
デシジョンテーブルテストとは何か
デシジョンテーブルは「条件のセット」と「関連するアクション」を表形式にし、条件値に対するアクションのルールを表したものです。このデシジョンテーブルを用いることで、対象ソフトウェアのルールをカバーするテスト設計が可能になります。
文章だけだとわかりづらいのて、スポーツジムのシステムを例にして考えます。このスポーツジムは会員種別や会員の属性で、月会費と利用可能日時が決定されます。この組み合わせをテストすることを想定して、デシジョンテーブルを作成していきます。
この仕様に基づいて、「条件のセット」「関連するアクション」を表形式にしてデシジョンテーブルを作成します。
今回の例であれば、会員種別、会員の属性(年齢、学生)が「条件のセット」であり、月会費、利用可能日時が「関連するアクション」となります。
上記の仕様を元に作成したデシジョンテーブルがこちらになります。
デシジョンテーブルができたので、これを元にテストケースを実装していくことができます。
今回の例のように文章で条件が羅列されている場合、そこから漏れなく組み合わせのテストをするのは難しいため、デシジョンテーブルで表形式にすることでテストの見通しが立ちテストケース漏れ、無駄なテストケースを削減することができます。
上で作ったデシジョンテーブルを元にテストケースを作ると以下のようになります。
このように、デシジョンテーブルを作ることで、テストケースの洗い出しがスムーズに行え、抜け漏れがないことがわかりやすくなります。
仮にデシジョンテーブル形式でビジネスルールやシステム仕様が書かれていれば、それをそのままテストケース作成時に利用することができます。ただし個人的な経験では、デシジョンテーブル形式でビジネスルールが記述されていることはほとんどなかったです。 その場合、テスト担当者がデシジョンテーブルを作ることになるのですが、ビジネスルールを一覧で見えるようになるのは大きなメリットです。というのも、作成した表を使って要求元や開発者と会話することで、要求の漏れや開発の漏れをテスト実施前に発見することができるようになるからです。
今回のサンプルで言えば、「70歳以上で学生の場合は、月会費1,000円引きとなる。」という補足が料金仕様に書いてありましたが、こういった補足がないことはあると思います。その際にデシジョンテーブルを作ることで70歳以上で学生だったらどうなるんだろうと疑問を持ち、仕様の曖昧な部分を質問することで、要求側の漏れや開発の漏れに気づくことができます。
まとめ
JSTQBのシラバスにも載っているテスト技法「デシジョンテーブルテスト」について紹介しました。
複数の条件の組み合わせを抜け漏れなく洗い出すには良いテスト技法です。
仕様書の文書が複雑な場合、デシジョンテーブルにすることで思考の整理にもつながりますし、他の人と認識合わせをするツールにも成りえます。
参考にしたシラバスはこちらです。
http://www.jstqb.jp/dl/jstqb.jpdlJSTQB-SyllabusALTA_V311.J03.pdf
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/