Sobes.tech
Middle+

Was würden Sie tun, wenn im Projekt keine Tests vorhanden sind und der Kunde keine Zeit und Geld für deren Entwicklung aufwenden möchte?

sobes.tech KI

Antwort von AI

Ich werde damit beginnen, grundlegende Tests für kritische Komponenten und die Geschäftslogik zu implementieren, unter Nutzung vorhandener Ressourcen (z.B. die freie Zeit der Entwickler zwischen den Aufgaben). Ich werde dem Kunden den Wert der Tests demonstrieren, indem ich zeige, wie sie Regressionen verhindern und die Entwicklung langfristig beschleunigen. Ich werde die Testabdeckung schrittweise erweitern, mit Fokus auf risikoreiche Bereiche. Parallel dazu schlage ich die Einführung automatisierter Tools für statische Code-Analyse und Linting vor, um die Qualität ohne erhebliche Kosten zu verbessern.

# Beispiel für einen einfachen Unittest mit unittest
import unittest

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

class TestMyMath(unittest.TestCase):

    def test_add(self):
        # Überprüfung der Grundfunktionalität
        self.assertEqual(MyMath().add(2, 3), 5)
        # Überprüfung mit negativen Zahlen
        self.assertEqual(MyMath().add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()
# Beispiel für pytest - ein prägnanteres Framework
def add(a, b):
    return a + b

def test_add_positive():
    # Einfache Behauptung
    assert add(2, 3) == 5

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

Ich werde eine Argumentation verwenden, die auf Risikominderung basiert:

Risiko für das Geschäft Wie helfen Tests?
Fehler in der Produktion Erkennen Fehler frühzeitig
Längere Debugging-Zeiten Beschleunigen die Fehlersuche und -behebung
Komplexität bei Änderungen Bieten Sicherheit bei Refactoring und Funktionsergänzungen
Verringerung der Entwicklungsgeschwindigkeit Verhindern Regressionen, ermöglichen schnelleren Fortschritt
Reputationsschäden durch Ausfälle Erhöhen Stabilität und Zuverlässigkeit des Produkts

Ich schlage die Einführung von Continuous-Integration-Tools vor, die automatisch die geschriebenen Tests bei jedem Commit ausführen, um Probleme schnell zu erkennen.

# Beispiel für .gitlab-ci.yml zum Ausführen von pytest
stages:
  - test

unit-tests:
  stage: test
  image: python:3.9
  script:
    - pip install -r requirements.txt
    - pytest # Tests ausführen

Falls der Kunde kategorisch auf Investitionen in Tests verzichtet, werde ich die Risiken, die mit deren Fehlen verbunden sind, dokumentieren, um die zukünftige Verantwortung des Teams im Falle von Problemen zu minimieren. Ich werde mich jedoch auf eine schrittweise Einführung und die Demonstration des Wertes von Tests konzentrieren.