Softwareentwicklung für Stanusch Technologies, einem Branchenführer bei der Implementierung von KI-Systemen
Stanusch Technologies ist ein polnisches Unternehmen, das innovative Lösungen auf der Grundlage künstlicher Intelligenz anbietet. Der Kunde entwickelt eine neue Version der Anwendung für ein Chatbot- und Voicebot-Gesprächssystem und benötigte Unterstützung in Form von zusätzlichen personellen Ressourcen für das Entwicklungsteam sowie im Bereich der Qualitätssicherung.
Das Kundensystem
Der Kunde stellt ein auf der Omni-Chatbot-Plattform basierendes Konversationssystem zur Verfügung, das auf künstliche Intelligenz zurückgreift. Es kann in Form von Chat- oder Voicebots für die kommerzielle Nutzung in jeder Branche implementiert werden, wodurch die Kommunikation mit Kunden verbessert wird. Mit den virtuellen Assistenten von Stanusch ist es möglich den Kundenservice zu automatisieren- Außerdem bieten sie Unterstützung bei der internen Unternehmenskommunikation oder bei Marketingaktivitäten sowie bei der Analyse großer Datensätze. Der Vorteil des Tools ist eine einzige Wissensdatenbank, die es ermöglicht, über verschiedene Kanäle zu kommunizieren, ohne dass separate Informationsquellen erstellt werden müssen.
Das Problem
Der Kunde benötigte Unterstützung für sein Scrum-Team bei der Softwareentwicklung und Qualitätssicherung. Das Ziel des Projekts bestand darin, eine neue Version der Anwendung für das Konversationssystem zu implementieren. Als die JCommerce-Spezialisten mit der Arbeit an dem Projekt begannen, identifizierten sie die folgenden Probleme und Herausforderungen:
- Das Projekt zum automatischen Testen (GUI und API), das für eine ältere Version des Systems erstellt wurde, erforderte ein Refactoring.
- Die Dauer der automatischen Tests war lang.
- Der Kunde benötigte Daten, die einen Leistungsvergleich zwischen der älteren Version des Systems und dem neuen, derzeit implementierten System ermöglichen.
- Die vom Kunden verwendeten Tools mussten auf neuere Versionen aktualisiert werden.
Die Lösung
Die Arbeit der JCommerce-Spezialisten lässt sich in die folgenden Bereiche unterteilen:
Entwicklung
Während der Arbeit für den Kunden waren die JCommerce-Spezialisten für die Wartung des aktuellen Systems verantwortlich. Sie waren für die Implementierung in neue Umgebungen und die Aktualisierung der Implementierungsanweisungen verantwortlich. Es ist ihnen gelungen, Verfahren zu etablieren, die die Arbeit effektiver machten. Die Aufgaben, an denen der JAVA Developer von JCommerce arbeitete, erforderten die Reparatur von Steuerelementen zur Eingabe von Daten in das Verwaltungssystem, die Reparatur der Datensuchfunktionalität und der Anmeldung im System. Er fügte dem bestehenden Verwaltungssystem die Möglichkeit hinzu, einen Groovy-Sprachcode auszuführen, der für die Bedienung der sogenannten Fakten (Wissensdatenbank-Artikel) und die Rückgabe ihres Ergebnisses an die Person, die den Chatbot für den Client konfiguriert hat, erforderlich ist.
Der Software-Entwicklungsprozess wurde weiter verbessert durch:
- Festlegen von Definition of Ready und Definition of Done (einschließlich der Notwendigkeit, automatische Tests vorzubereiten), sodass das Scrum-Team wusste, wann die Aufgabe als erledigt gelten würde.
- Regelmäßige Refinement-Sitzungen, die es ermöglichten, die Aufgaben im Backlog laufend zu aktualisieren.
- Verbesserter Code-Review-Prozess, bei dem der Code-Qualität, der Systemarchitektur und demn Tests Aufmerksamkeit gewidmet wurde. Der verbesserte Code-Review-Prozess führte zu einer besseren Code-Qualität und damit zu einem besseren Funktionieren der Anwendung.
Tests (Quality Assurance)
Das Projekt zum automatischen Testen des bestehenden Systems wurde refaktorisiert – es bestand darin, den Code gemäß guter Programmierpraxis zu modifizieren. In einem späteren Arbeitsstadium ermöglichte dies die Aktualisierung der in diesem Projekt verwendeten Bibliotheken und Werkzeuge. Während der Arbeit wurde die Logik einiger der Tests verbessert – einige Testfälle wurden zusammengeführt, andere wurden getrennt.
- Infolge dieser Änderungen konnte die Testzeit um die Hälfte verkürzt werden.
- Es ist uns gelungen, den Prozess Continuous Integration / Continuous Delivery zu verbessern und die Skripte, die die Tests ausführen, zu modifizieren.
- Die Spezialisten von JCommerce schlugen vor, das Selenium-Grid-Tool zu verwenden, mit dem Tests auf verschiedenen Browsern durchgeführt werden können, und empfahlen, den Browser auf eine unterstützte Version umzustellen. Auf diese Weise erhielt der Kunde die Möglichkeit, die neuesten Versionen der gängigsten Browser zu verwenden.
- Die Wartung dieses Projekts lag in der Verantwortung einer Testerin auf Kundenseite, der ein QA von JCommerce mit Rat und Tat zur Seite stand.
Die Unterstützung des JCommerce-Projekts im Rahmen der Erprobung des neuen Konversationssystems fand in vier grundlegenden Bereichen statt:
1) Code Review
Rücksichtnahme bei der Codeüberprüfung auf Unit- und Integrationstests. Der Ansatz, so viele Geschäftsfälle wie möglich abzudecken.
2) Manuelle Tests
Manuelle Tests wurden im Entwicklungsprozess so früh wie möglich durchgeführt. Hier lag der Schwerpunkt hauptsächlich auf den wichtigsten Geschäftswegen, und detaillierte Fälle wurden durch Tests auf niedrigerem Niveau abgedeckt.
Zusätzlich wurde eine Dokumentation erstellt, die alle Unterschiede zwischen dem alten und dem neuen System enthält.
3) Automatische Tests
Im Rahmen dieser Aufgabe wurde ein eigenes Projekt ins Leben gerufen, das Tests der entwickelten API beinhaltete. In diesem Teil der Arbeit wurden neue Technologien und Werkzeuge wie Java 11, Groovy, Spock, Rest Assured, Maven, Docker und Jenkins genutzt. Zusätzlich wurde diese Aufgabe in den CI/CD-Prozess integriert (jedes Mal, wenn eine neue Version der Anwendung erstellt wurde, begannen die Tests). In der nächsten Phase wurde auch der Entwicklungsprozess durch diese Tests ergänzt – jeder Entwickler konnte sie auf einer virtuellen Maschine ausführen, um die Richtigkeit der von ihm vorgenommenen Änderungen zu überprüfen.
4) Leistungstests
Den letzten Bereich stellten Leistungstests dar. Der Kunde berichtete, dass er Daten benötigte, um die Leistung des alten und des neuen Systems vergleichen zu können. Im Rahmen dieser Aufgabe wurde das bestehende (für das alte System gedachte) Testprojekt gestartet. Es wurde geändert, um auch die Leistung des neuen Systems zu überprüfen. Es griff auf das JMeter-Tool zurück, aber im Rahmen dieser Aufgabe wurde auch ein Proof-of-Concept von Leistungstests mit dem Gatling-Tool erstellt.
Business Benefits:
- Verbesserte Codequalität und besseres Funktionieren der Anwendung,
- Aktualisierung der im Projekt verwendeten Bibliotheken und Werkzeuge,
- Verbesserung des Prozesses der Softwareentwicklung und Qualitätssicherung, insbesondere die Erstellung von Aufgaben (Backlog),
- Verbesserung von Know-how des Entwicklungsteams auf dem Gebiet der Qualitätssicherung, insbesondere im Bereich der Testautomatisierung
- Unterstützung der Scrum-Methodik, insbesondere die Verbesserung des Prozesses der Aufgabenerstellung. Dies führte zu einem besseren Verständnis der Aufgaben und des Zielbetriebs einer bestimmten Funktionalität durch das Entwicklerteam, insbesondere durch Personen mit weniger Erfahrung mit dem Projekt.
Zusammensetzung des Teams: QA und JAVA Developer.
Projektdauer: 06.2019 – bis heute