Jakie są ograniczenia testów snapshotów?
Według książki Micheala Feathersa 'Praca z zastanym kodem', testy jednostkowe powinny wykonywać się bardzo szybko. Snapshot testing to technika jest dość zasobożerna, testy wykonują się zwykle dłużej niż testy jednostkowe.
Przykładowo, jeśli chcemy sprawdzić, czy aplikacja wyświetla określony tytuł, łatwiej i szybciej zrobimy to testem jednostkowym. Jeśli jednak na stronie znajduje się kilkanaście informacji, lepiej jest wykonać snapshot test. Należy pamiętać jednak o tym, że każdy test wiąże się z zajęciem pewnej ilości miejsca na dysku. Im obszerniejsze mamy dane testowe, tym więcej miejsca zajmą snapshoty.
W niektórych przypadkach wymagają one nieco dłuższej konfiguracji lub dokładniejszych danych testowych. Przykładem mogą być wspomniane wcześniej testy tabeli, w których musimy na przykład zamockować odpowiednią odpowiedź serwisu na żądanie 1 i 2 strony tabeli. Należy unikać duplikacji danych testowych, z uwagi na wspomnianą wcześniej przestrzeń zajmowaną przez pliki snapshotów.
Ograniczeniem tego rodzaju testów jest ich duża wrażliwość na zmiany. Każda najmniejsza zmiana w GUI wiąże się z koniecznością zatwierdzania nowych wersji. Nie używamy w nich asercji, nie mogą one działać w “przybliżeniu”, tak jak testy jednostkowe. Oczekują zawsze, że wygenerowany HTML będzie taki sam, jak był poprzednio.
Podsumowując - testy z użyciem snapshotów to przydatna technika, która pozwala na zachowanie spójności aplikacji. Należy jednak pamiętać o jej ograniczeniach i kosztach.