メニュー

国をまたいだテストデータ拡張: 不変条件と例外リスト

対象国を増やすとき、場当たりの追加は破綻します。全件で成り立つ不変条件を決め、例外を別の一覧に逃がし、追加の手順を固定する方法を整理します。

公開日

  • 拡張
  • テスト設計

国をまたいだテストデータの拡張は、件数を増やす作業に見えて、実際には基準を増やす作業です。基準を決めずに国を足していくと、どこかの国でだけ成り立つ前提が混ざり、後から全体を組み直すことになります。この記事では、増やす前に決めておくことを整理します。

拡張が必要になるのはどんなときか?

拡張の必要は、いくつかの形で現れます。

  • 提供する国そのものが増えたとき。
  • 一つの国の中の区分や呼び名が増えたとき。
  • ある国でだけ起きる事象を再現したくなったとき。
  • 組み合わせの数を増やして網羅を厚くしたいとき。

前三つは外から決まる拡張で、日付や条件がはっきりしています。四つめは自分で決める拡張で、上限がありません。種類によって進め方が違うため、まずどれなのかを決めます。

件数を増やす前に何を固定すべきか?

先に固定するのは、テストの目的と、全件で成り立つ条件です。全件で成り立つ条件とは、どの国を選んでも成り立つべき性質のことです。たとえば、どの国でも住所の主要な欄が欠けずに登録できる、といった性質です。

この条件を一文で書けると、データを増やしたときに壊れたかどうかを機械的に確かめられます。条件が書けないまま増やすと、確認は目視になり、増えた分だけ確認の負担が増えます。

条件は、書き出した時点で既存の全件に当てて確かめます。すでに破っている例が見つかれば、それは条件ではなく例外として扱い、条件の側を実態に合わせて書き直します。

もう一つ固定するのは、一件あたりの作り方です。一つの国のデータを作る手順を決めておけば、国が増えても手順は同じままです。手順が固定されていないと、国ごとに作り方が変わり、比較できなくなります。

固定する値と、国ごとに変えてよい値を分けておきます。この線引きがあいまいなままだと、増やす人が判断に迷い、迷った結果が記録されません。

全件で成り立つ条件はどう決めるのか?

決め方は、いま持っているデータから性質を抜き出す作業です。既存の一件ずつを見て、どの国でも成り立っている性質を挙げます。挙げた性質のうち、業務の意味を持つものを残します。

次に、その性質を破る例を探します。破る例が見つかったなら、それは不変条件ではなく例外です。例外は不変条件の側に混ぜず、別の一覧へ移します。この分離をしないと、不変条件が例外に合わせて弱められ、何も検出できなくなります。

判定できる形にすることも大切です。確かめる人が毎回判断する形の条件は、確認のたびに結果がぶれます。値の有無、欄の有無、記録の有無のように、機械的に決まる形に言い換えます。

例外はどこへ逃がすのか?

例外は、不変条件とは別の一覧に持ちます。一覧には、どの国の、どの条件を、なぜ外すのかを一行で添えます。理由がない例外は、次に見た人には単なる抜けに見えます。

例外にも期限を決めます。期限のない例外は、条件が見直されたあとも残り続けます。見直しの時期を決めておき、そのときに残すか消すかを判断します。

例外が増えすぎたときは、条件の側が実態に合っていない合図です。例外の件数を数えておき、一定を超えたら条件そのものを見直します。

追加の手順はどう固定するのか?

手順は、追加する人が変わっても同じ結果になる形にします。

  • 追加する国を決める。目的と結び付けて記録に残します。
  • 既存の一件を写して値を入れ替える。作り方を新しくしません。
  • 不変条件を全件で確かめる。確認の手順も同じものを使います。
  • 例外に当たる場合は、一覧へ理由と期限を添えて足します。
  • 追加した版を記録する。どの版で何が入ったかをたどれるようにします。

この順序を文書にしておくと、次に増やす人が同じ判断を繰り返せます。口伝えで引き継ぐと、二度目の追加で必ず形が崩れます。

手順は、実際に一件足して試します。試さずに書いた手順は、どこかの段階が抜けているものです。抜けは、二度目に増やす人が最初に気づきます。

開発者向け: 不変条件を一箇所で確かめる仕組みにする

不変条件の確認は、一件ずつの目視ではなく、全件をまとめて確かめる形にします。確認の処理を一箇所に置き、追加のたびに同じ処理を通します。処理が複数あると、どれを通したかで結果が変わります。

例外は設定として持ち、確認の処理の中に条件分岐を書かないようにします。例外を処理の中に書くと、例外が増えるたびに処理を直すことになり、確認そのものが壊れやすくなります。

データそのものは、作る手順を再実行できる形で持ちます。手で直した値だけが残っていると、同じ状態を再現できません。再現できる形にしておけば、増やしたあとに問題が見つかったとき、原因の国だけを外して比べられます。

この記事に示した不変条件の例、例外の一覧、追加の手順は、いずれも拡張の進め方を説明するために構成した合成の見本です。実在する提供元の一覧や、実際に運用されているデータの抜粋ではありません。試験の設計と手順の記録のためにだけ用いてください。

次のステップ

まず、いまのデータで全件に成り立つ条件を一つだけ書き出してください。書けない場合は、既存の一件を二つ並べて比べるところから始められます。状態の数え方は国データの網羅率チェックリスト、古くなった値の扱いは国データの鮮度と出典で扱っています。個々の国は国の一覧から確認できます。

続けて読む

各国の住所・身元データ形式の関連記事