#ノーモア手戻り
皆さん、テストで手戻りした経験はありますか?
私はいっぱいあります。
テストをやっているときは基本的にコードを書かないと思いますので、
退屈に感じる人も多いと思います。
でも、テストは大切な作業です。素早くミスなくきっちり終わらせたいものです。
手戻りをできるだけ回避するためのTIPSを、自分なりにまとめてみました。
#前提の整理
この記事では、「テスト実行時に、何らかの失敗をして、テスト実行をやり直すこと」を「手戻り」と呼びます。
- そもそものユーザーストーリーが間違っていた
- 実装をするための設計にミスがあった
- 実装が間違っていた
- テスト仕様書が噓をついていた
といった、「テスト実行より手前の段取りに不備があったこと」を理由にした「やり直し」については触れません。
#1.テスト実行前にやること
####テスト準備の不備をつぶす
- 「前提条件」をリスト化し、すべて確認する
- テスト実行環境
- テスト対象のリソース
- テスト実行ユーザ
- テストデータ
- (他にもいろいろ)
経験上、テストの手戻りでいちばんありがちなパターンが、
「前提条件を間違えていた」です。
例を挙げると、
- ひとつ前のリビジョンでテストをしていた
- 環境Aでやらなければならないテストを環境Bでやっていた
- 「女性」ユーザ限定の機能を確認するテストなのに「男性」ユーザを使用していた
などです。
これらの前提条件の準備に間違いがあると、テストをすべてやり直しする羽目になってしまいます。状況によって「何を網羅すれば準備完了といえるのか」は変わりますが、例えばそれをリスト化することによって、抜け漏れを検知することができます。
特に、プロジェクトに入って日が浅い人は、モブプログラミングのような形で、グループで「前提条件のリスト」をレビューしてあげると良いと思います。
#2.テスト実行中にやること
####とにかく落ち着いて、一つずつ
- テストケースをひとつ実行するたびに、いま何をしなければいけないかを確認する
- 前提条件
- テスト実行手順
- 期待値を確認するタイミング
- 期待値と、OK\NGの判断根拠
先ほどの例に似ていますが、例えば、テストケース№1~100までが「男性」ユーザのテストケースで、№101からが「女性」ユーザのテストケースだったとします。
前提条件を都度チェックせず、№101以降も「男性」ユーザでテストを進めてしまうと、手戻りが発生します。
####アナログな手法を活用する
- テスト仕様書の黙読を避ける
- いま自分が読んでいる箇所を「指さし確認」する
- ついでに「声に出して読む」
- 読んだところに「取り消し線」を引く
- 紙に印刷してしまう
実行者が人間である限り、ヒューマンエラーは起きます。
「前提条件を確認したつもり(だけど確認が漏れていた)」「この手順を実行したつもり(だけど異なる手順を実行していた)」といったことです。
実行した箇所をツールが自動的に「実行しました」とチェックしてくれるようなツールがあれば嬉しいのですが、2017年現在は、まだそのようなツールは世の中に出回っていません。
とてもアナログではありますが、例えば指さし確認をすることで、自分の意識をその箇所に集中させることができます。
#3.テスト実行後にやること
####実行ミスがないかチェックする
- 結果の評価にツールを使う
- 事前にユニットテストを自動化しておく
- Excelなどの数式で比較する
- 差分比較ツールを使う→テキストファイル、画像、PDFなど
ここでも、実行者が人間である限り、ヒューマンエラーは起きます。
「実行ミスがないかチェックする」と口でいうのは簡単なのですが、
「実行ミスが実行ミスであることに正確に気づく」ことはとても大変です。
ツールなどを使って、「嫌でもミスに気付く」仕組みを作っていければ望ましいと思います。
#おわりに
上記に書いたことを、すべて実行できるとは限らないと思います。
指さし確認をしていたら「変な人だなあ」と思われることもありますし、
そんな悠長なことをやっていられない局面もあります。
けれども、「急がば回れ」が原則だと私は考えています。
ノーモア手戻り。あなたにとってテストが楽しく、充実した時間になりますように。