Duże zmiany i brak testów

Duże zmiany i brak testów
Dokonywanie zmian w olbrzymim repozytorium istniejącego i działającego na produkcji kodu, to zawsze poważne ryzyko. Co zrobić, aby je zminimalizować, a jednocześnie nie wpaść w pułapkę tysięcy testów weryfikujących potencjalny regres jakości?

Czy kiedykolwiek obawiałeś się, że twoja niewielka zmiana w gigantycznej bazie utrzymywanego kodu może spowodować, że cały software rozpadnie się jak domek z kart? Czy przeglądałeś kod 10 razy, opisałeś je testami, przygotowałeś mnóstwo danych testowych, przetestowałeś pod kątem wydajności, sprawdzałeś logi produkcji co minutę? I czy dobrze spałeś w nocy pomimo tych wszystkich środków ostrożności?

Wszyscy tam byliśmy i znamy ten ból.

Rozwiązanie tego problemu przedstawił Dominik Kapusta (Spartez) w prezentacji "Big changes and no tests" wygłoszonej podczas AADays 2019. Bazuje ona na projekcie dla jednego z największych produktów chmurowych Atlassian, w którym wymagane było znalezienie sposobu na zmniejszenie ryzyka awarii i regresji wydajności podczas zmian.

To rozwiązanie wymagane od programisty, to "opakowanie" refaktoryzowanego kodu specjalną usługą. „Zmiana kodu” może polegać na przykład na zastąpieniu starej metody jej nową, refaktoryzowaną wersją. Usługa zapewnia wówczas płynne wdrożenie zmiany poprzez:

  • Alarmowanie, jeśli nowa metoda jest wolniejsza lub generuje wyjątki;
  • Umożliwienie powrotu do starej metody w przypadku jakichkolwiek problemów;
  • Zapewnienie, że obie metody zwrócą te same dane;
  • Zapewnienie szybszej pętli sprzężenia zwrotnego.

A to wszystko bez projektowania testów.
Dominik pokazuje jak:

  • Refaktoryzować kilkadziesiąt fragmentów kodu równolegle, nie niszcząc całości;
  • Szybko wykrywać regres wydajności i ich źródła;
  • Pozwolić niedoświadczonym programistom podejmować ryzykowne wyzwania związane z krytycznymi komponentami.

Zobacz prezentację.

Więcej o wystąpieniu: https://aadays.pl/speakers/dominik-kapusta/

To powinno Cię zainteresować