PHP에서 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 ()을 테스트하기 위해 다음 전략을 채택 할 수 있습니다.
기본 테스트 : 함수가 해시 값을 올바르게 업데이트 할 수 있는지 테스트합니다.
대형 파일 테스트 : 대형 파일 또는 대규모 데이터 스트림의 처리 기능을 테스트하십시오.
경계 테스트 : 예를 들어, 빈 스트림, 매우 작은 스트림 또는 예상 크기를 초과하는 데이터 스트림을 테스트합니다.
동시 테스트 : 필요한 경우 동시 상황에서 기능의 안정성을 테스트하십시오.
아래는 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);
?>
기본 테스트 :
먼저 해시 컨텍스트 $ 컨텍스트를 초기화 한 다음 파일 스트림 $ stream을 열어 해시 값을 점차 업데이트합니다. 파일 스트림에서 8192 바이트를 읽고 매번 해시를 업데이트하십시오. 마지막으로 Hash_final ()은 최종 해시 값을 반환하는 데 사용됩니다.
자동 테스트 - 경계 조건 :
treademptystream () 함수는 빈 스트림의 해시 값을 테스트합니다. php : // 메모리를 통해 빈 메모리 스트림을 만들고 해시를합니다.
자동 테스트 - 대규모 파일 처리 :
TestLarGestream () 함수는 큰 파일의 해시 계산을 테스트합니다. 큰 파일을 읽고 해시를 단계별로 계산하여 기능의 성능을 평가하여 처리 시간을 계산합니다.
이 테스트를 수행 할 때는 다음 측면에주의를 기울여야합니다.
해시 값의 일관성 : 동일한 입력 스트림의 경우 Hash_update_stream ()은 항상 동일한 해시 값을 반환해야합니다.
성능 : 큰 파일 또는 데이터 스트림의 경우 기능은 메모리 오버플로 또는 장기 차단을 피하기 위해 효율적으로 처리 할 수 있어야합니다.
경계 조건 : 빈 스트림, 매우 작은 데이터 스트림 등의 경우 함수가 올바르게 처리하고 유효한 해시 값을 반환 할 수 있어야합니다 (예 : 빈 스트림이 기본 해시 값을 반환).
위의 테스트를 통해 hash_update_stream () 함수의 정확성을 확인하여 실제 사용이 안정적이고 효율적인지 확인할 수 있습니다. 자동화 된 테스트 스크립트를 사용하면 다양한 사용 시나리오를 쉽게 시뮬레이션하고보다 포괄적 인 테스트를 수행 할 수 있습니다.
이러한 테스트가 정기적으로, 특히 PHP 버전을 업데이트하거나 코드를 변경할 때 정기적으로 수행되도록하면 잠재적 인 기능 문제 또는 성능 병목 현상을 신속하게 포착 할 수 있습니다.