データ品質

位置データは正常系だけでなくエッジケースでもテストする

位置情報を扱うソフトウェアは、都合がよく扱いやすい例だけを使って開発やテストをしてしまいがちです。大都市のきれいな住所、家庭用ブロードバンドのIPアドレス、国境やタイムゾーンの境界から十分に離れた地点などです。こうしたテストはどれも確実に通りますが、本番で現実の雑多なデータに出会ったときに、実際に問題を起こす可能性が最も高い状況でシステムがどう振る舞うかについては、ほとんど何も教えてくれません。

位置情報ソフトウェアのテストスイートを本当に役立つものにするには、このシリーズで個別に取り上げてきた難しいケースを意図的に含める必要があります。一般的な番地制度のない国の住所、国境に極めて近い地点のクエリ、夏時間の切り替えのちょうど最中に当たるタイムスタンプ、モバイル通信事業者のCGNATプールや衛星インターネット事業者に属することがわかっているIPアドレス、経度を前提とした仮定が崩れ始める極地付近の座標、そして参照データが非常に詳細な国ではなく、郵便データが比較的粗い国の郵便番号などです。

これらはどれも、網羅性のためだけに考え出された珍しくてありそうもないシナリオではありません。それぞれが現実に繰り返し現れる入力のカテゴリーであり、十分に大きく真にグローバルなユーザー層を持つサービスであれば、いずれ確実に、しかも多くの場合は予想より早く届くものです。これらに対してテストされたことのないシステムは、診断しやすい形で大きく目立って失敗するわけではありません。多くの場合は静かに失敗し、もっともらしく見えるものの微妙に間違った結果を返します。その結果は表面的なチェックをすべて通過し、ずっと後になってから、たいていはわかりにくいサポートチケットや、辻褄の合わない原因不明のビジネス指標として初めて問題が表に出ます。その時点では、本当の根本原因までたどるのはかなり難しくなっています。

この種のテストセットを作ること自体が、以前に正確性とカバレッジの両方を測る方法として説明したものと同じ取り組みです。つまり、固定され、意図的に多様で、再利用できるテスト入力の集まりを用意し、もっともらしい応答が返ってくるかどうかだけでなく、その応答のprecisionconfidenceのフィールドが、その入力の本当の難しさに照らして妥当かつ一貫した振る舞いをしているかを具体的に確認します。本当に難しいケースで信頼度が低く精度が粗い結果が返るのは、正しく誠実な結果であり、合格として扱うべきです。自信満々に間違った結果や、処理されないエラーこそが、ユーザーに見つけられる前に捕まえるべき本当の失敗です。

当社のドキュメントでは、各エンドポイントで想定されるフィールドと動作を正確に説明しています。ご自身のアプリケーションとそのユーザーにとって最も重要なエッジケースに合わせて、このような意図的に厳しいテストセットを作る際の出発点として最適な資料です。