Pest Stressless Plugin
Stress testing adalah cara menguji stabilitas dan keandalan aplikasi dengan memberikan beban berat atau kondisi ekstrem. Contohnya untuk memastikan aplikasi bisa handle banyak request atau data dalam jumlah besar.
Pest menggunakan k6 (tool load testing yang powerful) di belakang layar.
composer require pestphp/pest-plugin-stressless --dev
Basic usage:
./vendor/bin/pest stress example.com
Custom duration (default 5 detik):
./vendor/bin/pest stress example.com --duration=10
Custom concurrency (default 1 request):
./vendor/bin/pest stress example.com --concurrency=5
HTTP Methods:
# GET (default)
./vendor/bin/pest stress example.com/articles --get
# POST dengan data
./vendor/bin/pest stress example.com/articles --post='{"name": "John"}'
# PUT, PATCH, DELETE
./vendor/bin/pest stress example.com/articles/1 --put='{"name": "John"}'
./vendor/bin/pest stress example.com/articles/1 --patch='{"name": "John"}'
./vendor/bin/pest stress example.com/articles/1 --delete
Basic test:
<?php
use function Pest\Stressless\stress;
it('has fast response time', function () {
$result = stress('example.com');
expect($result->requests()->duration()->med())->toBeLessThan(100); // < 100ms
});
Custom configuration:
// Custom duration dan concurrency
$result = stress('example.com')
->concurrently(requests: 5)
->for(10)->seconds();
// HTTP methods
$result = stress('example.com/api')->get();
$result = stress('example.com/api')->post(['name' => 'John']);
// Dengan headers
$result = stress('example.com/api')->headers([
'Authorization' => 'Bearer token123'
])->get();
$result->requests()->duration()->med(); // median $result->requests()->duration()->min(); // minimum $result->requests()->duration()->max(); // maksimum $result->requests()->duration()->p90(); // percentile 90 $result->requests()->duration()->p95(); // percentile 95
$result->requests()->count(); // jumlah request $result->requests()->rate(); // request per detik
$result->requests()->failed()->count(); // jumlah request gagal $result->requests()->failed()->rate(); // request gagal per detik
$result->requests()->ttfb()->duration()->med();
$result->requests()->dnsLookup()->duration()->med();
// Download $result->requests()->download()->duration()->med(); $result->requests()->download()->data()->count(); // bytes $result->requests()->download()->data()->rate(); // bytes per second // Upload $result->requests()->upload()->duration()->med(); $result->requests()->upload()->data()->count(); $result->requests()->upload()->data()->rate();
$result->testRun()->concurrency(); // jumlah concurrent requests $result->testRun()->duration(); // durasi test
Pest Stressless memberikan cara mudah untuk:
Perfect untuk memastikan aplikasi tetap stabil saat traffic tinggi!