Mutationstests oder Programmmutation sind eine White-Box-Testtechnik, die Unternehmen bei der Entwicklung einer Reihe von neuen Softwareprüfungen unterstützt und gleichzeitig die aktuellen Prozesse eines Projekts überprüft. Dies ist ein relativ neuer Ansatz, der sicherstellt, dass sowohl Entwickler als auch Tester nach einem hohen Standard arbeiten.
Eine Anwendung ist nur so erfolgreich oder so gut wie ihre eigenen Qualitätssicherungsverfahren – das heißt, es ist wichtig, dass Unternehmen mehr als eine Art von Testverfahren einsetzen.
Die Vermittlung von Kenntnissen über Mutationstests könnte den Prüfteams helfen, ihre Fähigkeiten und ihr allgemeines Repertoire zu erweitern und so die Zuverlässigkeit dieser Prüfungen zu verbessern. Mutationstests sind ein komplexer und sensibler Prozess. Daher ist es von entscheidender Bedeutung, dass die Prüfer die Vorteile, Herausforderungen und Programme von Drittanbietern, die eine erfolgreiche Implementierung garantieren können, gründlich untersuchen.
In diesem Artikel befassen wir uns mit Mutationstests und der Frage, wie sie die Qualitätssicherung verbessern, sowie mit anderen wichtigen Überlegungen für Softwaretestteams.
Was sind Mutationstests beim Softwaretest?
Im Zusammenhang mit Software bedeutet Mutationstest, dass ein Qualitätssicherungsteam absichtlich Fehler – oder „Mutationen“ – in den Code einer Anwendung einfügt, um zu sehen, wie das Team darauf reagiert. Das Ziel ist es, einen Fehler zu erzeugen und sicherzustellen, dass die Testsuite in der Lage ist, jede Änderung an der Anwendung zu erkennen.
Bei der Bearbeitung des Programmcodes kann ein Mutationstester einen wahr/falsch-Ausdruck ändern, eine Anweisung löschen oder einfach einen Wert ändern. Diese Fehler können sich bei anderen Softwareprüfungen auf verschiedene Weise bemerkbar machen; sie alle können von einem geschulten und erfahrenen Prüfteam leicht aufgespürt werden.
Die Mutationen selbst sind oft sehr geringfügig, so dass der Tester, der den Code mutiert, beobachten kann, wie das Team diese Änderungen entdeckt. Signifikante Änderungen wären selbst bei einem flüchtigen Blick offensichtlich – daher sind kleine Fehler in der Regel der beste Weg, um sicherzustellen, dass das Unternehmen solide Testverfahren anwendet.
Bei dieser Technik wird speziell die Wirksamkeit der Testfälle eines Teams untersucht, d. h. der Dokumente, die die Testinformationen enthalten. Das Team kann auch Automatisierungssoftware von Drittanbietern verwenden, um diese Prüfungen durchzuführen. In diesem Fall wird beim Mutationstest geprüft, wie gut diese Plattform Fehler im Programmcode erkennen kann.
1. Wann müssen Sie eine Mutationsprüfung durchführen?
Da das Ziel der Mutationstests darin besteht, die laufenden Qualitätssicherungsprüfungen zu validieren und zu verbessern, ist es für die Teams von entscheidender Bedeutung, diese Tests zu einem frühen Zeitpunkt in der Testphase durchzuführen. Das heißt, wenn die Testsuite nicht in der Lage ist, die Mutanten zu identifizieren und zu „töten“, bleibt genug Zeit, um umfassende Änderungen an den Testverfahren des Unternehmens vorzunehmen.
Da es sich um eine äußerst vielseitige Methode handelt, ist das Mutationstesten für praktisch jede Art von Software geeignet, einschließlich Web-, Mobil- und Desktop-Programmen. Dies funktioniert am besten während der Unit-Testing-Phase, in der die kleinsten Komponenten einer Anwendung untersucht werden.
2. Wenn Sie keine Mutationstests durchführen müssen
Es gibt immer noch einige Szenarien, in denen Mutation und allgemeine White-Box-Tests für ein Programm nicht geeignet sind; dies kann verschiedene Gründe haben.
Zum Beispiel, wenn die Tester nur Black-Box-Tests durchführen wollen – in diesem Fall würden sie sich stattdessen auf das Frontend für diese Sitzung oder sogar die gesamte Testphase konzentrieren.
Einige Unternehmen halten White-Box-Tests für mühsam und zeitaufwändig, was dazu führen kann, dass sie den Prozess überspringen. Starke, gut geprüfte Testfälle können auch die Notwendigkeit von Mutationstests umgehen, da dies die Sorgfalt und das Engagement des Teams für genaue Testverfahren zeigt.
3. Wer ist an der Mutationsanalyse beteiligt?
Bei der Mutationsanalyse spielen verschiedene Rollen eine Rolle, unter anderem:
– Mutationstester
Sie verändern den Code, indem sie verschiedene kleinere Fehler einführen, um sicherzustellen, dass der Testprozess wie erwartet funktioniert. Diese Tester sind in der Regel bereits bestehende Mitglieder des Qualitätssicherungs-Teams.
– Anwendungstester
Sie überprüfen den Code regelmäßig auf Probleme und identifizieren und korrigieren alle gefundenen Mutationen. Sie führen White-Box-Tests durch, um Kodierungsfehler zu finden, setzen aber auch andere Techniken ein.
– Anwendungsentwickler
Sie entwerfen die Funktionen des Programms und schreiben den ersten Code. Sie beheben auch alle Probleme, die die Tester finden, und sorgen dafür, dass die Software in einem stabilen Zustand für die Veröffentlichung ist.
– Projektleiter
Sie geben Hinweise zur Anwendung und können mit den Mutationstestern zusammenarbeiten, um die Wirksamkeit ihrer eigenen Teams zu überprüfen. Sie gewährleisten strenge Standards in jeder Entwicklungsphase.
Was testen wir mit Mutationstests?
Beim Mutationstest liegt der Schwerpunkt eher auf dem Testen von Prozessen als auf der Anwendung. Zu diesem Zweck prüft sie Folgendes:
1. Testfälle
Testfälle sind Dokumente, die detaillierte Informationen zu jedem Test enthalten, einschließlich der Ergebnisse, die die Tester von jeder einzelnen Prüfung erwarten. Konsistente und präzise Testfälle vermitteln den Mitgliedern des QA-Teams eine Vorstellung vom Zustand der Anwendung und davon, wie ihre Leistung den Erwartungen des Unternehmens entspricht.
Die Informationen in diesen Testfällen können die Fähigkeit eines Testers bestimmen, bestimmte Fehler zu erkennen – auch solche, die durch Mutationstests verursacht werden.
2. Prüfnormen
Bei Mutationstests werden die aktuellen Testverfahren genau untersucht, um sicherzustellen, dass die Teammitglieder selbst kleine Probleme erkennen können, die die Wahrnehmung der Software durch den Benutzer beeinträchtigen könnten.
Die Sorgfalt und die Kompetenz der Prüfer können sogar die Hauptfaktoren sein, die ein Unternehmen bei diesen Kontrollen bewertet. Wenn die Tester nicht in jeder Phase genau auf die Details achten, könnten sie ernsthafte Mutationen im Programm übersehen.
3. Einzelne Einheiten des Codes
Mutationstests sind während des Unit-Testing-Teils der Entwicklung üblich. Dabei werden einzelne Komponenten betrachtet, um einen starken Fokus auf jeden Test zu erhalten und den gesamten Prozess erheblich zu optimieren, indem sichergestellt wird, dass die Tester nur mit den relevanten Codezeilen arbeiten.
Da Mutationstests oft in einem frühen Stadium der Qualitätssicherung stattfinden und eine Vorstufe zu umfassenden Tests sein können, kann dieser Ansatz die Geschwindigkeit erhöhen, ohne die Genauigkeit zu beeinträchtigen.
4. Programm-Updates
Bei Software-Updates wird der Testprozess in der Regel neu gestartet, um sicherzustellen, dass keine neuen Fehler auftreten und dass frühere Fehler nicht erneut auftreten.
Die Wiederholung von Mutationstests ist dabei ein wichtiger Bestandteil und trägt dazu bei, einheitliche Teststandards nach größeren Softwareänderungen zu fördern.
Das Testteam mag gründliche Überprüfungen nach der Aktualisierung für unnötig halten, aber die Code-Mutation kann dafür sorgen, dass es die Bedeutung von Tests in jeder Phase der Entwicklung versteht.
5. Automatisierungssoftware
Unternehmen führen auch Mutationstests durch, um ihre automatisierten Testsuiten zu überprüfen und sicherzustellen, dass sie in der Lage sind, mutierten Code und andere Probleme zu erkennen.
Wenn eine Testanwendung eines Drittanbieters externe Änderungen an einem Programm erkennen und möglicherweise sogar beheben kann, bedeutet dies, dass das Unternehmen der Software bei der Automatisierung von Tests vertrauen kann.
Es ist von entscheidender Bedeutung, dass Unternehmen ihren Automatisierungsansatz validieren; dies gibt jedem Tester Sicherheit.
6. Automatisierungsstrategie
Genauso wichtig wie die eingesetzte Software ist die Art und Weise, wie das Unternehmen die Automatisierung in seine Prozesse integriert, z. B. durch die Einführung von Hyperautomatisierung. So kann das Unternehmen auf intelligente Weise entscheiden, welche Mutations- und Softwaretests automatisiert werden sollen.
Ohne eine starke Automatisierungsstrategie, die der Vielfalt des Codes einer Anwendung Rechnung trägt, sind einige Tests möglicherweise nicht mit der Automatisierung kompatibel, was die Möglichkeiten der Plattform einschränkt.
7. Die Anwendung
Obwohl sich die Mutationstests mehr auf das Testteam als auf die Anwendung konzentrieren, können sie dennoch wichtige Informationen über dieses Programm hervorheben.
Mutationstests zeigen zum Beispiel, wie die Software auf Änderungen im Code reagiert und ob sie diese Probleme in der vom Team erwarteten Weise anzeigt.
Dieser Ansatz ist keine Softwaretesttechnik, kann aber dennoch interessante Daten über die internen Abläufe liefern.
Lebenszyklus von Mutationstests
Der übliche Lebenszyklus von Mutationstests sieht folgendermaßen aus:
1. Anforderungsanalyse
Der erste Schritt im Lebenszyklus eines Mutationstests besteht darin, genau herauszufinden, was validiert werden muss und welche Teile des Anwendungscodes am meisten von diesen Tests profitieren würden.
Das Team kann mit Entwicklern und Führungskräften sprechen, um deren Bedenken zu ermitteln und sich mit ihnen zu befassen.
2. Testplanung
Die Tester beginnen dann mit der Entwicklung der genauen Prüfungen, die sie durchführen wollen – in diesem Fall die Mutationen, die den besten Einblick bieten.
In dieser Phase wird die Gesamtstrategie für die Mutationstests festgelegt und bestimmt, wie das Team die geplanten Code-Mutationen effektiv umsetzen wird.
3. Entwicklung von Testfällen
Mutationstests erfordern eine eigene Testdokumentation, die auch Informationen über den mutierten Code enthält und darüber, wie die Tester das Problem beheben sollen.
Eine gute Protokollierung stellt sicher, dass alle Tests wie geplant ablaufen, und kann dem Team helfen, sein Engagement für hohe Teststandards aufrechtzuerhalten.
4. Einrichtung der Testumgebung
Die Tester stellen sicher, dass die Anwendung für ihre Änderungen bereit ist – und dass sie über ein Verfahren verfügen, um diese Probleme zu beheben, falls andere Teammitglieder sie nicht entdecken können.
In diesem Rahmen richten die Mutationstester einen Testserver ein und nutzen diesen als Leinwand für ihre Mutationen.
5. Testdurchführung
Nach Abschluss ihrer Vorbereitungen ändern die Tester den Code in mehreren Komponenten der Anwendung; dann warten sie darauf, dass andere Tester die Probleme bemerken und beheben.
Sowohl die Mutationstester als auch die App-Tester müssen dies ausgiebig dokumentieren, um sicherzustellen, dass ihre Aufzeichnungen robust sind.
6. Abschluss des Prüfzyklus
Nach Abschluss der Tests überprüfen die Mutationstester noch einmal, ob alle von ihnen vorgenommenen Änderungen entweder von den App-Testern oder von ihnen selbst behoben wurden.
Anschließend schließen sie den Testzyklus ab und analysieren die Ergebnisse, wobei sie besprechen, wie die Tester auf die verschiedenen Fehler reagiert haben und wie sie sie beheben konnten.
7. Wiederholung des Tests
Nach Beendigung des Testzyklus kann es erforderlich sein, ihn nach zukünftigen Software-Updates wieder zu aktivieren.
Jede Änderung an einer Anwendung verändert deren Funktionalität in irgendeiner Weise, was zu neuen Möglichkeiten führt, die das Team berücksichtigen muss, um sicherzustellen, dass der Testprozess sorgfältig genug ist.
Vorteile von Mutationstests
Die Durchführung von Mutationstests bietet viele Vorteile, unter anderem:
1. Validiert den Prüfprozess
Der Hauptvorteil des Mutationstests besteht darin, dass er zeigt, wie die Tester des Unternehmens an die Software herangehen – und ihre Fähigkeit, Kodierungsprobleme zu erkennen. Dadurch wird auch sichergestellt, dass die Testfälle des Teams umfassend genug sind und alle erforderlichen Tests abdecken.
Bei Mutationstests wird das gesamte Testverfahren einer Organisation untersucht, um sicherzustellen, dass es wie erwartet funktioniert.
2. Gewährleistet starke Automatisierung
Mithilfe von Mutationstests kann ein Team überprüfen, ob die Testautomatisierungsplattform eines Drittanbieters in der Lage ist, Fehler innerhalb des Codes angemessen zu identifizieren und sie auf die richtige Weise zu beheben.
Wenn diese Software diese auch nach der erforderlichen Kalibrierung nicht erkennt, könnte es sich lohnen, die Plattform gegen eine auszutauschen, die diese Tests problemlos bestehen kann.
3. Gute Abdeckung
Jeder Softwaretestprozess muss die gesamte Anwendung abdecken können, um sicherzustellen, dass jeder Aspekt die notwendige Aufmerksamkeit erhält.
Mutationstester können jeden Teil des Programmcodes ändern; eine gute Implementierung ermöglicht es, dass diese Tests alle wichtigen Funktionen umfassen. Dadurch lernen die Tester, in der gesamten Anwendung nach Problemen zu suchen.
4. Untersucht den Quellcode
Da beim Mutationstest mit dem Code gearbeitet wird und gegebenenfalls direkte Änderungen vorgenommen werden, könnte diese Methode auch nicht optimiertes Scripting in der Anwendung aufzeigen.
Softwaretester dürfen das Programm nur dann freigeben und ihre normalen Tests durchführen, wenn der Code der Software angemessen ist; diese Prüfungen ermöglichen es den Testern, mögliche zukünftige Probleme aufzuzeigen.
5. Führt zu besserer Software
Mit Hilfe von Mutationstests kann sichergestellt werden, dass die Testverfahren der Anwendung den Anforderungen des Programms entsprechen.
Wenn eine Mutationsanalyse ergibt, dass das Qualitätssicherungs-Team nicht die richtigen Verfahren anwendet oder die Testfälle unzureichend sind, können die Tester daran arbeiten, dies zu verbessern. Ohne diese Sorgfalt kann das Unternehmen ein fehlerhaftes Produkt auf den Markt bringen, ohne es zu bemerken.
6. Wirksam für verschiedene Sprachen
Unabhängig von der Sprache, die ein Testteam für seine Anwendung verwendet, gibt es Softwareoptionen, die eine hochwertige Mutationsanalyse bieten.
Dazu gehören eine Reihe von sprachenspezifischen Qualitätsmerkmalen, die die Prüfungen für eine größere Zuverlässigkeit vereinfachen. Ein maßgeschneiderter Ansatz für verschiedene Sprachen steigert die Qualität jedes einzelnen Tests.
7. Leicht zugängliche Werkzeuge
Viele der führenden Mutationsplattformen sind vollständig quelloffen, d. h. sie bieten mehr Anpassungsmöglichkeiten und eine umfassende Palette an Funktionen – kostenlos oder zu drastisch niedrigeren Kosten.
Im Vergleich zu vielen anderen Formen des Testens ist die Code-Mutation eine nützliche und bequeme Möglichkeit für Unternehmen, ihren Qualitätssicherungsansatz zu bewerten oder sogar zu verbessern.
Herausforderungen der Mutationsprüfung
Dieser Prozess bringt auch zahlreiche Herausforderungen mit sich, wie zum Beispiel:
1. Erfordert Programmierkenntnisse
Damit die Tester diese Prüfungen durchführen können, müssen sie ein umfassendes Verständnis des Programms und des Codes haben, was es für weniger erfahrene Tester schwierig macht, einen Beitrag zu leisten.
Ein Unternehmen kann Software nur auf eine Art und Weise testen, die den vorhandenen Fähigkeiten der Tester entspricht, insbesondere ihrer Fähigkeit, eine Anwendung zu bearbeiten und einen behebbaren Programmierfehler zu erzeugen.
2. Nicht geeignet für Black-Box-Tests
Beim Black-Box-Testing wird hauptsächlich das Frontend einer Anwendung untersucht, ohne das Innenleben und den Code zu inspizieren – dies ist mit dem Mutationstest praktisch unvereinbar.
Folglich sind diese Prüfungen nur für einige Tests hilfreich im Vergleich zu anderen Methoden, von denen viele eine weitaus größere Abdeckung der gesamten Testphase bieten können.
3. Die Entwicklung von Mutationstests ist zeitaufwändig
Die Code-Mutation kann ein langwieriger Prozess sein, da das Team einzelne Komponenten finden muss, die für eine Mutation in Frage kommen. Die Entscheidung, welche Mutationen durchgeführt werden sollen, kann sehr viel Zeit in Anspruch nehmen. Dies kann problematisch sein, wenn andere Testarten auf diese Prüfungen warten, um den Testansatz des Unternehmens vollständig zu validieren.
4. Kann viele Code-Mutationen erfordern
Ähnlich verhält es sich mit komplexen Projekten, die natürlich eine höhere Anzahl von Mutanten erfordern, um einen umfassenden Testansatz zu gewährleisten. Dies verlängert die Mutationsphase und kann viele manuelle Änderungen am Programmcode nach sich ziehen.
Ohne eine qualitativ hochwertige Testautomatisierungssoftware mit Programmmutationsfunktionen könnte es für die Tester schwierig werden, dies erfolgreich umzusetzen.
5. Prüfer bemerken möglicherweise keine Fehler
Die größte Sorge, die Mutationstester und Projektmanager bei der Implementierung dieser Prüfungen oft haben, ist die Möglichkeit, dass Softwaretester (manuell oder automatisiert) die Probleme einfach nicht bemerken.
Dies könnte eine vollständige Überarbeitung der Prüfverfahren des Unternehmens erfordern – auch wenn dies den Prüfern wichtige Informationen über ihre Qualitätssicherungsstandards liefern könnte.
6. Kann speicherintensiv sein
Mutationstests erfordern im Allgemeinen eine hohe Rechenleistung, die jedoch von der Anwendung abhängen kann, die die Tester verwenden.
Wenn die Organisation nur über eine begrenzte Anzahl von Rechnern verfügt oder diese Geräte eine geringe Spezifikation haben, könnten sie Schwierigkeiten haben, zu viele gleichzeitige Mutationen durchzuführen. Dies wirkt sich darauf aus, wie viele Prüfungen sie durchführen können, bevor die Testphase endet.
7. Berichte können sehr informationsreich sein
Obwohl dies hauptsächlich von der Schnittstelle des Mutationstest-Tools eines Teams abhängt, können die von ihnen erstellten Berichte schwer zu analysieren sein.
Das bedeutet, dass es Zeit kostet, sie manuell zu sortieren und die richtigen Testergebnisse zu finden; bei einigen Programmen können die Benutzer den eigentlichen Berichtsprozess anpassen; dies ist von Anwendung zu Anwendung unterschiedlich.
Merkmale von Mutationstests
Die wichtigsten Merkmale wirksamer Mutationstests sind:
1. Umfassend
Diese Prüfungen decken jeden wichtigen Aspekt der Software ab; Unternehmen mit genügend Ressourcen können sogar für jeden regulären Testfall einen Mutationstest entwickeln.
Die genaue Anzahl hängt von den Fähigkeiten und Präferenzen des Unternehmens ab, aber wirksame Mutationstests decken ein breites Spektrum an kodierten Merkmalen ab.
2. Strategisch
Programmmutationen sollten in ähnlicher Weise einer klaren und gut geplanten Struktur folgen, die die allgemeinen Testziele der Organisation unterstützt.
Die Fehler, die sie produzieren, können zum Beispiel realistischen Testfehlern nahe kommen, was es den Testern ermöglicht, diese Probleme zu antizipieren, wenn sie natürlich auftreten, was den Testprozess des Unternehmens erheblich verbessert.
3. Konstruktiv
Der Zweck der Mutationstests besteht darin, Mängel beim Testen aufzudecken – und aufzuzeigen, wie das Team seine Prüfungen verbessern und kleinere Fehler beheben könnte, sobald sie auftauchen.
Mutationstester müssen „ungültigen“ Mutanten, die die Funktionalität der Software beeinträchtigen, Priorität einräumen, was eine deutlichere Verbesserung der Tests im gesamten Projekt ermöglicht.
4. Präventiv
Diese Prüfungen dienen dazu, die Gesamtstrategie des Teams zu validieren; das bedeutet, dass Mutationstests in den frühen Phasen der Entwicklung besser funktionieren.
Wenn die Tester erhebliche Mängel in ihrem Qualitätssicherungsansatz feststellen, haben sie so die nötige Zeit, ihre Testfälle zu ändern, um sicherzustellen, dass sie angemessen sind.
5. Einheitlich
Mutationstests über verschiedene Iterationen einer Anwendung hinweg sollten konsistente Ergebnisse liefern und gleichzeitig weitere Prüfungen hinzufügen, um Softwareänderungen zu berücksichtigen.
Nachfolgende Prüfungen müssen mit der gleichen Sorgfalt durchgeführt werden, um ihre Wirksamkeit zu erhalten – ohne diese Präzision können die Mutationstests an Genauigkeit verlieren.
6. Subtil
Mit Mutationstests soll die Fähigkeit des Qualitätssicherungs-Teams untersucht werden, Code-Fehler durch ihre Tests und Plattformen von Drittanbietern zu erkennen.
Das bedeutet, dass die Tests nicht für jeden, der die Software inspiziert, sofort ersichtlich sein sollten; das Ziel ist es, zu untersuchen, wie die Tester auf kleinere Codefehler reagieren.
7. Zusammenarbeit
Wie jeder Softwaretest ist auch die Code-Mutation ein Prozess, der in der Regel Teamarbeit und Kommunikation erfordert, um seinen Erfolg zu gewährleisten. Die Aufrechterhaltung einer kollaborativen Atmosphäre trägt dazu bei, Informationssilos zu vermeiden, die zu Fehlkommunikation führen können – dies garantiert auch, dass sich jeder Tester auf die anstehenden Aufgaben konzentrieren kann.
Arten von Mutationstests
Die drei wichtigsten Arten von Mutationstests sind:
1. Wertmutation
Wertmutationen ändern direkt die Werte innerhalb des Codes, indem sie eine Zahl oder einen Buchstaben durch einen anderen ersetzen, was sich auf die Funktionalität der Anwendung auswirkt.
Der Prüfer könnte beispielsweise die genauen Parameter des Programms ändern, etwa die Zahlen, auf die es reagiert. Mutationstester könnten speziell auf die konstanten Werte einer Software abzielen, da diese im normalen Betrieb immer gleich bleiben.
2. Entscheidung Mutation
Entscheidungsmutationen modifizieren arithmetische und logische Operatoren, wodurch sich die Art und Weise, wie die Anwendung auf bestimmte Situationen reagiert, effektiv ändert.
Wenn Sie zum Beispiel einen Größer-als-Operator (>) mit einem Kleiner-als-Operator (<) vertauschen, wirkt sich das natürlich auf die Programmausgabe aus. Die Tester können auch „oder“ gegen „und“ austauschen oder umgekehrt, wodurch sich die Software und die Art und Weise, wie sie die von anderen Testern und möglichen Nutzern gelieferten Informationen interpretiert, grundlegend ändert.
3. Aussage Mutation
Anweisungsmutationen ändern die eigentlichen Anweisungen des Codes und modifizieren die Regeln, nach denen eine Anwendung ihre Entscheidungen trifft. Die Tester können den Inhalt dieser Zeilen ändern, sie duplizieren oder sogar löschen, um zu prüfen, wie sich das mutierte Programm auf die Funktionalität der Software auswirkt.
Diese Mutationen verändern die Bausteine eines Programms, wodurch möglicherweise ganze Funktionen entfernt werden oder anderweitig verhindert wird, dass sie funktionieren.
Klärung einiger Unklarheiten
– Mutationstest vs. Regressionstest
Mutations- und Regressionstests sind beides nützliche Ansätze für das Testen von Software – das Verständnis jeder dieser Techniken kann die Qualitätssicherung eines Unternehmens insgesamt verbessern.
1. Was sind Regressionstests?
Bei Regressionstests untersuchen die Tester die Software zwischen verschiedenen Iterationen, um sicherzustellen, dass sie trotz Änderungen am Code noch funktioniert.
Selbst geringfügige Änderungen können ohne diese Überprüfungen zu schwerwiegenden Problemen führen und möglicherweise frühere Fehler wieder auftauchen lassen. Dies erfordert in der Regel eine Automatisierung, da das erneute Testen jeder Komponente sehr komplex ist; viele Unternehmen verzichten aus diesem Grund auf Regressionstests.
Die Prüfer können diese Prüfungen an einzelnen Einheiten, einzelnen Komponenten oder am gesamten Produkt durchführen – die genauen Prüfungen hängen hauptsächlich vom Projekt und seinem Umfang ab.
2. Was ist der Unterschied zwischen Mutations- und Regressionstests?
Regressionstests konzentrieren sich in erster Linie auf die Überprüfung des Programms und seiner Funktionalität, während bei der Code-Mutation untersucht wird, wie die Tester auf Probleme reagieren.
Erstere findet auch größtenteils nach mehreren Iterationen eines Programms statt, während Mutationsprüfungen in jedem Stadium der Entwicklung durchgeführt werden können – allerdings in der Regel in den frühen Phasen der Testphase.
Sowohl Regressions- als auch Mutationstests befassen sich mit einzelnen Kodierungseinheiten und damit, wie geringfügige Änderungen zu erheblichen Problemen führen können, die von den Testern behoben werden müssen.
3. Schlussfolgerung: Mutationstests vs. automatisierte Tests
Die Automatisierung ist oft ein wichtiger Bestandteil von Mutationstests, da sie aufgrund des Umfangs der Prüfungen und Einheiten manchmal für einen erfolgreichen und umfassenden Testprozess unerlässlich ist.
Unternehmen verwenden häufig Code-Mutationen, um ihre Automatisierungsplattform von Drittanbietern zu überprüfen und um festzustellen, wie gut sie problematisches Scripting erkennt.
Die Kombination eines gründlichen Katalogs von Mutationsprüfungen mit automatisierter Software kann den Abdeckungsgrad des Unternehmens erheblich erhöhen und bessere Ergebnisse gewährleisten.
Obwohl es sich hierbei um zwei verschiedene Prüfverfahren handelt, müssen sie sich nicht gegenseitig ausschließen. Die Integration von automatisierten Prozessen kann zum Beispiel die Mutationsteststrategie eines Unternehmens verbessern.
Was brauchen Sie, um mit Mutationstests in der Softwareentwicklung zu beginnen?
Zu den üblichen Anforderungen für umfassende Mutationstests gehören:
1. Eine klare Prüfstrategie
Das Testteam muss eine Strategie für die Mutationstests festlegen, einschließlich der zu prüfenden Komponenten und Einheiten, die am wichtigsten sind.
So können beispielsweise bestimmte Aspekte des Codes für den Erfolg und die Funktionalität einer Anwendung von größerer Bedeutung sein; die Tester sollten sicherstellen, dass es genügend Mutationen gibt, um dies zu berücksichtigen.
Der Zeitplan für die Mutationstests des Unternehmens ist ebenfalls von entscheidender Bedeutung, da so sichergestellt wird, dass die Tester genügend Zeit haben, den Code zu untersuchen.
2. Keine schleichende Ausweitung des Umfangs
Selbst bei einer gründlichen Strategie, die den Ansatz des Unternehmens für Mutationstests festlegt, ist es möglich, dass die Zahl der Tests deutlich höher ist als nötig.
Effizienz ist bei diesem Verfahren von größter Bedeutung, zumal andere Testphasen darauf warten könnten, dass das Team die Mutationen findet und abtötet. Die Tester müssen ihren Aufgabenbereich klar definieren, bevor sie mit der Änderung des Codes beginnen; so wird sichergestellt, dass alles innerhalb eines praktischen Zeitrahmens verwaltet werden kann.
3. Strenge Dokumentation
Jeder Testprozess profitiert von einer vollständigen Dokumentation – oft in Form von Testfällen, die die einzelnen Prüfungen und alle relevanten Mutanten detailliert beschreiben.
Dies veranschaulicht den aktuellen Fortschritt des Teams bei den Tests, was besonders für Manager und Führungskräfte nützlich ist. Die Dokumentation jeder Code-Mutation hilft den Testern auch, klare Aufzeichnungen über die von ihnen vorgenommenen Änderungen zu führen.
Wenn das Qualitätssicherungsteam beim Testen Schwierigkeiten hat, diese Mutationen zu finden, können diese Dokumente als Antwortschlüssel dienen.
4. Kompetente Prüfer
Die Tester, die den Code verändern, müssen die Software sehr gut kennen – einschließlich der vielen Möglichkeiten, wie sie sie verändern oder sogar zerstören können.
Mutationstester wissen ungefähr, wie sich ihre Änderungen auf die Anwendung auswirken werden und wie andere Mitglieder des Qualitätssicherungsteams den mutierten Code identifizieren könnten.
Dies erfordert in der Regel ein gutes Maß an Programmierkenntnissen. Damit die Mutationsanalyse wirksam ist, sollten auch die Tester der Software über gut ausgebildete Fähigkeiten und Testerfahrung verfügen.
5. Automatisierungssoftware
Automatisierungssoftware von Drittanbietern kann vor Mutationstests notwendig sein, da dieser Prozess oft eine Vielzahl von Prüfungen erfordert. Dies gilt insbesondere für komplizierte Anwendungen mit mehr Code und Funktionen, die das Qualitätssicherungsteam prüfen muss.
Unternehmen können diese Prüfungen gezielt einsetzen, um zu testen, wie die Automatisierungssoftware auf Codierungsfehler reagiert. Dies kann ein zentraler Bestandteil des Prozesses sein, mit dem das Unternehmen entscheidet, welche Programme am nützlichsten sind.
Prozess der Mutationsprüfung
Die üblichen Schritte, die Prüfer bei der Durchführung einer Mutationsanalyse befolgen, sind:
1. Bereiten Sie die Tests vor
Die Vorbereitung ist der erste Schritt eines jeden Prüfverfahrens. Dazu gehört die Aushandlung der genauen Kontrollen und die Einholung aller erforderlichen Genehmigungen – etwa von den Führungskräften und Interessengruppen des Unternehmens.
Die Tester müssen diese Prüfungen so entwickeln, dass der Zeitplan des Projekts eingehalten wird und dennoch alle wichtigen Komponenten abgedeckt werden. Die Planung des Teams kann die Wirksamkeit ihrer Code-Mutationen bestimmen.
2. Einführung von Mutanten und Fehlern
Nachdem die Vorbereitungen abgeschlossen sind, beginnt das Testteam mit der Änderung des Codes, indem es ihn gemäß seinem Plan verändert, um bestimmte Fehler einzuführen. Diese Fehler sollten relativ geringfügig sein, da dies den Testern die Möglichkeit gibt, die Fähigkeit des restlichen Teams zur Erkennung von Kodierungsproblemen zu beurteilen.
Kleinere Fehler können dem Unternehmen auch dabei helfen, die Empfindlichkeit der Automatisierungssoftware von Drittanbietern zu überprüfen.
3. Anwendung der Testfälle
Die Testfälle müssen jeden möglichen Fehlerpunkt in einer Anwendung berücksichtigen – dies kann eine Neuprogrammierung erfordern, wenn das mutierte Programm ohne Fehler funktioniert.
Die Testfälle eines Programms stellen die gesamte Bandbreite der von den Testern durchgeführten Prüfungen dar; jeder einzelne sollte den Testern dabei helfen, versteckte Änderungen aufzudecken und die Benutzerfreundlichkeit der Anwendung zu gewährleisten.
4. Vergleichen Sie die Ergebnisse
Nach dem Hinzufügen von Mutationsfehlern zum Programm und der Anwendung der Testfälle des Teams muss das Team die Ergebnisse des ursprünglichen und des mutierten Programms vergleichen.
Die Hoffnung ist, dass für jede erfolgreiche Prüfung im Original auch ein Fehler in der Mutationsanwendung gefunden wird. Dies zeigt die Fähigkeiten sowohl der Tester als auch der von ihnen verwendeten Werkzeuge.
5. Auf verschiedene Outputs reagieren
Wenn es unterschiedliche Ausgaben zwischen dem Original und der Mutante gibt, wie es die Tester erwarten, bedeutet dies, dass der Testfall die Mutante erfolgreich abtöten kann, indem er ihr Vorhandensein demonstriert.
Die Tester können dann mit Vertrauen in ihre Methodik und ihre Fähigkeit, Kodierungsprobleme zu erkennen, fortfahren. Für diese speziellen Tests sind keine Änderungen an den Testfällen erforderlich.
6. Ändern Sie die Gehäuse, falls erforderlich
Einige Code-Mutationen können zu identischen Schlussfolgerungen in den verschiedenen Programmen führen, was darauf hindeutet, dass die Testfälle nicht in der Lage sind, alle möglichen Fehler in der Anwendung erfolgreich aufzuzeigen.
In diesen Fällen bleibt die Mutante „am Leben“ und könnte die Software weiterhin auf eine Weise beeinflussen, für die die Tester keinen Rahmen haben – dies führt zur Erstellung besserer Testfälle.
Wie man mutierte Programme erstellt
Mutierte Programme sind praktisch identisch mit den Originalprogrammen, mit Ausnahme einer geringfügigen Änderung, die die Funktionalität einer Anwendung auf kleine, aber spürbare Weise beeinflussen kann.
Umfassende und detaillierte Testfälle helfen einem Tester oder einer Software-Suite, diese Änderungen und die daraus resultierenden Fehler zu erkennen. Für jeden Fall, den das Unternehmen prüft, sind sowohl das ursprüngliche als auch das veränderte Programm erforderlich, um die Auswirkungen jeder einzelnen Änderung zu zeigen.
Die Programme replizieren in der Regel realistische Fehler, wie z. B. Tippfehler in der Programmierung. Für die Tester ist es auch wichtig, „totgeborene“ Mutanten zu vermeiden, die verhindern, dass die Anwendung ausgeführt werden kann – das ist für die Tester zu offensichtlich.
Was soll in einem Mutantenprogramm geändert werden?
Wie bei vielen Softwaretestvariablen hängen die genauen Änderungen, die die Tester vornehmen, von der Anwendung und ihrem Code ab.
Es gibt drei Kategorien, die den Großteil der Mutationstests umfassen: Operanden, Ausdrücke und Anweisungen. Durch die Änderung eines dieser Werte kann ein effektives mutiertes Programm erstellt werden, das zeigt, wie sich die verschiedenen Werte oder Regeln auf die Logik eines Programms auswirken.
Diese Kategorien beziehen sich auf die drei Haupttypen von Mutationen, die von Testern untersucht werden: Entscheidungs-, Wert- und Anweisungsmutationen. Die Änderungen sollten geringfügig sein und dürfen die Durchführung eines Tests nicht vollständig verhindern.
Bewährte Verfahren für Mutationstests
Bei der Durchführung von Mutationstests im Rahmen von Softwaretests gibt es bestimmte Praktiken, die befolgt werden sollten, um aussagekräftige Ergebnisse zu gewährleisten, z. B:
1. Maximierung des Mutationswertes
Der Mutationswert eines Programms ist der Prozentsatz der Mutanten, die ein Team oder eine Anwendung erfolgreich identifizieren oder „töten“ kann.
Wenn zum Beispiel in einer Runde von Mutationstests 40 Mutanten gefunden werden und die Tester 36 finden, liegt die Mutationsbewertung bei 90 % – das Ziel des Teams ist es immer, eine Bewertung von 100 % zu erreichen.
2. Mutanten zufällig auswählen
Es kann zwar helfen, bestimmte Komponenten zu priorisieren und gründlicher zu testen, aber es ist auch nützlich für die Tester, zufällig auszuwählen, welche Mutanten hinzugefügt werden sollen – vor allem unter Zeitdruck.
Solange diese Prüfungen alle wichtigen Arten von Mutationen abdecken, kann das Qualitätssicherungsteam seine gesamte Softwareteststrategie validieren.
3. Halten Sie die Änderungen klein
Die Codemutationen sollten geringfügige Abweichungen vom Originalprogramm darstellen, da dies zeigt, wie wahrscheinlich es ist, dass ein Tester bestimmte Fehler erkennt; geringfügige Codierungsprobleme zeigen auch, wie empfindlich ihre Software ist.
Es ist von entscheidender Bedeutung, dass die Mutationstester ein Gleichgewicht finden, das es ermöglicht, dass diese geringfügigen Änderungen immer noch spürbare Fehler verursachen.
4. Eine Mutation pro Programm
Beim Mutationstest werden einzelne Testfälle isoliert betrachtet, um zu prüfen, wie umfassend sie sind. Um dies zu erleichtern, sollte jedes mutierte Programm nur eine einzige Änderung gegenüber dem Original aufweisen.
Programme mit mehreren Mutationen können möglicherweise nicht effektiv mit Testfällen gepaart werden; die Mutationen können in Konflikt miteinander geraten.
5. Automatisierungssoftware sorgfältig prüfen
Unternehmen verwenden die Code-Mutation häufig, um die Verwendung von Automatisierungssoftware durch das Team zu validieren und sicherzustellen, dass sie in der Lage ist, Fehler genauso effektiv zu identifizieren wie ein menschlicher Tester.
Dies bedeutet, dass die Wahl der richtigen Automatisierungsplattform eine wichtige Überlegung sein kann, ebenso wie die Möglichkeit der Integration von robotergestützter Prozessautomatisierung.
6. Testgetriebene Entwicklung verwenden
Die testgetriebene Entwicklung (TDD) ist eine spezielle Technik, bei der die Testanforderungen in jeder Phase der Entwicklung berücksichtigt werden.
Dadurch wird sichergestellt, dass die Testfälle vollständig mit der Software kompatibel sind, so dass sie problemlos Mutationstests bestehen und ein besseres Programm erstellen können, das mit den Qualitätssicherungsprozessen synchronisiert ist.
Arten von Ergebnissen eines Mutationstests
Mutationstests können verschiedene Ergebnisse liefern, darunter:
1. Mutantenprogramm
Die mutierten Programme sind ein natürliches Ergebnis dieser Prüfungen; die Tester erstellen sie, um ihre aktuellen Testfälle und die Probleme, die sie aufdecken, zu reflektieren. Die Programme weichen in der Regel nur in einem kleinen, aber wichtigen Punkt von ihrem Original ab, um eine größere Zuverlässigkeit zu gewährleisten.
2. Lebendiger oder toter Mutant
Nach den Tests wird eine Mutation entweder „abgetötet“ oder bleibt „am Leben“ – dies bezieht sich einfach darauf, ob der Tester (oder seine Software) ein Kodierungsproblem erfolgreich identifiziert hat oder nicht.
Wenn der Mutant am Leben bleibt, müssen die Testfälle möglicherweise ernsthaft geändert werden.
3. Testfall Mutation
Das Qualitätssicherungs-Team verwendet separate mutationsspezifische Testfälle, die Informationen über ihre mutierten Programme protokollieren.
Auf diese Weise wird sichergestellt, dass das Team über umfassende Aufzeichnungen für jede Prüfung verfügt; diese Dokumente enthalten Einzelheiten über die Mutationen und ihre Auswirkungen auf das Programm.
4. Mutation score
Das Endziel eines jeden Mutationstests ist es, eine Mutationsrate von 100 % zu erreichen, wobei die Testverfahren des Unternehmens jede Mutation erfolgreich aufspüren und abtöten. Alles, was darunter liegt, deutet darauf hin, dass ihre Testfälle und allgemeinen Prozesse verbessert werden müssen, um problematischen Code zu identifizieren.
Beispiele für Mutationstests
Hier sind drei Beispiele für Mutationstests:
1. Beispiel einer Wertmutation
Bei Wertmutationen wird eine Konstante oder ein Parameter geändert, was die Grenzen des Programms verändern kann. So kann beispielsweise die Software eines Kassenautomaten das Gewicht eines Lebensmittels zur Ermittlung des Preises heranziehen.
Die Tester könnten den Code hinter diesem Programm so verändern, dass die Gewichtsparameter geändert werden und die Lebensmittel pro Unze oder Pfund viel teurer werden. Der Tester oder die Testplattform sollte in der Lage sein, die Auswirkungen der verschiedenen Werte auf dieses Programm zu erkennen.
Da dieser Fehler eine der Hauptfunktionen der Software beeinträchtigt, sollten die Testfälle diesen Fehler bemerken und das Team warnen.
2. Beispiel für Entscheidungsmutation
Entscheidungsmutationen beinhalten die Änderung eines arithmetischen oder logischen Operators, die Umkehrung oder sonstige Änderung der Art und Weise, wie diese Anwendung auf Benutzereingaben reagiert. Um auf das Beispiel einer Selbstbedienungskasse zurückzukommen: Diese Geräte können einen Artikel mit einem unerwartet hohen Gewicht anzeigen, was möglicherweise auf einen Benutzerfehler zurückzuführen ist.
Der Code der Maschine könnte dies durch eine „if (a>b)“-Entscheidung tun – wobei „b“ das erwartete Gewicht und „a“ das tatsächliche Gewicht widerspiegelt. Das Team kann dies zu „if (a≤b)“ abändern, was die Reaktion der Kasse verändert; sie würde den Artikel auch bei dem erwarteten Gewicht kennzeichnen.
3. Beispiel für eine Anweisungsmutation
Anweisungsänderungen beinhalten die Änderung einer Regel oder einer Ausgabe – dies kann sogar das vollständige Löschen von Anweisungen aus der Anwendung beinhalten. Diese Mutationen können je nach Häufigkeit der jeweiligen Aussage stärker ausgeprägt sein als andere; es ist wichtig, dass die Tester die Aussage mit Bedacht auswählen.
So kann beispielsweise ein Selbstbedienungs-Kassenautomat eine Warnung anzeigen, wenn ein Benutzer versucht, einen Artikel mit Altersbeschränkung zu kaufen. Ohne die entsprechende Anweisung könnte die Maschine abstürzen oder jedem Kunden erlauben, einen beliebigen Artikel zu kaufen.
Indem sie die Aussage ändern und dem Team mitteilen, können die Tester überprüfen, ob ihr Ansatz diese Probleme berücksichtigt.
Arten von Fehlern und Bugs, die durch Mutationstests entdeckt werden
Mutationstests decken hauptsächlich Probleme im Testprozess selbst auf. In diesem Sinne können diese Kontrollen helfen, eine Reihe von Problemen zu erkennen:
1. Unklare Testfälle
Wenn die Mutationsanalyse einen niedrigen Mutationswert (oder sogar einen Wert unter 100 %) ergibt, deutet dies darauf hin, dass die Testfälle des Teams nicht in der Lage sind, alle möglichen Fehler zu berücksichtigen, die eine Anwendung betreffen könnten.
Möglicherweise sind sie nicht spezifisch oder nicht umfassend genug, um die Anforderungen des Teams zu erfüllen. Diese Dokumente sollten alle Möglichkeiten umfassen, auf die das Team beim Testen der Software stoßen kann, um die Zuverlässigkeit zu gewährleisten.
2. Ungeschultes Prüfteam
Mutationstests können auch die Fähigkeiten des Teams veranschaulichen, z. B. wie gut sie persönlich Mutationen und andere Fehler erkennen. Wenn sie die Mutanten in den Programmen trotz klarer und detaillierter Testfälle nicht finden können, liegt das möglicherweise daran, dass die Tester diese Fälle nicht korrekt anwenden.
Mutierte Programme können während des gesamten Testprozesses Probleme aufzeigen – dazu können auch ungeschulte oder untrainierte Tester gehören.
3. Ungeeignete Prüfsoftware
Nutzt ein Unternehmen diese Kontrollen, um seine eigene Testplattform zu überprüfen, könnte es feststellen, dass die Software mutierten Code nicht genau identifizieren oder abschalten kann.
Das Unternehmen kann darauf reagieren, indem es andere Möglichkeiten prüft, bis es eine findet, die mit seinen Testfällen kompatibel ist. Wenn es der Automatisierungssoftware nicht gelingt, problematischen Code zu finden, wird es ihr wahrscheinlich schwer fallen, andere Probleme zu identifizieren, die die Software beeinträchtigen.
4. Nicht optimierter Code
Mutationstests können Probleme aufdecken, die bereits in der Software vorhanden sind. So können die Tester beispielsweise versuchen, den Code zu verändern, dabei aber selbst kritische Fehler aufdecken.
Dies ist ein weiterer wichtiger Aspekt des Programms, der zeigt, dass die Code-Mutation auch über den Testprozess hinaus Vorteile bietet. Je mehr Tester diesen Code in irgendeiner Form untersuchen, desto mehr Probleme kann das Team während der Testphase aufdecken und beheben.
Metriken des gemeinsamen Mutationstests
Die wichtigsten Messgrößen, die bei Mutationstests verwendet werden, sind:
1. Getötete Mutanten
Dies bezieht sich auf die Anzahl der Mutanten, die von den Testern oder der Software identifiziert werden konnten, um sicherzustellen, dass die Mitarbeiter kleinere Fehler wie diese finden können.
Die Anzahl der Mutanten, die die Prüfer töten, hängt von der Stärke ihrer Testfälle ab.
2. Lebende Mutanten
Lebendige Mutanten sind solche, die der Tester oder die Software nicht erkennt – sie zeigen Lücken in der Qualitätssicherungsstrategie des Teams auf. In diesem Fall sollten die Prüfer ihren Prozess und ihre Testfälle neu kalibrieren, um diese Mutanten zu berücksichtigen und sie bei künftigen Prüfungen zu eliminieren.
3. Gültige Mutanten
Diese Kennzahl bestimmt die Anzahl der Mutationen, die das Programm erfolgreich einschließen konnte, ohne dass ein Laufzeitfehler den Test und seine Wirksamkeit zunichte machte.
Gültige Mutanten sind solche, die der Prüfer und die Automatisierungssoftware untersuchen können; dies ist darauf zurückzuführen, dass die Mutationen relativ geringfügig sind.
4. Ungültige Mutanten
Signifikante Mutationen könnten die Anwendung so stark beeinträchtigen, dass das Testen unpraktisch oder sogar unmöglich wird – daher ist es hilfreich zu verfolgen, wie viele „ungültige“ Mutanten in dem mutierten Programm vorhanden sind.
Wenn diese erkannt werden, können die Prüfer sie bearbeiten oder sogar entfernen, um sicherzustellen, dass die Prüfungen nur gültige Mutationen umfassen.
5. Mutanten insgesamt
Die Anzahl der Mutationen, unabhängig von ihrer Gültigkeit, ist eine weitere Kennzahl, die die Prüfer verfolgen; so können sie die Mutanten überwachen und ihren Status erfassen.
Da jede Mutation in der Regel einen separaten Test erfordert, dient die Gesamtzahl auch als Zählung für die Anzahl der gesamten Code-Mutationen.
6. Mutation score
Die hilfreichste Metrik für die Mutationsanalyse ist in der Regel die Mutationsbewertung, die den Prozentsatz der gültigen Mutationen angibt, die der Tester oder die Automatisierungssuite erkennen konnte.
Alles, was unter 100 % liegt, kann ein Zeichen für unsachgemäße Testverfahren sein.
7 Fehler und Fallstricke bei der Implementierung von Mutantentests
Mutationstests sind ein komplexer Prozess, den Unternehmen mit Bedacht durchführen müssen, um ernsthafte Probleme oder Fehler zu vermeiden. Hier sind sieben Fallstricke, die Tester bei der Durchführung von Mutationstests vermeiden sollten:
1. Falsche Mutationsskalierung
Die Skalierung ist ein wichtiger Aspekt bei der Mutationsanalyse, da dieser Prozess dazu dient, dass die Tester kleinere Fehler in einer Anwendung erkennen. Wenn die Mutation für die Tester zu offensichtlich ist, ist dies möglicherweise kein effektiver Weg, um ihre Fähigkeit zu überprüfen, Softwareprobleme zu erkennen oder zu beheben.
2. Ungültige oder lebende Mutationen
Selbst in der richtigen Größenordnung sind viele Mutationen nur begrenzt wirksam – zum Beispiel, wenn sie nicht zu einem Fehler führen, oder wenn sie ein Problem verursachen, das die Anwendung nicht mehr funktionieren lässt.
Die Prüfer sollten darauf achten, wie sich eine Änderung des Codes auf die gesamte Software auswirken könnte.
3. Inkompatible Testfälle
Die Testfälle und Mutationen müssen perfekt aufeinander abgestimmt sein, um konsistente und harmonische Tests zu gewährleisten. Bei der Entscheidung, welche Mutationen hinzugefügt werden sollen, oder sogar beim Entwurf der ersten Testfälle kann das Qualitätssicherungs-Team darauf hinarbeiten, dass diese zusammenpassen und insgesamt zu flüssigeren Tests führen.
4. Fristen und Zeitpläne
Die Testphasen sind unterschiedlich lang, sollten aber immer die unternehmensinternen Fristen einhalten. Unternehmen, die ihre Mutationstests nicht ordnungsgemäß planen, können das Verfahren möglicherweise nicht rechtzeitig abschließen.
Bevor ein Projekt die Testphase erreicht, muss das Team sicherstellen, dass der Testplan angemessen umfassend ist.
5. Unzureichende Testabdeckung
Die Unternehmen können ihre Kodexänderungen nach dem Zufallsprinzip einführen – wichtig ist jedoch, dass sie ein breites Spektrum von Themen abdecken.
Um sicherzustellen, dass sowohl die Prüfer als auch die Software jede Art von Mutation erkennen können, sollten die Prüfungen mindestens mehrere Wert-, Entscheidungs- und Anweisungsmutationen umfassen.
6. Verwendung von Mutanten zum Testen der Software
Obwohl das Mutationstesten eine neue Perspektive auf eine Anwendung bietet, dürfen Teams diese Methode nur zur Überprüfung ihres eigenen Testprozesses verwenden. Das Unternehmen muss die genauen Möglichkeiten und Grenzen von Mutationstests kennen; diese Technik kann nur zusammen mit anderen Softwareprüfungen erfolgreich sein.
7. Zu viele Mutanten
Es ist von größter Wichtigkeit, dass Unternehmen eine breite Testabdeckung sicherstellen, aber sie könnten dabei zu viele Mutanten implementieren. Jedes Mutationsprogramm erfordert eine beträchtliche Menge an Rechenleistung, wodurch die Anzahl der Programme, die ein Unternehmen gleichzeitig durchführen kann, begrenzt ist.
Wenn zu viele Mutationen durchgeführt werden, kann es auch schwieriger werden, die Testtermine einzuhalten.
Checkliste, Tipps und Tricks zur Mutationsprüfung
Es gibt eine Reihe zusätzlicher Tipps, die jedem Team helfen können, den Erfolg seiner Mutationstests zu verbessern, z. B:
1. Kompatibilität der Programmiersprachen prüfen
Sowohl kostenlose als auch kostenpflichtige Tools für Mutationstests sind in der Regel auf eine bestimmte Programmiersprache spezialisiert – daher ist es wichtig, dass die Tester ein Tool auswählen, das mit der Anwendung und der Softwaretestplattform kompatibel ist.
Das Testteam sollte viele Optionen prüfen, um sicherzustellen, dass es ein Programm verwendet, das sowohl zu seinem Budget als auch zu seiner bevorzugten Kodierungssprache passt.
2. Verteilen Sie die Tests klug
Verschiedene Mitglieder des Testteams werden wahrscheinlich verschiedene Aspekte der Anwendung betrachten, was in der Regel mit ihren spezifischen Stärken, Schwächen und ihrer allgemeinen Erfahrung zusammenhängt.
Wenn das Team jedem Tester Mutationstests zuteilt, sollte es dies im Hinterkopf behalten, um eine Vorstellung von deren Leistungsfähigkeit zu bekommen; dies zeigt, wie gut weitere Tests wahrscheinlich verlaufen werden.
3. Fehler sorgfältig auswählen
Wenn in einer früheren Version der Software ein Fehler bei einem Wert oder einer Anweisung auftrat, kann es hilfreich sein, diesen zu reproduzieren und zu untersuchen, wie das Team oder das Programm darauf reagiert.
Dies trägt dazu bei, die Langlebigkeit der Anwendung zu gewährleisten, und zeigt, dass das Team in der Lage ist, frühere Fehler zu erkennen, wenn sie wieder auftreten – dies ist eine Schlüsselkomponente der Regressionstests.
4. Maximierung der Rechenleistung
Da Mutationsprüfungen viel Rechenleistung erfordern können, ist es hilfreich, die Hardware des Unternehmens optimal zu nutzen.
Wenn zum Beispiel bestimmte Maschinen stärkere Spezifikationen haben, könnte es hilfreich sein, die Mutanten auf diesen Geräten laufen zu lassen. Auf diese Weise kann das Unternehmen erhebliche Verzögerungen vermeiden, zu denen langsamere Maschinen führen könnten.
5. Lebendige Mutationen nicht abtun
Selbst bei einem strengen Zeitplan sollten die Tester daran arbeiten, ihre Testfälle zu ändern und zu erweitern, um alle Mutanten zu bekämpfen, die den Prozess überleben.
Diese Fehler mögen zwar unbedeutend erscheinen, wenn die Software oder der Tester sie nicht entdeckt, aber sie stellen dennoch ein Versäumnis der Testfälle dar, alle Kodierungsprobleme zu identifizieren.
6. Untersuchung einer neuen Automatisierungssoftware
Wenn die Testfälle des Teams hinreichend detailliert sind, ihre automatisierte Testsuite sie aber nicht erfolgreich nutzen kann, um jede Mutation zu identifizieren, könnte sie von einer anderen Software profitieren.
Es gibt viele kostenlose und kostenpflichtige Plattformen, und Unternehmen sollten alle Optionen prüfen, um sicherzustellen, dass sie die Software haben, die langfristig am besten für ihre Testfälle geeignet ist.
7. Synchronisieren Sie jeden Prüfvorgang
Die Zusammenarbeit ist ein zentraler Bestandteil jeder Teststrategie – sie trägt dazu bei, dass die einzelnen Prozesse so zusammenpassen, wie es das Team beabsichtigt.
Beispielsweise könnte das Testteam seine Testfälle unter Berücksichtigung der Mutation entwickeln, um ein höheres Maß an Kompatibilität zu gewährleisten, was es den Testern erleichtert, ihre Strategie zu validieren.
8. Einheitstests verwenden
Mithilfe von Unit-Tests kann das Qualitätssicherungsteam Teile des Codes isoliert prüfen, was die Tests erheblich vereinfacht und es den Teams erleichtert, Probleme zu erkennen.
Diese Kombination kann besonders hilfreich sein, wenn sich die Tester um Fristen sorgen, da sie so die Möglichkeit haben, ihre Prüfungen zu vereinfachen und die Gesamtabdeckung zu verbessern – was zu wesentlich besseren Softwaretests führt.
9. Detaillierte Testfälle schreiben
Mutationstestfälle sollten angemessene Informationen über die Mutation und ihre Auswirkungen auf das Programm enthalten sowie darüber, wie das Testteam oder die Plattform diese Fehler gefunden hat.
Durch die Bereitstellung möglichst vieler Details kann ein Tester den Testfall persönlich validieren und sicherstellen, dass das Team genau weiß, wie es einen reibungslosen Test gewährleisten kann.
Die 5 besten Werkzeuge zur Mutationsprüfung
Es gibt eine breite Palette von Hilfsmitteln, die Unternehmen bei der Durchführung von Mutationstests unterstützen können. Wie so oft bei Softwaretestanwendungen variieren die Preise und Funktionen von einer Plattform zur nächsten, so dass es wichtig ist, dass Unternehmen diejenige auswählen, die ihren Anforderungen am besten entspricht.
Einige dieser Programme können kostenlose Pendants anbieten oder vollständig quelloffen sein; für mehr Komfort muss man jedoch in der Regel bezahlen.
Vor diesem Hintergrund stellen wir Ihnen hier die fünf besten Tools für Mutationstests vor.
1. Stryker
Stryker hat sich auf die Mutation von JavaScript spezialisiert und diesen Prozess erheblich rationalisiert, um keine falsch-positiven Ergebnisse zu garantieren und den Gesamtaufwand zu verringern, den Tester ansonsten für alle Mutationsprüfungen aufwenden müssten.
Die Stryker-Plattform bewertet die Software auf intelligente Weise und nutzt die gesammelten Informationen, um die Zeichenfolgen oder Codesegmente zu ermitteln, die von einer Mutation profitieren würden. Diese Anwendung verfügt über einen Klartext-Reporter, der eine Zusammenfassung des Mutanten ausgibt, einschließlich der Information, ob Stryker ihn töten konnte.
2. PITest
PITest ist weltweit sehr beliebt, da es in der Lage ist, Java-Bytecode zu verändern und Tausende von Mutationen pro Sekunde vorzunehmen. Diese Anwendung verwendet Daten zur Testfallabdeckung, um sofort zu erfahren, welche Tests eine Mutante töten könnten.
Es führt nur Tests durch, von denen es weiß, dass sie relevant sind, wodurch die Rechenleistung, die dieses Verfahren normalerweise verbraucht, begrenzt wird. PITest ist auch mit den meisten Formen des Surefire-Unit-Testing-Plugins kompatibel, hat aber Probleme mit der effektiven Verwaltung von Testreihenfolge-Abhängigkeiten.
3. Versichern++
Insure++ verfügt über zahlreiche Testfunktionen, einschließlich der Mutationsanalyse, die es der Plattform ermöglicht, Mehrdeutigkeiten in einem Programm zu erkennen. Im Gegensatz zu herkömmlichen Mutationstests verzichtet Insure++ auf die Erzeugung fehlerhafter Mutanten und erzeugt stattdessen funktional äquivalente Mutationen, die dem Quellcode des Projekts entsprechen.
Damit sollen implizite Annahmen vermieden werden, die den Testprozess unbeabsichtigt einschränken können und möglicherweise keine realistische Testumgebung widerspiegeln. Wie der Name schon sagt, ist die Plattform hauptsächlich mit C++-Programmen kompatibel, und alle Funktionen sind auf diese Sprache abgestimmt.
4. Durcheinander
Diese Anwendung ist auf das JUnit-JavaScript-Framework spezialisiert und bietet umfassende visuelle Indikatoren dafür, wie der Code auf die Mutationsanalyse reagiert. Jumble ist eine Open-Source-Plattform und arbeitet innerhalb des Byte-Codes von Java-Anwendungen, um die Zeit für jeden Testzyklus zu verringern.
Bei ähnlichen Anwendungen, die ausschließlich den Quellcode eines Programms verwenden, kann es aufgrund des Neukompilierungsprozesses manchmal länger dauern, diese Prüfungen durchzuführen.
Jumble nutzt auch Heuristiken, um die Mutationstests weiter zu optimieren und die nachfolgenden Testläufe zu vereinfachen.
5. MutPy
MutPy unterstützt Mutationstests für Python-basierte Anwendungen und bietet vollständige Unterstützung für Mutationen hoher Ordnung sowie eine umfassende Überdeckungsanalyse. Die Benutzeroberfläche dieses Programms ist in der Ausgabephase einfach zu bedienen und zeigt dem Benutzer klar und deutlich alle wesentlichen Details der Mutationstests des Teams.
MutPy bietet viele maßgeschneiderte Optionen für Prüfer, so dass sie diese Software speziell auf ihre Anforderungen abstimmen können. Die Plattform verwendet abstrakte Syntaxbäume, die eine klare Struktur des Quellcodes der Anwendung bieten und den Testern mehr Vertrauen in ihre Mutationen geben.
Schlussfolgerung
Die Code-Mutation kann für fast jeden Software-Testprozess eingesetzt werden und bietet Unternehmen, die diese Technik einsetzen, eine Reihe von klaren Vorteilen – vor allem in der frühen Phase der Qualitätssicherung.
Keine Methode ist ohne Herausforderungen; das bedeutet, dass Unternehmen die Vorteile der Mutationsanalyse klug abwägen und gleichzeitig sicherstellen müssen, dass sie in ihren üblichen Zeitplan für die Softwareentwicklung passt.
Diese Mutationen geben den Testteams die Möglichkeit, ihre eigene Herangehensweise zu überprüfen und festzustellen, wie wirksam sie bei der Lokalisierung und Behebung von Fehlern im Quellcode sind. Diese Technik ist besonders mit Automatisierungsverfahren kompatibel und ermöglicht es den Unternehmen, die Software zu validieren, die sie mit der Durchführung ihrer Kontrollen beauftragen.
Mutationstests bieten eine umfassende Möglichkeit für Qualitätssicherungsteams, ein besseres Verständnis ihrer eigenen Prozesse und Software zu entwickeln, einschließlich der Probleme, die sie sonst nicht erkennen würden.
Daher ist es wichtig, dass die Testteams diese Technik genau untersuchen, um festzustellen, ob sie den Anforderungen des Unternehmens entspricht – einschließlich der Frage, ob das gewählte Mutationstool vollständig mit der Programmiersprache kompatibel ist. Die automatisierte Testsoftware ZAPTEST verfügt über zahlreiche Funktionen, die es ihr ermöglichen, Mutationstests zu bestehen, so dass die Teams volles Vertrauen in ihre Fähigkeiten haben.
Sowohl die Free- als auch die Enterprise-Version bieten einen qualitativ hochwertigen Testprozess, der Code-Änderungen mühelos berücksichtigen kann.
FAQs und Ressourcen
1. Die besten Kurse zur Mutationsprüfung
In Online-Kursen können Tester, die zum ersten Mal testen, die Grundlagen der Code-Mutation erlernen oder die bereits vorhandenen Kenntnisse erfahrener Qualitätssicherungsmitarbeiter vertiefen. Auch allgemeiner Softwaretest-Unterricht kann Testern viele Vorteile bieten. Zu den besten Online-Kursen für Mutationstester gehören:
– PluralSight’s ‚Mutation Testing in Java with PITest‘ befasst sich speziell mit der Änderung von Java-Code und den Möglichkeiten, die dieser Ansatz für praktische Software-Testprozesse bietet.
– Das „The Complete 2023 Software Testing Bootcamp“ von Udemy ist ein besonders aktueller Kurs, der jede Schlüsselkomponente von Softwaretests, einschließlich White-Box-Tests, veranschaulicht.
– Alison’s ‚Software Testing – Condition Coverage and Mutation Testing Strategies‘ ist kostenlos und untersucht genau, wie man Mutationstests sinnvoll einsetzt.
– Unit Testing Fundamentals“ von PluralSight erforscht die Vorteile und Funktionen von Unit-Tests und trägt dazu bei, dass die Studenten den genauen Prozess zum Schreiben von starken Unit-Tests verstehen.
– Udemy’s „Introduction to Unit Testing“ ist ein weiterer kostenloser Kurs, der eine klare Aufschlüsselung von Unit-Tests sowie die Bedeutung von testgetriebenen Entwicklungsstrategien liefert.
2. Was sind die 5 wichtigsten Interviewfragen zum Thema Mutationstests?
Es gibt eine Reihe von Fragen, die die Unternehmen den Bewerbern während eines Vorstellungsgesprächs stellen können, um ihre Erfahrung oder ihr Verständnis von Mutationstests und deren Grundprinzipien zu überprüfen. Auf diese Weise kann ein Unternehmen sicherstellen, dass es einen qualifizierten Prüfer einstellt, der mit Leichtigkeit an verschiedene Mutationsszenarien herangehen kann.
Die genauen Fragen variieren, können aber auch die Frage nach ihrer eigenen Meinung oder nach Beispielen für ihre Fähigkeiten zur Code-Mutation beinhalten.
Die fünf wichtigsten Fragen zum Thema Mutationstest sind:
– Mit welchen Werkzeugen für Mutationstests haben Sie bereits Erfahrung, wenn überhaupt? Was waren die wichtigsten Merkmale dieser Software?
– Wie würden Sie bei der Durchführung von Code-Mutationen ein gesundes Gleichgewicht zwischen Testgeschwindigkeit und Testtiefe sicherstellen?
– In welchen Situationen wäre eine Mutationsanalyse unmöglich? Wie würden Sie das Prüfverfahren in diesen Szenarien überprüfen?
– Wenn es einer Wertmutation gelingt, den Testprozess zu überleben, was würden Sie tun, um zu verhindern, dass dies erneut geschieht?
– Welche Informationen würden Sie in einen Mutationstestfall aufnehmen, um zu gewährleisten, dass Ihre Kollegen die benötigten Daten erhalten?
3. Die besten YouTube-Tutorials zur Mutationsprüfung
Auf YouTube sind kostenlose Tutorials, Webinare und andere Videos verfügbar, die das Verständnis der Prüfer für Mutationstests verbessern. Einige der hilfreichsten Videos und Serien zu diesem Thema sind:
– Software Testing’s ‚Mutation Testing for Programs‘, das praktische Beispiele dafür liefert, wie Code-Mutation Programmen hilft, und wie man gründliche Testfälle schreibt.
– Devoxx’s ‚Mutation Testing: Did my test break my code?“, in dem untersucht wird, wie die Mutationsanalyse die allgemeinen Testverfahren für alle Arten von Softwareprojekten verbessert.
– NDC Conferences‘ ‚Kill All Mutants! Intro to Mutation Testing“, in der untersucht wird, wie Testsuiten von der Code-Mutation und den dadurch entstehenden Fehlern profitieren können.
– GOTO Conferences‘ ‚Mutation Testing in Python‘, in dem speziell untersucht wird, wie Python-basierte Anwendungen die Mutationsanalyse anwenden können, um bestimmte Testziele zu erreichen.
– Diego Pachecos ‚Java Mutation Testing With PITest‘, das auf ähnliche Weise veranschaulicht, wie JavaScript-Software Code-Mutation einsetzt – mit Schwerpunkt auf dem Mutationsprogramm PITest.
4. Wie kann man Mutationstests durchführen?
Die Kombination von Mutationsanalysen mit Regressionstests und anderen langfristigen Strategien ermöglicht es Unternehmen, auch nach der Freigabe einen hohen Qualitätsstandard zu gewährleisten.
Spätere Aktualisierungen können zu Codeänderungen führen, die weitere Prüfungen erfordern. Mutationstests zeigen, dass die Automatisierungssoftware und die Tester über verschiedene Versionen derselben Software hinweg konsistent sind und ihren besonderen Ansatz erneut bestätigen.
Neue Funktionen erfordern neue Testfälle, insbesondere dann, wenn diese Funktionen mit bereits bestehenden interagieren.
Darüber hinaus ermöglicht die testgetriebene Entwicklung den Teammitgliedern, die Langlebigkeit der Software zu planen und die Kompatibilität als Teil des eigenen Entwicklungszyklus zu testen.