Eran Kinsbruner
Applause
Eran KinsbrunerSoftware Testing Evangelist @ Applause

Automatyzacja testów oparta na machine learningu - przyszłość QA

Sprawdź, jak rysuje się przyszłość automatyzacji testów opartej na uczeniu maszynowym.
23.01.20205 min
Automatyzacja testów oparta na machine learningu - przyszłość QA

Transformacja tworzenia i testowania oprogramowania dopiero się zaczęła. Wkraczając w nową dekadę, manualne i automatyczne testowanie pozostaną aktualne, ale mogą zacząć ustępować miejsca sztucznej inteligencji (AI) i uczeniu maszynowemu (ML).

W ostatnich latach organizacje chciały jak najszybciej dostarczać klientom produkty wysokiej jakości. Doprowadziło to do przejścia z metodologii Waterfall na Agile i DevOps. Aby odnieść sukces w kulturze DevOps, organizacje potrzebują wysokiego stopnia automatyzacji, co tyczy się również testów.

Podczas gdy te same organizacje znalazły sposoby na budowanie i rozwijanie oprogramowania w mniejszych porcjach (np. w sprintach, squad team oraz innych procesach DevOps), to element kontroli jakości zbyt mocno się nie zmienił.

To właśnie tu znajdą zastosowanie nowe algorytmy sztucznej inteligencji i uczenia maszynowego.

Ograniczenia tradycyjnej automatyzacji testów

Do niedawna QA i programiści korzystali z głównych frameworków do automatyzacji testów typu open source, na przykład, Selenium, Appium i innych rozwiązań skryptowych opartych na kodzie. Mają one ustalone najlepsze praktyki, duże bazy wiedzy i dokumentację, ale też kilka wad:

  • Wymagają wysokich umiejętności programowania w Java, JavaScript lub innym języku
  • Z biegiem zmian w aplikacji, wydają się niestabilne
  • Korzystają z  frameworków, które są mocno zintegrowane ze środowiskiem deweloperskim i inżynierów testów (np. IntelliJ, Eclipse itp.)


Biorąc pod uwagę powyższe, zespoły QA szukają łatwiejszych i stabilniejszych rozwiązań, oferujących krótszy czas uzyskania wartości i feedbacku. Dla wielu z nich odpowiedzią jest automatyzacja testów, oparta na uczeniu maszynowym. Należy jednak pamiętać, że nie jest ona lekiem na wszystko. Kiedy jest zatem odpowiedni czas na zastosowanie automatyzacji testów opartej na uczeniu maszynowym, a kiedy należy trzymać się tradycyjnych metod?

To zależy od problemu, jaki musimy rozwiązać. 


Kategoria

Tradycyjna automatyzacja

Automatyzacja oparta na uczeniu maszynowym

Tworzenie testów

Definiuje przepływy manualne w stylu BDD

Zapisuje przepływy testowe (zwykle bez kodowania)

Przeprowadzanie testów

Zmiany wymagane proaktywnie

Samo naprawianie/korekta obsługiwane automatycznie

Dojrzałość

Wysoki (zawarte są jasne wytyczne i dokumentacja)

Kształtujący się (web rozwinięty bardziej od mobile)

Umiejętności testera

Średnio-zaawansowane

Niskie

Środowisko testowe

IDE

ML UI

Typy testów

API, testowanie obciążenia, testowanie funkcjonalne

W większości testowanie funkcjonalne i API

Typy aplikacji

Wszystkie typy

W większości web


Przykłady użycia automatyzacji testów opartej na uczeniu maszynowym

Organizacje nie mogą i nie powinny całkowicie przenosić strategii testowania na testy oparte na ML. Zespoły programistów i testerów powinny ocenić, kiedy takie testy są odpowiednie, uwzględniając przy tym KPI i wskaźniki sukcesu. Poniżej przedstawiono 4 najpopularniejsze przypadki zastosowania automatyzacji testów opartej na uczeniu maszynowym:

  • Eliminacja niestabilnych skryptów testowych opartych na kodzie
  • Zapewnianie testerom biznesowym alternatyw dla tworzenia automatyzacji testów
  • Zwiększenie pokrycia automatycznymi testami
  • Przyspieszanie czasu tworzenia i przeprowadzania automatyzacji testów

Eliminacja niestabilnych skryptów testowych opartych na kodzie

Niestabilne, oparte na kodzie skrypty testowe, zabijają cyfrową jakość i są często wynikiem złych praktyk programistycznych. Oto kilka przesłanek ku temu, że skrypty są niestabilne:

  • Wyniki testów są niespójne pomiędzy uruchomieniami lub platformami
  • Testy nie używają stabilnych lokalizatorów obiektów
  • Testy nie radzą sobie z implikacjami związanymi ze środowiskiem (np. wyskakujące okienka, przerwania itp.)


Jeśli masz niestabilne skrypty, znajdź testowe wąskie gardła oraz zidentyfikuj, gdzie korzystanie z automatyzacji testów opartych na kodzie nie przynosi rezultatów.

