読者です 読者をやめる 読者になる 読者になる

チームでテストを共有した話(ペアテスト)

探索的テストを含む「テスト」をチームで共有したときに、やってみたことを紹介します。キーワードはこの4つ。

・テストの地図
・ペアテスト(今回はこれ!)
・テストの渡航記録
・朝会とテストの夕会


ペアテストはその名の通り2名(以上)で行うテストですが、テスターだけのものではありません。一般にはテスター×テスターの組み合わせが多いのかもしれませんが、わたしは同僚のプログラマーと一緒にテストすることもあるし、開発環境の入っていないテストPCの前に2、3名のプログラマーが集まり、みんなでテストしているのも、よく見る風景です。


ペアテストはもうそれ自体が(実施者間での)テストの共有であり、ペアテストの実施内容(どのようなテストをして、どうだったのか)は、ペアテスト直後に一番知りたがっている人たちに話しますし、朝会やテストの夕会、また日常の会話の中でも話題にしています。

ですので、今回はテストの共有というよりは「ペアテストそのもの」について書いてみたいと思います。


どんなときにペアテストをするのか
わたしがこれまでペアテストしたのは、こんなときです。


ヤバいやつがコミットされたとき
「ヤバい」という言葉は、あまり使いたくないのだけど、他に言いようがない…というか、この場合はぴったりハマるので使います。ヤバいやつですよ、ヤバいやつ。プロセスやスレッドが何本も走っていて、複数の装置が絡んでいて、これまでも似たような機能で多くの不具合が見つかっていて、、、もうみんなが「これはヤバい!」と思ってるやつです。

そんなヤバいやつがコミットされたと知った朝会のあと、同僚(テスター)に目で合図します。

「今日やろう!」
「何時からやる?」

ペアテストはお互いに試してみたいことを、順番にやっていくことが多いです。(わたしがそうであるように同僚もまた、朝会などに参加しながら、試してみたいことを日々メモしているようです。)

わたしたちのテスト対象は、いくつかの装置が絡んでいて、注目するのは目の前のディスプレイモニターだけではないことが多いです。ペアテスト中は二人とも、自分が何をどう操作しているのか、装置にどのようなパラメータを与え、何を観察しているのか、いま何がどうなっているのか、それは正しい動きなのか、そうではないのか、お互いの言葉を聞き、相づちを打ちながら、ひとつのテストが終わるまで、ずっとしゃべり続けています。ふたりで同じモニターを見ていても「これはこうだから大丈夫」と、いちいち指を差し、声に出します。

そして、その結果(手応え)によって、確認する内容や順番を、その都度相談しながら変えていきます。

同僚とペアテストをすると、かなり高い確率でバグが見つかるので(ヤバいやつなので予想通りだから驚かない)「早めに見つけられて良かったねー」とホッとするのですが、他にも良いことがあります。

ペアテストをすると、同僚が何を心配していて、それをどのような手順で確認しようとしているのか、どこを気にして、何に注目しているのか、テストの息づかい、テストに関するノウハウ、テクニックのようなものが、それはもう手に取るように分かります。テストを共有している感覚は、まさにここにあり、とても勉強になります。(同僚もまたわたしから何かを得ていると良いのですが、どうでしょうか。)


テスト対象を知らないとき
現在のチームに異動したての頃は(ある程度のドメイン知識はあったものの)テスト対象のシステム、ソフトウェアについては、ほぼ知らない状態でした。

毎日1時間、プログラマーのYさんに「これはどのような機能なのか」を、レクチャーしてもらいながら一緒にテストしました。毎日テーマを変え、2か月くらい付き合ってもらいました。この間に、すこしずつテスト対象を理解していき、最低限のテストができるくらいにはなったと思います。ありがたかったなー。


いじめ方の程度を伝えるとき
例えば、テストケースに「◯◯ボタンを押してモードを変えた直後に◯◯スイッチを素早く押す」と書いてあったとします。おそらくテストする人によって、操作する速度が変わってきますよね。

このテストは「◯◯ボタンを押してモードを変えると、接続されている別の装置に命令が飛んでいき、その装置の状態も変わるのだけど、その状態が変わりきる途中(隙間)に、別のルートから◯◯スイッチが押されたよ、という信号が送られても、状態はまだ変わってないので、スイッチの信号は無視されること」を確認したい。


だからここでは「モードを変えたら間髪入れずに◯◯スイッチをものすごい速さで押す」という操作を求めています。単に「早い」くらいの操作では、狙いたいテストにならないのですね。

「間髪入れずに」「ものすごい速さで押す」のは、どういう操作なのかを実演し、表には見えないけどその裏では、どんなシーケンスが流れていて、何を心配しているのかを話しながら、新人テスターと一緒にテストしました。

これは1つの例ですけど、このシステムではどれくらいシビアないじめ方をテストに要求しているのか、が感覚的に伝わったようで、その後、その新人テスターはかなりひどい操作をしてくれるようになりました。(このときは、テストの共有というよりは「伝承」のような気持ちになりました。)


一人では確認できないとき
例えば、エレベーターの中と外でそれぞれのボタンを同時に押すようなテストをする場合ですが、これはペアテストというよりは、テストする上での準備に近いですね。


おわりに
わたしが経験した「ペアテスト」について、いくつか紹介しました。
若干大げさなものを取り上げて書いてしまった感もあるのですが、一番多いのは、いつものテストの最中に「これ一緒に見てもらえる?」「これおかしいと思うんだけど、どう思う?」と、同僚のテスター(たいてい隣にいます)に声をかけ、5~10分くらいで行う、とてもカジュアルなペアテストです。


「ペアテスト」について興味のある方は @miwa719 にメンションしてください。4月23日(土)に開催するとちぎテストの会議に参加していただけると、もっと丁寧にお話しできます!