suchen
HeimBackend-EntwicklungPHP-TutorialIhre Tests testen? Wer beobachtet die Wächter?

Testing Your Tests? Who Watches the Watchmen?

Unabhängig davon, ob Sie für ein großes Unternehmen, ein Startup oder sich selbst arbeiten, ist Unit -Tests nicht nur nützlich, sondern oft unverzichtbar. Wir verwenden Unit -Tests, um den Code zu testen, aber was ist, wenn unsere Tests falsch oder unvollständig sind? Was können wir verwenden, um unsere Tests zu testen? Wer wird den Inspektor überwachen? Testing Your Tests? Who Watches the Watchmen?

Schlüsselpunkte

  • Variationstests ist eine Technik, die seine Qualität mit einer geringen Anzahl modifizierter Tests bewertet und zum Testen des Tests selbst verwendet werden kann. Dazu gehört es, eine "Variante" oder Variante des ursprünglichen Tests zu erstellen und zu überprüfen, ob diese Änderungen durch den Test erkannt werden.
  • Humbug ist ein Variante -Test -Framework für PHP, mit dem die Codeabdeckung generiert werden kann. Es ist jedoch phpunit-spezifisch und kann für Benutzer, die verschiedene Test-Frameworks verwenden, problematisch sein.
  • Obwohl Variante -Tests wertvoll sind, hat es auch seine Nachteile, die sich hauptsächlich in der Leistung widerspiegeln. Dies ist ein langsamer Prozess, da es auf vielen Faktoren beruht, wie z. B. die Interaktion zwischen Codezeilen, der Anzahl der Tests, der Codeabdeckung und der Leistung von Code und Tests.
  • Mit zunehmender Komplexität der Anwendung steigt die Bedeutung der Aufrechterhaltung der 100% igen Codeabdeckung. Tools wie Humbug sind entscheidend für die Aufrechterhaltung einer solchen Abdeckung, insbesondere im Enterprise -Ökosystem.

Mutationstest

Testing Your Tests? Who Watches the Watchmen? Nein, es ist nicht diese Art von Mutation. Variationstests (oder Variationsanalyse ) ist eine Technik, mit der die Qualität von Softwaretests erstellt und bewertet wird. Es beinhaltet die Änderung des Tests auf sehr kleine Weise. Jede modifizierte Version wird als Variante bezeichnet, und der Test erfasst und lehnt Varianten ab, indem sich die Originalversion unterschiedlich von der Variante verhält. Mutationen sind Fehler im ursprünglichen Code, und die Analyse prüft, ob unsere Tests diese Fehler erkennen. Kurz gesagt, wenn der Test nach der Mutation noch gültig ist, ist er kein guter Test.

Mutationstest mit Humbug

Humbug ist ein Variante -Test -Framework für PHP. Damit Humbug Codeabdeckung erzeugt, müssen wir XDEBUG auf unserem Computer installieren und aktivieren. Wir können es dann als globales Tool installieren.

composer global require 'humbug/humbug'
Nach

, wenn wir

ausführen
humbug
Der Befehl

sollte in der Lage sein, einige Humbug -Installationsinformationen und einen Fehler anzuzeigen, der darauf hinweist, dass wir keine Humbug.json -Datei haben.

Boot -Programm

Bevor wir Humbug konfigurieren und verwenden, benötigen wir ein Projekt, das getestet werden kann. Wir erstellen ein kleines PHP -Taschenrechnerpaket, in dem wir unsere Unit -Tests und Mutationstests ausführen. Lassen Sie uns einen /Rechnerordner erstellen. Lassen Sie uns darin unsere Ordner /SRC- und /Tests erstellen. In unserem /src -Ordner verfügen wir über unseren Anwendungscode. Wir müssen auch Phpunit in unserem Paket verwenden. Der beste Weg ist, Komponist zu verwenden. Installieren wir Phpunit mit dem folgenden Befehl:

composer global require 'humbug/humbug'

Erstellen wir unseren Taschenrechner. Erstellen Sie im Ordner /src eine rechner.php -Datei und fügen Sie Folgendes hinzu:

humbug

