1000個のエラー、1つのGoogleスプレッドシート、そして二度と戻らない5時間

すべてのバグには物語がある。今回の物語は、「自分の環境では動いている」という嘘から始まった。

私たちは、リードジェネレーション(見込み客獲得)企業向けのデータインポート機能をテストしていた。一見、単純なものに思えた。ボタンをクリックし、ファイルをアップロードすれば、データが読み込まれる。

ほとんどの人は、こうした機能は正常に動作するものだと想定している。テスターの存在意義は、その想定が間違っていることを証明することにある。

「ハッピーパス(正常系)」は罠だ。

きれいなExcelファイルをアップロードすれば、システムはパスする。あなたは昼食に出かけ、仕事が終わったと思うだろう。しかし、そこで止まってしまえば、壊れたコードをリリースすることになる。月曜日の朝、本番環境で顧客がそのエラーを見つけることになるのだ。

問題は、Googleスプレッドシートだった。

実際のユーザーは、整理されたExcelファイルなど使わない。彼らが使うのは、ぐちゃぐちゃなGoogleスプレッドシートだ。スプレッドシートの中に混沌を作り出し、システムがそれを処理してくれることを期待している。

Googleスプレッドシートをアップロードしたとき、システムは失敗した。1,000件を超えるエラーが発生したのだ。データもボタンも同じなのに、フォーマットが変わっただけでシステムは完全に崩壊した。

次に、データの品質をテストした。

  • 数行の無効な行? システムはそれらをスキップして次に進んだ。
  • 何百もの乱れた行? システムは壊れた。

バリデーションロジックは、小さなエラーに対しては機能していた。しかし、大量のゴミデータに直面したとき、それは失敗した。

私たちはこのデバッグに5時間を費やした。ファイル、ブラウザ、データのせいにした。コーヒーのせいさえした。

その5時間は安上がりだった。そうでなければ、もっと高い代償を払うことになっていた。もし顧客がこのバグを見つけたら、製品への信頼を失う。テスト段階のバグは「時間」で支払う。本番環境でのバグは「顧客」で支払うことになる。

私は、時間で支払う方を選ぶ。

本物のバグを見つけるには、マインドセットを変えなければならない。「ソフトウェアが動作するか」を問うのではない。「どうすれば壊せるか」を問うのだ。

開発者のように考えるのをやめ、次のような人物として考え始めてほしい。

  • 間違ったファイル形式をアップロードする怠惰なユーザー。
  • セルの結合や空行だらけのスプレッドシートを使う混沌としたユーザー。
  • きれいな10件ではなく、汚れた4,000件のレコードを扱う大量データユーザー。
  • やってはいけないことを、あえて実行するトラブルメーカー。

ソフトウェアは、予想もしなかった入力によって壊れる。

「単純な」機能こそが最も危険だ。インポートボタンや検索ボックスは無害に見えるが、そうではない。

次に機能がハッピーパスを通過したら、「想像しうる最悪のファイルをアップロードしたらどうなるか?」と問いかける人間になってほしい。

そして、実際にやってみるのだ。

Source: https://dev.to/jaswanth_m_ab71bf22ec8b0/1000-errors-one-google-sheet-and-five-hours-i-will-never-get-back-4okl