Sobes.tech
Middle

¿Cómo va a verificar el servicio web?

sobes.tech AI

Respuesta de la IA

La verificación del servicio web incluye varias etapas clave y tipos de pruebas:

  1. Comprensión de requisitos y especificaciones:

    • Estudio de la documentación (Swagger/OpenAPI, WSDL, especificaciones funcionales).
    • Clarificación de puntos poco claros con el equipo de desarrollo o analistas de negocio.
  2. Planificación de pruebas:

    • Definición de la estrategia de prueba.
    • Selección de métodos y herramientas de prueba.
    • Planificación del volumen de datos de prueba.
  3. Pruebas de funcionalidad:

    • Escenarios positivos: Verificación del comportamiento esperado con datos de entrada correctos.
    • Escenarios negativos: Verificación del manejo de datos incorrectos, errores, valores límite.
    • Prueba de todas las operaciones (GET, POST, PUT, DELETE, etc.).
    • Validación de la estructura de solicitudes y respuestas (JSON, XML).
    • Verificación de los estados de respuesta HTTP (2xx - éxito, 4xx - error del cliente, 5xx - error del servidor).
    • Reinicio del servidor durante la operación (para escenario negativo).
  4. Pruebas de integración:

    • Verificación de la interacción del servicio web con otros servicios o sistemas.
    • Uso de herramientas que puedan emular respuestas de servicios dependientes (servidores simulados).
  5. Pruebas de rendimiento:

    • Pruebas de carga: Verificación del comportamiento del servicio bajo carga esperada.
    • Pruebas de estrés: Verificación del funcionamiento bajo carga superior a la esperada para determinar el punto de fallo.
    • Pruebas de estabilidad (Pruebas de resistencia): Verificación del funcionamiento del servicio bajo carga durante un período prolongado.
    • Medición del tiempo de respuesta y del ancho de banda.
  6. Pruebas de seguridad:

    • Verificación de autenticación y autorización.
    • Validación de entrada para prevenir inyecciones SQL, XSS y otras vulnerabilidades.
    • Verificación de la presencia de HTTPS.
  7. Pruebas de datos:

    • Verificación de la corrección de los datos devueltos por el servicio.
    • Verificación de la integridad de los datos en operaciones de creación, actualización y eliminación.
    • Pruebas con grandes volúmenes de datos.
  8. Automatización de pruebas:

    • Automatización de pruebas funcionales rutinarias.
    • Uso de bibliotecas y frameworks para automatizar pruebas de API (Rest Assured, JUnit/TestNG, Pytest, Postman Newman).
    • Configuración de CI/CD para la ejecución automática de pruebas.
  9. Herramientas:

    • Postman, Insomnia (pruebas manuales y automatizadas).
    • Apache JMeter, LoadRunner, Gatling (pruebas de rendimiento).
    • OWASP ZAP, Burp Suite (pruebas de seguridad).
    • Bibliotecas para lenguajes de programación (Rest Assured para Java, Requests para Python, etc.).
  10. Reportes:

    • Registro de defectos encontrados con descripción detallada de pasos, resultados esperados y reales, datos de solicitud/respuesta, estado HTTP y logs.
    • Elaboración de informes de progreso de las pruebas.

Ejemplo de prueba automatizada en Java usando Rest Assured:

import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.equalTo;

class UserServiceTest {

    @Test
    void testGetUserById() {
        int userId = 1;
        given()
            .baseUri("http://api.example.com") // URL base del servicio
            .when()
            .get("/users/" + userId) // Método y endpoint
            .then()
            .statusCode(200) // Verificación del código de estado
            .body("id", equalTo(userId)) // Verificación del campo en la respuesta
            .body("name", equalTo("John Doe")); // Verificación de otro campo
    }

    @Test
    void testCreateUser() {
        String requestBody = "{\n" +
                             "  \"name\": \"Jane Smith\",\n" +
                             "  \"email\": \"jane.smith@example.com\"\n" +
                             "}";

        given()
            .baseUri("http://api.example.com")
            .contentType("application/json") // Establecer tipo de contenido
            .body(requestBody) // Cuerpo de la solicitud
            .when()
            .post("/users") // Método y endpoint para crear
            .then()
            .statusCode(201) // Verificación del código "Creado"
            .body("name", equalTo("Jane Smith"))
            .body("id", org.hamcrest.Matchers.notNullValue()); // Verificación de que se generó un ID
    }
}