Dies ist ein ziemlich einfaches Programm. Ein einfacher Taschenrechner mit grundlegenden arithmetischen, prozentualen und logarithmischen Operationen und Funktionen, die π -Werte zurückgeben. Lassen Sie uns in unserem Ordner in unserem /tests Unit -Tests für unseren Taschenrechner erstellen. Wenn Sie Hilfe bei der Einheitstests in PHP benötigen, lesen Sie dieses Tutorial. Erstellen Sie eine kalculatest.php -Datei und fügen Sie Folgendes hinzu:

composer global require phpunit/phpunit

Dies wird unser ursprünglicher Teststapel sein. Wenn wir den Befehl phpunit ausführen, werden wir sehen, dass er erfolgreich ausgeführt wird und unsere 4 Tests und 4 Behauptungen bestehen. Es ist wichtig, dass alle Tests bestanden werden müssen, da ansonsten Humbug scheitern.

Konfiguration Humbug

Humbug kann manuell durch Erstellen einer Humbug.json.dist -Datei oder automatisch durch Ausführen des folgenden Befehls konfiguriert werden:

<?php
namespace package\Calculator;

class Calculator {

    /**
     * 基本运算
     */
    public function add($a1, $a2) {
        return $a1 + $a2;
    }

    public function subtract($a1, $a2) {
        return $a1 - $a2;
    }

    public function multiply($a1, $a2) {
        return $a1 * $a2;
    }

    public function divide($a1, $a2) {

        if ($a2 === 0) {
            return false;
        }

        return $a1 / $a2;
    }

    /*
     * 百分比
     */

    // 这将返回 a1 的 a2 百分比
    public function percentage($a1, $a2) {
        return ( $a1 / $a2 ) * 100;
    }

    /*
     * π
     */

    // 返回 π 的值
    public function pi() {
        return pi();
    }

    /*
     * 对数
     */

    // 返回以 10 为底的基本对数
    public function log($a) {
        return log10($a);
    }

}

Ausführen dieses Befehls werden uns gebeten, einige Fragen zu beantworten:

  • Welche Quellverzeichnisse möchten Sie einbeziehen? Hier werden wir SRC/verwenden, was unser Quellcodeverzeichnis ist.
  • Welche Verzeichnisse möchten Sie aus dem Quellverzeichnis ausschließen? kann in einigen Fällen nützlich sein, z. B. das externe Verkäuferverzeichnis, das wir nicht testen möchten. Es gilt nicht für unsere aktuelle Situation.
  • Timeout für Einzel -Testsuite (Sekunden). Verwenden wir dies 30 Sekunden lang. Dies mag zu viel sein, aber wir möchten sicherstellen, dass alles genug Zeit hat, um zu laufen.
  • Wo möchten Sie das Textprotokoll speichern? Humblog.txt Als Standardwert werden wir es behalten.
  • Wo möchten Sie die JSON -Protokolle speichern (falls erforderlich)? Der Standardwert ist leer, aber wir werden ihn in Humblogjson.json speichern.
  • generieren "Humblog.json.dist"? Nachdem diese Datei generiert wurde, enthält sie alle gerade bereitgestellten Konfigurationswerte. Wenn wir etwas ändern wollen, können wir es manuell bearbeiten.

Verwenden Sie Humbug

Jetzt, da wir die Anwendung ausgeführt und getestet haben, haben wir Humbug installiert, lassen Sie uns Humbug ausführen und die Ergebnisse überprüfen.

<?php
use package\Calculator\Calculator;

class CalculatorTest extends PHPUnit_Framework_TestCase {

    public function testAdd() {
        $calculator = new Calculator();
        $result = $calculator->add(2, 3);
        $this->assertEquals($result, 5);
    }

    public function testSubtract() {
        $calculator = new Calculator();
        $result = $calculator->subtract(6, 3);
        $this->assertEquals($result, 3);
    }

    public function testMultiply() {
        $calculator = new Calculator();
        $result = $calculator->multiply(6, 3);
        $this->assertEquals($result, 18);
    }

    public function testDivide() {
        $calculator = new Calculator();
        $result = $calculator->divide(6, 3);
        $this->assertEquals($result, 2);
    }

}

Das Ergebnis sollte in der Nähe dessen sein: Testing Your Tests? Who Watches the Watchmen?

Interpretation von Humbug -Ergebnissen

