Sobes.tech
Junior

Cuéntenos sobre el principio Triple A en las pruebas (Arrange, Act, Assert).

sobes.tech AI

Respuesta de la IA

El principio Triple A (Arrange,Act,Assert) ayuda a estructurar pruebas unitarias para mejorar su legibilidad y mantenibilidad. Divide cada prueba en tres fases claras:

  1. Arrange (Preparación):

    • En esta fase se configura el entorno de prueba, se inicializan los objetos necesarios, se crean fijaciones, mocks o stubs para aislar el componente que se prueba.
    • Se definen los datos de entrada para la función o método probado.
  2. Act (Acción):

    • Se realiza la acción principal que se desea probar.
    • Esto puede ser una llamada al método probado, realizar una operación específica.
  3. Assert (Afirmación):

    • Se verifica el resultado de la acción.
    • Se compara el resultado esperado con el real.
    • Se utilizan métodos de afirmación (assertions) del framework de pruebas (por ejemplo, JUnit, NUnit, pytest) para verificar condiciones.

Ejemplo en Python usando pytest:

# app.py
class Calculator:
    def add(self, a, b):
        return a + b
# test_calculator.py
import pytest
from app import Calculator

def test_add_positive_numbers():
    """
    Prueba de suma de dos números positivos.
    """
    # Arrange
    calculator = Calculator()
    num1 = 5
    num2 = 3
    expected_result = 8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

def test_add_negative_numbers():
    """
    Prueba de suma de dos números negativos.
    """
    # Arrange
    calculator = Calculator()
    num1 = -5
    num2 = -3
    expected_result = -8

    # Act
    actual_result = calculator.add(num1, num2)

    # Assert
    assert actual_result == expected_result, f"Expected {expected_result}, but got {actual_result}"

Ventajas de usar Triple A:

  • Legibilidad: La estructura de la prueba se vuelve más comprensible, facilitando su lectura y entendimiento.
  • Mantenibilidad: La clara separación de fases simplifica hacer cambios y corregir errores en las pruebas.
  • Enfoque: Cada fase se centra en su tarea específica, ayudando a escribir pruebas más dirigidas.
  • Estandarización: La implementación de Triple A en el equipo fomenta la uniformidad en la escritura de pruebas.