3 sposoby wykorzystania danych, analityki i uczenia maszynowego w automatyzacji testów

Lepsze testowanie oznacza lepsze oprogramowanie. Wykorzystanie NLP, generowanie danych testowych i sama optymalizacja testów może szybko poprawić jakość aplikacji.

3 sposoby wykorzystania danych, analityki i uczenia maszynowego w automatyzacji testów

Thinkstock

Zaledwie 10 lat temu większość strategii testowania rozwoju aplikacji koncentrowała się na testach jednostkowych w celu sprawdzenia poprawności logiki biznesowej, testowaniu manualnym w celu certyfikacji doświadczeń użytkownika oraz oddzielnych skryptach testujących obciążenie w celu potwierdzenia wydajności i skalowalności. Rozwój i udostępnianie funkcji było stosunkowo powolne w porównaniu do dzisiejszych możliwości rozwoju opartych na infrastrukturze chmury, architekturze mikroserwisów, automatyzacji ciągłej integracji i ciągłego dostarczania (CI/CD) oraz możliwości ciągłego testowania.

Ponadto, wiele aplikacji jest aktualnie tworzonych poprzez konfigurację oprogramowania jako usługi (SaaS) lub budowanie aplikacji o niskim kodzie (low-code) i bez kodu (no-code), które wymagają również testowania podstawowych przepływów i procesów biznesowych.

Zobacz również:

  • Dane w służbie pomocy
  • Eliminacja oszustw na platformach sprzedażowych

Zwinne zespoły programistyczne w organizacjach Devops dążą do skrócenia czasu cyklu tworzenia funkcji, zwiększenia częstotliwości dostaw i zapewnienia wysokiej jakości doświadczeń użytkowników. Pytanie brzmi, w jaki sposób mogą zmniejszyć ryzyko i przesunąć testowanie w lewo bez tworzenia nowych zawiłości testowych, wąskich gardeł we wdrożeniu, luk w zabezpieczeniach lub znacznego wzrostu kosztów?

Esko Hannula, kierownik linii produktów w Copado, rozmawiał ze mną o niedawnym przejęciu Qentinel i wyzwaniach związanych z testowaniem, przed którymi stoją organizacje DEVops. Uważa on, że uczenie maszynowe jest kluczem do radzenia sobie z rosnącą ilością testów. - Jakość cyfrowego biznesu to jakość kodu i testów, które go obsługują. Im więcej kodu jest do przetestowania, tym ważniejsze staje się połączenie uczenia maszynowego z automatyzacją testów. Pracownicy QA (Quality Assurance) i inteligencja maszynowa mogą wspierać się nawzajem w podejmowaniu mądrych decyzji opartych na danych, a nie na zwykłym przeczuciu.

Niedawno pisałem o wykorzystaniu wirtualizacji usług do opracowania bardziej solidnych testów usług internetowych podczas budowania mikroserwisów lub interfejsów z wieloma interfejsami API stron trzecich. Następnie poszedłem o krok dalej i zbadałem możliwości testowania oparte na danych, analityce i uczeniu maszynowym, które zespoły programistów i inżynierów automatyzacji testów QA mogą wykorzystać do opracowania i wspierania bardziej solidnych testów. Te możliwości pojawiają się, niektóre platformy testowe oferują solidną funkcjonalność już dziś, podczas gdy inne są w fazie wczesnego wdrażania. Zespoły programistów powinny badać i planować te funkcje testowania, ponieważ wszystkie one staną się głównymi możliwościami.

Generowanie testów z wykorzystaniem przetwarzania języka naturalnego

Jakość testów poprawiła się znacznie w ciągu ostatniej dekady, ponieważ platformy QA analizują model obiektu dokumentu (DOM) strony internetowej, wykorzystują widzenie komputerowe do wykrywania zmian w interfejsie użytkownika oraz wykorzystują optyczne rozpoznawanie znaków do wyodrębniania elementów tekstowych. Jednak tworzenie testów często wymaga od inżynierów testowych ręcznego klikania w interfejsy użytkownika, wprowadzania danych do formularzy i poruszania się po przepływach pracy, podczas gdy platformy QA rejestrują przypadek testowy.

Stosunkowo nowym podejściem jest wykorzystanie przetwarzania języka naturalnego (NLP) do dokumentowania przypadków testowych. Sauce Labs niedawno nabyło AutonomIQ, narzędzie, które pozwala użytkownikom opisywać kroki testowe w języku naturalnym, a następnie ich oprogramowanie automatycznie tworzy przypadki testowe.

