はじめに
テスト技法を仕様の整理に使ってみた話です。
テスト技法をクラウドで使える「GIHOZ(ギホーズ)」というツールが弊社から無償のオープンβ版として公開されている(※2020年12月19日時点)ので、そちらを使ってみました。
せっかくなのでGIHOZの操作方法にも少し触れています。
お題
よく知られているものをお題にしたほうが、読んだ人が理解しやすいと思いましたので、GitHubのリポジトリへのコラボレータの招待機能を対象にします。
ちょうど自分の業務で似たような機能の仕様を考えることがあり、「普段何気なく使っているけど、そういえば、実際どういう仕様になっているのだろう?」と思って調べたので、その記録という意図もあります。
注意点
この記事は「テスト技法を仕様の整理に使えるので、みんな使ってみてね」という話をしたいだけで、「GitHubの仕様を明らかにしたからGitHubを使うときに参考にしてね」という記事ではありません。この記事に記載したGitHubの仕様の正しさは、筆者のほうでは保証しませんのでご注意ください。
いちおう筆者調べで、執筆時点のGitHubの仕様を正しく整理したつもりではありますが、GitHubのほうが変わるかもしれませんし。
画面遷移図で仕様を整理してみた
とりあえず、コラボレータの招待がどういう動きになっているのか理解するために、画面遷移を整理しました。
GIHOZの状態遷移テストを使ってみました。四角形の箱が画面、矢印が画面遷移を起こすイベントと条件を表しています。GIHOZではイベントと条件は区別して記載するようになっていないため、/
で区切って入力しました。
GIHOZの状態遷移テストは、編集エリアをダブルクリックして新しい箱を置いたり、ドラッグアンドドロップで箱から箱へ矢印を繋ぐことができます。また、箱をクリックして、[+]ボタンをクリックすることで、新しい箱と矢印を同時に作ることもできます。(と、状態遷移テストのヘルプページに書いてあります)
「状態遷移表とテストケースを生成」というボタンを押せば、遷移を網羅するテストケースを一気に生成できます。自分が開発している製品の仕様を整理するときにもGIHOZを使えば、テストケースを生成してそのままテストで使えるので一石二鳥ですね。
デシジョンテーブルで仕様を整理してみた
画面遷移を整理した結果、招待のURLにアクセスしたときの遷移先が色々な条件で分岐していることが分かりました。こういう論理関係を整理するには、デシジョンテーブルを使うのが良さそうです。ということで、GIHOZのデシジョンテーブルを使って、条件ごとの遷移先を整理してみました。
GIHOZのデシジョンテーブルは、[+]ボタンを押すことで、行・列を増やして入力することができます。条件を記述する部分では、親子関係の階層を作って記載することができます。階層を作りたい場合は、親となる文字をセルに入力してから、そのセル内の[+]ボタンをクリックすると子の階層を作れます。(と、デシジョンテーブルのヘルプページに書いてあります)
Y
・N
・X
はプルダウンから選択して入力できます。Y
はYes、N
はNo、X
はExecuteを表し、縦方向に見てY
・N
の条件の組を満たしたときにX
の動作が実行される、ということを表します。
条件の-
はY・Nのどちらでも良い、ということを表しています。
このように整理することで条件分岐の仕様が分かりやすくなりますし、実装するときはデシジョンテーブルに記載した条件の上から順に分岐を実装していけば、画面遷移を正しく実装できそうです。
ただ、今回作成したデシジョンテーブルは一部の条件が-
となっている(圧縮されている)ので、このままテストに使うと漏れがあるかもしれませんので、注意が必要です。デシジョンテーブルの圧縮の注意点については、「デシジョンテーブルの圧縮(整理・縮小)は要注意」に詳しく記載されていますので、こちらを読んでください。
おわりに
デシジョンテーブルも状態遷移図(画面遷移図)も、もともと仕様を整理するためのものなので、仕様の整理に使えるのは当たり前ですが、GIHOZはそれらをクラウドで手軽に使うことができるのが良いところだと思います。
GIHOZはテスト技法のツールですが、テストだけでなく今回のように仕様の理解や整理にも使えますし、整理した結果はもちろんテストに活用できますので、使ってみてはいかがでしょうか。
ちなみに、今回使ったGIHOZには、GitHubのような他のユーザを招待したりする機能はいまは無いようです。・・・いまはね