CAT GETTING OUT OF A BAG

What the tester is thinking.

JaSST Online Daisy に参加しました #JaSSTOnline

JaSST Online Daisy に参加しました。 

www.jasst.jp

今回のテーマは「バグバッシュ」でした。

実際に運用されているプロダクトをお借りして、参加者全員が自ら手を動かしバグを探していきます。プロダクトの要件や仕様を学習しながら自身の経験や考えをベースにテストする、つまりは探索的テストに近いことを実践するという会です。しかし、それだけではわざわざ集まって同時刻に行う必要がありません。Daisyで行うのは、複数人で行うモブ探索的テストになります。まったく分野の異なる業界の人、異なる世代の人、探索的テストの経験がある人ない人と、多様なメンバーで構成されたグループで、テストを共に行います。(JaSST Online Daisy 開催要項から一部抜粋)

"バグバッシュ"や"モブ探索的テスト"という言葉は知ってましたが、実際にやったことがなく一度体験してみたかったのと、他社製品をテストするためにお金を払うんですから(しかも土曜日だよ?)相当変態おかしな種族が集まるに違いないと、すぐに申し込みました。当日は全国から相当変態おかしな種族が30数名集まり、9チーム(1チームが3、4名)にわかれて、実際に運用されているプロダクト(Webアプリケーション)を使ってバグバッシュしました。

この記事では、Daisyで「よいテストができた」と実感したので「なぜそう感じたのか」につながるいくつかの要素を、自分のこれまでの経験や考えかたを織りまぜて言葉にしておこうと思います。なお「バグバッシュをするとよいテストができる」という内容ではありません。

テストのテーマが自然に決まった

わたしたちのチーム(3名:よしたけさん、まこっちゃん、miwa)は自己紹介の時点で

  • テスト対象プロダクトを触ったことがない(見たこともない)
  • プロダクトの要となるコア機能をテストするには知識が足りない

ことがわかりました。*1これから短時間でテストしなきゃならないので条件としてはわりと最悪ですが、テストのテーマ(方向性)を決める上で重要な情報です。早々にコア機能はテーマから外しました。開発者と同等の幅広い知識がなければ、そのふるまいが正しいのかそうでないのかは判断できないからです。

バグバッシュ4ターン(1ターン20分)のうち、はじめのターンはテーマを決める時間にしました。テスト対象プロダクトを動かしながらどのようなことができるアプリケーションなのか、それぞれが理解したことをおしゃべりしていく中で、こんな会話がありました。

「プロダクトとして起きたら困ること、嫌なことはなんだろうね」

「開発者(テスター)が確認しづらいところはどこかな」

「どんなバグを見つけたい?」

さらに、今回のテスト形態(3名が各リモート拠点でテスト対象プロダクトを同時に操作している)も相まって、テーマ「競合状態」が自然に決まりました。自分たちの身の丈にあった無理のないテーマ選定ができたと思います。

時間が制限されている

バグバッシュのタイムテーブルが詳細に決められていたので*2それに従ってやるしかないのですが、時間が制限されているのはいいことです。これしか時間がない!となれば、その時間を一番うまく使うにはどうすればよいかを自然に考えるし、チームや自分にとっていま一番価値の高いもの、高そうなものを選べます。というより選ぶしかなくなります。テストも同じ。時間もちょっと足りないくらいがいいんだろうなと思います。今回のバグバッシュはちょっとどころか全然足りなかったです(だからたぶんいい)。左脳でバグの姿を思い描きながら、複数の拠点で同時に同じ操作をしたり、関連すると思われる処理やデータを競合させるつもりで動かしました。わたしとまこっちゃんは熱中しがちで*3よしたけさんがタイムキーパー係りをしてくれなかったら大変なことになっていたと思います。

休憩時間も本当はプロダクトを触っていたかったけど、テストの時間に一番いい状態(全身全霊を使って集中できる状態)に持っていくには、休憩時間は休憩するのが一番価値が高い行動です。そう自分に言い聞かせて頭や身体を休めました。

バグが見つかる、見つからないはあまり関係ない

これは普段の開発(仕事)でもそうなので「ああやっぱりわたしはそうなんだな」と確信することができました。バグが見つからなくても「いまのはよいテストだったな」と思うことはよくあります。頭の中にある「こんな風に動いてほしい」「こんな問題が起きたら嫌だな」を元にテストにするわけですから、バグが見つからなかったということはうまく動いたってことなんですよね。「うおーーー!こんなにひどいことをしたのに、ちゃんと動いてる!すごーい!すばらしい!!」と嬉しくてたまらなくなります。一方でたまたま通りがかって見つけたようなバグは「今日見つかってよかった」とは思いますが「よいテストができたな」とは思わない。なんとなくわかりますか?*4

今回のバグバッシュでもチームで見つけたい具体的な問題がありました。

「◯◯がおかしくなるバグを見つけたい!めっちゃ見つけたいんだけど!」

「それを見つけるためにはどんなことを試せばいいと思う?」

みんなで知恵を出し合い、具体的なテストに変換して実行しました。プロダクトのふるまいの様子を観察しながら、どのように設計、実装されているかを予想し、操作のタイミングや条件を変化させながら時間ぎりぎりまでテストし続けました。

