Junior
გვითხარით Triple A პრინციპის შესახებ ტესტირებაში (Arrange, Act, Assert).
sobes.tech AI
პასუხი AI-სგან
ტრიპლ ე.ა. პრინციპი (Arrange,Act,Assert) ეხმარება უნიტ-ტესტების სტრუქტურირებაში მათი წაკითხულობისა და შენარჩუნების გასაუმჯობესებლად. იგი თითოეულ ტესტს სამ მკაფიო ფაზად ყოფს:
-
Arrange (მზადება):
- კონფიგურირებს ტესტის გარემოს, ინიციალიზებს საჭირო ობიექტებს, ქმნის фикსტურებს, მოკებს ან სტაბებს ტესტირებადი კომპონენტის იზოლაციისთვის.
- განსაზღვრავს შესასვლელ მონაცემებს ტესტირებადი ფუნქციის ან მეთოდისთვის.
-
Act (მოქმედება):
- ახორციელებს ძირითად მოქმედებას, რომელიც უნდა ტესტირდეს.
- ეს შეიძლება იყოს ტესტირებადი მეთოდის გამოძახება ან გარკვეული ოპერაციის შესრულება.
-
Assert (დადასტურება):
- შემოწმებს მოქმედების შედეგს.
- შედარებს მოსალოდნელ შედეგს რეალურ შედეგთან.
- გამოიყენება ტესტის ჩარჩოს (მაგ., 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
ელოდება შედეგი = 8
# Act
რეალური შედეგი = calculator.add(num1, num2)
# Assert
assert რეალური შედეგი == ელოდება შედეგი, f"ელოდებოდა {ელოდება შედეგი}, მაგრამ მივიღე {რეალური შედეგი}"
def test_add_negative_numbers():
"""
ორი უარყოფითი რიცხვის ჯამის ტესტი.
"""
# Arrange
calculator = Calculator()
num1 = -5
num2 = -3
ელოდება შედეგი = -8
# Act
რეალური შედეგი = calculator.add(num1, num2)
# Assert
assert რეალური შედეგი == ელოდება შედეგი, f"ელოდებოდა {ელოდება შედეგი}, მაგრამ მივიღე {რეალური შედეგი}"
Triple A-ის გამოყენების უპირატესობები:
- კითხულობა: ტესტის სტრუქტურა უფრო გასაგებია, რაც ადვილად წასაკითხია და ხსნადია.
- მოწყობა: ნათელი ფაზების განყოფილება ამარტივებს ცვლილებებს და შეცდომების გამოსწორებას.
- კონცენტრაცია: თითოეული ფაზა კონცენტრირებულია თავის კონკრეტულ დავალებაზე, რაც ეხმარება მიზნობრივი ტესტების დაწერას.
- სტანდარტიზაცია: Triple A-ის დანერგვა გუნდში უზრუნველყოფს ერთგვაროვნებას ტესტების დაწერაში.