Die Cloud Performance Testing Tools bieten die Möglichkeit, die Tests auf einer Cloud-Infrastruktur auszuführen. Der Hauptvorteil von Cloud-basierten Performance Test ist die Simulation verschiedener geografischer Standorte, die dabei helfen, die Last auf den Server aus verschiedenen Regionen, Ländern und Gebieten anzuwenden.
Das Konzept des Cloud-basierten Performance Test besteht darin, das Skript auf einem lokalen Computer zu erstellen, das Skript in der Cloud hochzuladen, das Online-Szenario zu erstellen, den Test auszuführen und den Bericht zu erstellen. Viele Cloud-basierte Tools haben ihr eigenes Skripting-Tool, während einige von ihnen Open-Source-Tools wie Apache JMeter verwenden.Das schnelle Wachstum der Cloud-basierten Technologie erhöht auch die Verwendung von Cloud-basierten Testwerkzeugen. Sie sind leistungsstark und einfach zu bedienen.
Im Zusammenhang mit der Qualitätssicherung von Software hat sich der Begriff Mutation Testing etabliert. Mithilfe von Mutationstests werden Änderungen am Quellcode durchgeführt, um die Tests zu testen, die die Software testen. 🙂
Ein populäres Werkzeug für solche Tests ist Stryker. Sehen wir uns an, wie uns Stryker dazu bewegt, qualitativere Tests zu schreiben.
Für dieses Tutorial verwenden wir Visual Studio Code und npm. PowerShell oder CMD öffnen und folgende Befehle eingeben, um die benötigten Ordner zu erstellen. Unter src wird unser Softwarecode liegen (da wir für Mutationstests den Quellcode brauchen) und die entsprechenden Tests unter test:
mkdir BaseConverter
cd BaseConverter
mkdir src
mkdir test
code .
Nun ist Visual Studio Code offen und wir können mit der Initialisierung des Projekts beginnen. Dazu im Terminal aus VS Code npm init eintippen und die Anweisungen im Terminal befolgen. Optional können die Felder ausgelassen werden und später in package.json nachträglich geändert werden.
Dependencies installieren
Als Testrunner und Assertion Library werden Mocha und Chai, sowie ts-node für die TypeScript Tests installiert. Um die Type Definitions für Mocha und Chai zu installieren, benötigen wir @types/chai und @types/mocha Packages.
Da wir mit einem TypeScript Projekt arbeiten, sollten wir tsc --init ausführen, was uns standardmäßig eine tsconfig.json erstellt.
Tests implementieren
Wir wollen den Ansatz von Test-Driven-Development verfolgen und zuerst die Tests für das Projekt BaseConverter implementieren, welches 2 Funktionen besitzt: Konvertieren einer Dezimalzahl ins binäre Format und andersherum. Dazu eine Datei unter test anlegen und die entsprechenden Tests schreiben:
import { expect } from 'chai';
import 'mocha';
describe('Base Converter Tests', () => {
it('Should convert positive decimal to binary.', () => {
expect(convert_decimal_to_binary(8))
.to.equal('01000', 'Converted number was not as expected!');
});
it('Should convert negative decimal to binary.', () => {
expect(convert_decimal_to_binary(-8))
.to.equal('11000', 'Converted number was not as expected!');
});
it('Should convert negative binary to decimal.', () => {
expect(convert_binary_to_decimal('11000'))
.to.equal(-8, 'Converted number was not as expected!');
});
it('Should convert positive binary to decimal.', () => {
expect(convert_binary_to_decimal('01000'))
.to.equal(8, 'Converted number was not as expected!');
});
});
Bevor wir die Tests starten, müssen wir in package.json„scripts“: { „test“: .. } anpassen, damit mocha die TypeScript Tests findet und ausführen kann:
"mocha -r ts-node/register test/**/*.ts"
Die Tests können einfach mit dem Befehl npm test ausgeführt werden, diese werden jedoch nicht kompiliert, weil die Methoden convert_decimal_to_binary() und convert_binary_to_decimal() fehlen. Also unter src/BaseConverter.ts diese implementieren:
Wenn alles richtig implementiert wurde, sollten die Tests jetzt alle erfolgreich laufen.
Stryker einsetzen
Die Tests waren alle erfolgreich, wir haben also abgeprüft, ob die implementierten Funktionen sowohl positive als auch negative Zahlen von einem Zahlensystem ins andere konvertiert. Mit Stryker sollten diese Tests auf Vollständigkeit überprüft werden. Folgende Befehle eingeben und wieder die Anweisungen im Terminal befolgen:
Die Konfigurationsdatei stryker.conf.json muss zuletzt noch angepasst werden, damit Stryker richtig konfiguriert wird. Diese beinhalten u.a. Optionen für unseren Test Runner (in unserem Fall Mocha), welche Dateien mutiert werden sollen und TypeScript-spezifische Konfigurationen:
Nach der Ausführung von npx stryker run gibt es im Ordner reporter einen HTML-Report.
Wir haben einen Mutation Score von 90% erreicht. Wenn wir uns den geänderten Quellcode ansehen, können wir herausfinden, welche Mutanten nicht von unseren Tests getötet worden sind. Hier haben wir einen Testfall vergessen, und zwar einen direkten Test mit 0:
it('Should convert decimal zero to binary.', () => {
expect(convert_decimal_to_binary(0))
.to.equal('0', 'Converted number was not as expected!');
});
Nachträglich hinzugefügt erreichen wir trotzdem keinen Mutation Score von 100%.
Warum? Laut Stryker hat der Mutant aus Zeile 2 mit der geänderten Bedingung zu false überlebt. Das ist auch richtig so, denn bei false wird die Zeile bei einem Parameter von 0 übersprungen und in Zeile 4 abgeprüft, ob diese Zahl unter 0 liegt. Wenn nicht, wird die Konstante sign auf 0 gesetzt, welche im Quellcode in Zeile 14 zum Rückgabewert der Funktion eingefügt wird convertedDecimal += sign; Die Programme sind also äquivalent! Die Abfrage auf n === 0 kann im Quellcode weggelassen werden und erreichen somit vollständige Testüberdeckung!
Ist das aber trotzdem richtig? Nicht ganz. Hier kommen die Einschränkungen von Stryker ins Spiel. Die Methode convert_binary_to_decimal() wurde gar nicht mutiert, da Stryker nicht die entsprechenden Mutationsoperatoren für die Logik hinter dem Code besitzt.
Zusammenfassung
Durch das Werkzeug Stryker zur Unterstützung von Mutationstests haben wir die Möglichkeit, unsere Tests auf Vollständigkeit zu testen. Falls es Mutanten eines Programms gibt, die trotz unserer Tests überleben, sollten wir uns Gedanken über bessere Tests machen. Nichtsdestotrotz kommt es auf die tatsächliche Implementierung der Software an und wie stark ein Werkzeug ein Programm mutieren kann, andernfalls kann es zu false positives kommen, da wir, wie in der obigen Grafik zu sehen ist, einen Mutationsscore von 100% erreichen, obwohl wir nicht alles getestet haben (z.B. Testfall von 0 aus dem Binärsystem ins Dezimalsystem fehlt, oder falls ein String für convert_binary_to_decimal() leer ist…).
Redakteur auf Testautomtisierung.org
Geschäftsführer, Schulungsleiter bei SimplyTest GmbH, Nürnberg www.simplytest.de
Passionierter Softwareentwickler und Testautomatisierungsverfechter mit langjähriger beruflicher Erfahrung als Softwareentwickler, Test Automation Manager, Teamleiter und Projektleiter
Lizenzierte Performance Test-Tools sind kommerzielle Tools. Diese Tools können nur durch den Kauf des Lizenzpakets bei dem jeweiligen Unternehmen verwendet werden. Die Testtool-Unternehmen bieten Lizenzen basierend auf:
Benutzeranzahl: Lizenz zum Generieren einer bestimmten Anzahl von Last Benutzer
Protokoll: Protokollspezifische Lizenz
Zeitraum: Lizenz für einen bestimmten Zeitraum
Einige Unternehmen bieten die Möglichkeit, ein benutzerdefiniertes Paket der Lizenzen zu erstellen.Abgesehen von der kostenpflichtigen Lizenz, stellen Unternehmen auch die Probe(Trial) Version des Tools aus, die eine begrenzte Benutzerzahl, generische Protokollunterstützung oder eine begrenzte Nutzungsdauer des Tools hat. Eine Testversion kann hilfreich sein, um einen PoC (proof of concept) durchzuführen.
Vorteile:
Umfangreiche Protokollunterstützung
Ein spezielles Support-Team steht normalerweise zur Verfügung
Normalerweise gutes Knowledge Base und Community
Weniger Herausforderungen bei der Skripterstellung als bei Open-Source-Tools
Benutzerfreundliche und einfache GUI
Unterstützt erweiterte Skriptaufzeichnung
Viele Tools unterstützen lokale und Cloud-Infrastrukturen
Einfache Integration mit Monitoren und Profilers Tools
Live-Monitoren des Tests
Mehr Genauigkeit im Ergebnis
Funktion zur detaillierten Ergebnisanalyse
Gute Berichtsfunktion
Das Vertrauen des Kunden
Nachteile
Lizenzkosten
Meistens Betriebssystem spezifisch
Meistens ist die Installation schwieriger als bei Open-Source-Tools
Etwas schwierig, auf die neue Versionen zu aktualisieren
Sehr wenig oder keine Anpassung
Meistens für Für die ON Premise Version ist Hardware erforderlich
Die Generierung der Last Benutzer ist auf Lizenzen mit Benutzeranzahl beschränkt. Es kann das Benutzerlimit nicht überschreiten, obwohl die Hardware verfügbar ist.
Die Migration von einem Tool zum anderen ist nicht einfach. Es braucht Zeit, Geld und Mühe.
Open Source-Performance-Testing-Tools sind frei verfügbar und benötigen keine kommerzielle Lizenz. Diese Tools sind eher einfach einzurichten als ein kommerziell lizenziertes Tool, aber auch mit bestimmte Einschränkungen verbunden.
Vorteile:
Keine Lizenzkosten
Die meisten sind Plattform unabhängig(laufen auf jedem Betriebssystem)
einfach zu installieren und einfach aufzurüsten
keiner explizites Hardware erforderlich, es sei denn, die Benutzerlast ist zu hoch
Unbegrenzte Benutzerlastgenerierungsfunktion (abhängig von der Lasterzeuger-Maschinenkonfiguration)
Benutzerfreundliche und einfache GUI
Die meisten Tools unterstützen die Skriptaufzeichnung
Meistens die grundlegenden Funktionen sind verfügbar
Meistens die Migration von einem Open-Source-Tool zu einem anderen Tool ist einfach (aber nicht in allen Fällen)
Nachteile
Begrenzte Protokollunterstützung
Kein dediziertes Support-Team
Skriptherausforderungen für komplexe Szenarien
Eingeschränkte Plugin-Unterstützung
Mangel an erweiterten Funktionen
Integration nur mit spezifischem Monitoren Tools
Programmiersprache Abhängigkeit(z.B. Beanshell, Groovy) für komplexe Logik
Testen Sie ein neues Tool oder bereiten eine Demo/POC vor? Hier sind einige nützliche Websites, die Sie immer zur Hand haben sollten.
Testseiten werden immer zum Üben benötigt. Sei es für Kurse, Workshops, Webinare, das Testen neuer Tools usw. Hier eine Liste von Testseiten, die sich zum Ausprobieren eignen.
Demo Sites:
Demoblaze ist ein beispielhaftes E-Commerce-System, das von BlazeMeter bereitgestellt wird, um die Automatisierung mit JMeter zu üben und es mit Blazemeter auszuführen. Es enthält sogar einen Abschnitt mit einem Video, damit Sie das HLS-Protokoll testen können.
OpenCart Für Schulungen kann es hilfreich sein, eine Version des Open-Source-E-Commerce-Systems OpenCart zu installieren.
WPmobilepack ist ein sehr einfaches E-Commerce-System, das sich hervorragend zum Testen geeignet.
Juice-Shop ist eine bekannte Website zum Testen von Sicherheitslücken.
Computer-Database ist eine von Gatling (Performance Test) bereitgestellte Testseite. Es ist eine Website mit einer Computerdatenbank, auf der es eine Liste mit mehreren Spalten und einem Suchfilter gibt.
DemoQA enthält eine Vielzahl an Elementen, die auf Websites typisch sind. Die Seite ist gut darauf ausgerichtet, Testautomatisierung zu üben, mit verschiedenen Objekten in unterschiedlichem Kontext. Elemente einer Liste, die per Drag & Drop geordnet werden, Eingänge verschiedener Formate, Buttons und Alarme, usw.
SwagLabs ist eine weitere Demo-Web-Storefront, die zum Testen von Anmelde- und Warenkorbabläufen nützlich ist. Ein wichtiger Punkt bei diesem ist, dass es 4 verschiedene Logins gibt, die Sie für verschiedene Erfahrungen für dieselbe Site verwenden können; normaler, gesperrter, problematischer Benutzer und Benutzer mit Leistungsstörungen.
Selenium Easy ähnelt DemoQA, wird aber von Smartbear CrossBrowserTesting bereitgestellt.
Test Pages for automating ist voll von Beispielseiten, von Alan Richardson, auch bekannt als „Evil Tester“, die für automatisierte Prüfungen verwendet werden können.
The-Internet Dave Haeffner, Schöpfer von Elemental Selenium, bietet diese Seite an, um verschiedene Dinge wie Dropdown-Menüs, Hover usw. zu testen.
UI Testing Playground Diese Website ist möglicherweise kleiner als die anderen, enthält jedoch Edge Cases für Ladeverzögerungen, Mouseover-Verhalten, dynamische IDs und Automatisierungsprobleme, die sich aus verborgenen Schichten ergeben.
Basic Calculator bietet ein Objekt mit grundlegenden Funktionen, mit denen Sie Ihren ersten Versuch unternehmen können, Selenium zu verwenden, bereitgestellt von Mike Talks.
Swagger Pet Store ist eine andere Tierhandlung, die von Swagger.io bereitgestellt wird.
https://www.testautomatisierung.org/wp-content/uploads/Software_Demo.png309540Casian Stetihttps://www.testautomatisierung.org/wp-content/uploads/ta5.pngCasian Steti2022-11-16 00:18:232022-11-28 10:29:38Demo Websites und API zum Üben verschiedener Arten von Softwaretests
In diesem Artikel möchte ich demonstrieren, wie sich auf einfache Weise eine Swagger Spezifikation in Postman importieren lässt, was uns letztlich eine Collection von Testfall Grundgerüsten für alle spezifizierten Endpunkte anlegt.
Swagger und OpenAPI
Abb. 1 – Swagger Logo
Bei OpenAPI handelt es sich um einen Industriestandard zur Beschreibung von REST-konformen API‘s, der von der OpenAPI Initiative verwaltet wird.
Swagger stellt letztlich ein Open-Source Framework für die Entwicklung von API’s für http-Webservices dar, das konform zur OpenAPI-Spezifikation ist. Swagger ist also das zugehörige Toolset.
Postman
Das Postman Projekt wurde 2012 ins Leben gerufen und ist ein skalierbares Tool für API-Integrationstests, dass sich in CICD Pipelines integrieren lässt. Inszwischen hat das Tool über 4 Mio. Nutzer, da es einige große Vorteile mit sich bringt:
Einsatz von Test-Collections – Hilfe bei der Organisation von Test-Suites, durch Strukturierungsmöglichkeiten innerhalb abgeschlossener Test-Collections durch Unterordner und multiple Requests.
Kollaboration – Es können mehrere Personen an einer Testsuite arbeiten, einmal durch den manuellen Import/Export aber auch durch die Verwendung von Repositories (Premium Version)
Environments – Es ermöglicht uns verschiedene Test-Umgebungen zu definieren und diese auf Test-Collections anzuwenden.
Debugging – Die Postman Konsole hilft bei der Fehleranalyse
CICD – Eine Integration in CICD Pipelines wird unterstützt. Hier sei vor allem das Kommandozeilentool Newman erwähnt, das in der CICD Automatisierung Verwendung findet.
Swagger Specification
Schauen wir uns exemplarisch eine REST-API in der Swagger-UI an:
Abb. 2 – SwaggerUI
oder die API-Docs die aus der Schnittstelle generiert werden:
Abb. 3 – Swagger Docs
Swagger Imports in Postman
Es gibt verschiedene Wege, eine Swagger-API Spezifikation in Postman hochzuladen und daraus die Grundgerüste für unsere Testfälle generieren zu lassen. Der Import wird hier z.B. im JSON Format durchgeführt, es sind aber auch andere Formate möglich.
Import via Datei (z.B. JSON)
Wir wollen eine Textdatei, im JSON Format, hochladen die in etwa wie folgt aussieht:
Abb. 4 – Datei Import
Wir wählen also in Postman den Button „Import“ im linken Bereich oben (Scratch Pad), wo wir auch unsere Collections anlegen können.
Abb. 5 – Postman Scratch Pad
Der folgende Dialog gibt uns verschiedene Auswahlmöglichkeiten, wir wählen „File“ und „Upload Files“:
Abb. 6 – Postman File-Import Dialog
Im nächsten Dialog bestätigen wir mit „Import“:
Abb. 7 – Postman File-Import Dialog (2)
Wie wir in Abbildung 9 sehen, wird eine Projektstruktur in Reiter Collections angelegt.
Abb. 8 – Postman Test-Collection
Import via Link zur Swagger Spezifikation
Hier wählen wir im Import Dialog die Option „Link“ und bestätigen mit „Continue“.
Abb. 9 – Postman Import via Link
Im folgenden Dialog bestätigen wir mit Import.
Abb. 10 – Postman Import via Link (2)
Im Folgenden sehen wir, dass eine weitere Collection angelegt wurde, die der Ersten entspricht.
Abb. 11 – Postman Test Collection (2)
Import via Raw-Text
Wir können aber auch einfach den Text (JSON) in den Postman Dialog kopieren und importieren.
Abb. 12 – Postman Import via Raw-Text
Vorbereitungs und Testroutinen
Wir müssen allerdings beachten, dass hier nur die reinen Requests, ohne Authentifizierung, Prerequisites oder Testscripts angelegt werden (Abb. 13, Abb. 14).
Die Authentifizierung/Authorisierung, Testvorbereitungslogik und die eigentliche Testlogik, müssen wir also selbst implementieren.
Abb. 13 – Postman Testscripts
Abb. 14 – Postman Vorbereitungs-Skripte
Import aus Code-Repository
Die Import-Funktion aus einem Git-Repository heraus ist eine der Premium-Funktionen von Postman und wird an dieser Stelle daher nicht im Detail erörtert. Es sei nur darauf verwiesen, dass dies mit dem sog. Postman-Workspace ebenfalls, mit wenigen einfachen Schritten, möglich ist.
JetBrains führt mit dem neuen Produkt JetBrains Aqua eine leistungsstarke IDE zur Testautomatisierung ein. Laut Entwicklern „beinhaltet die IDE alles, was ein QA Engineer braucht“ – Unterstützung mehrerer Programmiersprachen (darunter Python, Java, JavaScript, TypeScript und Kotlin), Verwendung verschiedener Datenbanken sowie Generierung von Testdaten mit einem Zufallsdaten-Generator, Vorbereitung von Testumgebungen mithilfe von Docker, integrierter Web-Inspektor etc.
Folgender Ausschnitt zeigt eine Liste vielversprechender Funktionen:
Die IDE befindet sich noch in Entwicklung, weitere Features wie z.B. Support für Playwright und Cypress folgt noch. Während der Preview-Phase kann Aqua über die JetBrains Toolbox App oder als Plugin in bestehenden IDEs heruntergeladen oder hinzugefügt werden. Sehen wir uns mal die Entwicklungsumgebung an.
New Project Wizard
Das Anlegen eines neuen Selenium-Projekts erfolgt schnell und unkompliziert über eine saubere UI. Durch ein Paar Mausklicks wird die JDK, Projektsprache, Testrunner (JUnit oder TestNG), sowie Build Tool (Maven/Gradle) ausgewählt.
Zusätzliche Projekt-Abhängigkeiten wie beispielsweise Selenide oder Assertions Libraries können gleich im nächsten Dialog-Fenster ausgesucht werden und schon ist ein Projekt angelegt.
Page Object Templates
Über das New File Menu können POs hinzugefügt werden. Diese werden nach bestimmten Templates kreiert, die nach Belieben ergänzt oder neu erstellt werden können.
Nach dem Erstellen des Page Objects erscheint neben der Klasse ein „Web“-Symbol. Darüber kann der integrierte Web-Inspektor geöffnet werden. Dieser stellt eine Live-View der zu testenden Seite dar und unterstützt die Entwickler bei der Auswahl von eindeutigen CSS oder XPath-Selektoren für die automatisierten Tests:
Web-Inspektor
Solange der Web-Inspektor in der IDE offen ist, zeigt die Code Completion für CSS und XPath die wichtigsten oder die gerade eingetippten Lokatoren an:
Über das „+„-Symbol werden DOM-Elemente aus dem Web-Inspektor direkt als Variable in der Page Object Klasse angelegt:
Außerdem bietet Aqua umfangreiche Unterstützung für die Selenium-API und Selenide und gibt uns einen Einblick in den Code der CSS-, XPath-Selektoren, die in der Selenium-API und vielen anderen Bibliotheken für UI-Tests verwendet werden. So wird auch falsche XPath-Syntax erkannt und entsprechend markiert:
Test Management Systems und Issue Tracker
Tests beinhalten normalerweise Links zu auftretenden Issues in einer Applikation. QA Engineers verwenden oft externe Libraries wie Allure Framework oder Selenide BDD, um auf diese Issues in den Tests aufmerksam zu machen. JetBrains Aqua bietet nun auch Annotationen für diese Libraries und lässt den Issue Link mit einem Klick öffnen. Die Reporters werden in den Einstellungen konfiguriert.
API Testing mit integriertem HTTP-Client
Dank des integrierten HTTP-Clients lassen sich HTTP-Requests verschicken und empfangen. Die Code Completion erspart uns ihrerseits eine Menge Arbeit.
Die Anfragen können direkt aus der IDE gestartet und deren Responses unter View > Tool Windows > Services anzeigen lassen (in dem Fall mit Status 401, da wir bei der GET-Anfrage keine Authentifikation angegeben haben) :
Datenbanken
Ein weiteres Feature von JetBrains Aqua ist die (gleichzeitige) Unterstützung von Datenbanken, z.B. direkter Zugriff auf Oracle, SQL Server, PostgreSQL, MySQL usw. aus der IDE. SQL-Abfragen können auch direkt implementiert werden.
Weiterentwicklung von Aqua
Die Preview-Phase der IDE ist vor kurzem veröffentlicht worden und wir haben in diesem Artikel ein paar Features davon gesehen. Weitere werden entwickelt, die bestehenden erweitert und noch leistungsfähiger gemacht, also auch wenn die gewünschten noch nicht dabei sind, können wir davon ausgehen, dass sie in naher Zukunft ebenfalls angeboten werden. Warten wir also ab, was JetBrains uns demnächst anbietet.
Redakteur auf Testautomtisierung.org
Geschäftsführer, Schulungsleiter bei SimplyTest GmbH, Nürnberg www.simplytest.de
Passionierter Softwareentwickler und Testautomatisierungsverfechter mit langjähriger beruflicher Erfahrung als Softwareentwickler, Test Automation Manager, Teamleiter und Projektleiter
https://www.testautomatisierung.org/wp-content/uploads/jetbrains_aqua.png252515Alexander Heimlichhttps://www.testautomatisierung.org/wp-content/uploads/ta5.pngAlexander Heimlich2022-11-13 22:54:522022-11-21 09:27:22Aqua – JetBrains stellt IDE zur Testautomatisierung vor
Diese Website verwendet Cookies, einschließlich Google Analytics. Durch die Nutzung der Website stimmst du der Verwendung von Cookies zu. Die durch Google Analytics generierten Informationen über deine Nutzung der Website können in die USA übertragen und dort gespeichert werden. Weitere Informationen zur Verarbeitung und Speicherung deiner Daten findest du in unserer Datenschutzerklärung.OKNeinDatenschutzerklärung