Jeśli niestabilne skrypty testowe zostały opracowane z użyciem języka programowania w zintegrowanym środowisku programistycznym (IDE), to można zapisywać te skrypty za pomocą narzędzi opartych na uczeniu maszynowym i odtwarzać tyle razy, ile trzeba.

Można to zrobić z poziomu interfejsu użytkownika danego narzędzia ML lub przez serwer ciągłej integracji.

Niestabilne, oparte na kodzie skrypty testowe zabijają cyfrową jakość i są często wynikiem złych praktyk programistycznych.

Zapewnianie testerom biznesowym alternatyw dla tworzenia automatyzacji testów

Automatyzacja testów ma obecnie niski wskaźnik powodzenia. Oprócz niestabilnych skryptów testowych opartych na kodzie, istnieją jeszcze 2 powody:

  1. Programiści i inżynierowie testowi pracują pod presją czasu
  2. Zespoły Agile nie potrafią tworzyć skryptów automatyzacji w sprintach


Brak umiejętności w feature teamach Agile stanowi nie lada okazję dla data scientistów i testerów biznesowych. Mogą oni bowiem wykorzystać narzędzia oparte na uczeniu maszynowym i tworzyć solidne skrypty automatyzacji testów do testowania funkcjonalnego i eksploracyjnego.

Zwiększenie pokrycia automatycznymi testami

Zastąpienie testowania ręcznego automatyzacją testów opartą na uczeniu maszynowym prawdopodobnie zwiększy jego pokrycie i zmniejszy ryzyko, że wadliwe oprogramowanie trafi na produkcję. Nadal jednak trzeba zadbać o to, aby zespół pracował wydajnie i zwiększał wartość. Odpowiednie dopasowanie automatyzacji testów do członków teamu może zapobiec duplikowaniu pracy i pomóc w skupieniu się na właściwych problemach.

Trzeba także zwrócić uwagę na to, jak zespoły będą widzieć rezultaty korzystania z tych metod. Teamy muszą dążyć do stworzenia spójnego i jakościowego dashboardu, który pokazuje oba raporty automatyzacji testów w jednym widoku, tak aby kierownictwo mogło z łatwością ocenić ogólną jakość produktu.

Przyspieszanie czasu tworzenia i przeprowadzania automatyzacji testów

Średnio, automatyzacja testów oparta na uczeniu maszynowym jest 6-krotnie szybsza niż testowanie oparte na kodzie, co oznacza szybszy czas uzyskania wartości.

Co sprawia, że ten rodzaj jest aż o tyle szybszy? Testy oparte na kodzie wymagają bowiem od programisty zbudowania odpowiedniego środowiska (np. Selenium Grid), skonfigurowania wymagań wstępnych za pomocą kodu i debugowania kodu z poziomu IDE. Wymaga to czasu, umiejętności i wysiłku, i nie jest to jednorazowa inwestycja. W miarę postępowania zmian w produkcie, programista musi stale aktualizować kod.

Z drugiej jednak strony, tworzenie testów na bazie uczenia maszynowego, oparte jest zwykle na procesie „zapisz i odtwórz”, razem z wbudowanymi algorytmami samo naprawianie. Zasadniczo, nie wymaga to ciągłych zmian, chyba że takowe nastąpią w lokalizatorach elementów lub samym produkcie.

Narzędzia oparte na uczeniu maszynowym są jednak nie tak dojrzałe, co zmniejsza elastyczność i zdolność integracji z innymi narzędziami i frameworkami. To ostatnie należy wziąć pod uwagę, określając, gdzie zastosować automatyzację testów opartą na ML.

Przyszłość automatyzacji testów opartej na uczeniu maszynowym

W ciągu najbliższych kilku lat można się spodziewać wielu zmian w nowej dziedzinie automatyzacji testów ML. Po pierwsze, jej narzędzia ewoluują, a kolejne 1-2 lata będą kluczowe dla zespołów DevOps, aby te mogły je zaadaptować, zintegrować i zmienić procesy w celu wprowadzenia uczenia maszynowego do SDLC.

Zespoły będą potrzebowały nowych metodologii, aby określić, kiedy powinny korzystać z uczenia maszynowego, a kiedy z kodu. Ponadto, narzędzia będą musiały bezproblemowo zintegrować się z CI/CD i strukturami raportowania.

Wreszcie, narzędzia oparte na uczeniu maszynowym będą ewoluować, aby objąć dodatkowe typy testów poza testami funkcjonalnymi (na przykład, testy bezpieczeństwa).

Co mogę polecić, to zbadanie, w jaki sposób automatyzacja testów opartych na uczeniu maszynowym może uzupełnić istniejące praktyki oparte na kodzie i wskazać problemy, z którymi te narzędzia będą sobie w stanie najlepiej poradzić. Przy właściwym podejściu, zastosowanie automatyzacji testów opartej na uczeniu maszynowym w nowej dekadzie może bardzo szybko usprawnić cykl rozwoju oprogramowania.

<p>Loading...</p>