Sytuacja kobiet w IT w 2024 roku
7.11.20197 min
Marek Konitz
CodiLime

Marek KonitzSoftware EngineerCodiLime

Trendy w QA na 2020 rok

Poznaj najważniejsze trendy w QA, przedstawione na TestCon, czyli największej w Europie konferencji dotyczącej rozwoju i jakości oprogramowania.

Trendy w QA na 2020 rok

Świat IT zmienia się szybko i dynamicznie. To, co jeszcze kilka lat temu było na topie, dzisiaj może już być przestarzałą technologią. Trzeba trzymać rękę na pulsie i być na bieżąco z nowościami i trendami. W tym celu zespół CodiLime wziął udział w TestCon, największej w Europie konferencji poświęconej rozwojowi oprogramowania i jakości, która odbyła się w dniach 15-17 października w Wilnie na Litwie. Poszukiwaliśmy tam najciekawszych pomysłów i przełomowych idei, które będą miały wpływ na QA i testowanie oprogramowania. Poznaj 6 najważniejszych trendów w QA w nadchodzącym 2020 r. — zapraszamy do lektury. 

TestOps — zmiana podejścia do zapewnienia jakości 

Kiedy weźmiemy pod lupę trendy w branży IT, a mówiąc dokładniej - w tworzeniu oprogramowania, Agile i DevOps będą tymi pojęciami, które wysuną się na pierwszy plan. Według 13th Annual State Of Agile Report (2019), 97% respondentów potwierdziło, że ich organizacje stosują zwinne metodyki wytwarzania oprogramowania.

Jednocześnie filozofia DevOps cieszy się coraz większym zainteresowaniem, co wyraźnie pokazują dane z Google Trends. Zarówno praktycy DevOps, jak i metodyk zwinnych, są żywo zainteresowani poprawianiem jakości wytwarzanego oprogramowania. To z kolei sprawia, że testowanie oprogramowania staje się wspólnym obszarem zainteresowania obu grup. 

Trzeba również podkreślić, że dotychczasowe sposoby testowania oprogramowania nie sprawdzają się w przypadku środowisk chmurowych i mikroserwisów. Jednak skuteczne zastosowanie filozofii DevOps w świecie testowania niesie ze sobą mnóstwo wyzwań. Przede wszystkim trzeba zmienić nastawienie i zacząć postrzegać testowanie jako ciągły proces, który idzie w parze z kolejnymi wydaniami oprogramowania. TestOps to nowy termin na określenie takiego podejścia.

Z drugiej strony ciągłe dostarczanie (ang. CD — continuous delivery) prowadzi nieuchronnie ku automatyzacji. Choć wydaje się, że nie jesteśmy jeszcze gotowi na automatyzację wszystkiego, wiele firm kładzie pod nią podwaliny. Wdrażanie filozofii DevOps, automatyzacja wydawania nowych wersji oprogramowania, dbanie o spójność tych wersji, monitorowanie, automatyzacja testów, ulepszenie cyklu rozwoju oprogramowania (ang, Software Development Life Cycle — SDLC) — to wszystko są działania, które w przyszłości pozwolą na znaczącą rozbudowę automatyzacji

Zapewnienie jakości jako wartość dodana dla biznesu 

W świecie biznesu zwykle na pierwszym miejscu stawiany jest zysk, a ten najłatwiej powiązać z wartością dodaną, jaką dla użytkownika stanowią nowe funkcjonalności dodawane przez programistów. W realiach biznesowych wielu inżynierów i managerów QA musiało znacznie rozwinąć swoje umiejętności miękkie. W końcu przekonać zarząd, że wydane na zapewnienie jakości środki się zwrócą, nie jest tak łatwo. QA zawsze było i jest kosztem, który co gorsza, niełatwo jest powiązać z przychodami. 

