Rozwój systemu konwersacyjnego wykorzystującego sztuczną inteligencję

Logo Stanusch Technologies

Kraj: Polska

Obszar: DevOps, JAVA, QA

Rozwój systemu konwersacyjnego wykorzystującego sztuczną inteligencję

Stanusch Technologies to polska firma, która dostarcza innowacyjne rozwiązania bazujące na sztucznej inteligencji. Klient rozwija nową wersję aplikacji dla systemu konwersacyjnego typu chatbot oraz voicebot i potrzebował wsparcia w postaci dodatkowych zasobów osobowych dla zespołu developerskiego oraz w obszarze Quality Assurance.

System klienta

Klient dostarcza system konwersacyjny, bazujący na Omni-Chatbot Platform, oparty na sztucznej inteligencji. Może być on wdrożony w formie chatbotów lub voicebotów do użytku komercyjnego w każdej branży, usprawniając komunikację z klientami. Wirtualni asystenci firmy Stanusch pozwalają na automatyzację obsługi klienta, zapewniają wsparcie w komunikacji wewnętrznej w firmach czy w działaniach marketingowych, a także w analizie dużych zbiorów danych. Zaletą narzędzia jest jedna baza wiedzy, która daje możliwość prowadzenia komunikacji w różnych kanałach bez potrzeby tworzenia odrębnych źródeł informacji.

Wyzwanie

Klient potrzebował wsparcia dla swojego zespołu Scrumowego w zakresie rozwoju oprogramowania i zapewnienia jego jakości. Celem projektu było wdrożenie nowej wersji aplikacji dla systemu konwersacyjnego. Gdy specjaliści Inetum zaczęli pracę nad projektem, zidentyfikowali następujące problemy i wyzwania:

  • Projekt testów automatycznych (GUI oraz API), stworzony dla starszej wersji systemu, wymagał refaktoryzacji.
  • Czas trwania testów automatycznych był długi.
  • Klient potrzebował danych pozwalających na porównanie wydajności starszej wersji systemu i nowego, aktualnie wdrażanego systemu.
  • Narzędzia wykorzystywane przez klienta wymagały aktualizacji do nowszych wersji.

Rozwiązanie

Prace wykonywane przez specjalistów Inetum można podzielić na następujące obszary:

1. Development

W trakcie pracy dla klienta specjaliści Inetum byli odpowiedzialni za prace utrzymaniowe aktualnego systemu. Zajmowali się wdrażaniem go na nowe środowiska i aktualizacją instrukcji wdrożenia. W ramach prac udało się ustalić procedury, które sprawiły, że praca była bardziej efektywna. Zadania, nad którymi pracował Java Developer z Inetum wymagały naprawy kontrolek do wprowadzania danych w systemie administracyjnym, naprawy funkcjonalności wyszukiwania danych oraz logowania do systemu. Do istniejącego systemu administracyjnego dodał możliwość uruchamiania kodu języka Groovy potrzebnego do działania tzw. faktów (artykułów bazy wiedzy) oraz zwracania ich wyniku osobie, która konfigurowała chatbota dla klienta.

Proces rozwoju oprogramowania został dodatkowo poprawiony poprzez:

  • Zdefiniowanie Definition of Ready oraz Definition of Done (łącznie z koniecznością przygotowania testów automatycznych), dzięki czemu zespół Scrumowy wiedział, kiedy zadanie uznane zostanie za zakończone.
  • Regularne spotkania Refinement, które pozwalały na bieżące aktualizowanie zadań w Backlogu.
  • Ulepszony proces code review, w trakcie którego zwracano uwagę na jakość kodu, architekturę systemu oraz testy. Poprawa procesu code review przełożyła się na jakość kodu, a tym samym na lepsze funkcjonowanie aplikacji.

2. Testy (Quality Assurance)

