技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

再現テストの重要性

これも情報処理技術者試験には出題されないのですが、IT技術者が理解しておくべき大事なテスト手法の一つに「再現テスト」があります。
再現テストとは、バグの発生手順を確認するためのテストです。
バグの発生手順が不明確だと、正しい原因にたどり着くことができませんし、その状態で修正を行っても本当にバグが直ったかわかりません(バグが直ったように見えても、それはたまたまかもしれません)。
 
例えば、「会員登録のWeb画面で必要事項を記入し「次へ」ボタンを押下した所、意図せずエラー画面に遷移してしまった」というバグを報告された場合、どの操作に問題があったのかを確認する必要があります。
ある入力項目で許容されない文字が入力されたのかもしれませんし、途中でブラウザの戻るボタンを押下されていてそれが原因なのかもしれません。
原因を特定するために、各入力項目への入力内容や途中の操作を一つずつ変えていきながら、どの入力内容や操作に問題があったのかを特定します。
ここで、「氏名に半角文字が入力された」ことが原因であると特定された場合、これが再現手順となります。
このバグについて、「氏名に半角文字が入力された状態で「次へ」ボタンが押下された場合、会員登録画面に戻り入力内容訂正を求めるメッセージを表示する」という改修を行った場合、改修前のプログラムで氏名に半角文字を入力しバグの再現手順が正しいことを確認した後、改修後のプログラムでも同じ手順を行い、正しい挙動に変更されたことを確認します。
 
余談ですが、性能系のバグやネットワーク系のバグは、原因が複雑でバグを再現できないことが多々あります。
(というか、バグなのか仕様なのかもよくわからない事象もあります)
一般的な話であれば、「性能問題 切り分け」とか「ネットワーク障害 切り分け」とかでググると色々情報が出てきます。
私も性能系のバグやネットワーク系のバグの調査の現場に居合わせ、そこで上位者の判断の過程を聞いて担当者として調査したことが何度かあるので、その経験を活かせる機会があれば活かしたいと思っています。