Introducción a la API de automatización: Parte 1: descripción general

Traducción de Shashi Kumar Raja


Entonces, supongamos que desea hacer la automatización de API, pero cada vez que escribe la mejor herramienta de automatización de API en la barra de búsqueda de Google, ve tantos enlaces a las 10 herramientas principales que se confunde y decide que definitivamente lo hará mañana




Comencemos por comprender lo que necesitamos si queremos configurar (con suerte mañana) una plataforma de automatización de API . Mantenga este pensamiento por un segundo ... Dije, deje de pensar ... Sé que su jefe no asigna ni un centavo para ninguna herramienta pagada . Mira, leí tu mente, no pienses en voz alta



Las herramientas pagas deben colgarse, no ejecutarse :)


1. ¿Dónde diablos debo comenzar a escribir exámenes?

Necesitará algo que le proporcione un conjunto de reglas y pautas para escribir exámenes, y que también le permita hacerlo al darle acceso a varias herramientas y técnicas. Escucho una campana sonando, no !!! Bueno, sé lo que hará una campana.


¿Alguna vez has oído hablar de TESTNG , JUNIT , MOCHA , PYTEST , ROBOT ? Sí, todos son entornos de automatización de prueba.


Necesita encontrar el entorno de prueba adecuado según sus requisitos: ¿qué pila de tecnología existente utiliza su empresa? ¿Qué automatización quieres hacer? Qué idioma es más conveniente para usted, etc. Encontrará un entorno de automatización en los idiomas más populares que le permitirá escribir pruebas unitarias, funcionales y de otro tipo de API.


Para obtener más información sobre el entorno de prueba, consulte la Parte 2 de la serie, donde presenté Mocha y Pytest en detalle .


2. ¿Cómo voy a hacer llamadas API en un entorno de prueba?

La mayoría de estas plataformas admiten llamadas API, incluida la biblioteca de solicitudes HTTP , porque las API REST utilizan el protocolo HTTP para la comunicación.


Algunos marcos, como el mocha , le dan la libertad de usar la biblioteca de solicitudes HTTP de su elección, como superagent .


  <code class = "lang-JS"> solicitud
   .post ('/ api / pet')
   .send ({nombre: 'Manny', especie: 'gato'}) // envía un cuerpo de publicación JSON
   .set ('X-API-Key', 'foobar')
   .set ('aceptar', 'json')
   .end ((err, res) => {
     // Llamar a la función final enviará la solicitud
   });
 </code> 

Le brindan soporte fácil para GET, PUT, POST, DELETE y todos los demás métodos. Puede pasar encabezados, caché, solicitar parámetros, lo llamó, lo obtuvo


3. Genial, pero algunas de mis API dan JSON y otras dan XML en respuesta, ¿cómo puedo lidiar con esto?

La mayoría de estas bibliotecas de solicitudes HTTP le permiten enviar y recibir datos en formatos JSON, XML, CSV, Texto, Imagen, datos de formulario, datos codificados con varios estándares de autorización compatibles.


También le permiten procesar el código de estado de respuesta HTTP y verificar si hemos recibido el código de estado de respuesta requerido o no.


  • Códigos informativos de respuesta (1xx)
    100 - Continuar
    101 - Cambio de protocolos
    102 - Procesamiento

  • Códigos de respuesta exitosa (2xx)
    200 - OK 206 - Contenido parcial
    201 - Creado 207 - Multi-estado
    202 - Aceptado 208 - Ya informado
    203 - Información no autorizada 226 - IM utilizado
    204 - Sin contenido 250 - Poco espacio de almacenamiento
    205 - Restablecer contenido

  • Códigos de respuesta de redireccionamiento (3xx)
    300 - Múltiples opciones 304 - No modificado
    301 - Movido permanentemente 305 - Usar proxy
    302 - Encontrado 307 - Redirección temporal
    303 - Ver otros 308 - Redirección permanente

  • Códigos de respuesta de error del cliente (4xx)
    400 - Múltiples opciones 410 - No modificado
    401 - Movido permanentemente 411 - Usar proxy
    402 - Encontrado 412 - Redireccionamiento temporal
    403 - Ver otros 413 - Redirección permanente
    404 - Múltiples opciones 414 - No modificado
    405 - Movido permanentemente 415 - Usar proxy
    406 - Encontrado 416 - Redireccionamiento temporal
    407 - Ver otros 417 - Redirección permanente
    408 - Encontrado 418 - Redireccionamiento temporal
    409 - Ver otros

  • Códigos de respuesta de error del servidor (5xx)
    500 - Error interno del servidor 508 - Bucle detectado
    501 - No implementado 509 - Ancho de banda limitado
    502 - Bad Gateway 510 - No extendido
    503 - Servicio no disponible 511 - Se requiere autenticación de red
    504 - Tiempo de espera de puerta de enlace 550 - Permiso denegado
    505 - Ver HTTP no admitido 551 - Opción no admitida
    506 - La variante también negocia 598 - Error de tiempo de espera de lectura de Nework
    507 - Almacenamiento insuficiente 599 - Error de tiempo de espera de conexión de red

