eBook „Software Quality Assurance“ Software-Qualität von Codezeile zu Codezeile
Anbieter zum Thema
In der professionellen Software-Entwicklung sollte kontinuierliche Qualitätssicherung Programm sein, denn die Toleranz für Bugs geht bei den Anwendern gegen Null. Für DevOps-Teams gilt es, ihren Code in einer Reihe von Härte- und Belastungstests unter die Lupe zu nehmen, damit eine Software auch den Herausforderungen in der Praxis standhält.

Freude am Coden
Bei seiner Ernennung zum CEO des VW-Konzerns schien Herbert Diess hinsichtlich der DIgitalisierung genau die richtigen Weichen zu stellen. Er schien die Bedeutung der Softwareentwicklung für die Zukunft der Autoindustrie und die hohe Tragweite der Qualitätssicherung zu verstehen. Er hatte argumentiert, VW würde „eine Software-Kultur brauchen“ – und folglich sollte sie dann bekommen.
Doch greifbare Resultate haben sich nicht materialisiert – jedenfalls nicht verhältnismäßig zur Dringlichkeit der Problematik Softwarequalität. Widerspenstige Software-Bugs hatten die Vorstellung neuer Modelle der Marken Porsche, Audi und Bentley verzögert und drückten auf die Umsatz-Bremse.
Die stotternde Integration der Softwareschmiede Cariad brachte das Fass zum Überlaufen. Das VW-Betriebssystem von Cariad, VW.OS, sollte als eine bahnbrechende Errungenschaft die Automobilgeschichte schreiben. Ständig mit Cloud-Diensten verbunden – mit Volkswagens berühmter Automotive Cloud VW.AC – sollte es innovative Funktionen und Anwendungen bedarfsgerecht bereitstellen. Bisher bleibt der Leistungsumfang hinter den Erwartungen zurück.
Im Sommer 2022 musste Diess seinen Posten vei VW räumen, auch wegen der gescheiterten Umstrukturierung der Software-Sparte. Volkswagen konnte sich nicht schnell genug in ein agiles Softwareunternehmen verwandeln. Mit den Herausforderungen der Software-Qualitätssicherung ist der Automobilkonzern allerdings nicht allein. Andernorts sind diese zum Teil wesentlich gravierender.
Manche Tesla-Autobesitzer können von der SQA-Problematik sicherlich ein Lied singen. Beharrliches Ignorieren freier Parkplätze ist noch das kleinste aller Übel. Im autonomen Fahrbetrieb ein Stoppschild übersehen? Über rote Ampeln vorbei im Tiefflug über die Kreuzung geflitzt? Den Fingerabdruckscanner im Schneesturm abgeschaltet, um Energie zu sparen? Alles nicht sehr erbaulich. „Hey, Tesla, hol dir doch ein Software-Update!“ (Das funktioniert übrigens sehr gut. Danach macht das Fahrzeug einen Reboot – notfalls im laufenden Verkehr.)
Die Herausforderungen der Software-Qualitätssicherung halten viele Entwicklungsteams in Atem. Die Automobilbranche ist da kein Einzelfall. Softwarefehler drohen auch Unternehmen in Sektoren an weniger exponierten Stellen mit unliebsamen Folgen wie dem Verlust an Wettbewerbsvorteilen, Umsatzeinbrüchen, Imageschäden oder sonstigen Unannehmlichkeiten.
Den Ursachen auf der Spur
Die digitaltransformierte Wirtschaft ist im Zuge des Turbo-Fortschritts durch und durch softwarezentrisch geworden. Während manche Unternehmen bei der digitalen Transformation aufs Gaspedal drücken, nimmt auch das Tempo der Softwareentwicklung an Fahrt auf.
Dies stellt IT-Teams unter enormen Druck, Software schnell zu entwickeln und zu veröffentlichen. Oft geschieht dies mit begrenzten Ressourcen. Die meisten Softwareprobleme sind nicht auf eine grundsätzliche Unfähigkeit zurückzuführen, den Code zu kompilieren und zu debuggen. Sie werden vielmehr durch „fest eingerostete“ Software-Entwicklungsabläufe verursacht. Der Teufel steckt im Detail.
Die Kunst besteht darin, auch die verborgenen Problemquellen zeitnah ausfindig zu machen –– nicht „nur“ die ganz offensichtlichen. Um sicherzustellen, dass die Arbeitsergebnisse im Software-Engineering alle Anforderungen erfüllen, kommen zwei Ansätze ins Spiel: der präventive Ansatz der Software-Qualitätssicherung (Software Quality Assurance, SQA) und der korrektive Ansatz der Qualitätskontrolle.
Aktivitäten rund um die Qualitätssicherung sind darauf ausgerichtet, das Auftreten von Mängeln an Softwareprodukten und Dienstleistungen zu verhindern. Tätigkeiten rund um die Qualitätskontrolle zielen vielmehr darauf ab, jene Mängel, die bereits aufgetreten sind, ausfindig zu machen.
„Selbstfahrende“ Qualitätssicherung?
In modernen CI/CD-Pipelines schafft automatisierte Qualitätssicherung Abhilfe. CI/CD-Pipelines sind dafür grundsätzlich sehr empfänglich. Entwickler können SQA in ihre Dev(Sec)Ops-Prozesse integrieren, indem sie automatisierte Tests in den Build- und Deployment-Prozess einbinden. Dies kann mithilfe von Tools wie Jenkins, Bamboo oder Travis CI geschehen.
Die automatisierten Tests kommen dann bei jedem Build zum Zuge. Fehler lassen sich so frühzeitig erkennen und beheben, bevor man die Software auf die Kunden loslässt (wo diese Bugs richtigen Schaden anrichten können). Darüber hinaus kann die Integration von Testmanagement-Tools in den CI/CD-Prozess sicherstellen, dass Prüfungen der Qualitätssicherung regelmäßig stattfinden und beobachtbar sind (siehe auch das eBook „Observability“).
Die kontinuierliche Überwachung der Softwarequalität und -Performance gilt als eine Voraussetzung für die Fähigkeit zur kontinuierlichen Prozessoptimierung. Diese gehört nämlich ins Pflichtenheft der Qualitätssicherung. Moderne Ansätze zur Qualitätssicherung versprechen Unternehmen eine Vielzahl von Vorteilen. Sie helfen, die Anzahl von Fehlern und ihre Trageweise zu verringern, die Benutzerzufriedenheit zu verbessern, die Effizienz der Softwareentwicklung zu steigern und damit die Kosten zu senken.
Trotz der entscheidenden Bedeutung von Observability und Softwaretests für die Gewährleistung der Softwarequalität verlässt sich noch immer eine erhebliche Anzahl von Unternehmen auf angestaubte Konzepte und manuelle Prozesse. Dadurch setzen sie sich unnötigen Risiken aus. Manuelle Tests sind ressourcenintensiv und fehlerträchtig. Sie erfordern spezialisierte Fähigkeiten, die viele Unternehmen nicht bereitstellen können.
Anstatt ihre SQA-Prozesse zu automatisieren, veröffentlichen sie auf Biegen und Brechen Software, die nicht ordnungsgemäß getestet werden konnte. Oft tappen Unternehmen im Dunklen beim Erstellen ihrer Produkt-Roadmaps und wiegen sich in Ungewissheit hinsichtlich der Auswirkungen nagelneuer technischer Innovationen auf das Endprodukt. Die richtigen Ansätze können hier Klarheit schaffen, Industriestandards und bewährte Praktiken den Weg weisen.
Unternehmen müssen ihre Softwaretest-Praktiken durch sorgsame Überlegungen auf den aktuellen Wissensstand bringen. An leistungsstarken Hilfsmitteln mangelt es zum Glück nicht. Damit eine Softwarelösung der sprichwörtlichen Feuerprobe der gelebten Praxis standhält, gilt es für die DevOps-Teams, den Code in einer Reihe von Härte- und Belastungstests unter die Lupe und auf die sprichwörtliche „Probefahrt“ zu nehmen.
Erfolgreiche Softwareschmieden nutzen eine Kombination aus verschiedenen SQA-Techniken und -Tools, um unterschiedliche Aspekte der Softwareentwicklung abzudecken. So können Sie die Qualität ihrer Prozesse und „Erzeugnisse“ kontinuierlich anheben. SQA-Techniken kommen in mehreren verschiedenen Phasen des Softwareentwicklungsprozesses zum Einsatz. Ob Audits, Code-Walkthroughs und Reviews, Stress- und Regressionstests oder sonstige Inspektionen: Für jedes Problem hat schon jemand eine Lösung gefunden.
Automatisierte SQA-Techniken, -Prozesse und -Werkzeuge schaffen robuste Software, zum Teil auch schon KI- und ML-gestützt. Diese Konzepte und Hilfsmittel helfen bei der kontinuierlichen Gewährleistung einer gleichbleibend hohen Qualität. So können Unternehmen sicherstellen, dass die Anwender ihrer Software ein hochwertiges und fehlerfreies Produkt bekommen und Vertrauen fassen.
Fazit
Für die digitaltransformierte Wirtschaft und Gesellschaft ist die Qualität der Software von entscheidender Bedeutung. Je mehr Code die virtuelle und die reale Welt ineinander verwebt, desto wichtiger wird es, dass das Ganze fehlerfrei funktioniert. Für Qualitätskompromisse bei Softwareprodukten oder -Diensten haben die „digitaltransformierten“ Endanwender/innen dementsprechend rein gar nichts mehr übrig. Qualitätskontrolle „nach dem Spiel“ geht nicht weit genug. Jetzt ist auch Qualitätssicherung Pflicht. Mittendrin in jeder DevOps-Pipeline.
(ID:49210262)