Aktueller Standort: Startseite> Neueste Artikel> Wie testet ich die Richtigkeit von Hash_Update_Stream ()? Beispiel für automatisierte Skripte

Wie testet ich die Richtigkeit von Hash_Update_Stream ()? Beispiel für automatisierte Skripte

M66 2025-05-27

In PHP ist die Funktion von Hash_Update_stream () eine sehr nützliche Funktion für die schrittweise Aktualisierung von Hash-Werten, insbesondere wenn Hashing für große Datenströme erforderlich ist. Um sicherzustellen, dass die Funktion in verschiedenen Szenarien stabil und genau funktionieren kann, ist es entscheidend, effektive Tests durchzuführen. In diesem Artikel wird vorgestellt, wie die Richtigkeit der Funktion von Hash_Update_Stream () effektiv getestet wird, und verfügt über ein Beispiel für ein automatisiertes Testskript.

Was ist Hash_Update_Stream () ?

Die Funktion von Hash_Update_Stream () ist eine Funktion in PHP, die zum Aktualisieren von Hash -Werten verwendet wird, und wird mit Hash_init () und Hash_Final () verwendet. Diese Funktion ermöglicht es uns, schrittweise Hashing-Berechnungen in einem Datenstrom (z. B. eine Datei oder andere Stream-Ressource) durchzuführen.

Grammatik:

 hash_update_stream(resource $context, resource $stream, int $length = 8192): bool
  • $ context : Hash -Kontext, erstellt über Hash_init () Funktion.

  • $ stream : Eine effektive Stream -Ressource, die eine Datei, einen Speicherstrom usw. sein kann.

  • $ Länge : Die maximale Anzahl von Bytes pro Lesestream beträgt 8192 Bytes.

Warum Hash_update_stream () testen?

Der Hauptzweck beim Testen von Hash_Update_Stream () besteht darin, seine Richtigkeit und Leistung in verschiedenen Situationen sicherzustellen. Dies beinhaltet:

  1. Stellen Sie sicher, dass die Funktion Eingangsströme verschiedener Größen verarbeiten kann.

  2. Stellen Sie sicher, dass es in der Speicherverwendung und -leistung gut funktioniert.

  3. Stellen Sie sicher, dass der Hash -Wert unter verschiedenen Stream -Inhalten und -bedingungen korrekt berechnet wird.

Testen Sie die Strategie von Hash_Update_Stream ()

Um Hash_Update_Stream () zu testen, können wir die folgende Strategie anwenden:

  1. Grundlegende Tests : Testen Sie, ob die Funktion den Hash -Wert korrekt aktualisieren kann.

  2. Große Dateiprüfung : Testen Sie die Verarbeitungsfunktionen großer Dateien oder großer Datenströme.

  3. Grenztests : Testen Sie beispielsweise einen leeren Strom, einen sehr kleinen Strom oder einen Datenstrom, der die erwartete Größe überschreitet.

  4. Gleichzeitige Tests : Testen Sie gegebenenfalls die Stabilität der Funktion in gleichzeitigen Situationen.

Beispiel für automatisierte Testskripte

Im Folgenden finden Sie ein einfaches Beispiel für automatisiertes Testskript von PHP, mit dem die grundlegende Funktionalität und Leistung der Funktion von Hash_Update_Stream () überprüft wird.

 <?php

// Definieren Sie einen Hashing -Algorithmus
$algorithm = 'sha256';

// Testdateipfad(Angenommen, es gibt eine Testdatei)
$filePath = '/path/to/testfile.txt';

// Initialisieren Sie den Hash -Kontext
$context = hash_init($algorithm);

// Öffnen Sie den Dateistrom
$stream = fopen($filePath, 'rb');
if (!$stream) {
    die('Die Datei kann nicht geöffnet werden');
}

// Aktualisieren Sie allmählich den Hash -Wert
while (!feof($stream)) {
    hash_update_stream($context, $stream, 8192);
}

// Holen Sie sich den endgültigen Hash -Wert
$hash = hash_final($context);

// Ausgangsergebnis
echo "Der Hash -Wert der Datei ist: " . $hash . PHP_EOL;

// Schließen Sie den Strom
fclose($stream);

// Automatisierte Testbeispiele - Randbedingungen
function testEmptyStream($algorithm) {
    $context = hash_init($algorithm);
    $stream = fopen('php://memory', 'rb'); // Leerer Speicherstrom
    hash_update_stream($context, $stream);
    $hash = hash_final($context);
    echo "Der Hash -Wert des leeren Streams: " . $hash . PHP_EOL;
}

function testLargeStream($algorithm, $filePath) {
    $context = hash_init($algorithm);
    $stream = fopen($filePath, 'rb');
    $startTime = microtime(true);
    
    while (!feof($stream)) {
        hash_update_stream($context, $stream, 8192);
    }

    $hash = hash_final($context);
    $endTime = microtime(true);
    echo "Hash -Wert großer Dateien: " . $hash . PHP_EOL;
    echo "Verarbeitungszeit: " . ($endTime - $startTime) . " Zweite" . PHP_EOL;

    fclose($stream);
}

// Führen Sie den Test durch
testEmptyStream($algorithm);
testLargeStream($algorithm, $filePath);
?>

Code Erläuterung

  1. Basistest :

    • Wir initialisieren zunächst einen Hash -Kontext $ context und aktualisieren dann den Hash -Wert nach und nach, indem wir einen Dateistrom $ Stream öffnen. Lesen Sie 8192 Bytes aus dem Dateistrom und aktualisieren Sie den Hash jedes Mal. Schließlich wird Hash_final () verwendet, um den endgültigen Hash -Wert zurückzugeben.

  2. Automatisierte Tests - Randbedingungen :

    • Der Funktion testEmptystream () testet den Hash -Wert eines leeren Stroms. Erstellen Sie einen leeren Speicherstrom über Php: // Speicher und Hash.

  3. Automatisierte Tests - große Dateiverarbeitung :

    • Die Funktion testlargestream () testet die Hash -Berechnung einer großen Datei. Es berechnet die Verarbeitungszeit durch das Lesen einer großen Datei und die Berechnung des Hash -Hash, um die Leistung der Funktion zu bewerten.

Analyse der Ergebnisse des Tests

Bei der Durchführung dieser Tests sollten Sie auf die folgenden Aspekte achten:

  1. Konsistenz der Hash -Werte : Für denselben Eingabestream sollte Hash_Update_Stream () immer denselben Hash -Wert zurückgeben.

  2. Leistung : Bei großen Dateien oder Datenströmen sollten Funktionen in der Lage sein, effizient zu verarbeiten, um den Speicherüberlauf oder eine langfristige Blockierung zu vermeiden.

  3. Randbedingungen : Für leere Streams, extrem kleine Datenströme usw. sollte die Funktion in der Lage sein, sie korrekt zu verarbeiten und einen gültigen Hash -Wert zurückzugeben (z. B. leere Streams geben einen Standard -Hash -Wert zurück).

abschließend

Durch die obigen Tests können Sie die Richtigkeit der Funktion von Hash_Update_Stream () überprüfen, um sicherzustellen, dass sie stabil und effizient in der tatsächlichen Verwendung ist. Mit automatisierten Testskripten können wir auf einfache Weise unterschiedliche Nutzungsszenarien simulieren und umfassendere Tests durchführen.

Stellen Sie sicher, dass diese Tests regelmäßig durchgeführt werden, insbesondere bei der Aktualisierung von PHP -Versionen oder beim Ändern des Codes können Sie schnell potenzielle Funktionen oder Leistungs Engpässe erfassen.