Monolit mentalny: Testy E2E

Głowa z monolitem w środku

W ostatnich latach architektury usługowe, a w szczególności mikrousługi, zdobyły ogromną popularność, tymczasem podejście do testów end-to-end (E2E) często pozostało bez zmian. Słyszymy, że testy sprawdzające działanie całego systemu są kluczowe w procesie tworzenia oprogramowania, zwłaszcza przy architekturach rozproszonych. Pojawiają się stwierdzenia w stylu „Musimy udowodnić, że system działa jako całość. Kiedyś mieliśmy monolit i testy E2E, teraz mamy niezależne mikrousługi, więc testy E2E są tym bardziej potrzebne”.

Dokumentacja nie jest wymaganiem

W swoim życiu zawodowym wielokrotnie spotkałem się z wytycznymi wedle których ,,każdy system musi posiadać dokumentację”. Zwykle na podstawie tak sformułowanych wymagań ktoś z zespołu przygotowywał dokument, który nazywano dokumentacją. Nierzadko był to wymuszony dokument, którego istnienie niczego nie zmieniało w kontekście użyteczności systemu i niczego nie ułatwiało.

W tym poście chciałbym przedstawić moje trzypunktowe podejście do zadań i problemów związanych z dokumentacją.

Dodatkowe checki w checkstyle

Code Formatting

Checkstyle to potężna biblioteka, która nie tylko pozwala ustandaryzować formatowanie kodu w projekcie, ale także wyłapać niektóre błędy w programie (np. czy implementując metodę equals zaimplementowano także metodę hashcode) oraz design kodu (np. maksymalny rozmiar metod lub złożoność cyklomatyczną). To, że narzędzia statycznej analizy kodu są niezwykle przydatne, traktuję jako pewnik. Warto ich używać, nawet […]

Metryki jako zmienne publiczne, czy to złe?

Na tym blogu zdarza się, że są poruszane tematy tabu. Tym razem przyszedł czas na statyczne publiczne zmienne. Wiele już zostało powiedziane na temat zła, które wyrządziło światu ich stosowanie. W tym poście chciałbym przeanalizować szczególny przypadek ich użycia, a mianowicie metryki. Metryki, wszędzie metryki W poście Mierz logi na zamiary Bartek opisał jak istotne […]

O lokalności LocalDateTime

W kłopoty wpędza cię nie to, czego nie wiesz, lecz to, co wiesz, a co nie jest prawdą. — Will Rogers Podstawy których nie znają seniorzy Wszyscy wiemy jak ważnym zagadnieniem jest dobre nazewnictwo zmiennych, funkcji, klas i wszystkiego czym operujemy. Jednym z popularniejszych technik refaktoryzacji jest zmiana nazwy. Programiści spędzają sporo czasu nad wymyślaniem […]

Wzorce pracy zdalnej

W ostatnim czasie praca zdalna stała się coraz bardziej rozpowszechniona. Sam pracowałem przez rok jako satelita, a wcześniej także przez rok w pełni rozproszonym zespole w różnych strefach czasowych. Aktualnie pracuję w Allegro, gdzie przez fakt posiadania biur w kilku miastach, elementy pracy zdalnej są na porządku dziennym. Zanim przejdziemy do wzorców, określmy kontekst zespołu […]

Dlaczego scrum jest passé?

Od dłuższego czasu obserwuję, że scrum jest w odwrocie. Nie chodzi o to, że jest coraz mniej popularny. Wręcz przeciwnie, stał się buzzwordem. Pojawia się w prawie każdym ogłoszeniu o pracę (tuż obok młodego zespołu) tracąc swoje pierwotne znaczenie. W moim otoczeniu ludzie wykazują mniej entuzjazmu, aby go wdrażać – częściej chcą go modyfikować i […]

Optional jako pole i co mi zrobisz?

Od wprowadzenia klasy Optional w JDK 8 minęło już sporo czasu. Sporo też napisano o tym jaki i gdzie jej używać, co jest dobrą praktyką a co złą. Przykład tego można znaleźć w artykule Optional Anti-Patterns. Ale czy to wszystko ma sens? Zgadzam się z wieloma postawionymi tam tezami. Chciałem jednak wejść w polemikę z […]