Maison >interface Web >js tutoriel >Automatiser les tests de mots de passe à usage unique (OTP) : un guide informel

Automatiser les tests de mots de passe à usage unique (OTP) : un guide informel

Patricia Arquette
Patricia Arquetteoriginal
2024-12-18 06:01:11817parcourir

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

Automatiser les tests de mots de passe à usage unique (OTP) : un guide informel

Tester les mots de passe à usage unique (OTP) peut être très pénible, n'est-ce pas ? Basculer constamment entre votre application et votre boîte de réception SMS, rechercher des codes... Il est temps de résoudre ce problème. Parlons de l'automatisation de l'ensemble du processus à l'aide d'outils qui font le travail. Et oui, nous utiliserons également des numéros de téléphone temporaires, mais nous resterons calmes et nous concentrerons sur la valeur réelle de votre flux de travail de développement.

Voici comment améliorer votre jeu OTP avec des outils tels que Playwright, Puppeteer, Selenium et un peu de créativité. Peu importe votre stack, vous trouverez ici quelques pépites.


Pourquoi s’embêter à automatiser les OTP ?

Les luttes habituelles

  • Basculer entre votre test et votre boîte de réception SMS
  • Copier-coller comme en 2005
  • Vous testez sur plusieurs appareils ? Pouah.

La solution intelligente

Récupérez des numéros de téléphone temporaires par programmation, récupérez les OTP via l'API et automatisez le reste. Plus de va-et-vient, plus de drame. Vous ressemblerez à un sorcier lors des revues de sprint.


Pourquoi Quackr.io ?

Il existe de nombreux services pour les numéros de téléphone temporaires, alors pourquoi choisir Quackr.io ? Voici l’offre :

  • Rapide et fiable : Quackr.io envoie des messages SMS en quelques secondes, ce qui est exactement ce dont vous avez besoin pour tester les flux OTP.
  • API simple : leur API est très facile à intégrer : vous serez opérationnel en un rien de temps.
  • Numéros globaux : testez avec des numéros de différents pays pour couvrir les cas d'utilisation régionaux.
  • Forfaits abordables : parfaits pour les développeurs et les équipes qui souhaitent une solution rentable sans sacrifier la qualité.

Nous avons utilisé Quackr.io car il coche toutes ces cases. Vous pouvez en essayer d’autres, mais si vous recherchez quelque chose de fiable, Quackr.io est un excellent point de départ.


Ce dont vous avez besoin

  • Numéros de téléphone temporaires : tout service fiable fera l'affaire. (Nous allons utiliser Quackr.io ici car cela fonctionne très bien.)
  • Votre client HTTP préféré : Axios ? Aller chercher? Votre appel.
  • Cadres de test : Dramaturge, Marionnettiste, Sélénium... tout ce avec quoi vous vibrez.
  • Node.js : Parce que pourquoi pas ?

La partie amusante : le coder

Voici comment créer un script d’automatisation OTP. Considérez-le comme un point de départ : faites-le vôtre.

Étape 1 : Obtenez un numéro de téléphone temporaire

Tout d’abord, inscrivez-vous à un service qui fournit des numéros de téléphone temporaires (nous utilisons Quackr.io). Prenez votre clé API et c'est parti.

Étape 2 : Installer quelques bases

Si vous utilisez Node.js, vous aurez besoin de quelques packages :

npm install playwright axios dotenv

Étape 3 : le script

Voici un exemple utilisant Playwright et Axios. N'hésitez pas à l'adapter à votre configuration.

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();
})();

Étape 4 : Gardez vos secrets... secrets

Utilisez un fichier .env pour vos clés API. Exemple :

API_KEY=your_api_key_here

Conseils bonus

  1. Exécuter des tests en parallèle : utilisez plusieurs numéros de téléphone pour accélérer les choses.
  2. Mock It for CI : enregistrez certains appels d'API pendant CI/CD en vous moquant du flux OTP.
  3. Restez résilient : ajoutez des tentatives en cas de problèmes de réseau irréguliers.
  4. Tout enregistrer : gardez une trace des OTP et des réponses pour le débogage.

Quelle est la prochaine étape ?

Vous pouvez étendre cette configuration pour :

  • Authentification à deux facteurs (2FA)
  • Tests de validation des numéros de téléphone
  • Flux d'intégration fluides

Pensées finales

Ceci ne fait qu’effleurer la surface. L'automatisation des OTP peut vous faire gagner beaucoup de temps et donner l'impression que vos tests sont peaufinés. Si vous avez des idées pour rendre cela encore meilleur, j’aimerais les entendre. Avez-vous des astuces intéressantes pour gérer les OTP ? Déposez-les ci-dessous : apprenons les uns des autres !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn