JaSST'19 Hokkaido

探索的テストを机上で体験する方法
2019年8月30日
株式会社NTTデータ 技術革新統括本部 システム技術本部 デジタル技術部
Agileプロフェッショナルセンタ 町田欣史
© 2019 NTT DATA Corporation

1. 探索的テストとは探索的テスト（exploratory testing）： 非公式なテスト設計技法の一つ。テストを実施する過程で、テスト担当者がテスト実施情報を活用しながらテスト設計をコントロールし、積極的に質の高い新しいテストケースを設計する。
【出典】ソフトウェアテスト標準用語集 日本語版 Version 2.3.J02© 2019 NTT DATA Corporation2

2. 探索的テストを教えることの難しさ
説明だけで理解してもらうのは難しい
テストケースは書きません

テストチャーターを作ります

テスト設計とテスト実行を同時にやります© 2019 NTT DATA Corporation

セッションで管理します

モンキーテストとは違います3

3. 探索的テストを教える効果的な方法
実際にソフトウェアを動かしてバグを探索することを体験する

JaSST'19 Tokyo でベストスピーカー賞を受賞
JaSST'19 Kansai でも発表

NTTデータの熊川一平氏© 2019 NTT DATA Corporation

44. 課題ソフトウェアを動かす環境がなくても探索的テストを体験できるようにしたい

バグを混入させたソフトウェアを用いた研修
ソフトウェアを動かす環境が必要

まさに今回のシンポジウムのような不特定多数が集まるセミナーなどで実施するのは難しい（例）100人が参加するセミナー• 主催者がPCを100台用意できるか？
• 参加者が持ってくるすべてのデバイスでソフトウェアが問題なく動作するか？

© 2019 NTT DATA Corporation

55. 課題達成のための案「ゲームブック」を参考にして、探索的テストを体験する演習ができないか？
バグを混入させたソフトウェアのデモをする。

「20の扉」をやってもらう。

ドキュメント中の間違いを探索してもらう。

自分でバグを見つけた
気がしない探索的テストをイメージするに至らない

テストというよりレビューシステムの仕様を提示して、どのようなテストをするか考えてもらう。

バグを見つけるまでの公開されているシステム
探索プロセスをたどってのバグを探索してもらう。
もらう。
ゲームブックだ！

単発のテストなので探索にならない探索する方向を選べるようにしたらおもしろいかも・・・• システムに迷惑がかかる• 予期せぬ問題が起こる（競合など）【注】「20の扉」についてはWikipedia（二十の質問）や「はじめて学ぶソフトウェアのテスト技法」（リー・コープランド著、宗雅彦訳、日経BP）を参照してください。
© 2019 NTT DATA Corporation

66. ゲームブックとは読者が自分で選択をして物語を好きな方向に進められる
解説 ゲームブック (Gamebook) は、読者の選択によってストーリーの展開と結末が変わるように作られ、ゲームとして遊ばれることを目的としている本である。「アドベンチャーゲームブック」・「アドベンチャーブック」とも呼ばれる。
（中略）

本文は数十から数百個のパラグラフ（段落）に分けられており、各パラグラフには順に番号が付いている。読者はそれらのパラグラフを頭から順番に読むのではなく、パラグラフの末尾で指定された番号のパラグラフを次に読む。

例

1. 君の目の前には先祖伝来の箱がある。
なんとかして開けたいが開け方が分からない。箱には2つのスイッチのようなものがついている。
赤いスイッチを押す→3へ
青いスイッチを押す→4へ
何もしない→5へ４を選ぶ 4.青いスイッチを押してみた。蓋が開き中から古びた紙が現れた。
もう少し箱の中を調べる→8へ
紙を調べる→9へ

財宝のありかを示す地図だった。
1年後、財宝を手に入れた君は優雅な余生を送る事になった。fin.

８を選ぶ
8.箱の中をよく調べている内に、指先に激痛が走った。慌てて手を引っ込めて中をのぞき込むと細い針のようなものが見える。→2へ【出典】解説、例ともにWikipedia「ゲームブック」より© 2019 NTT DATA Corporation

９を選ぶ 9.それは、かつて徳川家が隠した

7

２へ
進む 2.それは毒矢だった。君は薄れ行く意識の中で自らの不運を呪った。
fin.

【参考】私が小学生のときに買ったゲームブック© 2019 NTT DATA Corporation

87. ゲームブックと探索的テストの類似点と相違点
それまでの過程で得られた情報を基にして次に進む方向を決める類似点
••
•
•
•

得られた情報を手がかりにする。
時には勘も頼りにする。
結末（バグ）にたどり着くまでのルートは複数ある。
結末（バグ）にたどり着けないこともある。
結末（バグ）にたどり着くと快感を得られる。

相違点
••
•
•

結末（バグ）は
進む先はルートの途中で結末（バグ）にたどり着くと© 2019 NTT DATA Corporation

ゲームブック

探索的テスト

１つ （真の結末）
選択肢から選ぶ
戻れない （原則）終わり

複数
自由に考える
戻れる
続けられる

9

8. ゲームブック式探索的テスト演習の開発
実在のシステムにあるバグを見つけるまでのストーリーを構築した
乗換案内① テスト対象のシステムを決定した。

演習前に仕様を説明する手間を省くため実在のシステムを参考にした。

② 実在するバグ（っぽいもの）を見つけた。

「仕様」かも①で参考にしたシステムを実際に動かして、バグ（っぽいもの）を見つけた。

③ テストチャーターを設定した。
②のバグを探索するために適切なテストチャーターを設定した。

「最速ルートが出力されない」④ 複数のテスト（テストケース）を用意した。
バグにたどり着くまでにやりそうなテスト（テストケース）を考えた。

26個のテスト⑤ テスト（テストケース）の実行順序を決定した。
人間の思考としてありそうな順番でテスト（テストケース）をつなげた。
【注】探索的テストでは、テストケースは考えるが書かないことが一般的なので、「テスト（テストケース）」という表記にしています。
© 2019 NTT DATA Corporation10

樹形図のようなもので整理

9. サンプル© 2019 NTT DATA Corporation

11

9. サンプル

どのような条件でテストするかどのような結果になったか

この結果を踏まえて次はどちらのテストをするか

これを何回か続けるとバグにたどり着く© 2019 NTT DATA Corporation

1210. 演習を実施した方の声
探索的テストを知らなかった人でもある程度はやり方をイメージできる2019年7月に社内研修で実施した結果 （受講者24名）

受講前

受講後探索的テストを知っていますか？

探索的テストを実施するイメージがわきましたか？

知っていたが実施したことはない 1名前は聞いたことがあった 7

知っていて実施したこともある 0

あまりでき よくイメージなかった 4 できた 4
聞いたことがなかった 16
まあまあできた 16© 2019 NTT DATA Corporation

13

まったくできなかった 011. 今後に向けてもっと複雑でたくさんのバグを探索するような演習を作ってみたい• 複数のバグを見つけるようなストーリーにしたい。
• テストチャーターも複数用意する。
•

たどってきたルートにより判断が変わるようにしたい。
• 今回のものは、直近のテスト結果だけである程度判断できる。

•バグが見つからずにハマってしまうようにできるとおもしろい。

•

できるだけドメイン知識を必要としないほうがよい。
• 今回のものは、鉄道や地理の知識を若干必要とする。

ご興味のある方がいれば、一緒に作ってみませんか？
© 2019 NTT DATA Corporation14

お問い合わせ先株式会社NTTデータ 町田欣史
Yoshinobu.Machida@nttdata.com@machidays© 2019 NTT DATA Corporation