John Kelly, CTO w Sauce Labs, opisuje, dlaczego ta zdolność jest tak ważna w miarę jak coraz więcej organizacji rozwija dostosowanie zarządzania relacjami z klientami, przepływy pracy w zarządzaniu procesami biznesowymi i aplikacje low-code. Opisuje on to doświadczenie z perspektywy biznesowej: - Mam wewnętrzne procesy biznesowe, które eksperci mogą opisać w języku naturalnym. Następnie uczenie maszynowe NLP może je przekształcić w przypadki testowe, które mogą być uruchamiane tak często jak to potrzebne. Mogę wtedy zademonstrować zewnętrznym audytorom, że kontrole są przeprowadzane prawidłowo. Tak więc, bezkodowe podejście do tworzenia przypadków testowych jest wyłaniającym się sposobem dokumentowania i walidacji procesów biznesowych.

Rozszerzanie testów za pomocą generowania syntetycznych danych testowych

Kiedy już inżynierowie QA uchwycą przypadki testowe, następnym zadaniem jest wygenerowanie wystarczających danych testowych, aby zweryfikować podstawowe reguły biznesowe i warunki brzegowe. Generowanie danych testowych może być szczególnie trudne w przypadku otwartych doświadczeń, takich jak wyszukiwarki, skomplikowane formularze wielopolowe, przesyłanie dokumentów oraz testowanie danych umożliwiających identyfikację osób lub innych wrażliwych danych.

Narzędzia od Curiosity Software, Datprof, Delphix, GenRocket, Torana (iCEDQ), K2View i innych dostarczają możliwości automatyzacji danych testowych dla różnych aplikacji i przepływów danych, w tym testów funkcjonalnych, testów API, DataOps, Data Lakes i Business Intelligence.

Optymalizacja praktyk ciągłego testowania

Kilka platform ma na celu pomóc zwinnym zespołom programistycznym i inżynierom automatyzacji QA w optymalizacji ich praktyk testowych.

Analiza niepowodzeń pomaga zespołom deweloperskim badać podstawowe przyczyny niepowodzenia testów. Kelly opisuje to tak: - Masz tysiąc testów Selenium, uruchamiasz je wszystkie i otrzymujesz 300 niepowodzeń. Zespół nie wie, czy jest to uszkodzone API czy coś innego i czy problem wystąpi na produkcji, wiedząc, że środowisko testowe nie odzwierciedla go w pełni. Interesują ich pierwotne przyczyny niepowodzeń testów. Nasze modele kohortują nieudane testy i informują, które testy są związane z tym samym problemem.

Kolejnym wyzwaniem jest optymalizacja zestawu testów i określenie, które testy należy uruchomić w oparciu o zmiany w kodzie danego wydania. Zespoły testujące mogą heurystycznie zaprojektować „test dymny” - test regresyjny wokół istotnych funkcjonalności i przepływów aplikacji. Jednak dla zespołów DevOps wdrażających ciągłe testowanie, istnieje możliwość połączenia danych pomiędzy testami, zmianami kodu i systemami produkcyjnymi oraz zastosowania uczenia maszynowego do wyboru testów do uruchomienia. Optymalizacja testów w buildzie jest bardzo potrzebna zespołom developerskich, które często wypuszczają kod na krytycznych aplikacjach.

Jednym z rozwiązań tego problemu jest YourBase, który tworzy graf zależności mapujący przypadki testowe z ich ścieżkami kodu. Kiedy programiści zmieniają kod, narzędzie wykorzystuje graf zależności, aby zoptymalizować, które przypadki testowe muszą zostać uruchomione. To ważne zwłaszcza dla firm dysponujących setkami tysięcy testów. Chcą one poprawić czas wprowadzenia kodu na produkcję i zwiększyć produktywność programistów. Zespoły te muszą wybeać, które testy są naprawdę niezbędne dla ich zmian i chcą lepiej zrozumieć niepowodzenia testów.

Trzecie podejście działa poza środowiskiem testowym i pomaga inżynierom urządzeń i programistom śledzić błędy produkcyjne, wyjątki i zdarzenia krytyczne. Backtrace zapewnia taką możliwość. Zespoły programistów używają zagregowanego raportowania błędów i analizy deduplikacji, aby szybko znaleźć i rozwiązać problemy w grach, aplikacjach mobilnych lub innych aplikacjach wbudowanych.

Kluczem dla organizacji zajmujących się rozwojem jest uznanie, że częste wypuszczanie na rynek bardziej krytycznych aplikacji wymaga równoległego wysiłku w celu zwiększenia automatyzacji, odporności i inteligencji testów. Platformy AIops pomagają zespołom zarządzania usługami IT wspierać mikroserwisy i złożone zależności między aplikacjami poprzez centralizację danych operacyjnych i udostępnianie możliwości uczenia maszynowego. W podobny sposób, platformy QA mają na celu zapewnienie zwinnym zespołom programistycznym automatyzacji, analityki, NLP i możliwości uczenia maszynowego w celu usprawnienia testowania.

Adjustacja i tłum. Anna Ładan

Źródło: Infoworld.com

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200