Heim >Backend-Entwicklung >PHP-Tutorial >Ihre Tests testen? Wer beobachtet die Wächter?

Ihre Tests testen? Wer beobachtet die Wächter?

Christopher Nolan
Christopher NolanOriginal
2025-02-14 09:41:10331Durchsuche

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.

<code class="language-bash">composer global require 'humbug/humbug'</code>
Nach

, wenn wir

ausführen
<code class="language-bash">humbug</code>
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:

<code class="language-bash">composer global require 'humbug/humbug'</code>

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

<code class="language-bash">humbug</code>

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:

<code class="language-bash">composer global require phpunit/phpunit</code>

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:

<code class="language-php"><?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);
    }

}</code>

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.

<code class="language-php"><?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);
    }

}</code>

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:

<code class="language-bash">composer global require 'humbug/humbug'</code>

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