Projekt testów automatycznych istniejącego systemu został zrefaktoryzowany – polegało to na modyfikacji kodu zgodnie z dobrymi praktykami programowania. W dalszym etapie prac pozwoliło to na aktualizację bibliotek i narzędzi wykorzystywanych w tym projekcie. Przy okazji w trakcie prac poprawiona została logika części testów – niektóre przypadki testowe zostały połączone, inne – rozdzielone.

  • W efekcie tych zmian udało się skrócić czas wykonywania testów o połowę.
  • Udało się poprawić proces Continuous Integration / Continuous Delivery oraz zmodyfikować skrypty uruchamiające testy.
  • Specjaliści Inetum zaproponowali wykorzystanie narzędzia Selenium Grid, które służy do uruchamiania testów na różnych przeglądarkach, a także zalecili zmianę przeglądarki na wersję wspieraną. Dzięki temu klient zyskał możliwość używania najnowszych wersji najpopularniejszych przeglądarek.
  • Za utrzymanie tego projektu odpowiadała testerka po stronie klienta, której QA Developer z Inetum służył radą i wsparciem merytorycznym.

Wsparcie projektowe Inetum w ramach testów nowego systemu konwersacyjnego odbywało się w czterech podstawowych obszarach:

1. Code review

Zwrócenie uwagi podczas code review na testy jednostkowe i integracyjne. Starano się, aby pokrywały one jak największą liczbę przypadków biznesowych.

2. Testy manualne

Testy manualne wykonywane były na jak najwcześniejszym etapie procesu developmentu. Tutaj skupiano się głównie na najważniejszych ścieżkach biznesowych, a szczegółowe przypadki pokryte były przez testy niższego poziomu.

Dodatkowo tworzona była dokumentacja zawierająca wszystkie różnice pomiędzy starym i nowym systemem.

3. Testy automatyczne

W ramach tego zadania utworzony został osobny projekt, w którym znajdowały się testy rozwijanego API. W ramach tej części prac zostały wykorzystane nowe technologie i narzędzia takie jak: Java 11, Groovy, Spock, Rest Assured, Maven, Docker i Jenkins. Dodatkowo był on zintegrowany z procesem CI/CD (każdorazowe zbudowanie nowej wersji aplikacji uruchamiało testy). W kolejnej fazie również proces developmentu został wzbogacony o te testy – każdy developer mógł je uruchomić na wirtualnej maszynie, aby zweryfikować poprawność wprowadzonych przez siebie zmian.  

4. Testy wydajnościowe

Ostatnim obszarem były testy wydajnościowe. Klient zgłosił potrzebę posiadania danych pozwalających na porównanie wydajności starego i nowego systemu. W ramach tego zadania uruchomiony został istniejący (na potrzeby starego systemu) projekt testów. Został on zmodyfikowany tak, aby sprawdzać również wydajność nowego systemu. Wykorzystywał on narzędzie JMeter, ale w ramach tego zadania został przygotowany również proof of concept testów wydajnościowych, z wykorzystaniem narzędzia Gatling.

quote person - Rozwój systemu konwersacyjnego wykorzystującego sztuczną inteligencję

Ich specjaliści nie tylko wspierali, ale także zidentyfikowali kilka kluczowych problemów, w tym źle działające testy automatyczne, które wymagały refactoringu. Testy zajmowały zbyt wiele czasu i potrzebowaliśmy danych do porównania wydajności z starej i nowej wersji systemu. Również narzędzia, z których korzystaliśmy wymagały aktualizacji do nowszych wersji.

quote person - Rozwój systemu konwersacyjnego wykorzystującego sztuczną inteligencję

Dorota Jóźwiak, Account Manager w Stanusch

Korzyści dla klienta

  • Poprawa jakości kodu i lepsze funkcjonowanie aplikacji,
  • Aktualizacja bibliotek i narzędzi wykorzystywanych w projekcie,
  • Poprawa procesu wytwarzania oprogramowania oraz zapewniania jakości, w szczególności tworzenia zadań (Backlog),
  • Poprawa know-how zespołu developerskiego w obszarze Quality Assurance, szczególnie w temacie automatyzacji testów ,
  • Wsparcie działania w metodyce Scrum, zwłaszcza poprawienie procesu tworzenia zadań. Zaowocowało to zwiększeniem zrozumienia zadań i docelowego działania danej funkcjonalności przez Zespół Developerski, zwłaszcza przez osoby z mniejszym doświadczeniem w projekcie.

Technologie i narzędzia

Java 11, Groovy, Spock, Rest Assured, Maven, Docker, Jenkins, JMeter, Gatling

O kliencie

Firma Stanusch Technologies jest obecna na polskim rynku od 2007 roku. Dostarcza rozwiązania z zakresu sztucznej inteligencji, takie jak chatboty i voiceboty. Ma na koncie ponad 140 wdrożeń AI.