Sobes.tech
Middle+

Šta biste uradili ako u projektu nema testova, a klijent ne želi da troši vreme i novac na njihovu izradu?

sobes.tech АИ

Одговор од АИ

Počeću sa uvođenjem osnovnih testova za kritične komponente i poslovnu logiku, koristeći dostupne resurse (na primer, slobodno vreme programera između zadataka). Pokazaću klijentu vrednost testova, ilustrujući kako oni sprečavaju regresije i ubrzavaju razvoj na duži rok. Postepeno ću proširivati pokrivenost testovima, fokusirajući se na oblasti sa najvećim rizikom. Paralelno ću predlagati uvođenje automatizovanih alata za statičku analizu koda i linting radi poboljšanja kvaliteta bez većih troškova.

# Primer najosnovnijeg jedinicnog testa koristeći unittest
import unittest

class MyMath:
    def add(self, a, b):
        return a + b

class TestMyMath(unittest.TestCase):

    def test_add(self):
        # Provera osnovne funkcionalnosti
        self.assertEqual(MyMath().add(2, 3), 5)
        # Provera sa negativnim brojevima
        self.assertEqual(MyMath().add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()
# Primer korišćenja pytest - koncizniji okvir
def add(a, b):
    return a + b

def test_add_positive():
    # Jednostavan test
    assert add(2, 3) == 5

def test_add_negative():
    assert add(-1, 1) == 0

Koristiću argumentaciju zasnovanu na smanjenju rizika:

Rizik za posao Kako pomažu testovi
Greške u produkciji Otkrivaju greške u ranim fazama
Dugačka debugovanja Ubrzavaju pronalaženje i ispravljanje problema
Složenost promena Obezbeđuju sigurnost pri refaktoringu i dodavanju funkcija
Smanjena brzina razvoja Sprečavaju regresije, omogućavajući brži napredak
Šteta reputaciji zbog padova Povećavaju stabilnost i pouzdanost proizvoda

Predložiću uvođenje alata za kontinuiranu integraciju koji će automatski pokretati napisane testove pri svakom commitu, omogućavajući brzo otkrivanje problema.

# Primer .gitlab-ci.yml za pokretanje pytest testova
stages:
  - test

unit-tests:
  stage: test
  image: python:3.9
  script:
    - pip install -r requirements.txt
    - pytest # Pokretanje testova

U slučaju kategorijskog odbijanja od strane klijenta da uloži u testove, dokumentovaću rizike povezane sa njihovim nedostatkom, kako bih smanjio odgovornost tima u slučaju problema. Međutim, fokusiraću se na postepeno uvođenje i demonstraciju vrednosti testova.