Die Anzahl der erstellten Mutationen ist nur die Anzahl der von Humbug eingeführten kleinen Änderungen, um unsere Tests zu testen. Die getötete Mutation (.) Ist die Mutation, die den Test scheitert. Sei nicht verwirrt, das ist ein positives Ergebnis! Escape -Mutation (M) ist die Mutation, die den Test noch besteht. Dies ist kein positives Ergebnis, wir sollten zu unseren Tests zurückkehren und überprüfen, was fehlt. Unbedeckte Mutationen (en) sind eine Mutation, die in Zeilen auftritt, die nicht durch Unit -Tests abgedeckt werden. Fataler Fehler (E) und Timeout (T) sind die Mutationen, die einen tödlichen Fehler erzeugen und unendliche Schleifen erzeugen.

Was ist mit den Indikatoren?

Variationswertmetriken repräsentieren den Prozentsatz der nachgewiesenen Mutationen. Unser Ziel ist 100%. Variationscodeabdeckung stellt den Prozentsatz der von der Mutation abgedeckten Tests dar. Variationsbewertungsmetriken können Ihnen eine Vorstellung von der Wirksamkeit vorhandener Tests geben. Wenn wir unsere Humbug -Protokolle analysieren, können wir sehen, dass wir 9 aufgedeckte Mutationen sowie einige sehr schlechte Metriken haben. Schauen Sie sich die Datei Humblogjson.json an. Diese Datei wird automatisch wie die Datei Humblog.txt generiert und enthält detailliertere Informationen zu den Ursachen, dem Ort und den Gründen für den Fehler. Wir haben unsere Prozentsatz-, π- und logarithmischen Funktionen nicht getestet. Zusätzlich müssen wir den Fall abdecken, in dem die Zahl durch 0 geteilt wird. Fügen wir weitere Tests hinzu, um die fehlende Situation abzudecken:

composer global require 'humbug/humbug'

Diesmal bedeutet 100%, dass alle Mutationen getötet werden und wir eine vollständige Codeabdeckung haben.

Nachteile

Der größte Nachteil von Mutationstests und Humbug ist die Leistung. Variationstests sind ein langsamer Prozess, da es auf vielen Faktoren beruht, wie z. B. Interaktionen zwischen Codezeilen, Anzahl der Tests, Codeabdeckungsstufe und der Leistung von Code und Tests. Humbug führt auch erste Testläufe, Protokollierung und Codeabdeckung durch, was die Gesamtdauer erhöht. Darüber hinaus ist Humbug phpunit-spezifisch und kann ein Problem für Benutzer sein, die andere Test-Frameworks verwenden. Das heißt, Humbug steht aktiv und wird sich weiter verbessern.

Schlussfolgerung

Humbug kann ein wichtiges Instrument sein, um die Lebensdauer Ihrer Anwendung aufrechtzuerhalten. Mit zunehmender Komplexität der Anwendungen wird auch das Testen der Komplexität - und es wird sehr wichtig, immer 100% Tests beizubehalten, insbesondere beim Umgang mit dem Enterprise -Ökosystem. Der in diesem Tutorial verwendete Code kann hier kloniert werden. Hast du Humbug benutzt? Führen Sie Mutationstests auf andere Weise durch? Bitte sagen Sie uns alle Ihre Gedanken dazu!

Häufig gestellte Fragen zu "Wer wird den Inspektor überwachen?" (FAQ)

Was ist der Ursprung dieses Satzes "Wer wird den Inspektor überwachen?"

"Wer wird den Inspektor überwachen?" Dieser Satz wird häufig in Diskussionen verwendet, die die Integrität und Rechenschaftspflicht der Machthaber in Frage stellen. Es wird im Grunde gefragt: "Wer wird die Wache bewachen?" Wächter".

Wie ist der Satz "Wer wird den Inspektor überwachen?"

Im Kontext von Softwaretests wird der Inspektor überwacht? " Es stellt die Frage, wer oder was die Tests überwacht, um sicherzustellen, dass sie ordnungsgemäß funktionieren und genaue Ergebnisse erzielen können. Dies ist ein wesentlicher Aspekt der Softwareentwicklung, da sie die Qualität und Zuverlässigkeit der entwickelten Software sicherstellt.

Was ist die Wichtigkeit des Testens und Tests in der Softwareentwicklung?

Test -Tests, auch als Testüberprüfung bezeichnet, ist ein wesentlicher Bestandteil der Softwareentwicklung. Es stellt sicher, dass das Testen die Funktionalität und Leistung der Software genau misst. Wenn keine Testüberprüfung vorliegt, besteht das Risiko, dass der Test falsch positive oder verpasste Berichte erzeugt, was zu einer ungenauen Bewertung der Softwarequalität und -zuverlässigkeit führt.

