title: Software testing and test environment simulation in the cloud - A case study on open-source IaC and CI/CD technologies
Creators: name: Halilcevic, Emir
Publisher: name: TU Wien
Year: 2025
Subjects: subject: Softwaretests
subject: Cloud Computing
subject: Infrastruktur als Code
subject: CI CD
subject: Open-Source
subject: software testing
subject: cloud computing
subject: infrastructure as code
subject: CI CD
subject: open source

description: Zusammenhang: Softwaretests sind seit langem eine der wichtigsten Säulen der Softwareentwicklung, da sie sicherstellen, dass die Lösung ein korrektes Ergebnis liefert und sich wie beabsichtigt verhält. Fortschritte im Cloud Computing und DevOps haben den Weg für neue Möglichkeiten zur Automatisierung des Testprozesses geebnet. Angesichts der Unvermeidlichkeit von Softwaretests kann durch Automatisierung der Prozess erleichtert und weniger mühsam gemacht werden, indem manuelle Eingriffe aus dem Prozess entfernt werden. Cloud Computing ermöglicht On-Demand-Zugriff auf Hardwareressourcen, die genutzt werden können, um vorübergehend eine virtuelle Umgebung zu erstellen, in der Tests durchgeführt werden können. Infrastruktur als Code ermöglicht die Automatisierung der Infrastrukturbereitstellung in der Cloud und der Softwarekonfiguration derselben Infrastruktur. In Kombination können wir eine virtuelle Umgebung in der Cloud erstellen, Tests durchführen und eine Bereinigung durchführen, die keine Ressourcenrückstände hinterlässt, und das alles ohne menschliches Eingreifen. Motivation: Dies kann sich als nützlich erweisen, wenn das Entwicklungsteam sicherstellen muss, dass sich die Lösung in der bereitgestellten Umgebung auf der Clientseite korrekt verhält. Wir können die Clientumgebung simulieren, indem wir virtuelle Maschinen, Netzwerke und Router erstellen und alle erforderlichen Softwarekonfigurationen durchführen, indem wir sie durch Code angeben. Die Ausführung dieses Codes kann in einer CI/CD-Pipeline automatisiert werden, die ausgelöst wird, wenn Änderungen an der Softwarelösung vorgenommen wurden, um sicherzustellen, dass diese Änderungen die Lösung selbst nicht negativ beeinflussen. Ziele und Methodiken: Die Open-Source-Community hat dies möglich und zugänglich gemacht, indem sie viele Technologien bereitstellt, die von Unternehmen auf der ganzen Welt ohne Einstiegskosten und Lizenzen verwendet werden können. Wir möchten verschiedene Praktiken und Tools in der Open-Source-Community abdecken und erklären, die Tests in der Cloud ermöglicht haben. Um die aktuellen Tools und Praktiken abzudecken, werden wir verschiedene Interviews mit Experten durchführen, die Einblicke in das Thema und die Tools geben. Da es unser Ziel ist, auch die Verwendung dieser Technologien zu demonstrieren, werden wir einen Pipeline-Prototyp gemäß dem oben beschriebenen Szenario des Testens in der Cloud implementieren, der auf einen realen Anwendungsfall angewendet wird, um diesen Ansatz zu bewerten. Abschließend werdenwir ein besseres Verständnis der Cloud-Testfunktionen vermitteln und gleichzeitig Vorteile und Herausforderungen skizzieren. Ergebnisse: Wir haben erfolgreich einen Prototyp entwickelt und ihn sowohl auf einen f iktiven (Server-Client-Kommunikation) als auch auf einen realen Anwendungsfall (Hitachi Rail, Moving Block System) angewendet, um ihn zu bewerten. Wir haben festgestellt, dass automatische Cloud-Tests in verschiedenen Bereichen Verbesserungen bringen (z. B. geringerer Testaufwand, Zugänglichkeit der Testnutzung usw.), jedoch auch einen höheren Aufwand bei der Einrichtung sowie höhere Einstiegshürden in Bezug auf Wissen und zusätzliche Hardwareressourcen mit sich bringen. Am wichtigsten sind die Vorteile, die wir skizzieren, wie den viel geringeren Aufwand bei der Verwendung zuvor manueller Tests, die automatisiert werden können, sowie die Idempotenz, die durch die ständige Neubereitstellung und Zerstörung der für Tests erforderlichen Infrastruktur sichergestellt werden kann. Fazit: Die Migration in die Cloud bietet viele Vorteile (z. B. beliebige Anzahl gleichzeitiger Testumgebungen), aber auch Nachteile (z. B. Wissen und Ressourcen, die zum Hosten der Cloud erforderlich sind), die bei der Entscheidung darüber berücksichtigt werden müssen. Trotzdem bietet die Durchführung von Tests in der Cloud viel Potenzial und öffnet die Tür zu mehr Möglichkeiten der Automatisierung des Testprozesses sowie der Simulation von Testumgebungen. Takeaway: Cloud-Tests verdienen Beachtung, wenn nach Möglichkeiten zur Automatisierung des Testprozesses gesucht wird. Bei der Entscheidung für diesen Ansatz müssen jedoch der Migrationsprozess und die benötigten Ressourcen berücksichtigt werden. Schlüsselwörter: Softwaretests, Cloud Computing, Infrastruktur als Code, CI/CD, Open-Source
description: Context: Software testing has long been one of the major pillars of software engineering, as it ensures that the solution produces a correct result, reaches an appropriate outcome, or behaves as intended. Advancements made in cloud computing and DevOps have paved the path for new ways of automating the testing process. Given the inevitability of software testing, automating the process can ease the process making it less tedious by removing manual intervention from the process. Cloud computing allows on-demand access to hardware resources which can be utilized to temporarily create a virtual environment where tests can be performed. Infrastructure as code allows automation of infrastructure deployment to the cloud, and software configuration of the same infrastructure. In combination we can create a virtual environment in the cloud, perform tests, and perform a cleanup leaving no residue in terms of resources, all without human intervention. Motivation: This can prove useful when the development team needs to ensure that the solution will behave correctly in the deployed environment on the client side. We can simulate the client environment by spawning virtual machines, networks, routers, and perform all the needed software configuration by specifying it through code. The execution of this code can be automated in a CI/CD pipeline that will be triggered when changes to the software solution have been introduced, to ensure that those changes will not negatively impact the solution itself. Goals and methodologies: Open-source community has made this possible and accessible by providing many technologies that are being used by companies around the world that don’t want to be constrained by licenses that introduce entry costs. We aim to cover and explain various practices and tools in the open-source community that have enabled testing in the cloud by performing a literature review. To cover the current tools and practices we will perform various interviews with experts that will give insight in to the topic and the tools. As our goal is to also demonstrate the use of these technologies, we will implement a pipeline prototype following the above described scenario of testing in the cloud, which will be applied to a real life use case in order to evaluate this approach. In conclusion we will provide a better understanding of cloud testing capabilities, while outlining benefits and challenges. Results: We successfully developed a prototype and applied it to both a fictional use case (server-client communication) as well as a real life use case (Hitachi Rail, Moving Block System) in order to evaluate it. We found that automatic cloud tests improve upon various areas (e.g. lower testing effort, test usage accessibility, etc.), however they also introduce both a setup complexity overhead as well as a higher bar of entry in terms of both knowledge and additional hardware resources. Most importantly, we outline benefits such as much lower effort needed to use previously manual tests that can be automated, as well as idempotency that can be ensured by always redeploying and destroying the infrastructure needed for testing. Conclusion: Migration to the cloud offers many benefits (e.g. arbitrary amount of concurrent testing environments) but also drawbacks (e.g. knowledge and resources needed for hosting the cloud) that have to be considered when deciding on it. Despite this, performing tests in the cloud offers much potential and opens door to more possibilities of automating the testing process as well as test environment simulation. Takeaway: Cloud testing deserves consideration when looking for ways to automate the testing process, but the migration process and resources needed must be taken into account when deciding for this approach. Keywords: software testing, cloud computing, infrastructure as code, CI/CD, opensource