Sobes.tech
Junior

Vertel ons over het Triple A-principe in testen (Arrange, Act, Assert).

sobes.tech AI

Antwoord van AI

Het Triple A-principe (Arrange,Act,Assert) helpt bij het structureren van unittests om de leesbaarheid en onderhoudbaarheid te verbeteren. Het verdeelt elke test in drie duidelijke fasen:

  1. Arrange (Voorbereiding):

    • In deze fase wordt de testomgeving ingesteld, worden benodigde objecten geïnitialiseerd, worden fixtures, mocks of stubs gemaakt om de geteste component te isoleren.
    • Inputgegevens voor de geteste functie of methode worden vastgesteld.
  2. Act (Actie):

    • De hoofdactie die getest moet worden, wordt uitgevoerd.
    • Dit kan een aanroep van de geteste methode of het uitvoeren van een bepaalde operatie zijn.
  3. Assert (Bevestiging):

    • Het resultaat van de actie wordt gecontroleerd.
    • Het verwachte resultaat wordt vergeleken met het werkelijke resultaat.
    • Assert-methoden uit het testframework (bijvoorbeeld, JUnit, NUnit, pytest) worden gebruikt om condities te controleren.

Voorbeeld in Python met 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():
    """
    Test het optellen van twee positieve getallen.
    """
    # 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():
    """
    Test het optellen van twee negatieve getallen.
    """
    # 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}"

Voordelen van het gebruik van Triple A:

  • Leesbaarheid: De structuur van de test wordt duidelijker, wat het lezen en begrijpen vergemakkelijkt.
  • Onderhoudbaarheid: Duidelijke scheiding van fasen maakt het makkelijker om wijzigingen aan te brengen en fouten te corrigeren.
  • Focus: Elke fase richt zich op zijn specifieke taak, wat het schrijven van gerichte tests ondersteunt.
  • Standaardisatie: Het implementeren van Triple A binnen het team bevordert uniformiteit in het schrijven van tests.