結局「◯◯がおかしくなるバグ」は見つからなかったのですが、それはテスト対象プロダクトが期待したとおりに動いているということです。「おお〜!ここは矛盾しないようにちゃんとできてる!すばらしいね!」と、わたしはいつものように騒いでいたのではないでしょうか。*5

テスト対象プロダクトの開発者(テスター)になりきる

なりきらなくてもよいテストはできると思いますが、わたしに関してはなりきったほうが「よいテスト」ができるような気がするので、今回のバグバッシュもそうしました。胡散臭い言葉を使うと「当事者意識」というものですが、意識とかはどうでもよくて、そのプロダクトの開発者(テスター)になりきるんです。当然よしたけさんとまこっちゃんは同じチームの同僚という設定です。お二人はどう思っていたかわかりませんが、わたしははじめからそういうつもりで接していました。だから困ったことがあればすぐに「わかんないんだけど!」と助けを求めましたし、こうしたほうがいいなと思ったことは躊躇しないで言いました。プロダクトに直接関係ないことも「ぜんぜん関係ないことなんだけど話していい?」と聞き、なんでも話しました。

これに関しては(たぶんわたしだけが)感動したエピソードがあります。

本会の終盤に「見つけたバグを他のチームに共有するセッション」がありました。何をどのように発表するか事前に話し合ったのですが

miwa「テーマを競合状態にしたのはそうだけど、コア機能をテストするには自分たちは知識が足りなかったことは言ったほうがいいと思う(コア機能に未知の問題が潜んでいたら単なるバグではなく会社自体の信用を落とすことにつながるので、そこを狙うという作戦もありといえばありだった。でもできなかった)」

と言ったら、まこっちゃんが困った感じになったんですね。全員カメラオフだったので顔は見えないのですが、微妙な空気感と話してくれた内容や口調ですぐわかりました。ここで感動したのです。ああ、ちゃんと自分の気持ちをそのまま伝えてくれてるんだなって。言いづらいこともお互いに言い合えてるな。とても自然だな、と。それが嬉しかったのです。

miwa「うん。まこっちゃんが発表者だから、まこっちゃんが言いづらいならそれは言わなくていいことにしよう」

雑にまとめると、4時間しか一緒にいられなかったけど自然体でいられるいいチームになれてたよね、ということです。*6

開発者が見つけてもらいたいと思える課題や問題にフォーカスできた

バグバッシュが終わった時点で「よいテストができた」と感じていたので、これは後付けですが、いい話なので書き残しておきます。

本会の最後に表彰式がありました。テスト対象プロダクトの開発者(本物)がバグバッシュで検出したバグの中から最優秀バグを選んでくださいました。ちがうチームのバグが選ばれましたが、内容を聞いてびっくり。わたしたちも見つけていて話していた現象だったのです。

そんなわけで、表彰式そっちのけで(すみません)チーム専用チャットRoomで盛り上がってしまいました。まこっちゃんは悔しがって表彰されたがっているわで(副賞がほしかったみたい)あーもーーだから表彰なんてしなくていいのにーーと思いながらも、そのおかげで「テストの狙いどころとしては悪くなかったんだな」がわかってしまい、みんなで「よいテストができたね」と喜び、お互いを称え合いました。こういうのはテスター冥利に尽きますね。

おわりに

Daisyで感じた「よいテストができた」をそのままにしないで「なぜそう感じたのか」につながるいくつかの要素を、自分のこれまでの経験や考えかたを織りまぜて言葉にしてみました。

前述したように、本気のテストをはじめる条件としてはわりと最悪でした。(実際の製品開発ならありえない)

  • テスト対象プロダクトを触ったことがない(見たこともない)
  • プロダクトの要となるコア機能をテストするには知識が足りない
  • そんな3名が揃ったテストチームがたったいま誕生した

それでも「よいテストができた」と感じられたのは奇跡かもしれません。*7

この記事を書きながら「自然に」「自然体」という言葉を何度も使っていることに気づきました。わたしは何かが自然にできる状態の中からよいテストができる(できやすい)のを無意識に感じていそうです。だとしたら「無理なく自然にできる状態を作ること」から何かヒントが見つかるかもしれませんね。

*1:初対面の人に「できません」「わかりません」を表明するのは勇気がいると思う。真摯だな。

*2:バグバッシュ特有の役割(ドライバー、ナビゲーター、バグ起票担当)ローテーションの時間管理はポモドーロテクニックを使っているのかな。休憩時間や小さなふりかえりも入っていました。

*3:まこっちゃん、普段の開発(仕事)でも競合状態を攻めてるだろっ!て感じでした。やること見てるとそういうのがわかるよね。

*4:何をやってもすごいバグを見つけてしまう特別な日があります。そんな日は「ゾーンに入ってる」と思うんですが、これまでに数回しかないので偶然かも。

*5:熱中しててあまり覚えていない…

*6:ここまで書いておいてなんですが、実はよしたけさんのことは以前から知っていたので、チームとしてのベースは半分くらいはできていた。

*7:メンバーに恵まれました。よしたけさんとまこっちゃんのおかげです。ありがとうございました。特によしたけさんはバグバッシュの役割云々を超越したところから、プロダクトも含めてチーム全体を自然に見てくれていて助かりました。よしたけさんの話す内容から、わたしとまこっちゃんが見えてないことを見ているのがわかったので、早いうちから安心してテストしてました。あと、わたしのバグ起票担当を押しつけてすまんかった。でもあんな風に書けないから仕方ないんだ…