OTP 自動テストとは、確認コードの受け取りから入力までを人手を介さずに走らせる確認のことです。本記事では、テスト用の受信箱からコードを取り出す流れを順に追い、待ち時間、古いメールの混入、再送の制限といったつまずきどころを整理します。読み終えると、どこまで自動化し、どこから人に任せるべきかが決められます。
確認コードの自動取得は何をしているのか
やっていることは、人が手で行う操作の置き換えです。受信箱を開き、最新の一通を選び、本文から数字の並びを写し、入力欄に貼る。この四つを、テストから実行できる形に置き換えます。
置き換えの難しさは、四つのうち二番目と三番目に集まります。どれが最新の一通なのかを正しく決めること、そして本文のどこにコードがあるのかを見つけることです。この二つが安定していれば、自動化は驚くほど素直に動きます。
最新の一通をどう選ぶか?
最も多い失敗は、古いメールを拾ってしまうことです。同じ受信箱を複数の実行で使い回すと、前回のメールが残っています。対策は三つあります。
- 実行ごとに別の宛先を割り当てる。
- 受信箱を実行の前に空にする。
- 送信の時刻より後に届いたものだけを対象にする。
一番確実なのは最初の方法です。宛先そのものが違えば、混ざりようがありません。二番目の方法は簡単ですが、並行して走る実行があると、他人のメールを消してしまいます。三番目は、時計のずれに弱いという弱点があります。
選んだうえで、件名や差出人でも絞り込むと、いっそう確実になります。ただし絞り込みを厳しくしすぎると、文面の変更で確認が落ちます。件名の全部一致より、送信者の識別と目的の語を含むかどうか、程度に留めるのが扱いやすいです。
コードの取り出しでつまずくのはどんなとき?
本文からコードを抜き出す作業は、見た目より繊細です。よくあるつまずきは次のとおりです。
| つまずき | 起きる理由 | 対処の方向 |
|---|---|---|
| 別の数字を拾う | 本文に注文番号や年が並ぶ | 桁数と位置を決めて絞る |
| 取り出せない | 文面の言い回しが変わった | 前後の語を手がかりにする |
| 古い値を使う | 再送の前後を取り違える | 最新の一通だけを見る |
二行目が一番厄介です。文面は運用の都合で変わります。変わりにくい手がかりは、コードの直前にある決まった語です。そこを軸にすると、文面が多少変わっても追従できます。
再送と期限はなぜつまずきどころなのか?
確認コードには有効期間があり、再送にも回数の制限があります。どちらも、乱用を防ぐための設計であって、故障ではありません。ところがテストでは、この二つが思わぬ形で邪魔をします。
まず、期限です。コードを受け取ってから入力するまでの間に、有効期間を過ぎてしまうことがあります。とくに、受信箱を一定の間隔で見に行く作りにしていると、待っているあいだに時間が過ぎます。
次に、再送の制限です。確認が不安定で何度もやり直すと、制限に引っかかって再送されなくなります。ここで制限を外してしまうと、本番で起きる状況を再現できなくなります。制限はそのままにして、やり直しの回数を抑える工夫をしてください。
人による確認をどこに残すか
すべてを自動化しようとすると、かえって壊れやすくなります。次のいずれかに当てはまる箇所は、人の確認を残す価値があります。
- 文面が頻繁に変わる。
- 期限がきわめて短く、機械の待ち時間と競合する。
- 失敗の原因がコードの取得なのか、アプリ側なのか切り分けられない。
人の確認を残すこと自体は、自動化の失敗ではありません。どこで人が見るのかを決めておくことが、確認全体の信頼性を上げます。
なお、テスト用の受信箱は動作確認のためのもので、実在の身元として通用するものではありません。この経路に本物の利用者のコードが入らないようにしてください。
開発者向け: 取り出しの堅牢さを上げる
最初に決めるのは、取り出しの成功条件です。受信箱から一通を選び、本文から値を抜き出し、期待する形に合うことを確かめる。この三段階を分けて書くと、失敗したときにどこで止まったのかが分かります。
次に、時間の扱いです。一定の間隔で見に行き、上限に達したら失敗とします。上限は、期限より短く設定してください。期限を超えて待っても、成功する見込みはありません。あわせて、待ち始めた時刻と、メールが現れた時刻を記録しておくと、環境の速さを知る手がかりになります。
第三に、失敗したときの資料です。上限に達したら、受信箱の中身と、その時点で本文から抜き出せた値を残します。これがないと、原因がアプリ側なのか取り出し側なのかを切り分けられません。
第四に、やり直しの設計です。確認が落ちたときに同じ手順を繰り返すと、再送の制限に触れます。やり直しの回数を抑え、待つことより原因を見る方向に倒してください。
次のステップ
手元の自動確認を一つ選び、実行ごとに宛先が分かれているかどうかを確かめてください。分かれていないなら、そこが最初の改善点です。次に、コードの取り出しで使っている手がかりが、変わりにくい語かどうかを見直します。
受信箱を用意するには使い捨てメールのツールが使えます。取り出しの前提になる届くまでの流れは一時メールの仕組みで、確認フロー全体の検証項目はメール認証テストの進め方で整理しています。