fbpx

Jak ułatwić testowanie?

Created with Sketch.

Jak ułatwić testowanie?

Dlaczego jeden program testujesz łatwo i szybko, a z innym się męczysz i nawet jak skończysz testy nie jesteś pewien czy działa poprawnie? Zależy to od wielu czynników, które ogólnie można określić pod pojęciem 'testowalność'.

Jeśli chciałbyś aby Twoja praca była łatwiejsza, to podczas następnego omawiania zadań, zadbaj o literkę T z INVEST, o którym pisał Wojtek parę dni temu. Poniżej wymienię główne czynniki wpływające na testowalność:

  • Kontrolowalność (controllability) – Czy masz pełną kontrolę nad systemem i środowiskiem, w którym testujesz? Czy może oprócz Ciebie korzysta ze środowiska cały zespół i wzajemnie sobie przeszkadzacie?
  • Obserwowalność (observability) – Czy wiesz, co się dzieje w systemie? Masz dostęp do logów? debuggera?
  • Izolowalność (isolateability) – Czy jesteś w stanie przetestować dany fragment w izolacji od reszty systemu? Czy może jedyna możliwość to przetestowanie całego systemu?
  • Modularność (modularity)- Czy wiesz, jaka jest odpowiedzialność poszczególnych komponentów i jak ją przetestować?
  • Złożoność (complexity) – Oczywista oczywistość, im coś jest bardziej złożone lub skomplikowane tym łatwiej o pomyłkę. Jeśli nie widać ciągu przyczynowo – skutkowego między wejściem a wyjściem, wiedz, że będzie ciężko 😉
  • Zrozumiałość (understandability) – czy istnieje dokumentacja i wiesz, co dany komponent ma robić?
  • Automatyzacja (automatability) – czy jesteś w stanie oskryptować dany fragment oprogramowania na odpowiednim poziomie? W przypadku unit testów jednym z głównych czynników jest używanie wzorca Invertion of Control, który pozwala na użycie odpowiednich test doubles. Podobnie jest w przypadku testów na poziomie UI – czy np. jesteś w stanie użyć jednoznacznych selektorów Selenium?

Wymieniłem główne czynniki wpływające na łatwość testowania. A jak Ty ułatwiasz sobie pracę?