I choć treść książki ma pesymistyczne wybrzmienie, może stanowić źródło inspiracji na temat drogi rozwoju sztucznej inteligencji w dalekiej przyszłości i zmusić do refleksji nad kierunkiem podążania przez współczesne algorytmy. Chociaż obecne możliwości AI nie są jeszcze aż tak rozwinięte (w porównaniu do przytoczonego Golema), to już mają istotny wpływ na cyfrową transformację, przekształcając świat na wielu płaszczyznach.
Go to:
AI w programowaniu
Generowanie kodu
Od jakiegoś czasu narzędzia sztucznej inteligencji rewolucjonizują wiele obszarów, nie pomijając procesu tworzenia oprogramowania. Wprowadzają nowe możliwości zwiększające nie tylko produktywność, ale też dokładność i innowacyjność, przyspieszają również sam proces tworzenia oprogramowania. W tym momencie należy wyróżnić przede wszystkim generatywną sztuczną inteligencję (GenAI – uogólniając, to AI potrafiąca tworzyć nowe treści), która usprawnia cały proces poprzez automatyzację istotnych kroków – generowania pomysłów, gromadzenia wymagań, a także kodowania oraz jego nieodłącznego procesu testowania.
Wsparcie prac programistycznych
AI szybko staje się integralną częścią oprogramowania wykorzystywanego w developmencie aplikacji, będąc jednym z elementów cyfrowej transformacji przedsiębiorstw. Zespoły deweloperskie dostosowują swoje środowiska, integrując narzędzia sztucznej inteligencji, zapewniając nie tylko interoperacyjność, ale również stawiają czoła nowym wyzwaniom, jak choćby bezpieczeństwo danych. Rosnąca rola AI w tym obszarze podkreśla jej potencjał do zrewolucjonizowania metod tworzenia oprogramowania.
Wykorzystanie algorytmów w automatyzacji
Obecnie mamy do dyspozycji wiele narzędzi, za pomocą których znacząco można przyspieszyć prace nad projektem. Interpretują opisy tworzone w języku naturalnym (prompty) i generują sugestie, kod, zasoby potrzebne do testów i wiele innych, przydatnych rzeczy – zależnie od potrzeb. Zaawansowane algorytmy analizują środowisko, kod, optymalizując rozwiązania i wspomagając zespoły w codziennej pracy. Umożliwiają również analizę ogromnych zbiorów danych, wspierając optymalizację wydajności aplikacji oraz przewidywanie potencjalnych problemów. Ma to znaczący wpływ na szybkość tworzenia kodu, redukcję ludzkich błędów, przyczynia się do poprawy bezpieczeństwa, a przede wszystkim pozwala programistom skupić się na realizowaniu bardziej złożonych i kreatywnych zadań.
Jakie są korzyści z użycia AI w procesie tworzenia oprogramowania
Korzyści w ujęciu ogólnym przedstawiłem we wstępie, więc w tej sekcji postaram się zwięźle opisać kilka konkretnych przykładów, które moim zdaniem zasługują na szczególną uwagę:
- Przewidywanie błędów – poprzez analizę wzorców w repozytoriach projektu narzędzia AI mogą pomóc wykryć potencjalne błędy, luki lub podatności.
- Testowanie – odpowiednio przygotowane wymagania i kryteria akceptacji mogą posłużyć za bazę do stworzenia scenariuszy testowych, dzięki czemu znacznie skraca się czas, potrzebny zwykle na wymyślanie ich od podstaw. W asyście AI można także pokusić się o refaktoryzację już istniejących przypadków testowych, co może pomóc w ich optymalizacji i zwiększeniu pokrycia testów.
- Generowanie kodu – dzięki narzędziom AI programiści mają możliwość korzystania z pomocy wirtualnego asystenta, który wspomaga ich w codziennej pracy. Na podstawie danych wejściowych pisanych w języku naturalnym, asystent AI zasugeruje fragment kodu lub wygeneruje całą funkcję, co przyspiesza pracę i może automatyzować rutynowe działania (np. pisanie prostych, schematycznych skryptów).
- Optymalizacja i refaktoryzacja – łączy się z powyższym. Z pomocą AI można optymalizować istniejący kod, dzięki czemu aplikacja może być stabilniejsza, bezpieczniejsza, wydajniejsza, a więc i bardziej niezawodna.
- Bezpieczeństwo – z pomocą narzędzi AI można pokusić się o próbę zidentyfikowania potencjalnych luk bezpieczeństwa, a w przypadku ich znalezienia – AI zasugeruje poprawki. Narzędzia te pozwalają również analizować zachowanie uzytkowników i wykrywać nietypowe działania, wskazujące na przykład na próby ataku lub potencjalne przejęcie konta klienta.
Tak działa na przykład weryfikacja behawioralna banku ING. Algorytmy AI na bieżąco uczą się zachowania użytkownika poprzez analizowanie jego interakcji z aplikacją banku, co zwiększa prawdopodobieństwo zablokowania dostępu do konta w przypadku przejęcia go przez przestępcę. Innym przykładem niech będzie sytuacja opisana przez Google – dzięki sztucznej inteligencji udało się znaleźć błąd 0-day (nieznana podatność lub luka, mogąca zostać wykorzystana do przeprowadzenia ataku).
- Zarządzanie – można i w tym procesie zaprzęgnąć sztuczną inteligencję i wykorzystać ją w celu zautomatyzowania planowania i zarządzania zasobami. Mając historyczne dane, narzędzia AI mogą zasugerować potencjalny czas trwania nowych etapów tworzenia oprogramowania i pomóc w odpowiedniej alokacji zasobów w celu optymalnego ich wykorzystania.
- Tworzenie dokumentacji – wielu programistów nie przepada za sporządzaniem dokumentacji. Jest to czasochłonny proces, który można by poświęcić między innymi na rozwój i utrzymanie kodu. I w tym aspekcie sztuczna inteligencja wyciąga pomocną dłoń – jest doskonałym narzędziem do prowadzenia dokumentacji projektowej, odciążając programistów. Na podstawie kodu aplikacji tworzy opis i zapewnia stałą aktualizację dokumentacji.
- Projektowanie UX – można wykorzystać AI do wspomagania projektowania doświadczenia użytkowników. Przykładowo – prowadząc testy A/B i wykorzystując dane z nich zgromadzone, AI może zasugerować odpowiedni interfejs bądź funkcjonalność. Odpowiednie polecenia w narzędziu AI generującym obrazy pomogą wygenerować szablon UI, mogący stanowić bazę pod ostateczny wygląd aplikacji.
- Pomoc w tworzeniu bardziej inteligentnych aplikacji – wprowadzając zaawansowane funkcje AI do tworzonego programu (na przykład rozpoznawanie mowy, czat) można podnieść wartość i atrakcyjność aplikacji, dzięki czemu będzie ona wyróżniała się na tle konkurencji i może zwiększyć liczbę jej użytkowników.
- Analiza danych użytkowników – AI może analizować dane użytkowników w celu poprawy doświadczeń podczas korzystania z aplikacji. Szczególne korzyści może przynieść to branży e-commerce, gdzie AI wspiera tworzenie algorytmów rekomendacji, dzięki czemu klienci mogą widzieć reklamy i sugestie produktów najbardziej pasujące do ich potrzeb.
- Wspomaganie DevOps i CI/CD – z pomocą AI można analizować systemowe logi, raporty, historie wdrożeń, aby wykrywać anomalie i przewidywać potencjalne awarie. Narzędzia takie jak Datadog czy Splunk wykorzystują uczenie maszynowe do monitorowania aplikacji i infrastruktury w czasie rzeczywistym. Wdrożenie AI w DevOps i CI/CD pozwala zespołom programistycznym i operacyjnym na bardziej efektywne zarządzanie cyklem życia oprogramowania.
Jak korzystać z narzędzi AI w praktyce? Tworzymy prompty do testowania
Poniżej zaprezentuję prosty przykład wykorzystania AI jako asystenta w programowaniu. Bazę stanowi kod Playwright dostępny bezpośrednio po zainstalowaniu narzędzia. Znajduje się w nim plik z przykładowymi testami, w którym utworzę jeden dodatkowy test z wykorzystaniem GitHub Copilot. Test jest prosty: polega na otwarciu strony domowej Playwright, kliknięciu przycisku ‘Get Started’ i asercji przekierowania na stronę ’https://playwright.dev/docs/intro’ poprzez zweryfikowanie poprawności adresu URL i tekstu wyświetlonego na niej nagłówka (Installation).
- Prompt opisujący test:
Write a test that navigates to 'https://playwright.dev/’ page and clicks 'Get started’ button. Then verify that user has landed on 'https://playwright.dev/docs/intro’ page by verifying page header text that should be 'Installation’.
- Odpowiedź wygenerowana przez Copilot:
Here’s the Playwright test that navigates to the 'https://playwright.dev/’ page, clicks the 'Get started’ button, and verifies that the user has landed on the 'https://playwright.dev/docs/intro’ page by checking the page header text:
import { test, expect } from '@playwright/test'; test('navigate to Get Started and verify Installation page', async ({ page }) => { // Navigate to the Playwright homepage await page.goto('https://playwright.dev/'); // Click the 'Get started' button await page.getByRole('link', { name: 'Get started' }).click(); // Verify the URL is correct await expect(page).toHaveURL('https://playwright.dev/docs/intro'); // Verify the page header text is 'Installation' await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); });
Copilot stworzył test, dodatkowo opatrując komentarzem każdą znajdującą się w nim akcję. Poniżej zamieszczam zrzut ekreanu z VS Code, na którym widać UI z wykorzystaniem czatu AI.

Następnie poprosiłem Copilota o małą refaktoryzację stworzonego przez niego kodu – aby zaktualizował go poprzez przeniesienie hardkodowanych wartości do zmiennych w celu poprawy czytelności kodu.
1. Prompt:
Refactor the proposed code by moving hardcoded values to variables, in order to make the code more readable.
2. Odpowiedź:
Here’s the refactored code with hardcoded values moved to variables for better readability:
import { test, expect } from '@playwright/test'; test('navigate to Get Started and verify Installation page', async ({ page }) => { // Define reusable variables const baseUrl = 'https://playwright.dev/'; const getStartedLinkName = 'Get started'; const expectedUrl = 'https://playwright.dev/docs/intro'; const expectedHeader = 'Installation'; // Navigate to the Playwright homepage await page.goto(baseUrl); // Click the 'Get started' button await page.getByRole('link', { name: getStartedLinkName }).click(); // Verify the URL is correct await expect(page).toHaveURL(expectedUrl); // Verify the page header text is 'Installation' await expect(page.getByRole('heading', { name: expectedHeader })).toBeVisible(); });
Zgodnie z przewidywaniem Copilot poradził sobie z tym zadaniem poprawnie, identyfikując parametry mogące być przypisane do zmiennych i tworząc je.
Na koniec poprosiłem o stworzenie dokumentacji testu:
1. Prompt:
Write and apply a description of the test that could be used as documentation.
2. Odpowiedź:
Test Description:
Test Name: Navigate to Get Started and Verify Installation Page
This test verifies the navigation flow on the Playwright documentation website. It performs the following steps:
- Navigates to the Playwright homepage (https://playwright.dev/).
- Clicks the „Get started” link on the homepage.
- Verifies that the user is redirected to the „Introduction” page (https://playwright.dev/docs/intro).
- Confirms that the page header text is „Installation”.

Nie tylko programowanie – sztuczna inteligencja w testach
Testowanie to krytyczny etap w wytwarzaniu oprogramowania. Ma kluczowe znaczenie w gwarantowaniu jakości kodu, niezawodności, wiarygodności i bezpieczeństwa tworzonego systemu. Obecnie testowanie napotyka na swojej drodze różne trudności. Rosnąca złożoność struktur oprogramowania sprawia, że przetestowanie wielu potencjalnych ścieżek mogących zawierać błędy staje się po prostu skomplikowane. Narzędzia technologii AI znajdują zastosowania i tutaj – za ich pomocą tester może zoptymalizować swoją pracę w zakresie:
- generowania przypadków testowych, które można w dalszym etapie modyfikować, gdy zajdzie taka potrzeba;
- wspomagania generowania skryptów automatycznych – z wykorzystaniem narzędzi typu Copilot;
- automatyzacji powtarzalnych zadań – co pozwala zaoszczędzić czas i skupić się na bardziej istotnych lub skomplikowanych zadaniach;
- analizowania i tworzenia raportów testowych – dzięki asyście przy analizie i tworzeniu raportów można uzyskać bardziej szczegółowe dane na temat wyników testów, co pozwala na uzyskanie jakościowych informacji na temat stanu oprogramowania i ewentualnych błędów;
- tworzenia danych testowych – AI może analizować wymagania aplikacji oraz specyfikację systemu, aby automatycznie generować odpowiednie dane testowe, które będą używane w różnych scenariuszach testowych. Dane mogą być bardzo różnorodne, co przekłada się na ich lepszą reprezentatywność dla rzeczywistych przypadków użycia aplikacji. Również przypadki brzegowe (edge cases), które bywają trudne do przewidzenia, mogą zostać zidentyfikowanie przez AI i odpowiednio pokryte danymi wejściowymi. Dzięki temu z pozoru rzadkie, ale ważne scenariusze, mogące mieć wpływ na stabilność aplikacji, mogą zostać zidentyfikowane i odpowiednio zaadresowane. Zwiększa to również pokrycie testów, pomagając w wykrywaniu potencjalnych problemów, które mogłyby umknąć tradycyjnym metodom testowania;
- tworzenie dokumentacji testowej – AI można wykorzystać do tworzenia i utrzymywania dokumentacji testowej.
Jakie są najlepsze narzędzia AI dla programistów i testerów
Na rynku istnieją już setki, jeśli nie tysiące narzędzi wykorzystujących sztuczną inteligencję. Możliwości tych innowacyjnych rozwiązań z powodzeniem mogą być wykorzystywane przez programistów i testerów. Wybór odpowiednich rozwiązań może jednak stanowić wyzwanie, dlatego warto skupić się na tych, które rzeczywiście zwiększają efektywność pracy, automatyzują powtarzalne zadania i pomagają unikać błędów. Wśród dostępnych narzędzi znajdują się zarówno inteligentni asystenci wspomagający pisanie kodu, jak i zaawansowane systemy do testowania, analizy błędów oraz optymalizacji procesów CI/CD.
W tej sekcji krótko omówię kilka narzędzi, których wykorzystanie może usprawnić codzienną pracę w projekcie.
GitHub Copilot
To obecnie jedno z najpopularniejszych narzędzi wspomagających pisanie kodu. Za jego pomocą można pisać kod efektywniej i szybciej, dzięki czemu programiści mogą więcej czasu poświęcić na rozwój oprogramowania w szerszym kontekście – współpracy w zespole czy skupieniu się na problemach związanych z logiką w aspekcie całościowym aplikacji. Słowem – zwiększa produktywność i przyspiesza wytwarzanie oprogramowania.
Narzędzia takie jak GitHub na bieżąco w trakcie pisania kodu sugerują rozwiązania, można też użyć funkcji czatu w celu uzyskania pomocy dotyczącej pisanego kodu. Istnieje też możliwość korzystania z niego przez CLI.
Dodatkowo w wersji Enterprise oferuje opcję generowania opisu pull requestów oraz tworzenie i zarządzanie dokumentacjami repozytoriów w formie baz wiedzy (knowledge bases), które stanowią kontekst dla czatu Copilot. Dzięki temu Copilot przeszukuje bazę wiedzy pod kątem odpowiednich informacji i zwraca zsyntezowaną odpowiedź.
Doskonale sprawdza się jako narzędzie do uzupełniania kodu, w szczególności dla przypadków, w których zwykle poszukujemy inspiracji w internecie, np. na StackOverFlow. Często zdarza się, że podobny problem, nad którym pracujemy, został już kiedyś napotkany i opisany, więc analiza danego wątku pozwala na zaimplementowanie rozwiązania w swoim kodzie. Dzięki Copilotowi można pominąć ten etap i za pomocą odpowiedniego prompta sprecyzować, czego potrzebujemy. Z dużym prawdopodobieństwem wygenerowany zostanie odpowiedni kod, nie zawsze idealny, ale wystarczający, żeby po niewielkich modyfikacjach otrzymać działającą funkcję.
Jego zaletą jest też możliwość zintegrowania go z najpopularniejszymi IDE – Visual Studio, Visual Studio Code, JetBrains.
Cursor
Cursor, w przeciwieństwie do GitHub Copilota, nie jest jedynie rozszerzeniem, ale pełnym IDE korzystającym z narzędzi AI. Został zaprojektowany w celu zwiększenia produktywności programistów poprzez integrację zaawansowanych funkcji sztucznej inteligencji bezpośrednio ze środowiskiem kodowania. Warto wiedzieć, że powstał na bazie VS Code (jest jego forkiem), a więc zachowuje interfejs i ekosystem VS Code, co ułatwia ewentualne przejście na ten edytor.
Posiada opcje takie jak generowanie, przewidywanie i uzupełnianie kodu oraz automatyczne poprawianie.
Jego kluczową cechą jest sposób “rozumienia” przez niego kodu – analizuje cały kontekst projektu. Oferuje kilka dodatkowych funkcji, dzięki którym asystent AI może działać jeszcze dokładniej. Jest to na przykład indeksowanie bazy kodu (które jest włączone domyślnie), każdy nowo dodany plik zostanie zaindeksowany i włączony do kontekstu aplikacji. Oprócz indeksowania plików, oferuje również tworzenie reguł dostosowujących działanie AI: globalnie oraz z ograniczeniami w ramach konkretnego projektu.
ChatGPT
To jedno z najpopularniejszych narzędzi AI dostępne w internecie, może być również z powodzeniem wykorzystane w inżynierii oprogramowania. Jest uniwersalne zarówno dla programistów jak i testerów – za jego pomocą można tworzyć między innymi kod, skrypty, dane testowe, scenariusze – i tak dalej. Dzięki wszechstronności może być wykorzystany jako asystent służący dobrą radą w wielu aspektach.
Oprócz czata GPT można w tym celu wykorzystać również inne narzędzia ogólnego przeznaczenia bazujące na LLM, jak Gemini czy Microsoft Copilot.
Applitools
To narzędzie służące głównie do testowania, monitorowania i zarządzania wizualnym aspektem aplikacji. Wykorzystuje sztuczną inteligencję do wykonywania testów wizualnych, skutecznie identyfikując wizualne błędy w aplikacjach, na przykład przez analizę elementów wyświetlanych w interfejsie – czy nie nakładają się na siebie, są w jakiś sposób niewidoczne, wychodzą poza swój obszar. Swoje testy może wykonywać na wielu przeglądarkach i platformach. Można za jego pomocą sprawdzać również pliki PDF. Applitools można zintegrować z popularnymi narzędziami do automatyzacji testów, takimi jak Selenium, Playwright, Appium, Cypress.
Amazon CodeGuru
To narzędzie wspierające przegląd kodu. Dzięki wykorzystaniu uczenia maszynowego i zautomatyzowanego procesu “rozumowania” pomaga zidentyfikować luki w kodzie, dostarcza zalecenia dotyczące sposobu ich naprawienia i śledzi ich status aż do momentu ich zamknięcia. Można je zintegrować na dowolnym etapie wytwarzania oprogramowania, włączając je w proces CI/CD. Twórcy dodatkowo zapewniają, że nie jest konieczne wykorzystywanie dodatkowych maszyn wirtualnych w celu jego uruchomienia – wystarczy zintegrować CodeGuru z wykorzystywanymi już narzędziami, a w zależności od obciążenia będzie samoczynnie skalowany w górę lub w dół.
Testcraft
To bezpłatne i otwartoźródłowe rozszerzenie przeglądarki, wykorzystujące sztuczną inteligencję do wspomagania testowania. Jego kluczową cechą jest możliwość generowania pomysłów na testy w oparciu o elementy widoczne na stronie internetowej. Pozwala również na automatyczne generowanie skryptów testowych dla popularnych frameworków automatyzacji – Playwright, Cypress, czy biblioteki Selenium. Skrypty można wygenerować w wielu językach programowania, znajdzie więc miłośników zarówno wśród testerów manualnych, jak i automatyzujących.
Podsumowanie: Wykorzystanie AI w programowaniu i testowaniu
Dobrze zaimplementowana sztuczna inteligencja może odegrać kluczową rolę w rozwoju oprogramowania, znacząco przyspieszając i usprawniając procesy na różnych etapach tworzenia oprogramowania. Dzięki AI można automatyzować pisanie kodu, testowanie, debugowanie oraz zarządzanie procesami CI/CD, co prowadzi do zwiększenia efektywności, redukcji kosztów i minimalizacji liczby błędów.
Jednak należy pamiętać o drugiej stronie medalu. Sztuczna inteligencja, choć pozwala oszczędzać czas i ułatwia wykonywanie powtarzalnych zadań, nie zawsze generuje poprawne lub optymalne rozwiązania. Mając na uwadze fakt, że nowoczesne aplikacje często składają się z wielu modułów, są zintegrowane z wieloma zewnętrznymi usługami i systemami, sztuczna inteligencja, mimo że stanowi potężne wsparcie, nie zawsze jest bezbłędna, zwłaszcza w tak złożonych środowiskach.
AI dobrze radzi sobie z podstawowymi i średnio zaawansowanymi zadaniami, ale może mieć trudności z bardziej skomplikowanymi zagadnieniami, np. optymalizacją wydajności w dużych systemach, ze specyficznymi wzorcami projektowymi czy zaawansowanym debugowaniem. Nie można pominąć również potencjalnych zagrożeń w kwestii bezpieczeństwa.
Ostatecznie, AI powinna być traktowana jako wsparcie, a nie całkowite zastępstwo dla ludzkiej wiedzy i doświadczenia. Skuteczność automatyzacji opartej na AI zależy od jej mądrego wykorzystania. W połączeniu z kompetencjami specjalistów może ona stać się potężnym narzędziem wspierającym rozwój i utrzymanie wysokiej jakości oprogramowania. Jednak wymaga świadomej kontroli i odpowiedzialnego wdrażania w procesy technologiczne.
Choć obecne systemy AI, w tym narzędzia wspierające programistów i testerów, nie osiągnęły jeszcze poziomu przedstawionego przez Lema w “Golem XIV”, to ich rola w cyfrowej transformacji staje się coraz bardziej widoczna. Sztuczna inteligencja zyskuje na znaczeniu, automatyzując powtarzalne procesy, optymalizując kod oraz wspomagając analizy danych w czasie rzeczywistym. Współczesne algorytmy, choć bardzo zaawansowane, nie są jeszcze pozbawione błędów i ograniczeń, szczególnie w kontekście złożonych aplikacji oraz integracji z innymi systemami. To, co dziś oferuje sztuczna inteligencja, to jedynie przedsmak tego, co może się wydarzyć w przyszłości.