So aktivieren Sie die schnelle Qualität in 5 Schritten

Biobild von Mark Lambert, VP of Strategic Initiatives

Von Markus Lambert

9. Februar 2018

5  min lesen

Agile und DevOps werden häufig verkauft, um Software mit weniger Ressourcen schneller zu erledigen. Aber was ist mit Qualität? In diesem Beitrag erfahren Sie, wie Sie mit Continuous Testing Qualität mit hoher Geschwindigkeit aktivieren.

Jeder möchte eine qualitativ hochwertigere Software, schneller. Die Anforderungen an moderne Softwareentwicklungsteams sind immens - von zunehmendem Wettbewerbs- und Marktdruck, erhöhter Funktionalität und Komplexität bis hin zu höheren Erwartungen an Produktqualität, Sicherheit und Zuverlässigkeit. Agile Entwicklungsmethoden sind häufig gefragt, weil sie versprechen, schneller auf Veränderungen zu reagieren und die Kundenanforderungen besser zu erfüllen.

Agile und (in jüngerer Zeit) DevOps werden jedoch häufig verkauft, um Software mit weniger Ressourcen schneller zu erledigen, obwohl dies nicht beabsichtigt ist. Realistisch gesehen versuchen intelligente Entwicklungsteams, da bis zu 70% der IT-Projekte ihre Ziele verfehlen oder verfehlen, ihre Entwicklungspraktiken zu verbessern, damit sie nicht nur mit einem Projekt erfolgreich sein, sondern auch einen wiederholbaren Prozess für zukünftige Iterationen und Produkte erstellen können . In diesem Beitrag werden wir darüber sprechen, wie die für agile und iterative Methoden erforderliche Agilität erreicht werden kann, während nicht nur ein Endprodukt erreicht wird, sondern ein Produkt, das die Qualitäts- und Sicherheitsziele erfüllt und übertrifft.

Kontinuierliches Testen ist die Antwort auf Qualität bei Geschwindigkeit

Wie sich herausstellt, ist das Testen sowohl das Problem als auch die Lösung, um schneller eine bessere Qualität zu erzielen. In einem agilen Prozess können viele der Entwicklungsschritte verkleinert werden, um angemessene Funktionen für das Design und die Implementierung zu erstellen. Die Integration der neuen Funktionalität ist jedoch riskant und der Umfang der Tests ist unklar. Wie ich in einem previous postDas Testen ist einer der Hauptgründe, warum Softwareteams Schwierigkeiten haben, agile Methoden anzuwenden. Die Teams verlieren die angestrebte Beweglichkeit, weil sie beim Testen zu viel oder zu wenig festgefahren sind.

Kontinuierliche Tests werden als Lösung für die Probleme angesehen, mit denen Softwareteams konfrontiert sind, die DevOps und agile Entwicklung einsetzen. Wikipedia definiert Continuous Testing als „… Der Prozess der Durchführung automatisierter Tests als Teil der Software Delivery-Pipeline, um sofortiges Feedback zu den Geschäftsrisiken zu erhalten, die mit einem Software-Release-Kandidaten verbunden sind.“ Trotz der einfachen Definition ist die Implementierung kontinuierlicher Tests und deren Optimierung im Laufe der Zeit eine ganz andere Sache, und darauf werde ich mich heute hier konzentrieren.

Verwandeln Sie Ihre Eistüte in eine Pyramide

Die ideale Testpyramide definiert, wo es am besten ist, Zeit und Mühe in ein Projekt zu investieren. In der idealen Pyramide investieren Sie Ihre wertvolle Zeit und Mühe in eine umfassende Reihe von Komponententests auf der Grundlage der Pyramide, die durch API- und Servicetests unterstützt wird, und an der Spitze der Pyramide eine viel geringere Anzahl von Systemen und GUI-basierte Tests.

Diese Pyramide wird jedoch oft in die sogenannte Eistüte umgewandelt. Die Teams verbringen zu viel Zeit und Mühe mit spröden und komplexen GUI-Tests auf Systemebene, bei denen die vollständige Funktionalität implementiert und integriert werden muss. Dies führt zu Tests, die in den früheren Phasen des SDLC nicht kontinuierlich ausgeführt werden können. Der Schlüssel zu einer erfolgreichen kontinuierlichen Prüfung ist das Schmelzen der Eistüte und Konzentrieren Sie sich auf die Erstellung automatisierter Unit- und API-Tests Dies kann kontinuierlich ausgeführt werden, wenn Entwickler die neue Funktionalität implementieren.

Die fünf Schritte, um Qualität durch kontinuierliche Tests schnell zu ermöglichen

1. Erstellen Sie eine Grundlage für Unit-Tests

Erstellen Sie eine Grundlage für Komponententests, indem Sie den Prozess zum Erstellen, Ausführen und Verwalten von Tests automatisieren. Nur wenn die Erstellung und Wartung von Unit-Tests einfacher wird, können Entwicklungsteams projektweite Unit-Tests für alle Komponenten durchführen.

Nehmen Sie die Testautomatisierung sowohl für die Testerstellung als auch für die Ausführung und Verwaltung an und erweitern Sie die aktuelle Unit-Test-Suite, um so viel Code des Produkts wie möglich aufzunehmen.

Um mehr über Unit-Tests zu erfahren: www.parasoft.com/solutions/unit-testing/

2. Vermeiden Sie es, sich auf UI-zentrierte Tests im späten Zyklus zu verlassen

