要点

  • 安定したアサーションと探索のためのシードされたランダム性のために固定フィクスチャを使用する
  • 生成されたすべての不具合のシード値をログに記録する
  • 通常のレコード、境界レコード、および意図的に無効なレコードを分離する
  • example.com メールを使用し、レコードを合成としてマークする

執筆とレビュー

編集・レビュー方針
執筆
ランダムアドレスジェネレーター編集部
レビュー
データモデリングおよびQAレビューチーム
最終更新
決定論的シード、通常/境界/無効のグループ化、来歴、および生産の分離が追加されました。

固定フィクスチャとランダムフィクスチャは異なる役割を果たします

固定フィクスチャは、スナップショット、契約、移行に適しています。ランダム生成は組み合わせを拡張しますが、シードがなければ誰も再現できない失敗が生じます。

小規模なレビュー済み回帰セットと、シード、国、シナリオを受け入れるジェネレーターを保持します。有用な失敗を修正されたフィクスチャーに組み込む。

治具目的
ノーマル主要なフローを証明するフォーマット形式で地域的に一貫性のある
境界線露出の長さとエンコーディングUnicode、長い通り、先頭ゼロ
無効です運動による回復都市と郵便番号が一致しません
故障回復力を鍛えるルックアップのタイムアウトと再試行

形式を崩さずに認識可能

example.com などの予約済みドメインを使用し、dataPurpose および fixtureId を追加し、完全なアドレスの代わりに fixtureId をログに記録します。パーサーをテストするときは、郵便の形状を現実的に保ちます。

決して顧客をコピーして名前だけを置き換えないでください。他のフィールドでも個人を識別したり、通知を送信したりできます。

{
  "fixtureId": "ca-boundary-003",
  "dataPurpose": "synthetic-test",
  "seed": 7319,
  "countryCode": "CA",
  "email": "qa-7319@example.com"
}

ランダムとは矛盾を意味するものではありません

不変条件を定義します。国の形式は一致し、地域フィールドは 1 つのタプルから取得され、郵便番号はテキストのまま、オプションの行は N/A ではなく空のままになります。プロパティ テストでは、多くのシードにわたってこれらをチェックできます。

無効なフィクスチャは 1 つの不変条件を破る可能性がありますが、誰もそれを通常のデータとして扱わないように expectedError を宣言する必要があります。

  • すべてのシードは再生可能です
  • 通常のリージョナルタプルは一貫性を維持します
  • 無効なフィクスチャは 1 つの名前付きルールに違反します
  • 出力は参照データのバージョンを記録します

本番環境への副作用を防ぐ

サンドボックスまたは送信ブロックを介して、電子メール、SMS、印刷、フルフィルメント、および支払いの統合をテストします。住所にテストを書いても、実際の物流コールは妨げられません。

CI は環境と資格情報のタイプを検証し、運用キューに入る合成テスト レコードを拒否する必要があります。

失敗を回帰資産に変える

失敗するレコード、シード、データ バージョン、およびアサーションを最小限に抑えます。定期的に重複を排除しますが、見た目を新しくするためだけに安定したフィクスチャを再生成しないでください。

各固定フィクスチャに、所有者、シナリオ、期待される結果、作成理由、およびレビュー日を与えます。保護する動作が説明されていない大きな JSON ファイルは、すぐに誰も信頼できず、誰も削除しようとしない山になってしまいます。レビュー中に、製品が適用されなくなった重複した補償範囲とルールを特定します。

無制限のランダム出力から UI スナップショットを取得しないでください。スナップショットには明示的な固定レコードを使用し、ランダム テストでプロパティと不変条件をアサートさせます。この分割により、生成されたストリートが変更されるたびに無意味なスナップショットのチャーンが防止され、同時に広範囲の探索的カバレッジが維持されます。

参照データのアップグレードは依存関係の変更と同様に扱います。新しいスナップショットに対して古いシード セットを実行し、意図的な違いを確認し、以前に再現できたレコードが変更された理由を説明できる十分な期間両方のバージョンを保持します。

生成された行の生の数ではなく、シナリオごとにカバレッジを追跡します。 1 万の通常の住所は、欠落しているユニット、先頭のゼロの郵便番号、長すぎる建物名、またはサポートされていない地域の 1 つの意図的な備品を置き換えるものではありません。コンパクトなカバレッジ マトリックスにより、レビュー担当者は各フィクスチャがどのルールを適用しているか、ジェネレーターにまだ盲点がある部分を確認できます。

  • 所有者と保護された動作を割り当てる
  • 重複したケースや古いケースを確認する
  • スナップショットには固定フィクスチャを使用し、プロパティにはランダム フィクスチャを使用します
  • バージョン参照データの明示的なアップグレード

よくある質問

テストアドレスは固定すべきでしょうか、それともランダムにするべきですか?

安定した回帰には固定フィクスチャを使用し、より幅広い組み合わせにはシード生成を使用します。

テストメールに example.com を使用するのはなぜですか?

これは文書化とテスト用に予約されており、実際のサードパーティに連絡するリスクを軽減します。

合成レコードは本番環境で実行できますか?

デフォルトではありません。これらは依然として、実際の電子メール、フルフィルメント、支払い、または分析の副作用を引き起こす可能性があります。

出典と参考資料

  1. RFC 2606: 予約済みのテスト ドメイン名
  2. USPS: 住所と郵便番号の基本