Beschleunigen Sie das Testen von Software, indem Sie Test-Assets für Entwickler und Testteams freigeben
Von Jamie Motheral
9. Januar 2019
8 min lesen
Während das ganze Linksverschiebungskonzept ist in der Tat unglaublich wertvoll. Sie können das Testen beschleunigen, um mit der Entwicklung Schritt zu halten, indem Sie einfach die Nacharbeit bei Funktionstests reduzieren und die Zusammenarbeit zwischen Teams verbessern. Das heißt, wenn Sie das richtige Werkzeug haben.
Zu Beginn des Jahres 2019 musste ich über die Tausenden von Gesprächen nachdenken, die ich im letzten Jahr mit QS, Testingenieuren und Managern geführt habe. Dieses Jahr, insbesondere das letzte Quartal, war geprägt von Gesprächen über die Beschleunigung des Testens, insbesondere darüber, wie Teststrategien gleichzeitig mit der Entwicklung ausgerichtet werden können. Daher hatte ich das große Vergnügen, mit vielen Menschen zu teilen, wie man Nacharbeiten bei funktionalen und nicht funktionalen Tests mit reduzieren kann Parasoft SOAtestGleichzeitig wird die Zusammenarbeit zwischen den Teams verbessert und gleichzeitig das Testen beschleunigt, um mit der Entwicklung Schritt zu halten.
Ich kann zuversichtlich sagen, dass SOAtest ist Komplettlösung für die Erstellung und Automatisierung von Funktionstests. Es ist das Blut, der Schweiß und die Tränen aus über 17 Jahren Entwicklung, die von einem Unternehmen produziert wurden, dessen einziger, hartnäckiger Fokus auf der Testautomatisierung liegt und das Testen für seine Kunden einfacher und effizienter macht. In Bezug auf End-to-End-Tests wird der manuelle Aufwand für die Testerstellung für verschiedene Arten von Funktionstests reduziert, z. B. Servicedefinitions- / Vertragstests, Rauchtests, API-Komponententests, API-Szenariotests, Web-UI-Tests und Datenbanktests , Omnichannel-Tests, Microservices-Tests, Leistungs- / Auslastungstests und API-Sicherheitstests, die alle einfach automatisiert werden können und über eine Befehlszeilenschnittstelle oder die preisgekrönte REST-API von SOAtest mit Ihrer CI / CD-Pipeline verbunden werden können.
Ich kann viel über SOAtest und seine technologische Tiefe, Innovationen in der KI und maschinellem Lernen und den Erfolg, den es unseren Kunden ermöglicht hat, ihre Ziele für Qualität und Lieferung zu erreichen, tun. Heute möchte ich jedoch darüber sprechen Der Wert, der freigeschaltet wird, wenn eine Organisation SOAtest verwendet, um die Lücke zwischen Entwicklungs-, Qualitätssicherungs- und Leistungstestteams zu schließen und vollständige Synergien in einer Testorganisation zu erzielen.
Entwicklung legt den Grundstein für Tests
Also werde ich einfach das Pflaster abreißen und es dort auslegen: Entwicklung sollte testen.
Und ich sage nicht nur Unit-Tests (was offensichtlich wertvoll ist). Die Entwicklung sollte in das Testen neuer oder geänderter APIs einbezogen werden. Nun, ich sage nicht, dass Entwicklung vollständige Testszenarien erstellen sollte, und ich denke, wenn Sie sich wirklich damit beschäftigen, führt die Entwicklung höchstwahrscheinlich bereits einige der Tests durch, über die ich hier spreche. Wenn eine neue API erstellt wird oder eine API eine Schema- oder Dienständerung erfahren hat, erfolgt die Entwicklung normalerweise benötigen Erstellen Sie für jede dieser APIs mindestens Vertragstests und Rauchtests, um zu überprüfen, ob der Servicevertrag gemäß den Spezifikationen geschrieben wurde, und um das Schema (Anforderung und Antwort) und die Endpunkte (HTTP, MQ / JMS-Thema / Warteschlange usw.) zu überprüfen.
Wenn Entwickler das gleiche Funktionstest-Tool zum Erstellen von Tests verwenden können, kann das QS-Team diese Tests einfach nutzen, um die komplexeren Testszenarien zu erstellen, die sie validieren müssen. Wie können Entwickler Parasoft SOAtest nutzen, um das Testen zu beschleunigen?
Entwickler können Service-Definitionstests erstellen
Mit Parasoft SOAtest können Entwickler ganz einfach Folgendes überprüfen:
- Ist die Service-Definition semantisch korrekt?
- Ist der beschriebene Service gültig?
- Entspricht der Service den Interoperabilitätsstandards?
- Hat sich der Service kürzlich geändert?
Entwickler, die SOAtest verwenden, können auf einfache Weise Tests erstellen, um Richtlinien einer WSDL, Swagger, RAML usw. durch Verwendung dieser Dienstdefinitionsdatei zu validieren und durchzusetzen. SOAtest führt Schema- und sematische Gültigkeitstests durch, um sicherzustellen, dass die Definitionsdatei maschinenlesbar und konsumierbar ist. Es wird die Interoperabilität validieren, um sicherzustellen, dass sie den Industriestandards einer Service-Definitionsdatei entspricht, und schließlich wird ein Regressionstest erstellt, um zu validieren, dass sich seit dem letzten Testlauf nichts geändert hat.
Diese Tests bieten die stabile Grundlage, die die Qualitätssicherung nutzen kann, um effizient eine solide und belastbare Teststrategie zu entwickeln (mehr dazu gleich).
Entwickler können Komponententests erstellen (Rauchtests)
Mit Parasoft SOAtest kann die Entwicklung auf einfache Weise Komponententests erstellen, um die einzelnen Komponenten eines Dienstes zu testen und Folgendes zu überprüfen:
- Anforderungs- / Antwortnutzdaten sind wohlgeformt
- Der Antwortstatus ist wie erwartet
- Antwortfehler-Nutzdaten haben die richtigen Fehlermeldungen
- Die Antwort erfüllt die Basiskriterien
- Die Antwort wird innerhalb eines erwarteten Zeitrahmens empfangen
Mit SOAtest ist das Erstellen dieser funktionellen Rauchtests buchstäblich so einfach wie das Hochladen Ihrer Definitionsdatei in SOAtest und die Auswahl von "Funktionstest erstellen". Dadurch wird Ihre API automatisch analysiert und ein Test für jeden einzelnen in dieser API enthaltenen Dienst erstellt. Diese Tests können sofort ausgeführt werden und ermöglichen es Entwicklern, nur minimale Zeit damit zu verbringen, zu überprüfen, ob Fehler, die sie möglicherweise erhalten haben, die korrekt erwarteten Fehlermeldungen und Antworten sind.
Beschleunigung des Testens durch Verbesserung der Zusammenarbeit und Nutzung der Teamarbeit
Die Entwicklung zu diesem Zeitpunkt hat ihre Aufgabe erfüllt - sie haben die grundlegenden Funktionen für jeden Service validiert, und jetzt ist die Qualitätssicherung an der Reihe. Tester müssen Tests erstellen, die über die grundlegenden Funktionen hinausgehen, und die tatsächliche Geschäftslogik und die komplexen Szenarien der API testen, um unvorhergesehenes und unerwartetes Verhalten zu erkennen. Dev macht einen großartigen Job beim Aufbau, und QA hat die Aufgabe, komplexe Szenarien zu erstellen, um die Stabilität der Services zu testen, während sie zusammenarbeiten. Ich sehe es gerne so: Wenn die Entwicklung SOAtest für ihre Vertrags- und Komponententests verwendet hat, kommt die Qualitätssicherung in eine Küche, die bereits mit Zutaten gefüllt ist, die zum Mischen, Mischen und Zusammenstellen zu einer Mahlzeit bereitstehen.
Es ist für mich erstaunlich, wie wertvoll diese Wiederverwendbarkeit von Testartefakten ist und wie stark sie die Testpraktiken beschleunigen kann, indem einfach die Nacharbeit der Qualitätssicherung entfällt, die Tests erstellt, die bereits von der Entwicklung durchgeführt wurden. Im Work-Smart-Paradigma beginnt die Qualitätssicherung mit der bestückten Küche und kann in kürzerer Zeit mehr erledigen. Es ist nur logisch.
Schauen wir uns an, wie dies das Testen beschleunigen kann.
Wiederverwenden der Testartefakte von Entwicklern, um effizient aussagekräftige Szenariotests zu erstellen
QA kann dieselben Komponententests wiederverwenden, die die Entwickler in Parasoft SOAtest erstellt haben, um sicherzustellen, dass in einem bestimmten Szenario alles funktioniert. Sie können:
- Stellen Sie sicher, dass die APIs funktionieren, wenn sie zu einem Szenario kombiniert werden
- Fahren Sie den Test mit Daten
- Verwenden Sie Antwortdaten, um in nachfolgende Anforderungen einzuspeisen
- Optional können Start- und Abreißtests genutzt werden
Da die Qualitätssicherung bereits über die erforderlichen Bausteine verfügt (dank der Entwicklung), können sie mit einfachen Befehlen zum Kopieren und Einfügen skriptlos die einzelnen Komponenten auswählen, die zum Testen ihres Szenarios verwendet werden sollen. Diese Komponenten können per Drag & Drop in die richtige Reihenfolge gezogen und neu strukturiert werden, um jedes Szenario zu erstellen. Die Antworten und Informationen aus dem ersten Test können mit wenigen Klicks parametrisiert und verwendet werden, um die Anforderungsdaten des zweiten Tests usw. auf der ganzen Linie zu steuern.
Diese Szenariotests werden effizienter erstellt und profitieren von den Komponenten, die bereits vom Entwicklungsteam bereitgestellt wurden. Mit SOAtest können Sie diese Effizienz noch weiter steigern und noch mehr Nacharbeit reduzieren, indem Sie die Geschäftslogik (dh Behauptungen, Validierungen, Authentifizierung) in Regeln mit "templatisieren" Maschinelles Lernen. Die Wiederverwendung der Testlogik verbessert die Konsistenz der API-Tests und beschleunigt die Tests, indem Arbeiten eliminiert werden, die zuvor von einem anderen Teammitglied ausgeführt wurden.
Reduzieren des Ping-Pong zwischen Entwicklung und Test, um die Fehlerbehebungszeiten zu beschleunigen
Ein konsequenter Kampf, der aufgrund der Lücke zwischen Entwicklung und Qualitätssicherung entsteht, ist das Ping-Pong in der Kommunikation, das auftritt, wenn ein Fehler von der Qualitätssicherung festgestellt wird. Es ist eine zeitaufwändige Aufgabe, diesen Fehler zu dokumentieren, Screenshots zu machen, die genauen Testschritte aufzuschreiben, die den Fehler aufgedeckt haben, und dies dann der Entwicklung mitzuteilen, die häufig mit der frustrierenden Antwort zurückkommt, in der er einwandfrei funktioniert ihre Umwelt.
Dieses Ping-Pong zwischen Dev und QA verlangsamt die Fehlerbehebungszeiten und nimmt sowohl dem Entwickler (da er Schwierigkeiten hat, die Testumgebung neu zu erstellen) als auch dem Tester (der in einen unterbrochenen Dokumentations- und Kommunikationszyklus verwickelt ist, anstatt Ausgaben zu tätigen) wertvolle Zeit ihre Zeit, um mehr Tests zu erstellen).
Wenn beide Teams Parasoft SOAtest verwenden, wird diese Kommunikations- / Kollaborationslücke durch die Erstellung von wiederlauffähigen Testszenarien geschlossen, wodurch der Wissensaustausch zwischen Testern und Entwicklung erheblich beschleunigt wird. Wenn ein QS-Mitglied ein Problem findet, kann es schnell ein Testszenario (.tst-Datei) erstellen, in dem das Verhalten dargestellt wird, das dann mit dem Entwicklungsteam geteilt werden kann. Die Entwicklung kann dann das Testszenario auf ihrem Computer ausführen, um das Verhalten zu sehen und die genauen Schritte und Aufrufe zu sehen, die zu einem falschen Verhalten führen, wodurch die Fehlerbehebungszeit verkürzt wird.
Verwalten des API-Schemas und der Serviceänderung zur Reduzierung der Schulden für die Testwartung
QA arbeitet jetzt intelligent. Sie haben eine konsistente Strategie zum Testen ihrer APIs entwickelt, die auf den vorhandenen Komponententests basiert, die von Development erstellt wurden. Dadurch wird die Nacharbeit reduziert, indem die Anwendung der Geschäftslogik so strukturiert wird, dass sie im gesamten Testteam wiederverwendet und genutzt werden kann. Aber was passiert, wenn Änderungen an Ihren Anwendungen vorgenommen werden?
Veränderungen können viele Formen annehmen, wie zum Beispiel:
- Änderung des Protokollnachrichtenformats
- Elemente, die der API hinzugefügt oder daraus entfernt wurden
- Codeänderungen wirken sich auf das Datenformat aus
- Services, die auf Microservices umgestaltet werden
Normalerweise ist es für QS-Organisationen ein großes Problem, diese Änderungen zu verstehen, die von der Änderung betroffenen Testfälle zu identifizieren und diese Testfälle zu aktualisieren und erneut auszuführen, um zu überprüfen, ob die Änderungen nichts beschädigt haben. Ohne SOAtest erfordern diese Dinge eine umfangreiche Untersuchung der beiden Versionen einer API-Definitionsdatei sowie einen Herkulesaufwand, um die betroffenen Tests zu verstehen und um zu erfahren, wie jeder betroffene Test bearbeitet oder neu geschrieben werden kann, um diese Änderung zu validieren.
SOAtest bietet QA eine einfache Möglichkeit, die Auswirkungen von Änderungen mithilfe seines Change Advisor-Moduls zu verwalten und zu mindern. Erinnern Sie sich an die Service-Definition oder Vertragstests, die für die Bevorratung der QA-Küche so wichtig waren? Diese Dienstdefinitionsdateien helfen bei der Änderungsverwaltung.
Wenn Änderungen in Ihrem API-Schema oder Ihren API-Diensten auftreten, aktualisiert Development diese Definitionsdatei und stellt der Qualitätssicherung die neueste Version zur Verfügung. Das Change Advisor-Modul von SOAtest kommt herein und vergleicht automatisch die neue Version der Definitionsdatei mit der alten Version. Es erstellt zwei Karten, in denen die Vorgänge und Schemata zwischen der alten und der neuen Definitionsdatei grafisch dargestellt werden. Anschließend kann die Qualitätssicherung leicht identifiziert werden Was geändert werden muss, und mit ein paar einfachen Klicks, überprüfen und aktualisieren Sie basierend auf den Änderungen. Sobald alle Änderungen überprüft wurden, kann diese Änderungsvorlage problemlos angewendet werden, um alle vorhandenen Tests, die von diesen Änderungen betroffen sind, automatisch in großen Mengen umzugestalten.
Wiederverwenden vorhandener Testartefakte in der Leistung
Die Qualitätssicherung hat jetzt ihre Arbeit erledigt. Tester haben mehrere komplexe Testszenarien erstellt, um die Geschäftslogik der API zu testen und die Funktionalität der Dienste gemeinsam zu validieren. Die Geschäftslogik ist solide und jeder Anwendungsfall wurde getestet und validiert. Gefundene Mängel wurden zur schnellen Reproduktion und Behebung leicht in Form einer .tst-Datei an die Entwicklung zurückgemeldet. Es gibt eine umfassende und minimal manuelle Strategie, um diese API-Tests zu verwalten und Tests zu aktualisieren, wenn Änderungen auftreten. Jetzt ist es Zeit, die Anwendung zu brechen - es ist Zeit für die Leistungstester, das Verhalten der API zu testen, wenn mehr als 100, 500, 1000 Benutzer versuchen, dieselben Szenarien gleichzeitig von verschiedenen Standorten auf der ganzen Welt aus auszuführen.
In vielen Fällen müsste ein Leistungstester speziell unter diesen Bedingungen seine eigenen Testszenarien erstellen. Glücklicherweise muss das Leistungsteam durch die Nutzung von Parasoft SOAtest das Rad nicht neu erfinden. Sie können die Kombination aus Komponententests, die von Development erstellt wurden, und Szenariotests, die von QA erstellt wurden, verwenden, um ihre SLAs und die zeitnahe Leistung der Anwendung innerhalb des Lasttestmoduls von SOAtest zu validieren.
Innerhalb des Lasttestmoduls können vorhandene SOAtest-Komponenten- oder Szenariotests einfach mit einer beliebigen Anzahl virtueller Benutzer genutzt und gesteuert und auf eine beliebige Anzahl von Slave-Maschinen verteilt werden, um Szenarien unter verschiedenen Lasttypen wie Bell, Buffer, Linear und Stead zu testen Laden, damit Sie überprüfen können, ob sich die Anwendung unter den verschiedenen Belastungsarten wie erwartet verhält.
Abschließend….
"Arbeite nicht hart" sollte das Endziel deiner Strategie für Funktionstests sein, aber immer wieder dieselben Aktionen durchzuführen, war die Norm für Testteams, wenn es um API-Tests geht. So oft spreche ich mit QS-Managern und DevOp-Coaches, die die Aufgabe haben, Wege zu finden, um ihre Testgeschwindigkeit zu beschleunigen und die Zusammenarbeit zu verbessern. Was ich hier beschrieben habe, ist die Antwort.
Teams können Nacharbeiten reduzieren und die Effizienz steigern, indem sie die Funktionen von SOAtest nutzen. Es ist sowohl auf Unternehmens- als auch auf Einzelprojekt- oder Start-up-Ebene einfach anzuwenden, da es geschickt skaliert wurde und ein geringes Maß an technischem Fachwissen für die Testerstellung und -automatisierung erfordert. Ein einheitliches Tool für Funktionstests, das von Entwicklung, Qualitätssicherung und Leistung verwendet wird, ermöglicht ein bahnbrechendes Maß an Zusammenarbeit und eine Reduzierung der Nacharbeiten, die sich auf das Endergebnis auswirken können und den Gesamtaufwand für Test, Zeit und Kosten reduzieren.