私はこれまで数え切れないほどのサインアップフローを出荷してきました。そして毎回、メール認証のテストフェーズは同じ話です。受信トレイがテストメッセージで溢れ始め、どのテストがどれだったか追跡できなくなり、40回目のテスト登録あたりからメールを完全に無視し始めます。これは悪い習慣です。もっと良いアプローチを紹介します。
メール認証が実際に含むもの
メール認証は単に「リンクを送る」だけではありません。複数のステップからなるプロセスです。暗号的に安全なトークンの生成(OWASP認証チートシート参照)、有効期限付きでの保存、RFC 5321に準拠したSMTP経由でのメール送信、クリック時のトークン検証、アカウントの確認済みマーク付け、トークンの無効化。各ステップは異なる方法で失敗する可能性があります。すべてをテストする必要があります。
本物のメールでテストすることが悪い理由
開発テストに本物のアドレスを使用すると、いくつかの具体的な問題が生じます。100回のテスト登録後、受信トレイは役に立たない認証メールでいっぱいになります。また、「一度も見たことがない新しいユーザー」をシミュレートすることもできません。一時アドレスを使用すると、各テストは本当に新鮮なユーザーと本当に空の受信トレイになります。
一時メールの解決策 — ステップバイステップ
開発環境の横のブラウザタブで使い捨てメールを開きます。ユニークなアドレスがすぐに表示されます。ワンクリックでコピーします。アプリに切り替え、メールフィールドにアドレスを貼り付けてフォームを送信します。temp-email.aiタブに戻ります。メール配信が適切に設定されていれば、認証メールは2〜5秒以内に届きます。リンクをクリックし、フローが確認されました。テスト全体が2分未満で完了しました。
認証フローでテストすべき項目
- 基本的な配信:メールは届きますか?異なる環境でテストしてください。
- リンクの正確性:メール内の認証URLは正しい環境を指していますか?
- トークンのセキュリティ:トークンは少なくとも32文字で本当にランダムですか?OWASP参照。
- トークンの有効期限:有効期限切れ後はどうなりますか?明確なエラーメッセージはありますか?
- 一回限りの使用:同じリンクを2回使用できますか?できてはいけません。
- 再送信:再送信ボタンは機能しますか?古いトークンは無効化されますか?
- HTMLレンダリング:メールテンプレートは実際の受信トレイで正しく表示されますか?
- 件名と送信者名:プロフェッショナルでブランドに関連していますか?
複数の同時ユーザーをテストする
temp-email.aiの各ブラウザタブは完全に独立した受信トレイです。5つのタブを同時に開き、5つの異なるアドレスをコピーして、アプリで5つのアカウントを同時に登録できます。これにより、順次テストでは決して見つからないバグ全体を捕捉できます。トークン生成の競合状態、データベースデッドロック、同時セッション間の予期しない相互作用などです。
ワークフローの変更は本当に小さいです。テスト登録フォームに本物のアドレスを入力する代わりに、5秒かけて新しいタブで使い捨てメールを開きます。それだけが変更点です。しかし、テスト品質への下流効果は大きいです。