Strona korzysta z plików cookie w celu realizacji usług zgodnie z Polityką Cookies. Możesz samodzielnie określić warunki przechowywania lub dostępu plików cookie w Twojej przeglądarce.

Rozumiem

Rola testów automatycznych w procesie CI/CD

W celu zapewnienia najwyższej jakości oprogramowania, systemy wytwarzane w BSB są realizowane zgodnie z praktyką procesu CI/CD. Przeznaczeniem stosowania CI jest wypracowanie spójnego i zautomatyzowanego sposobu budowania i testowania aplikacji. Kluczowym elementem w procesie są testy automatyczne. Jaka jest ich rola w CI/CD?

Celem testów automatycznych w procesie CI/CD jest jak najszybsze dostarczenie informacji odnośnie jakości aplikacji. Testy automatyczne uruchamiane są przy każdej wprowadzanej zmianie w oprogramowaniu, a rezultat z ich wykonywania wpływa na decyzję wprowadzenia tych zmian. Pozytywne wykonanie wszystkich testów potwierdza poprawność działania funkcjonalności systemu oraz jakość wytwarzanego kodu oprogramowania, natomiast negatywne  wykonanie chociażby 1 testu blokuje możliwość wprowadzenia zmian do oprogramowania. Wykonywanie testów automatycznych w procesie CI/CD utrzymuje produkt w wysokiej jakości już na etapie jego wytwarzania, a rozwijanie procesu o kolejne testy zwiększa jego jakość. Dodatkowo w przypadku znalezienia błędu przez testy automatyczne widoczne jest, w której dokładnie zmianie nastąpił regres.

Wykorzystywane narzędzia w procesie CI/CD

Do utrzymywania wysokiej jakości produktów w BSB stosowane są dedykowane narzędzia. Najważniejsze z nich to:

  • Serenity
  • Selenium
  • Docker
  • REST assured
  • Sonnarqube
  • JUnit5
  • Azure
  • Jenkins

Wymagania dotyczące testów automatycznych w procesie CI/CD

Używając testów w CI/CD największy nacisk kładzie się na ich szybkość, stabilność, łatwość utrzymania oraz dopisywania kolejnych. Wszystkie wymienione wymagania przekładają się na konkretne wymagania co do samego kodu testów automatycznych.

Szybkość testów:

Często stosowaną praktyką jest, że proces CI/CD powinien trwać do 30minut. Najlepszym sposobem spełnienia tego wymagania od strony testów automatycznych jest nie używanie zbędnych oczekiwań oraz przeprowadzanie ich wielowątkowo. Stosowanie wielowątkowości pozwala na znaczne ograniczenie czasu wykonywania testów lub na wykonanie większej liczby testów w tym samym czasie.

Stabilność testów:

Używanie sprawdzonych i stabilnych technologii np. Java, Selenium, JUnit pozwala na stabilne działanie testów na dowolnym środowisku. Poprzez stosowanie odpowiedniej konfiguracji jesteśmy w stanie ten sam kod uruchomić na dowolnej stacji roboczej testując aplikację na dowolnym środowisku poprzez wybraną przeglądarkę. Wykorzystywanie otwartego języka oprogramowania umożliwia na szybkie dodanie do projektu nowych komponentów, które pozwolą na weryfikację dodatkowych obszarów aplikacji.

Utrzymywanie i rozwijanie:

Stosowanie wzorców projektowych jak np. Page Object Pattern, nie duplikowanie kodu oraz stosowanie metodyki BDD sprawia, że w łatwy sposób możemy rozwijać testy poprzez dopisanie kolejnych danych testowych jak i same testy. Stosowanie wymienionych praktyk nie tylko wpływa na łatwiejsze rozwijanie testów, ale i na późniejsze ich utrzymanie dzięki czemu stają się one bardziej uniwersalne i mogą być stosowane wielokrotnie.