Wie stelle ich sicher, dass meine Tests zuverlässig und genau sind?

Stellen Sie sicher, dass die Zuverlässigkeit und Genauigkeit des Tests mehrere Schritte umfasst. Zunächst sollten Sie Ihre Tests gründlich überprüfen, um sicherzustellen, dass sie korrekt entworfen und implementiert sind. Zweitens sollten Sie Ihre Tests regelmäßig überprüfen, indem Sie die Testergebnisse mit bekannten Ergebnissen vergleichen. Schließlich sollten Sie Ihre Tests kontinuierlich überwachen und aktualisieren, um sicherzustellen, dass sie bei der Entwicklung der Software genau bleiben.

Was sind die gängigen Fallstricke bei Software -Tests?

Einige häufige Fallstricke bei Softwaretests umfassen unzureichende Tests, falsche Tests und nicht das Verständnis des Zwecks des Tests. Andere Fallstricke sind über die automatisierte Tests, ohne ihre Einschränkungen zu verstehen, sowie die regelmäßige Überprüfung und Aktualisierung von Tests.

Wie ist die Beziehung zwischen dem Graphic Novel "Watchman" und Software -Tests?

Der Graphic Novel "Watchman" verwendet den Satz, der den Inspektor überwacht? Im Zusammenhang mit Software -Tests kann dieser Satz verwendet werden, um die Zuverlässigkeit und Genauigkeit des Tests selbst in Frage zu stellen. So wie der Beobachter die Gesellschaft schützen sollte, sollte Tests die Qualität und Zuverlässigkeit von Software schützen. Aber so wie der Beobachter überwacht werden muss, muss der Test überwacht werden.

Welche Rolle spielt ein Softwaretester?

Die Rolle von Softwaretestern besteht darin, die Qualität und Zuverlässigkeit der Software durch Entwerfen und Implementierung von Tests zu gewährleisten. Diese Tests werden verwendet, um Fehler zu identifizieren und zu beheben, die Funktionalität zu überprüfen und die Leistung zu bewerten. Software -Tester müssen diese Tests auch überwachen und aktualisieren, um sicherzustellen, dass sie während des Softwareentwicklungsprozesses genau bleiben.

Wie verbessere ich meine Fähigkeiten zum Softwaretest?

Verbesserung Ihrer Fähigkeiten im Softwaretest erfordert kontinuierliches Lernen und Üben. Sie sollten sich der neuesten Testmethoden und -werkzeuge bewusst sein und das Entwerfen und Implementieren von Tests regelmäßig üben. Sie sollten auch Feedback zu Ihren Tests einholen und gerne aus Ihren Fehlern lernen.

Was sind einige gute Ressourcen, um mehr über Softwaretests zu erfahren?

Es gibt viele Ressourcen, um mehr über Softwaretests zu erfahren. Dazu gehören Online -Kurse, Bücher, Blogs und Foren. Einige empfohlene Bücher umfassen "The Art of Software Testing" von Glenford J. Myers ", Softwaretests: The Craftsman -Methode" von Paul C. Jorgensen und Seim Karnar und Jack Falke "Testcomputersoftware" von Huang Q. Ruan.

Was ist die Zukunft des Softwaretests?

Die Zukunft des Softwaretests kann stark von technologischen Fortschritten beeinflusst werden. Dies schließt den zunehmenden Einsatz von Automatisierung und künstliche Intelligenz bei der Prüfung sowie die Entwicklung neuer Testmethoden zur Anpassung an aufkommende Technologien wie virtuelle Realität und Blockchain ein. Die Grundprinzipien des Softwaretests - die Qualität und Zuverlässigkeit der Software - werden jedoch gleich bleiben.

Das obige ist der detaillierte Inhalt vonIhre Tests testen? Wer beobachtet die Wächter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

PHP -Protokollierung: Best Practices für die PHP -ProtokollanalysePHP -Protokollierung: Best Practices für die PHP -ProtokollanalyseMar 10, 2025 pm 02:32 PM

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Erklären Sie das Konzept der späten statischen Bindung in PHP.Erklären Sie das Konzept der späten statischen Bindung in PHP.Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),