Na szczęście coraz więcej firm rozumie tę zależność. W dłuższej perspektywie nie zarobimy pieniędzy, oferując oprogramowanie naszpikowane błędami. Klienci są coraz bardziej wymagający, a systemy o wiele bardziej skomplikowane niż dawniej. Nie sztuką jest stracić reputację, a odbudowanie jej jest bardzo czasochłonne i kosztowne, o ile w ogóle możliwe. W obliczu tych faktów, szefowie przedsiębiorstw stają się coraz bardziej skłonni do uwzględnienia odpowiedniego budżetu na zapewnienie jakości. 

Miejsce QA w zespole programistów 

Tradycyjne podejście do wytwarzania oprogramowania zakładało podział ról między programistami i testerami. Gdy programiści skończyli pracę nad oprogramowaniem, było ono przesyłane do testerów, aby sprawdzić, czy nie ma w nim ukrytych bugów i czy można je udostępnić klientom. Natomiast w metodykach Agile nie ma rozróżnienia na te fazy.

Coraz więcej firm, wzorem światowych gigantów, wdraża podejście zwinne i odchodzi od rozróżniania stanowisk programisty i testera, zastępując je stanowiskiem inżyniera oprogramowania (ang. software engineer). Dzięki temu wytwarzany kod powinien być już od początku odpowiedniej jakości. Bardzo restrykcyjne zasady przeglądu kodu i pokrycia kodu testami jednostkowymi na pewno pomagają w osiągnięciu celu. 

Wciąż jednak wyzwaniem pozostaje odpowiednie zaplanowanie i nadzór nad wyższymi poziomami testów. O ile pisanie testów jednostkowych i integracyjnych zwykle udaje się w miarę intuicyjnie wpleść w czynności programistyczne, o tyle bardziej zaawansowane testy systemowe czy niefunkcjonalne (np. bezpieczeństwa, wydajnościowe), mogą stanowić problem. Czy uwzględniać je w sprincie? A może przeznaczać na nie osobny sprint? Kto ma je robić?

No właśnie — odpowiedź na te pytania jest szczególnie istotna. Ktoś musi przecież czuwać nad tym, aby produkt spełniał wymagania biznesowe, a także zaprojektować i utrzymywać testy całościowe (end-to-end). Powinien to być proces ciągły, prowadzony od samego początku projektu. W takim podejściu do sprawy specjaliści QA nie powinni się obawiać o swoją przyszłość, a jedynie zadbać o własny rozwój, mając na uwadze, że coraz więcej elementów testów będzie zautomatyzowanych. 

Niestety założenie, że zespół jako całość i każdy z jego członków z osobna są odpowiedzialni za jakość, bywa często interpretowane nieprawidłowo. Jeśli wszyscy muszą pracować nad zapewnieniem jakości podczas samego procesu tworzenia oprogramowania, to testerzy nie są już przecież potrzebni. Programiści mogą przejąć ich funkcje i nie ma potrzeby wyznaczania dedykowanego specjalisty ds. zapewnienia jakości. Takie podejście to prosta droga do wytworzenia oprogramowania pełnego błędów i narastania frustracji w zespole

Podczas konferencji TestCon wielu prelegentów zauważyło, że nie takie były intencje autorów manifestu Agile. Firma nie może mówić o zwinności, jeśli jej metody testowania są błędne. Wróćmy więc do prawdziwych założeń Agile. W zespole programistów powinna być osoba pełniąca funkcję testera, współpracująca z zespołem w celu zapewnienia bezproblemowych wydań nowych wersji oprogramowania. Tak więc nawet jeśli nie ma samego stanowiska testera, zawsze powinna być wyznaczona osoba zarządzająca zapewnieniem jakości oprogramowania.

Sztuczna inteligencja w testowaniu oprogramowania 

Sztuczna inteligencja okazała się bardzo przydatna w prawie każdej dziedzinie lub branży, w której jest wykorzystywana. Nic więc dziwnego, że próbuje się ją również stosować do rozwiązywania problemów związanych z QA. Sztuczna inteligencja może znacznie pomóc w przeprowadzaniu testów z perspektywy użytkownika końcowego, ponieważ jest w stanie identyfikować potencjalne problemy w podobny do ludzi sposób.

