テストする順番を気にする

以前、ある方から「普段、当たり前にやっていることって何ですか?」と質問があり、その場では即答できなかったのですが、最近になって(これ、当たり前にやってることかも)と思うことがあったので、紹介します。

わたしは、テスターとして組み込み系製品の開発に従事しています。ですので、この記事は、その「テスト」に関して「当たり前にやっていること」のひとつになります。

f:id:miwa719:20180715141033j:plain

テストする順番を気にする

わたしは、1日の大半をテストに費やしているのですが「テストする順番」を、かなり(無意識に)気にしてるようです。ただ、急ぎでやらなければならないもの(緊急性の高いもの)は、先にやるので、ここでは除きますね。

どのように順番を決めているのか。その順番にしている理由、順番を決めるときの材料やシグナルなども織り込みながら、1日を3つに分けて紹介します。

  • 午前中
  • 午後1時〜2時
  • 午後2時〜6時 

午前中

問題が出たら嫌なところ、複雑なところをテストします。もうすこし具体的に書くと、こんな感じです。

  • 問題を見逃すと生命、自然環境に関わるようなところ
  • 問題を見逃すとお客様の業務に支障が生じるところ
  • 製品化の中でも特に重要な機能
  • 複数の機能が絡み合ってそうなところ
  • 過去に不具合が多く出ているところ
  • 他のチームにも影響がありそうなところ
  • 開発中に設計や実装が二転三転したところ
  • 担当プログラマーの顔が不安そうなところ
  • 担当プログラマーの顔は普通なのに、他のみんなが不安そうにしてるところ

朝会で脳内をウォーミングアップ

わたしたちのチームは、朝会(9時15分〜10時)で、チケットの読み合わせをしています。これをやることで、テスターのわたしも、今、開発してるものが、どんな状況にあるのか(どこが、なぜ、うまくいってないのか、昨日困っていたあれはどうなったのか、内部の設計や実装など)を知ることができます。同時に、今日からテストできるもの(昨日コミットされたチケット)もわかります。プログラマーひとりひとりの表情を見ながら、その言葉に耳を傾け、場合によっては質問し、テスト可能なチケットを整理しながら「テストする順番」を決めます。ソフトウェアは毎日変化しているので、それに合わせてテストも毎日調整します。

午前中に「問題が出たら嫌なところ、複雑なところをテスト」をするのは、いち早く重大な問題を見つけて、チームのみんなにお知らせしたい、のも理由の一つなのですが、それよりも(これは多くの方がそうだと思いますが)朝会の後のこの時間が、1日の中で最も脳内がスッキリしていて、冴えているからです。おかしさを見つけられる感度が、就業時間の中で最高のはず。おそらく身体能力も相当高い。*1

気分が乗らなくて後回しにしたテスト

その他にも午前中にテストするものがあります。それは、前日までに一度はトライしようとしたけど、挫折してやめてしまったテストです。

  • 思っていた以上に時間がかかり、途中で集中力が切れてしまった
  • テストするための準備が何となく面倒
  • テストする場所が極寒で風邪引きそう/徒歩で5分もかかる(しかも雨降ってる)

などなど。理由はいろいろありますが、要は、気分が乗らなくて後回しにしたテストです。人間だからそんな日もあるよね。

これは、もう自分で分かっていますからね、午前中にやらないとダメですね。今日も午後に回したら、また挫折します。これはもう仕事だから仕方ない、今日こそはやるぞ!と思ってやります。*2

午後1時〜2時

それほど頭を使わなくてもできるテストに充てます。例えば、画面に表示する文字(ラベル)の位置、色、メッセージなどの変更、アイコン(絵)の貼り替えとか。まあ、そんなところでも、あとから問題が見つかって(そんな作りになっていたとは!)となることもあるんですけどね。この時間帯は、どうしても集中力が低下してしまうので、自分自身のテストのミス(見逃し)も多くなります。人間だから仕方ない。だから、頭を使うような難しいテストや、混み入ったことは、極力やらないようにしています。

午後2時〜6時

上記に書いたもの以外をテストします。午前中の続きをやることも多いです。また頭が冴えてきますからね。乗ってきて過集中になるのも、大抵この時間帯ですね。そうそう、集中して物事に取り組むのは良いことですが、集中してること以外(外側)は「散漫」になっているんですって。それを聞いたときに(確かに、そうだわ)と思って、ちょっとゾッとしました。だから、集中しすぎないために1時間ごとに休憩するよう、心がけています。*3
また、午後5時以降に取りかかったチケットは(大丈夫だろう)と思っても close しないことにしています。これも「疲れ」から誘発されるかもしれないミスを防ぐためです。翌日にもう一度、軽く確認してから close します。(週末の夜にコミットしないのと、似てるかもしれませんね。)

全体的に気にすること

わたしたちは、複数の製品(バージョン)を同時に並行開発しているので、スケジュール(締め切り)を気にします。締め切りが早いものは、できるだけ先にテストできるように調整します。締め切りが遅いものは、重要な機能であっても後回しです。(例外はありますが)

それから、担当プログラマーが今日いるかどうかも気にします。例えば、テストできる状態にはなっているけど、今日は休暇でいないような場合は(内容にもよりますが)優先順は下がります。これは、もしテストしてクラッシュするようなバグが見つかっても、その場ですぐに見てもらえないからです。明日来るんだから、わざわざ今日テストしなくてもいいか、みたいな感じですね。

さいごに

普段、わたしが「当たり前にやっていること」のひとつ「テストする順番を気にする」を紹介しました。

いつも無意識にやっていることを、改めて見つめ直し、言語化したら、これまで見えてなかった「何か」が浮かび上がってくるのかな…と、淡い期待もあったのですが、そうでもなかったですね。本当に当たり前のことだったわ。*4

 

*1:視力とか、腕力とか、聴力とか。

*2:それでも、どうしてもダメなときは、同僚のテスターに「何時から一緒にやろう!」とお願いしている。もう逃げることはできないので、午後でも大丈夫。

*3:Apple Watchが教えてくれるので、少しは改善している。

*4:公開するのも躊躇うレベルですが、せっかく書いたので放流します。