Vermeiden Sie es, sich auf späte, spröde, UI-zentrierte Tests im späten Zyklus zu verlassen, die nur am zeitaufwändigsten und teuersten zu diagnostizieren und zu reparieren sind. Anstatt sich auf die Automatisierung aller manuellen Testszenarien zu konzentrieren, sollten Sie in eine solide Grundlage für Unit- und API-Tests investieren, um sicherzustellen, dass die Architektur, die mit der Benutzeroberfläche kommuniziert, überhaupt solide ist.

Obwohl Tests auf Systemebene immer noch wichtig und erforderlich sind, sollten sie nicht an erster Stelle stehen. Es ist auch nicht an der Zeit, kritische Architektur-, Leistungs- und Sicherheitsprobleme zu entdecken. Softwareteams können ihre Abhängigkeit von diesen UI- und Systemtests verringern, indem sie eine solide Grundlage für Unit- und API-Tests schaffen. Wenn Sie die anderen Empfehlungen hier befolgen, sollten viele Systeme vor Beginn der Tests auf Systemebene gut bewährt sein.

Stellen Sie sicher, dass Sie auch eine statische Analyse verwenden, um die gesamte Codebasis zu analysieren, einschließlich Legacy- und Code von Drittanbietern, um Fehler und Sicherheitslücken zu erkennen, die beim Testen möglicherweise übersehen werden. Die statische Analyse ist auch wichtig für die Durchsetzung von Projektcodierungsstandards.

3. Verstehen Sie die Codeabdeckung für die gesamte Testpyramide

Verstehen Sie die Codeabdeckung auf und ab der gesamten Pyramide sowie die Rückverfolgbarkeit auf Anforderungen / User Stories, da Entwicklungsteams ohne sie nicht wirklich wissen, was getestet wurde und was nicht. Wenn Sie die Testabdeckung nicht verstehen, müssen Sie nicht wissen, was auf jeder Ebene der Pyramide getestet werden soll. Dies bedeutet, dass selbst geringfügige Änderungen so viele Tests erfordern, dass der gesamte Prozess blockiert wird. Siehe meinen vorherigen Beitrag über Änderungsbasiertes Testen.

4. Verschieben Sie mit Service Virtualization nach links

Nutzen Sie die Service-Virtualisierung von Anwendungsabhängigkeiten, um automatisierte API-Tests viel früher im Entwicklungslebenszyklus zu ermöglichen. Eine verstärkte Automatisierung und frühere Erkennung von Fehlern sind entscheidend für den Erfolg. Wenn Sie API-Tests früher durchführen, können Sie wichtige Aspekte des Systems wie Leistung und Solidität der Architektur erkennen. Dies ist auch eine wichtige Phase für Sicherheitstests.

5. Nutzen Sie die Analyse der Auswirkungen von Änderungen, um die Agilität zu beschleunigen

Beschleunigen Sie die agile Entwicklung mit einer Analyse der Auswirkungen auf Änderungen pro Build, um die Details des Risikos zu verstehen, das jede neue Iteration eingeführt hat. Die durch die Analyse der Auswirkungen von Änderungen bereitgestellten Analysen sind der Schlüssel dafür, dass sich die Tests nur auf das konzentrieren, was unbedingt getestet werden muss, und nicht auf den sonst verwendeten Schrotflintenansatz.

Nur durch intelligente, datenbasierte Entscheidungsfindung können echte kontinuierliche Tests durchgeführt werden. Der Schlüssel dazu liegt darin, das Entwicklungsteam auf die Mindestanzahl von Tests zu konzentrieren, um bei jeder Iteration eine ordnungsgemäße Abdeckung sicherzustellen Bringen Sie die Agilität wieder auf Agilität Entwicklungsmethoden.

Der Weg zur Verbesserung

Es überrascht nicht, dass der beste Weg, um loszulegen, darin besteht, die Testpyramide zu überprüfen und dann zu bewerten, wo sich ein Projekt derzeit befindet. Gibt es eine solide Grundlage für automatisierte Komponententests, die pro Build ausgeführt werden? Werden so viele Produkt-APIs wie möglich automatisiert getestet? Wird Virtualisierung verwendet? Beruht das Testen auf einer komplexen Suite manueller UI-Tests, die erst ausgeführt werden können, wenn das System fast vollständig ist? Der Weg zur Verbesserung basiert auf dem Aufbau einer geeigneten Testpyramide, Automatisierung sowie Datenerfassung und -analyse.

Der zahlreiche Druck auf moderne Softwareentwicklungsteams macht es schwierig, Produkte pünktlich und spezifikationsgerecht zu entwickeln. Neue Entwicklungsmethoden wie die agile Entwicklung haben Teams dabei geholfen, sich darauf zu konzentrieren, die richtigen Dinge für den Kunden zu bauen, aber Projekte sind immer noch verspätet und fehleranfällig, wobei das Testen ein Schlüsselaspekt der Entwicklung ist, der moderne Entwicklungsmethoden weiterhin belastet. Um signifikante Verbesserungen zu erzielen, setzen Sie auf eine solide Grundlage automatisierter Komponententests und API-Tests durchführen früh und oft über Service-Virtualisierung. Und vergessen Sie nicht, dass sich die Testergebnisse durch die Verwendung von Daten aus stark verbessern erweiterte Analyse von Softwaretests Testmanagement zu fahren.

Neuer Handlungsaufruf

Biobild von Mark Lambert, VP of Strategic Initiatives

Von Markus Lambert

Mark, Vice President of Products bei Parasoft, ist dafür verantwortlich, dass Parasoft-Lösungen den Unternehmen, die sie einsetzen, einen echten Mehrwert bieten. Mark ist seit 2004 bei Parasoft und arbeitet mit einem breiten Querschnitt von Global 2000-Kunden zusammen, von spezifischen Technologieimplementierungen bis hin zu umfassenderen Initiativen zur Verbesserung von SDLC-Prozessen.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.