テストとQA · 6 分で読めます

2026年の住所フォームテスト:40項目のQAチェックリスト

住所フォーム向けの40項目チェックリスト:フィールド制約、バリデーションのタイミング、エラー文言、国依存、自動入力、アクセシビリティ、回帰テストパック。

著者: Charlie Simmon ·

住所フォームのテストは、予測可能な箇所で失敗します。フィールドは単純なのでフォームはすぐに作られ、その後、カナダの郵便番号を静かに壊したり、ドイツの先頭ゼロを落としたり、ユーザーが香港を選んだのに州を要求したりします。ここでは探索的テストよりもチェックリストの方が価値があります。失敗の集合はよく知られており、有限だからです。

これは8つの領域に分けた40項目のチェックリストで、各項目の背後にある具体的なルールを示します。住所1行目、2行目、市区町村、地域、郵便番号、国を持つフォームを想定しており、これはチェックアウトとサインアップのフローの圧倒的大多数をカバーします。どの項目もバックエンドにアクセスせずに観察でき、それぞれがどこかで出荷されてしまった欠陥に対応しています。

1. フィールドの棚卸しと制約

まず、すべてのフィールド、その目的、保存上限、必須かどうかを書き出します。このチェックリストの欠陥の半分は、その表がなければ評価できません。「フォームが住所を拒否した」は、どのフィールドがなぜ拒否したかが分かるまで、対処可能な情報ではないからです。

制約はグローバルではなく国ごとにすべきです。郵便番号の最大長を一律10にするとほとんどの国では機能しますが、アイルランドはスペース込み8文字で破綻し、市区町村の最大長を一律30にすると実在の名前をかなり切り詰めます。余裕のある上限を設定し、1つの市場向けに選んだ長さではなく、国のパターンで検証してください。

フィールド必須となる条件推奨最大長検証方法
住所1行目常に必須(純粋なPO Boxフォームを除く)100文字自由テキスト、trim後に空でないこと
住所2行目必須にしない100文字自由テキスト、任意
市区町村常に必須85文字自由テキスト、リストのみにしない
地域国に地域がある場合USとCAは3文字国ごとの管理リスト
郵便番号国に郵便番号がある場合12文字国のパターン
国常に必須2文字コード+名称固定リスト

2. 国と地域の依存関係

国を変更したら、地域をリセットし、郵便番号フィールドのラベルを変更し、キーボードとパターンを変え、古いバリデーション状態をクリアする必要があります。典型的なバグは、米国に切り替えた後もカナダの州が選択されたままで、有効に見えるフォームが不可能な値の組み合わせで送信されることです。

香港とアラブ首長国連邦には郵便番号がないため、フィールドは任意にし、ラベルでもその旨を示すべきです。日本は住所の順序が逆になるので、フォームは現地の順序でフィールドを提示するか、西洋式の順序を期待していることを明確にすべきです。切り替えは両方向でテストし、バリデーションエラーがすでに表示された後の国切り替えもテストしてください。

国の変更期待される地域リスト期待される郵便番号の動作
USからCA州と準州A1A 1A1パターン、スペース許可
CAからUS50州+DC+準州5桁またはZIP+4
任意からHK地区任意、空を許可
任意からUAE首長国任意、空を許可
USからGBカウンティまたは自由テキストアウトワードコードとインワードコード
GBからJP都道府県3〜4桁、ハイフン許可

3. バリデーションのタイミングと状態

フォーマットはblur時に検証し、必須フィールドは送信時に検証し、値が有効になったらすぐにエラーをクリアします。キーストロークごとに検証すると、郵便番号を入力している途中のユーザーを罰することになり、送信時のみに検証すると、ユーザーは案内なしに一度に6つのエラーを発見することになります。

バリデーションの代わりに送信ボタンを無効にしないでください。説明のない無効化されたボタンは住所フォームで最もよくあるアクセシビリティの苦情です。ユーザーは何が足りないのか分からず、スクリーンリーダーが変更をアナウンスしない可能性があるからです。ボタンは有効のままにし、送信させ、各フィールドへのリンク付きのサマリーを表示してください。

イベント検証する内容表示する内容
変更時国と地域の整合性依存フィールドをリセット
blur時フォーカスを失ったフィールドのフォーマット無効ならインラインエラー
エラー後の入力時再チェックし、修正済みならクリアエラーを即座に削除
送信時必須を含むすべてのフィールドサマリーと最初のエラーへのフォーカス
サーバー応答時フィールド単位のサーバーエラー同じフィールドIDにマッピング

4. エラー文言とエラーの配置

エラーメッセージは、どのフィールドが間違っているか、受け入れられるフォーマットは何か、どう修正するかを伝えなければなりません。「無効な住所」は3つすべてに失敗します。「郵便番号は5桁で、例:97205」は合格です。フォーマットが特殊な国では、正規表現ではなく例を示してください。ユーザーは正規表現を読みません。

エラーはフィールドの隣に置き、フォームが長い場合は上部のサマリーにも置きます。aria-describedbyで関連付け、入力にaria-invalidを設定します。送信時には最初の無効なフィールド、またはサマリーがインタラクティブならサマリーにフォーカスを移動します。視覚的だけでなく、スクリーンリーダーでテストしてください。

  • メッセージ内でフィールド名を明示する
  • 期待されるフォーマットを例付きで示す
  • 何が間違っているかだけでなく、何をすべきかを示す
  • ユーザーを責めない。「5桁のZIPを入力してください」と言う
  • メッセージはページの言語と方向に合わせる

5. 入力処理:貼り付け、自動入力、キーボード

