“To najbardziej oszałamiające zastosowanie uczenia maszynowego, jakie kiedykolwiek widziałem”.
Mike Krieger, współzałożyciel Instagrama.
Słowa Mike’a Kriegera nie są hiperbolą. Podczas gdy ML jest w stanie dokonać niezwykłych rzeczy w zakresie analizy danych i spostrzeżeń, GitHub Copilot jest całkowitym przełomem ze względu na potencjalną użyteczność, jaką może zapewnić twórcom produktów na całym świecie.
Kopiloty kodowania i generatywna sztuczna inteligencja pomagają zespołom odblokować ogromne korzyści, takie jak przyspieszenie cyklu życia oprogramowania do niewyobrażalnych dotąd prędkości. Jednak wpływ technologii na RPA i testowanie oprogramowania to dwie z najbardziej ekscytujących granic tej niesamowitej technologii.
W tym artykule przyjrzymy się, jak kodowanie copilotów i generatywna sztuczna inteligencja zmieniły świat testowania oprogramowania i RPA w dzisiejszych czasach, zanim zbadamy ich przyszły wpływ na technologię.
Kopiloty i generatywna sztuczna inteligencja w
rozwój oprogramowania: A Primer
Generatywna sztuczna inteligencja i kodowanie copilotów są względnymi nowicjuszami w krajobrazie rozwoju oprogramowania. Zanim omówimy ich wpływ na przestrzeń, warto przyjrzeć się ich pochodzeniu i sposobowi pracy.
1. Automatyczni koderzy wykorzystujący sztuczną inteligencję
Duże modele językowe (LLM) uległy znacznej poprawie w ciągu ostatnich kilku lat. Wraz z wykładniczym wzrostem wielkości zbiorów danych i mocy obliczeniowej, jakość wyników wzrosła.
Istnieje wiele branż, które mogą skorzystać z LLM. Niektóre z najczęściej opisywanych obejmują generowanie tekstu, obrazów, filmów i innych form mediów. Jednak chociaż te przypadki użycia są imponujące, istnieją implikacje dla programistów, które są być może znacznie bardziej interesujące.
Na rynku dostępnych jest wiele autokoderów LLM. Jednak GitHub CoPilot jest prawdopodobnie najbardziej znaną i najbardziej zaawansowaną aplikacją. W dużej mierze wynika to z faktu, że jest on szkolony na repozytorium GitHub. Ma dostęp do milionów przykładów kodu open-source, najlepszych praktyk, architektury aplikacji i innych, z których może się uczyć, co pozwala mu dostarczać wysokiej jakości i wszechstronne wyniki.
2. Jak działają kopiloty kodujące?
Jednym z najprostszych sposobów, aby opowiedzieć o tym, jak działają copiloty do kodowania, jest przyjrzenie się wiodącemu produktowi w grze, GitHub CoPilot. Aplikacja jest oparta na modelu ChatGPT-3 firmy OpenAi.
Podobnie jak ChatGPT i podobne LLM, CoPilot opiera się na miliardach parametrów. Podczas rozwoju ChatGPT-3, OpenAI zaczęło budować dedykowany program do kodowania o nazwie OpenAI Codex. Microsoft wykupił wyłączny dostęp do produktu.
Kluczową kwestią jest jednak to, że Microsoft był już właścicielem GitHub. Jeśli jesteś programistą, wiesz wszystko o GitHub. Zasadniczo jest to platforma internetowa wykorzystywana do kontroli wersji i współpracy w projektach rozwoju oprogramowania. Wyszkolili oni OpenAI Codex na bibliotece GitHub, która zawierała miliony wierszy publicznego kodu open-source.
CoPilot wykorzystuje uczenie maszynowe do znajdowania wzorców i relacji między liniami kodu. Podobnie jak ChatGPT, patrzy na słowo lub linię i oblicza prawdopodobieństwo tego, co powinno nastąpić później, w oparciu o ogromne repozytorium danych historycznych.
Siła copilotów AI polega na ich zdolności do sugerowania fragmentów kodu podczas edycji przez programistów. Pomyśl o tym jak o doładowanym autouzupełnianiu dla kodowania. Gdy programiści wprowadzają linię kodu, LLM porównuje początek tego kodu z ogromną biblioteką poprzednich projektów. Stamtąd sugeruje probabilistyczne linie i nowe linie kodu.
Oczywistą korzyścią jest to, że programiści mogą zaoszczędzić niesamowitą ilość czasu dzięki temu autouzupełnianiu. Zwiększa to produktywność i, w wielu przypadkach, dokładność kodu.
3. Co z generatywną sztuczną inteligencją dla kodowania i rozwoju?
Jak widać z historii CoPilota, generatywna sztuczna inteligencja i Copiloty mają podobne korzenie. Obie technologie wykorzystują prawdopodobieństwo statystyczne do przewidywania potrzeb użytkowników na podstawie przypisanych informacji.
Jednak duża różnica między oprogramowaniem do copilotingu a generatywną sztuczną inteligencją polega na tym, że ta ostatnia jest oparta na podpowiedziach. W skrócie oznacza to, że użytkownicy wprowadzają zestaw pisemnych instrukcji do maszyny, a ona wyświetla treść. Jak wie każdy, kto korzystał z ChatGPT lub podobnych aplikacji, dane wyjściowe mogą mieć postać tekstu, obrazów, wideo lub kodu.
Tak więc, chociaż metody stosowane przez koderów w celu uzyskania zautomatyzowanego kodowania są różne, możemy umieścić je pod podobnym parasolem zautomatyzowanego lub generatywnego kodowania wspomaganego przez sztuczną inteligencję.
Ewolucja testowania oprogramowania
Testowanie oprogramowania jest responsywne i stale się rozwija. W ciągu kilku dekad zmienił się i przekształcił, aby sprostać nowym wymaganiom i wykorzystać postęp technologiczny.
1. Testowanie ręczne:
Początki testowania oprogramowania obejmowały testy manualne. Ten rodzaj testowania był kosztowny i czasochłonny, ponieważ wymagał od ekspertów QA dokładnego przeanalizowania oprogramowania poprzez opracowanie serii przypadków testowych, uruchomienie i zapisanie wyników, zaplanowanie poprawek i powtórzenie procesu.
Zapewnienie, że wszystkie możliwe scenariusze i sytuacje zostały uwzględnione w tych testach, było poważnym wyzwaniem, a jeśli dodać do tego czas i koszty, ręczne testowanie wymagało dużych zasobów. Był on również bardzo podatny na błędy ludzkie, co było potęgowane przez ograniczone opcje dystrybucji, co oznaczało, że wszelkie nieodkryte błędy były trudne do szybkiego załatania.
2. Testy skryptowe:
Testy skryptowe stanowiły ogromny krok naprzód dla społeczności QA. Zamiast ręcznie przechodzić przez kod i scenariusze testowe, programiści mogli pisać programy, które mogły automatycznie testować oprogramowanie. Dużym plusem było to, że testowanie stało się bardziej wydajne i mniej podatne na błędy ludzkie. Osiągnięcie tego wymagało jednak umiejętnego, precyzyjnego i czasochłonnego planowania i kodowania, aby zapewnić kompleksowe pokrycie.
3. Automatyzacja testów:
Automatyzacja testów była kolejną ewolucją testowania. Narzędzia takie jak ZAPTEST były w stanie zaoferować programistom wszystkie zalety testowania skryptowego, ale z interfejsem bez kodu. Ponownie, znaczące korzyści w tym przypadku to oszczędność czasu, testy wielokrotnego użytku i adaptowalne, testowanie interfejsu użytkownika i API oraz testowanie na różnych platformach i urządzeniach.
4. Testowanie oparte na danych:
Testowanie oparte na danych było rozwiązaniem problemu testowania oprogramowania, które przetwarzało różne zestawy danych. Ponownie, jest to forma automatyzacji testów, ale ta metoda obejmuje tworzenie skryptów testowych i uruchamianie ich na przypisanych zestawach danych. Ten rodzaj testowania pozwolił programistom pracować szybciej, izolować testy i skrócić czas powtarzania przypadków testowych.
5. Testowanie generatywnej sztucznej inteligencji:
Generatywne testowanie AI to najnowsza innowacja w testowaniu oprogramowania. Korzystając z LLM, zespoły QA mogą tworzyć przypadki testowe i dane testowe, które pomagają przyspieszyć proces testowania. Te przypadki testowe są wysoce elastyczne i edytowalne, co pomaga programistom w ponownym wykorzystaniu i zmianie przeznaczenia testów oraz znacznie zwiększa zakres testowania.
Współczesne wykorzystanie kopilotów i
Generatywna sztuczna inteligencja w testowaniu oprogramowania i RPA
Generatywna sztuczna inteligencja i kopiloty miały duży wpływ na testowanie oprogramowania. Jednak zamiast zastępować koderów, narzędzia te pomogły rozszerzyć kompetencje testerów. Krótko mówiąc, pomagają programistom stać się szybszymi i bardziej wydajnymi, a w wielu przypadkach podnoszą jakość testów.
Ankieta
Ankieta dla programistów Stack Overflow od 2023 roku
oferuje wgląd w obecne wykorzystanie narzędzi AI w społeczności programistów. Jedna z najciekawszych części ankiety sugerowała, że chociaż nieco ponad połowa wszystkich programistów sugerowała, że są zainteresowani narzędziami AI do testowania oprogramowania, mniej niż 3% stwierdziło, że ufa tym narzędziom. Co więcej, tylko 1 na 4 osoby zasugerowała, że obecnie korzysta z narzędzi AI do testowania oprogramowania.
Interesujące w tych statystykach jest to, że pokazują one, że korzystanie z narzędzi sztucznej inteligencji nie jest jeszcze powszechne i że pierwsi użytkownicy wciąż mogą uzyskać przewagę.
1. Przypadki użycia kopilota i generatywnej sztucznej inteligencji w testowaniu oprogramowania i RPA
Copiloty i generatywna sztuczna inteligencja wpływają na każdy obszar rozwoju oprogramowania. Oto kilka sposobów, w jakie technologia ta może pomóc w testowaniu oprogramowania i RPA.
Analiza wymagań
Analiza wymagań jest kluczową częścią cyklu życia oprogramowania. Proces ten obejmuje zrozumienie wymagań interesariuszy i różnych funkcji wymaganych do zbudowania oprogramowania. Generatywna sztuczna inteligencja może pomóc zespołom w tworzeniu nowych pomysłów i perspektyw.
Planowanie testów
Gdy wymagania testowe zostaną dobrze zrozumiane, zespoły QA muszą podzielić je na harmonogram, aby zapewnić odpowiednie pokrycie testami. Ten rodzaj pracy wymaga specjalistycznej wiedzy i doświadczenia, ale Generative AI może wspierać zespoły poprzez przykłady i przewodniki, a także rekomendować konkretne narzędzia i najlepsze praktyki dla ich unikalnych wymagań.
Tworzenie przypadków testowych
Zespoły QA mogą wykorzystywać LLM do analizowania kodu, wymagań użytkowników i specyfikacji oprogramowania, aby zrozumieć podstawowe relacje stojące za systemem. Gdy sztuczna inteligencja zrozumie dane wejściowe i wyjściowe oraz oczekiwane zachowania oprogramowania, może rozpocząć tworzenie przypadków testowych, które przetestują oprogramowanie.
Korzyści wykraczają poza oszczędność czasu i ręczne kodowanie. Tworzenie przypadków testowych za pomocą sztucznej inteligencji może również prowadzić do bardziej kompleksowego pokrycia, ponieważ może badać obszary, których inżynierowie QA mogliby nie brać pod uwagę, co prowadzi do bardziej niezawodnych kompilacji.
Znajdowanie i rozwiązywanie błędów
Uczenie maszynowe pozwala specjalistom QA znacznie skrócić czas potrzebny na zlokalizowanie i rozwiązanie błędów. Podczas testowania oprogramowania wiele błędów jest łatwych do zlokalizowania. Jednak w wielu scenariuszach jest to pracochłonny i czasochłonny proces. Generatywna sztuczna inteligencja może przeprowadzać kontrole w ułamku czasu pracowników fizycznych i pomóc zidentyfikować nawet najbardziej uporczywe błędy. Co więcej, te narzędzia AI mogą również rozwiązywać zidentyfikowane błędy, oszczędzając nieskończoną ilość czasu zespołom QA.
Testowanie interfejsu użytkownika
Narzędzia generatywnej sztucznej inteligencji mogą symulować szereg zachowań użytkowników i interakcji z systemami oprogramowania. Metody te mogą dać zespołom programistów pewność, że ich interfejs może obsługiwać szeroki zakres zastosowań człowiek-komputer. Co więcej, generatywna sztuczna inteligencja może również analizować dane interfejsu użytkownika i mapy cieplne oraz sugerować, jak poprawić interfejs użytkownika i uczynić go bardziej przyjaznym dla użytkownika.
Przyszłość pilotów i generatywnej sztucznej inteligencji
w Testowanie oprogramowania i RPA
Podczas gdy obecne wykorzystanie kopilotów i generatywnej sztucznej inteligencji w automatyzacji oprogramowania jest już ekscytujące, przyszłość jest jeszcze bardziej obiecująca.
Przyszłość copilota i generatywnej sztucznej inteligencji zależy od ulepszeń, które można wprowadzić do produktów. Ostatnie badanie przeprowadzone przez Purdue University, zatytułowane Kto odpowie lepiej? Dogłębna analiza odpowiedzi ChatGPT i Stack Overflow na pytania dotyczące inżynierii oprogramowania podkreśla niektóre z ograniczeń generatywnych modeli sztucznej inteligencji.
Badacze zadali ChatGPT ponad 500 pytań ze Stack Overflow. Narzędzie AI udzieliło ponad połowy niedokładnych odpowiedzi. Należy zauważyć, że jedną z najważniejszych kwestii, które zauważyli badacze, było to, że sztuczna inteligencja najczęściej zawodziła, ponieważ nie rozumiała prawidłowo pytań. Ten szczegół podkreśla znaczenie inżynierii podpowiedzi w ramach generatywnej sztucznej inteligencji.
Ponadto, zarówno Google, jak i Amazon przeprowadziły w tym roku niezależne testy, aby sprawdzić jakość narzędzi generatywnej sztucznej inteligencji w kontekście pytań podczas rozmowy kwalifikacyjnej. W obu przypadkach narzędzie zdołało odpowiedzieć na pytania testowe wystarczająco dobrze, aby uzyskać pozycję, jak donosi
CNBC
oraz
Business Inside
odpowiednio.
Jasne jest więc, że znajdujemy się w punkcie, w którym technologia ta ma potencjał, ale należy dopracować kilka drobnych kwestii. Skala, w jakiej narzędzia te zostały ulepszone w ostatnich latach, daje nam pewność, że osiągnie ona wymagany poziom i prawdopodobnie przed terminem.
Teraz możemy przyjrzeć się niektórym obszarom, w których technologie te będą miały wpływ na przyszłość testowania oprogramowania.
1. Hiperautomatyzacja
Hiperautomatyzacja opisuje cel ewolucji przedsiębiorstwa, w którym każdy proces, który można zautomatyzować, zostanie zautomatyzowany. Jest to holistyczne podejście do produktywności, które jest ze sobą ściśle powiązane.
Jeśli chodzi o rozwój oprogramowania, nietrudno wyobrazić sobie scentralizowany system z nadzorem nad wymaganiami procesów biznesowych. System będzie rozumiał i identyfikował potrzeby i wydajność oraz stale identyfikował obszary, które należy ulepszyć za pomocą technologii.
W miarę ewolucji firm te scentralizowane systemy będą wykorzystywać generatywną sztuczną inteligencję do tworzenia aplikacji, które będą automatycznie rozwiązywać wąskie gardła i nieefektywności lub być może przekazywać określone zadania inżynierom do wykonania.
2. Projektowanie architektur oprogramowania
Dysponując wystarczającą ilością danych, narzędzia AI mogłyby zrozumieć najlepsze praktyki w zakresie architektury oprogramowania i znaleźć sposoby na ulepszenie tych projektów w celu uzyskania maksymalnej wydajności. Uczenie maszynowe polega na znajdowaniu wzorców i relacji, które wykraczają poza zakres ludzkiego umysłu.
Jeśli narzędzia sztucznej inteligencji mają wystarczającą wiedzę na temat różnych aplikacji, możemy poinstruować je, aby naginały poprzednie architektury do nowych wymagań, prowadząc do bardziej wydajnych kompilacji, a nawet pomysłów, które w przeciwnym razie nie byłyby brane pod uwagę.
3. Modernizacja starszych systemów
Chociaż żadne oprogramowanie nigdy nie jest doskonałe, istnieje wiele narzędzi, które nadal wykonują doskonałą pracę i są tak głęboko osadzone w infrastrukturze firmy, że trudno je zastąpić. Dostosowanie tych systemów może być uciążliwe, zwłaszcza jeśli zostały one napisane przy użyciu kodu oprogramowania, który wyszedł z mody.
W przyszłości narzędzia generatywnej sztucznej inteligencji będą w stanie przekonwertować ten kod na język du jour, umożliwiając zespołom zachowanie starszych systemów i, w wielu przypadkach, ich ulepszenie.
4. Usprawnienie rozwoju niskokodowego i bezkodowego
Jednym z wyzwań związanych z automatyzacją testowania oprogramowania za pomocą narzędzi generatywnej sztucznej inteligencji, które zidentyfikowaliśmy powyżej, była sytuacja, w której koderowi brakowało wiedzy i doświadczenia, aby zweryfikować dane wyjściowe.
Kopiloty AI pomogą rozszerzyć narzędzia o niskim kodzie, przedstawiając lepsze sugestie, które prowadzą do solidnych aplikacji. Zaawansowane narzędzia testowe pozwolą operatorom na swobodę twórczą, jednocześnie stale weryfikując ich pracę i otwierając drzwi specjalistom nietechnicznym do tworzenia aplikacji, których potrzebują.
Korzyści z generatywnej sztucznej inteligencji w testowaniu oprogramowania
Wykorzystanie generatywnej sztucznej inteligencji do testowania oprogramowania ma wiele zalet, które sprawiają, że jest to atrakcyjna opcja dla zespołów programistycznych, które chcą pracować szybciej, ale bez uszczerbku dla jakości.
1. Przyspieszenie cyklu życia oprogramowania
Deweloperzy są pod ciągłą presją długich godzin pracy, aby zapewnić, że oprogramowanie i nowe funkcje trafią na rynek w odpowiednim czasie. Podczas gdy metodologie Agile/DevOps zapewniły, że rozwój jest bardziej wydajny, nadal istnieją poszczególne etapy rozwoju, które mogą skorzystać na dalszym usprawnieniu.
Generatywne narzędzia AI pozwalają zespołom testowym radzić sobie z różnymi etapami SDLC, od generowania prototypów po testowanie interfejsu użytkownika.
2. Kompleksowe wykrywanie błędów
Jednym z najpotężniejszych zastosowań sztucznej inteligencji w testowaniu oprogramowania jest zdolność tej technologii do porównywania dużych zbiorów danych. Narzędzia ML mogą analizować ogromne zbiory danych (w tym kod) w celu zbudowania repozytorium informacji i oczekiwanych modeli.
Gdy programiści zatwierdzają kod, mogą porównać go z tymi modelami, co może uwydatnić nieoczekiwane scenariusze, zależności i luki w zabezpieczeniach, umożliwiając tworzenie lepszego kodu w całym procesie rozwoju.
3. Lepsze pokrycie testami
Narzędzia uczenia maszynowego są tworzone w celu analizowania i rozumienia ogromnych zbiorów danych. W zastosowaniu do testowania oprogramowania pozwala zespołom zwiększyć zakres testowania oprogramowania. Korzyści wykraczają poza wyeliminowanie ludzkiej pracy z równania w celu zaoszczędzenia pieniędzy; sztuczna inteligencja prowadzi również do znacznie bardziej kompleksowego rodzaju testowania, który pozwala na lepsze wykrywanie błędów w złożonym zestawie scenariuszy.
4. Obniżone koszty
W porównaniu do zatrudniania zespołu inżynierów QA i wykorzystywania ich do powtarzalnych i czasochłonnych zadań testowania oprogramowania, generatywna sztuczna inteligencja i RPA są szybsze i bardziej opłacalne.
W miarę jak świat tworzenia oprogramowania staje się coraz bardziej konkurencyjny, coraz ważniejsze staje się znalezienie sposobów na dostarczanie wysokiej jakości, trwałych produktów w ramach budżetu. Narzędzia generatywnej sztucznej inteligencji i kopiloty mogą zmniejszyć zależność od inżynierów i umożliwić im wykonywanie pracy opartej na wartościach i prowadzić do mniej rozdętych kompilacji.
Czy narzędzia generatywnej sztucznej inteligencji oznaczają koniec?
inżynierów oprogramowania?
Pomimo oczywistych korzyści, każde narzędzie do automatyzacji może wywoływać u pracowników niepokój o ich przyszłość. Chociaż jest to normalna reakcja, szybkość i zakres generatywnej sztucznej inteligencji oznaczają, że obawy są większe niż zwykle. Chociaż narzędzia te są w stanie zautomatyzować wiele zadań, nie są w stanie wykonać każdego zadania wykonywanego przez inżynierów oprogramowania. Zrozumienie możliwości technologii, a także ich ograniczeń, jest niezbędne dla inżynierów i liderów.
Pierwszą rzeczą, o której należy pamiętać, jest to, że narzędzia do automatyzacji testów oparte na sztucznej inteligencji istnieją na rynku już od dłuższego czasu. Jednak przyjazny dla użytkownika charakter generatywnej sztucznej inteligencji sprawia, że może ona być bardziej elastyczna.
Jedną z pierwszych rzeczy, które musimy wziąć pod uwagę, jest to, że generatywna sztuczna inteligencja działa najlepiej w przypadku wyników, które można zweryfikować. Jest to kluczowa kwestia. Charakter szkolenia LLM oznacza, że zrobią wszystko, co w ich mocy, aby udzielić odpowiedzi, nawet jeśli czasami oznacza to “halucynowanie” faktów, odniesień i argumentów.
Teraz, jeśli masz wystarczającą wiedzę na temat kodowania, będziesz w stanie przeczytać i zweryfikować dowolny tekst generowany przez Generative AI i wychwycić potencjalne błędy. Jeśli jesteś programistą-obywatelem, który korzysta z generatywnej sztucznej inteligencji zamiast być w stanie kodować, nie będziesz w stanie wychwycić tych błędów.
Patrząc z tej perspektywy, wykwalifikowani inżynierowie nadal będą kluczową częścią ekosystemu tworzenia oprogramowania. Nadal będą musieli testować zarówno w sensie nadzorczym, jak i praktycznym.
Kolejnym ograniczeniem generatywnej sztucznej inteligencji w testowaniu oprogramowania jest testowanie mobilne. Na przykład ChatGPT jest dobrą opcją do testowania interfejsu użytkownika strony internetowej. Nie ma jednak dostępu do różnych urządzeń mobilnych. Przy tak wielu różnych telefonach i modelach na rynku, pozostaje on w tyle za obecnym oprogramowaniem do automatyzacji testów, takim jak ZAPTEST. Ten problem również nie jest małą przeszkodą. Więcej niż
połowa wszystkich użytkowników Internetu pochodzi z urządzeń mobilnych
i liczba ta rośnie z każdym rokiem.
Tak więc, chociaż generatywna sztuczna inteligencja przejmie wiele obowiązków od programistów, nie sprawi, że ci specjaliści staną się przestarzali bez ogromnych zmian w infrastrukturze testowej i możliwości weryfikacji wyników.
Końcowe przemyślenia
Testowanie oprogramowania i RPA są na ciągłej ścieżce ulepszeń. W miarę pojawiania się nowych technologii i metod, obie dyscypliny absorbują najlepsze praktyki, aby pomóc zespołom QA w szybszym i bardziej kompleksowym testowaniu za ułamek ceny testów manualnych.
Podczas gdy poprawa zakresu testów oraz redukcja błędów ludzkich i kosztów to tylko niektóre z bardziej oczywistych korzyści płynących z testowania opartego na sztucznej inteligencji, pomaga to również zespołom w przyjęciu podejścia ciągłej integracji i wdrażania (CI/CD).
Ponieważ oczekiwania konsumentów i konkurencja są wyższe niż kiedykolwiek, generatywna sztuczna inteligencja oferuje zespołom sposób na szybkie i wydajne testy bez uszczerbku dla jakości.