Temat ten został omówiony w prezentacji na temat testowania Candy Crush Saga. W tym przypadku testerzy nie mają żadnych narzędzi, które mogłyby pomóc im zidentyfikować elementy, takie jak tekst lub przyciski. Widzą tylko grafikę. Sztuczna inteligencja może wykrywać takie elementy, dzięki czemu cały proces testowania jest bardziej efektywny. AI może również porównać wyświetlany obraz i obraz referencyjny w celu wykrycia różnic między nimi, np. kolor tła jest wyciszony, a nie powinien być, lub dany przycisk powinien być wyszarzony, a nie jest. Algorytm AI może również łatwo określić, czy tekstura jest poprawnie renderowana, w przeciwieństwie do ludzkiego oka, które ma trudności w rozróżnieniu różnych elementów interfejsu w zetknięciu z kolorowymi grafikami. 

Doświadczenie użytkownika w centrum uwagi 

Usability to zdecydowanie gorący temat zarówno z punktu widzenia biznesu, jak i testowania. W World Quality Report 2018-2019 zadowolenie użytkowników końcowych zostało po raz pierwszy uznane za najwyższy priorytet w zapewnianiu jakości oprogramowania.

W tym kontekście szczególnie interesująca była jedna z prezentacji, w której przedstawiono technikę testowania zwaną testami korytarzowymi (ang. hallway testing). Testy UX są wykonywane przez losowo wybraną grupę osób, które otrzymują proste zadania do wykonania, nie mając żadnej wiedzy o produkcie. To podejście jest ciekawe i wartościowe, ponieważ losowi użytkownicy wykonają swoje zadanie w zupełnie inny sposób, niż zrobiliby to deweloperzy.

Podejście do rozwiązywania problemów może się znacząco różnić u różnych ludzi. Często te same rzeczy są postrzegane zupełnie inaczej przez różne osoby. W ten sposób można wykryć błędy w miejscach, o których testowaniu nikt by nie pomyślał. Tę technikę można zastosować do sprawdzenia dowolnego interfejsu użytkownika, a także projektu interfejsu API. W takim scenariuszu programiści korzystający z interfejsu API sami są traktowani jak użytkownicy końcowi.

Testowanie korytarzowe jest niezwykle przydatne, jeśli chodzi o zadowolenie użytkownika końcowego, które jest obecnie najważniejszym priorytetem w procesie tworzenia oprogramowania. 

Czy Cypress zastąpi Selenium? 

Ostatni trend to raczej pytanie niż prognoza. Obecnie Selenium jest uważane za standard branżowy, jeśli chodzi o automatyzację aplikacji internetowych w celu przeprowadzenia testów. Dzięki Selenoid, następcy Selenium Hub, można uruchomić wiele serwerów Selenium z wieloma różnymi wersjami przeglądarek zamkniętych w kontenerach Dockera. Selenium obsługuje wiele przeglądarek i platform oraz umożliwia rozproszone testowanie. W ten sposób uzyskujemy elastyczność i skalowalność. Zastosowanie Selenoid jest dobrym przykładem tego, w jaki sposób trend wirtualizacji wszystkiego i stosowanie lekkich kontenerów wpłynęły na to, jak realizowany jest proces zapewnienia jakości w IT

Z drugiej strony Cypress jest narzędziem do testowania stron internetowych komunikujących się z przeglądarką w JavaScript. Służy również do pisania testów w JS. Ma pewne oczywiste zalety w stosunku do Selenium: jest szybszy i prostszy, chociaż mniej uniwersalny. Pozostaje kwestią otwartą, czy Cypress ostatecznie wyprze Selenium. Na razie Selenium trzyma się dobrze, podczas gdy Cypress to gorący temat wzbudzający zainteresowanie społeczności QA. 

Podsumowanie 

Jak widać, konferencja TestCon była dobrą okazją, aby poznać najnowsze trendy QA. Rok 2020 zapowiada się interesująco i może przynieść wiele istotnych zmian w działaniach związanych z zapewnieniem jakości. Możesz mieć pewność, że w CodiLime będziemy je uważnie śledzić i informować na bieżąco o najciekawszych i najbardziej obiecujących ideach i pomysłach. 

<p>Loading...</p>