Sobes.tech
Junior

Πείτε μας για την αρχή Triple A στις δοκιμές (Arrange, Act, Assert).

sobes.tech AI

Απάντηση από AI

Η αρχή Triple A (Arrange,Act,Assert) βοηθά στη δομική οργάνωση των μονάδων δοκιμών για βελτίωση της αναγνωσιμότητας και της διαχειρισιμότητάς τους. Διαχωρίζει κάθε δοκιμή σε τρεις σαφείς φάσεις:

  1. Arrange (Προετοιμασία):

    • Ρυθμίζει το περιβάλλον δοκιμής, αρχικοποιεί τα απαραίτητα αντικείμενα, δημιουργεί σταθερές, μόντες ή stubs για απομόνωση του δοκιμαζόμενου συστατικού.
    • Ορίζονται τα εισερχόμενα δεδομένα για τη δοκιμαζόμενη λειτουργία ή μέθοδο.
  2. Act (Ενέργεια):

    • Εκτελείται η κύρια ενέργεια που πρέπει να δοκιμαστεί.
    • Αυτό μπορεί να είναι η κλήση της δοκιμαζόμενης μεθόδου, η εκτέλεση μιας συγκεκριμένης λειτουργίας.
  3. Assert (Έλεγχος):

    • Ελέγχεται το αποτέλεσμα της ενέργειας.
    • Συγκρίνεται το αναμενόμενο αποτέλεσμα με το πραγματικό.
    • Χρησιμοποιούνται μέθοδοι επιβεβαίωσης (assertions) από το πλαίσιο δοκιμών (π.χ., JUnit, NUnit, pytest) για τον έλεγχο των συνθηκών.

Παράδειγμα σε Python με χρήση του 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():
    """
    Δοκιμή πρόσθεσης δύο θετικών αριθμών.
    """
    # 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():
    """
    Δοκιμή πρόσθεσης δύο αρνητικών αριθμών.
    """
    # 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}"

Πλεονεκτήματα της χρήσης του Triple A:

  • Αναγνωσιμότητα: Η δομή της δοκιμής γίνεται πιο κατανοητή, διευκολύνοντας την ανάγνωσή της.
  • Διαχειρισιμότητα: Ο σαφής διαχωρισμός των φάσεων απλοποιεί τις αλλαγές και την διόρθωση σφαλμάτων στις δοκιμές.
  • Εστίαση: Κάθε φάση εστιάζει στη συγκεκριμένη της εργασία, βοηθώντας στη συγγραφή πιο στοχευμένων δοκιμών.
  • Τυποποίηση: Η ενσωμάτωση του Triple A στην ομάδα συμβάλλει στην ομοιομορφία στη συγγραφή δοκιμών.