首頁 >web前端 >js教程 >自動化一次性密碼 (OTP) 測試:一份休閒指南

自動化一次性密碼 (OTP) 測試:一份休閒指南

Patricia Arquette
Patricia Arquette原創
2024-12-18 06:01:11815瀏覽

Automate One-Time Password (OTP) Testing: A Casual Guide

自動化一次性密碼 (OTP) 測試:一份休閒指南

測試一次性密碼 (OTP) 可能會很痛苦,對嗎?不斷地在您的應用程式和簡訊收件匣之間切換、尋找代碼......現在是我們解決這個問題的時候了。讓我們來談談使用完成工作的工具來自動化整個流程。是的,我們也會使用臨時電話號碼,但我們會保持冷靜並專注於您的開發工作流程的真正價值。

以下是如何使用 Playwright、Puppeteer、Selenium 等工具和一點創造力來升級 OTP 遊戲。無論您的堆疊如何,您都會在這裡找到一些有價值的東西。


為什麼要費心自動化 OTP?

平常的掙扎

  • 在測試和簡訊收件匣之間切換
  • 像 2005 年一樣複製貼上
  • 在多個裝置上進行測試?呃。

聰明的修復

以程式設計方式取得一些臨時電話號碼,透過 API 取得 OTP,然後將其餘部分自動化。不再有來回,不再有戲劇性。在衝刺評審期間,您會看起來像個巫師。


為什麼選擇Quackr.io?

有很多提供臨時電話號碼的服務,那為什麼選擇 Quackr.io?交易如下:

  • 快速可靠:Quackr.io 在幾秒鐘內發送 SMS 訊息,這正是您測試 OTP 流程時所需要的。
  • 簡單的 API:他們的 API 非常容易整合 — 您將立即啟動並執行。
  • 全球號碼:使用來自不同國家/地區的號碼進行測試,以覆蓋區域用例。
  • 經濟實惠的計畫:非常適合想要經濟高效的解決方案而不犧牲品質的開發人員和團隊。

我們使用了 Quackr.io,因為它滿足了所有這些要求。歡迎您嘗試其他產品,但如果您正在尋找可靠的東西,Quackr.io 是一個很好的起點。


你需要什麼

  • 臨時電話號碼:任何可靠的服務都可以。 (我們將在這裡使用 Quackr.io,因為它效果很好。)
  • 您最喜歡的 HTTP 用戶端:Axios?拿來?你的電話。
  • 測試框架:劇作家、木偶師、Selenium...無論你喜歡什麼。
  • Node.js:因為為什麼不呢?

有趣的部分:編碼出來

以下是建立 OTP 自動化腳本的方法。將其視為起點 - 讓它成為您的起點。

第 1 步:取得臨時電話號碼

首先,註冊提供臨時電話號碼的服務(我們使用的是 Quackr.io)。取得您的 API 金鑰,然後開始吧。

第 2 步:安裝一些基礎元件

如果您正在使用 Node.js,您將需要一些套件:

npm install playwright axios dotenv

第三步:腳本

這是一個使用 Playwright 和 Axios 的範例。請隨意根據您的設定進行調整。

const { chromium } = require('playwright');
const axios = require('axios');
require('dotenv').config();

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();

  // Fetch a temporary phone number
  const phoneResponse = await axios.get('https://quackr.io/api/phones', {
    headers: { 'Authorization': `Bearer ${process.env.API_KEY}` }
  });

  const phoneNumber = phoneResponse.data.number;
  console.log(`Using phone number: ${phoneNumber}`);

  // Simulate your app’s signup flow
  await page.goto('https://yourapp.com/signup');
  await page.fill('#phone-input', phoneNumber);
  await page.click('#send-otp');

  // Wait for the OTP
  let otp;
  while (!otp) {
    const messages = await axios.get(`https://quackr.io/api/messages?phone=${phoneNumber}`, {
      headers: { 'Authorization': `Bearer ${process.env.API_KEY}` }
    });

    const otpMessage = messages.data.find(msg => msg.body.includes('Your OTP is'));
    if (otpMessage) {
      otp = otpMessage.body.match(/\d{6}/)[0];
      console.log(`Got OTP: ${otp}`);
    } else {
      console.log('Waiting for OTP...');
      await new Promise(resolve => setTimeout(resolve, 2000));
    }
  }

  // Enter the OTP and complete verification
  await page.fill('#otp-input', otp);
  await page.click('#verify-otp');

  console.log('OTP verification done!');

  await browser.close();
})();

第四步:保守你的秘密…秘密

使用 .env 檔案作為您的 API 金鑰。例:

API_KEY=your_api_key_here

額外提示

  1. 並行運行測試:使用多個電話號碼來加快速度。
  2. Mock It for CI:透過模擬 OTP 流程,在 CI/CD 期間儲存一些 API 呼叫。
  3. 保持彈性:為不穩定的網路問題添加重試。
  4. 記錄一切:追蹤 OTP 和回應以進行偵錯。

接下來是什麼?

您可以將此設定擴展到:

  • 雙重認證 (2FA)
  • 電話號碼驗證測驗
  • 流暢的入職流程

最後的想法

這只是表面現象。自動化 OTP 可以節省大量時間,並使您的測試感覺更加完美。如果您有讓這一切變得更好的想法,我很想聽聽。有處理 OTP 的酷技巧嗎?把它們放在下面——讓我們互相學習!

以上是自動化一次性密碼 (OTP) 測試:一份休閒指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn