Krótkie wprowadzenie do testów mutacyjnych

W ramach zabawy z lottomatem piszemy bardzo dużo testów. Pytanie, czy testy te są dobre. Jednym ze sposobów sprawdzenia, czy nasze testy są dobre, jest podmienienie fragmentów kodu. Jeżeli testy rzeczywiście coś testują, to taka podmiana powinna zostać wykryta. Testy nie powinny być zaliczone. To podejście nazywamy testami mutacyjnymi od zmian, jakie przeprowadzają one w […]

Nowe wideo o lambdach i testowaniu

Zapraszam do obejrzenia Powinno już być lepiej z dźwiękiem i obrazem 🙂 Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. W takim przypadku jest, to zaznaczone. Artykuły są dostępne na licencji CC-BY. Jeżeli spodobał ci się ten wpis, to podziel się nim z innymi lub wesprzyj autora.

Jeszcze raz o kluczach naturalnych

Tym razem w kontekście wydajności. Jednym z zarzutów podnoszonych przy okazji dyskusji o kluczach naturalnych opartych o typ tekstowy jest wydajność. Można by się spierać czy klucz sztuczny oparty o typ INT jest lepszym rozwiązaniem niż klucz oparty o typ VARCHAR/CHAR/TEXT. Takiego sporu jednoznacznie rozstrzygnąć nie można. Warto jednak przyjrzeć się argumentacji dotyczącej wydajności. By […]

DBUnit i dane w formacie JSON

W standardowej dystrybucji DBUnit nie ma możliwości załadowania danych w formacie JSON. Nie mi rozsądzać czy to dobrze czy to źle, ale jako, że nie ma to będzie. Do prawidłowego działania wymagana jest biblioteka google-gson: Listing 1. Konfiguracja w pom.xml com.google.code.gson gson 2.2.1 Oraz klasa narzędziowa z poprzedniego wpisu. Listing 2. Klasa JsonDataSet public class […]

Prosty helper do ładowania danych

Czasami potrzebujemy w ramach testów na szybko wrzucić coś do bazy danych. Jeżeli korzystamy z DBUnit to mamy kilka opcji – XML, CSV, Excel… Jeżeli nie chcemy tworzyć plików zawsze możemy użyć DefaultDataSet i ręcznie wypełnić go danymi. Jest to wygodne rozwiązanie jeżeli mamy mało danych albo nie chcemy utrzymywać dodatkowych plików. minusem jest dość […]

Dlaczego nie piszemy testów – obserwacja

W książkach poświęconych jakości kodu, testowaniu i metodykom zwinnym jako główną przyczynę braku testów wymienia się lenistwo programistów, olewactwo i niechcicę. Pozwolę sobie napisać kilka słów na ten temat. Od pewnego czasu w związku ze zmianą płatnika ZUS przekazuję swoje obowiązki innym programistom. Przy okazji mam możliwość obserwowania tego jak pracują i w jaki sposób […]

Wady użycia mocków z mock-frameworków

Idzie sobie transakcja z banku. Trafia ona ci na moje biurko i muszę ją zwalidować. Biorę ci ja JSR-303 i przepuszczam ci ja transakcję przez tą zabawkę… Rzecz w tym, że mam kilka własnych walidatorów, które korzystają z danych pobranych z bazy. Dane sa pobierane raz i zapisywane w takim pseudo cache, który potrafi odpowiedzieć […]

Testy dla wielu danych w TestNG

Sytuacja hipotetyczna. Mamy sobie jakiś interfejs i chcemy przetestować do dość dokładnie. Rzecz w tym, że dane wejściowe muszą spełniać dużo warunków względnie mogą zostać dostarczone w różnych konfiguracjach. Jeżeli chcielibyśmy napisać oddzielny test dla każdego zestawu danych to mówiąc obrazowo byśmy się zajebali. Oczywiści da się to zrobić jak zestawów jest niewiele np. metoda […]

Praca z kodem zastanym – cz. I podział kodu

Każdy z nas prędzej czy później będzie musiał poświęcić swój czas na pracę z kodem zastanym. Angielskojęzyczna część branży ma nawet taki ładny termin „Legacy Code”, który nie obejmuje jednak wszystkiego o czym chcę pisać. W tym miejscu zajmiemy się podziałem kodu zastanego na kilka sposobów. Każdy z nich będzie opisywał kod w innym kontekście […]

Dwa słowa o wydajności Vaadin

Jak rozmawiam z kimś o Vaadin to pada zazwyczaj pytanie „co z wydajnością”. Otóż odpowiedź na to pytanie jest dość dobrze znana i brzmi „to zależy”. Vaadin działa w trochę inny sposób niż typowe, nawet ajaxowe, aplikacje webowe. Ma to związek z jego architekturą i utrzymywaniem aktualnego stanu okna również po stronie serwera. Zatem każda […]