현재 위치: > 최신 기사 목록> hash_update_stream ()의 정확성을 테스트하는 방법? 자동 스크립트의 예

hash_update_stream ()의 정확성을 테스트하는 방법? 자동 스크립트의 예

M66 2025-05-27

PHP에서 Hash_update_stream () 함수는 특히 큰 데이터 스트림에 해싱이 필요할 때 해시 값의 단계별 업데이트에 매우 유용한 기능입니다. 다른 시나리오에서 기능이 안정적이고 정확하게 작동하도록하려면 효과적인 테스트를 수행하는 것이 중요합니다. 이 기사에서는 Hash_update_stream () 함수의 정확성을 효과적으로 테스트하는 방법을 소개하고 자동 테스트 스크립트의 예가 제공됩니다.

hash_update_stream () 란 무엇입니까?

hash_update_stream () 함수는 해시 값을 업데이트하는 데 사용되는 php의 함수이며 hash_init ()hash_final () 과 함께 사용됩니다. 이 기능을 사용하면 데이터 스트림 (예 : 파일 또는 기타 스트림 리소스)에서 단계별 해시 계산을 수행 할 수 있습니다.

문법:

 hash_update_stream(resource $context, resource $stream, int $length = 8192): bool
  • $ 컨텍스트 : hash_init () 함수를 통해 생성 된 해시 컨텍스트.

  • $ stream : 파일, 메모리 스트림 등이 될 수있는 효과적인 스트림 리소스.

  • $ 길이 : 읽기 스트림 당 최대 바이트 수는 기본값은 8192 바이트입니다.

hash_update_stream ()을 테스트합니까?

Hash_update_stream ()을 테스트하는 주요 목적은 다양한 상황에서 정확성과 성능을 보장하는 것입니다. 여기에는 다음이 포함됩니다.

  1. 함수가 다양한 크기의 입력 스트림을 처리 할 수 ​​있는지 확인하십시오.

  2. 메모리 사용 및 성능에서 잘 수행해야합니다.

  3. 해시 값이 다른 스트림 내용 및 조건에서 올바르게 계산되어 있는지 확인하십시오.

hash_update_stream () 의 전략 테스트

hash_update_stream ()을 테스트하기 위해 다음 전략을 채택 할 수 있습니다.

  1. 기본 테스트 : 함수가 해시 값을 올바르게 업데이트 할 수 있는지 테스트합니다.

  2. 대형 파일 테스트 : 대형 파일 또는 대규모 데이터 스트림의 처리 기능을 테스트하십시오.

  3. 경계 테스트 : 예를 들어, 빈 스트림, 매우 작은 스트림 또는 예상 크기를 초과하는 데이터 스트림을 테스트합니다.

  4. 동시 테스트 : 필요한 경우 동시 상황에서 기능의 안정성을 테스트하십시오.

자동 테스트 스크립트의 예

아래는 Hash_update_stream () 함수의 기본 기능 및 성능을 확인하는 데 사용되는 간단한 PHP 자동 테스트 스크립트 예제입니다.

 <?php

// 해싱 알고리즘을 정의하십시오
$algorithm = 'sha256';

// 테스트 파일 경로(테스트 파일이 있다고 가정하십시오)
$filePath = '/path/to/testfile.txt';

// 해시 컨텍스트를 초기화합니다
$context = hash_init($algorithm);

// 파일 스트림을 엽니 다
$stream = fopen($filePath, 'rb');
if (!$stream) {
    die('파일을 열 수 없습니다');
}

// 해시 값을 점차 업데이트하십시오
while (!feof($stream)) {
    hash_update_stream($context, $stream, 8192);
}

// 최종 해시 값을 얻으십시오
$hash = hash_final($context);

// 출력 결과
echo "파일의 해시 값은입니다: " . $hash . PHP_EOL;

// 스트림을 닫으십시오
fclose($stream);

// 자동 테스트 예제 - 경계 조건
function testEmptyStream($algorithm) {
    $context = hash_init($algorithm);
    $stream = fopen('php://memory', 'rb'); // 빈 메모리 스트림
    hash_update_stream($context, $stream);
    $hash = hash_final($context);
    echo "빈 스트림의 해시 값: " . $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 . PHP_EOL;
    echo "처리 시간: " . ($endTime - $startTime) . " 두번째" . PHP_EOL;

    fclose($stream);
}

// 테스트를 실행하십시오
testEmptyStream($algorithm);
testLargeStream($algorithm, $filePath);
?>

코드 설명

  1. 기본 테스트 :

    • 먼저 해시 컨텍스트 $ 컨텍스트를 초기화 한 다음 파일 스트림 $ stream을 열어 해시 값을 점차 업데이트합니다. 파일 스트림에서 8192 바이트를 읽고 매번 해시를 업데이트하십시오. 마지막으로 Hash_final ()은 최종 해시 값을 반환하는 데 사용됩니다.

  2. 자동 테스트 - 경계 조건 :

    • treademptystream () 함수는 빈 스트림의 해시 값을 테스트합니다. php : // 메모리를 통해 빈 메모리 스트림을 만들고 해시를합니다.

  3. 자동 테스트 - 대규모 파일 처리 :

    • TestLarGestream () 함수는 큰 파일의 해시 계산을 테스트합니다. 큰 파일을 읽고 해시를 단계별로 계산하여 기능의 성능을 평가하여 처리 시간을 계산합니다.

테스트 결과 분석

이 테스트를 수행 할 때는 다음 측면에주의를 기울여야합니다.

  1. 해시 값의 일관성 : 동일한 입력 스트림의 경우 Hash_update_stream ()은 항상 동일한 해시 값을 반환해야합니다.

  2. 성능 : 큰 파일 또는 데이터 스트림의 경우 기능은 메모리 오버플로 또는 장기 차단을 피하기 위해 효율적으로 처리 할 수 ​​있어야합니다.

  3. 경계 조건 : 빈 스트림, 매우 작은 데이터 스트림 등의 경우 함수가 올바르게 처리하고 유효한 해시 값을 반환 할 수 있어야합니다 (예 : 빈 스트림이 기본 해시 값을 반환).

결론적으로

위의 테스트를 통해 hash_update_stream () 함수의 정확성을 확인하여 실제 사용이 안정적이고 효율적인지 확인할 수 있습니다. 자동화 된 테스트 스크립트를 사용하면 다양한 사용 시나리오를 쉽게 시뮬레이션하고보다 포괄적 인 테스트를 수행 할 수 있습니다.

이러한 테스트가 정기적으로, 특히 PHP 버전을 업데이트하거나 코드를 변경할 때 정기적으로 수행되도록하면 잠재적 인 기능 문제 또는 성능 병목 현상을 신속하게 포착 할 수 있습니다.