貼り付けはフォーマットのバグが表面化する場所です。ユーザーが非改行スペースを含む「K1A 0B1」を貼り付けたり、完全な住所を1行目に貼り付けたりします。フォームはtrimし、既知の区切り文字を正規化し、内部のスペースを保持すべきです。ZIP+4やオランダのコードからハイフンを削除してはいけませんし、正当に大文字小文字が混在する市区町村名を大文字にしてはいけません。

自動入力は正しいトークン名に依存します。address-line1、address-line2、市区町村にはaddress-level2、地域にはaddress-level1、postal-code、countryを使用し、本当に複数行の通りのブロックでない限り、単一行フィールドでstreet-addressを再利用しないでください。モバイルでは数値キーボードに通常ハイフンがないため、inputmode="numeric"で入力されたZIP+4やオランダのコードは完了不可能になります。パターンが区切り文字を許可する場合はinputmode="text"を使用してください。

フィールドautocompleteトークンモバイルキーボード
住所1行目address-line1text
住所2行目address-line2text
市区町村address-level2text
地域address-level1textまたはピッカー
郵便番号postal-codeハイフン許可時はtext
国countryピッカー

6. 長さ、切り詰め、エンコーディング

すべてのフィールドで境界値とその1文字先をテストします。切り詰めは拒否よりも悪いです。ユーザーには送信成功が見えるのに、保存された値が間違っているからです。データベースの列が50文字でフォームが100文字を許可している場合、欠陥は長い入力でのみ現れます。それは手書きのフィクスチャには決して含まれないものです。

非ASCII文字をテストします:アクセント付き文字、O Connellのアポストロフィ、フランスの通りの名のハイフン、ドイツの通りの名のエスツェット、右から左へのスクリプト。値がAPI、データベース、CSVエクスポート、印刷ラベルを通じて往復することを確認します。エンコーディングのバグはエクスポートのステップでのみ現れることが多く、それは誰もテストしないステップです。

  • 境界値:最大値マイナス1、最大値、最大値プラス1
  • アクセント:e-acute、u-umlaut、c-cedilla
  • 句読点:アポストロフィ、ハイフン、通りの略語のピリオド
  • 空白:先頭、末尾、二重、非改行
  • スクリプト:方向にはアラビア語とヘブライ語、幅には日本語
  • 往復:フォーム、API、データベース、エクスポート、ラベル

7. アクセシビリティとローカライゼーション

すべてのフィールドには、入力にプログラム的に関連付けられた可視ラベルが必要です。プレースホルダーテキストはラベルではありません。入力すると消え、アナウンスも一貫しません。住所フィールドをlegend付きのfieldsetでグループ化し、国と地域のセレクトはキーボードとタイプアヘッドで操作可能にしてください。

右から左へのロケールでは、個々の入力ではなくコンテナにdirを設定し、句読点とエラーアイコンが正しい位置に留まるようにします。翻訳されたラベルが200パーセントのズームでオーバーフローしないこと、エラーサマリーが表示されたときにアナウンスされることを確認します。これらは、アクセシビリティ監査が費用を請求する欠陥を捕まえる安価なチェックです。

チェック合格条件
ラベルの関連付けラベルをクリックすると入力にフォーカスする
エラー時のariaaria-invalidがtrueで、aria-describedbyがメッセージを指す
フォーカス順序タブ順序が視覚的な順序に従う
ズーム200パーセントで重なりなくレイアウトが機能する
RTL方向はコンテナに設定され、アイコンはミラーリングされる
スクリーンリーダーフィールド名、値、エラーがすべてアナウンスされる

8. 回帰テストパック

チェックリストを、変更のたびに実行される小さな自動化パックに変えます。20ケースで失敗の集合をカバーします:主要市場の有効ケースと無効ケースを1つずつ、カナダ、英国、ドイツ、日本、ブラジル、香港、UAEの各ケース、さらに境界長、非ASCIIの市区町村、非改行スペースを含む貼り付け値、エラー後の国切り替えです。

各ケースは独立させ、シードを設定します。結果の形状に対してアサートし、リテラル文字列に対してはアサートしません。無効ケースでは可視のエラーテキストに対してアサートします。エラー文言の回帰は実際の回帰だからです。このサイズのパックは数秒で実行され、上記の欠陥の大多数を捕まえます。

ケースグループ件数カバー内容
主要市場の有効・無効4コアパスとエラー文言
構造的な外れ値7CA、GB、DE、JP、BR、HK、AE
境界長4切り詰めと拒否
エンコーディングと貼り付け3非ASCII、NBSP、完全住所の貼り付け
依存関係のリセット2国切り替え、古い値でのリフレッシュ

よくある質問

住所フォームにはいくつのテストケースが必要ですか?+
約20件で一般的な失敗の集合をカバーします:主要市場の有効・無効ケース、カナダ、日本、香港などの構造的な外れ値、境界長、エンコーディング、国切り替えのリセットです。
バリデーションはキーストロークごとに実行すべきですか?+
いいえ。フォーマットはblur時に、必須フィールドは送信時に検証し、値が有効になったらすぐにエラーをクリアします。キーストロークごとの検証は入力途中のユーザーを罰します。
なぜ香港は住所フォームを壊すのですか?+
香港には郵便番号がないため、必須の郵便番号フィールドが有効な住所をブロックします。同じことがアラブ首長国連邦にも当てはまり、どちらもフィールドを任意にすべきです。
住所フォームはどのautocompleteトークンを使うべきですか?+
address-line1、address-line2、市区町村にはaddress-level2、地域にはaddress-level1、postal-code、countryです。これによりブラウザがフォームを正しく入力できます。
切り詰めはどうテストしますか?+
最大長、1文字下、1文字上の値を送信し、保存された値を読み戻します。送信成功後のサイレントな切り詰めが捕まえるべき欠陥です。

例は合成データです。生成された住所を本人確認、アカウント登録、配送に使用しないでください。

参照標準

次に読む

すべてのガイド