4. Bien, pero ¿cómo procesaré los datos de la prueba?

Depende de dónde obtenga los datos de prueba. Estos marcos de prueba le permitirán utilizar todas las características del lenguaje en el que se basan:


a. Base de datos: puede crear fácilmente conexiones de base de datos para leer datos.


b. Archivo externo: puede leer texto externo, JSON, CSV o cualquier otro archivo.


c. Datos aleatorios: puede usar bibliotecas como faker para generar datos de prueba aleatorios sobre la marcha.


  <code> var faker = require ('faker');

 var randomName = faker.name.findName ();  // Rowan Nikolaus
 var randomEmail = faker.internet.email ();  // Kassandra.Haley@erich.biz
 var randomCard = faker.helpers.createCard ();  // tarjeta de contacto aleatorio que contiene muchas propiedades
 </code> 

d. Datos de la respuesta de la API: muchas veces durante las pruebas, deberá pasar la respuesta de una API como solicitud de datos a otra. Puede hacerlo utilizando ganchos . Obtendrá funciones como Antes, Antes de cada, Después, Después de cada una , que, como su nombre lo indica, se ejecutan antes / después de cualquiera o todas las pruebas. Llame a API1 antes de API2 y pase su respuesta a API2. Justo a la derecha! ️


5. Procesar datos de prueba y hacer llamadas a la API parece simple, pero ¿cómo voy a verificar las respuestas de la API?

Para verificar las respuestas, necesitará una biblioteca llamada Biblioteca de aserciones . Muchos entornos de prueba vienen con bibliotecas de aserciones, lo que le permite escribir aserciones en inglés simple, como la sintaxis. También le permiten verificar el esquema JSON de su respuesta.


En mocha, puede usar cualquier biblioteca de aserciones, por ejemplo, chai .


  <code> response.status.should.equal (200)
 foo.should.be.a ('cadena');
 foo.tiene.tiene.longitudDe (3);
 el té debe tener.propiedad ('sabores')
   .with.lengthOf (3);
 </code> 

6. Increíble !!! Quedaba un poco, después de todas estas pruebas, ¿de alguna manera mostrarle a mi jefe lo que hice y dónde encontré problemas?

La mayoría de estos marcos le proporcionarán un informe básico de ejecución de prueba HTML , que puede descargar y compartir. Si necesita informes más bellos con gráficos y tablas, puede usar varias herramientas de informes de código abierto como allure o mochawesome .



7. Solo si pudiera obtener algún tipo de plantilla con estas cosas para iniciar la automatización de API ahora

¿Qué te dije? Lo llamaste, tienes


Esta es la plantilla que creé para automatizar la API usando mocha en node.js.


Incluye


  • Test-framework (moca),
  • Biblioteca de solicitud HTTP (supertest),
  • Biblioteca de afirmaciones (chai),
  • Reportero (encanto),
  • maderero (winston),
  • Generador de datos aleatorios (falsificador),
  • Apoyo de Eslint y
  • validación de cadena traviesa integrada . Todo lo que tiene que hacer es clonarlo / descargarlo y estará listo para comenzar.

Si necesita una plantilla en otro idioma, puedo prepararla para mañana.


Si te gustó este artículo, puedes aplaudir , probablemente me haga escribir más.

Source: https://habr.com/ru/post/es433726/


All Articles