100%の確実性
ソフト開発の仕事をしていますが、現在は不具合の改修を主として行っています。
テストを別のチームが行っていて、そこで検出された不具合が報告されてくるわけです。
そんな中、先日、頭を悩ませる不具合の報告がありました。
不具合事象の再現性
不具合の改修の第一ステップとして、まずは再現させてみる、という方法を採っています。
再現させられれば、ログを入れるなりして問題点を絞り込めます。
デバッガ等が使用できればもう少し効率的に不具合を追い込めるのかもしれないですが、システム上デバッガは使用出来ないのでひたすらログを仕込みます。
とはいえ、まずは再現させよう、と発生手順を確認。
…が、設定項目が異常に多く、「これ、全部入力するの?」という状態です。どのパラメータが不具合の引き金になっているかは判らないので、適当に省略するわけにもいかず、機械相手に入力を開始。
救いは、報告書に記載されている「再現率:100%」ということ。
時間をかけてでも、設定さえすれば再現してくれるので安心です。設定したパラメータは意図的に初期化しない限りは電源を切ってもソフトを入れ替えても保存されるので、「まずは入力!」と。こういうのを力仕事と言ったりしますけどね。
半日(4時間ほど)かけて、ようやく設定が完了。
再現手順の処理を開始させて、不具合が発生するというタイミング(開始から20分ほど)を待ちます。
さぁ、その瞬間。
何も起こりません…。
何か間違えたかと、後処理にかかる10分間を待って、再度開始。で、20分後。やっぱり起こりません。
発生手順に間違いが無いか、設定したパラメータに間違いはないか、再度チェックをしてみても間違いは無し。
仕方なくテスト実施者に問い合わせると、「現象が発生したときの1回しかテストをしていない」とのこと。
それ、100%って、言います!?
10回実施して10回とも再現するなら誰もが100%という表現に納得すると思います。
内容によっては、3回中3回でも100%と言えるものもあります。
でも、1回しかやってなくて100%と言われるのは抵抗感しか無いです。
算数の世界では、1/1 = 10/10 = 1 = 100% ですが、不具合の再現性に関しては、 1/1 ≠ 10/10 ですよね。。