SpeedTrap melaporkan pengujian PHPUnit yang berjalan lambat langsung di konsol.
Banyak faktor yang mempengaruhi waktu pelaksanaan tes. Pengujian yang tidak diisolasi dengan baik dari latensi variabel (database, jaringan, dll.) dan bahkan beban dasar pada mesin pengujian akan menyebabkan waktu eksekusi pengujian berfluktuasi.
SpeedTrap membantu mengidentifikasi pengujian yang lambat namun tidak dapat menjelaskan mengapa pengujian tersebut lambat. Pertimbangkan untuk menggunakan Blackfire.io untuk membuat profil rangkaian pengujian guna mengidentifikasi kode lambat secara spesifik.
SpeedTrap diinstal menggunakan Komposer. Tambahkan itu sebagai ketergantungan require-dev
:
composer require --dev johnkary/phpunit-speedtrap
Aktifkan dengan semua default dengan menambahkan kode berikut ke file phpunit.xml
proyek Anda:
<phpunit bootstrap="vendor/autoload.php"> ... <ekstensi> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </ekstensi> </phpunit>
Sekarang jalankan rangkaian pengujian. Jika satu atau lebih eksekusi pengujian melebihi ambang batas kelambatan (500 md secara default), SpeedTrap akan melaporkan pengujian tersebut di konsol setelah semua pengujian selesai.
SpeedTrap juga mendukung parameter berikut:
slowThreshold - Jumlah milidetik saat pengujian dianggap "lambat" (Default: 500 md)
reportLength - Jumlah pengujian lambat yang disertakan dalam laporan (Default: 10 pengujian)
Setiap parameter diatur di phpunit.xml
:
<phpunit bootstrap="vendor/autoload.php"><!-- ... konfigurasi suite lainnya di sini ... --><extensions> <kelas ekstensi="JohnKaryPHPUnitExtensionSpeedTrap"> <argumen> <susunan> <element key="slowThreshold"> <bilangan bulat>500</bilangan bulat> </elemen> <elemen kunci="reportLength"> <bilangan bulat>10</bilangan bulat> </elemen> </susunan> </argumen> </ekstensi> </ekstensi> </phpunit>
Beberapa proyek memiliki beberapa pengujian rumit yang memerlukan waktu lama untuk dijalankan. Dimungkinkan untuk menetapkan ambang batas kelambatan yang berbeda untuk masing-masing kasus uji.
Anotasi @slowThreshold
dapat menetapkan ambang batas kelambatan khusus untuk setiap kasus pengujian. Angka ini mungkin lebih tinggi atau lebih rendah dari ambang batas default dan digunakan sebagai pengganti ambang batas default untuk pengujian spesifik tersebut.
kelas SomeTestCase memperluas PHPUnitFrameworkTestCase {/** * @slowThreshold 5000 */fungsi publik testLongRunningProcess() {// Kode yang memerlukan waktu eksekusi lebih lama} }
Menyetel @slowThreshold 0
tidak akan pernah melaporkan pengujian tersebut sebagai lambat.
Profil SpeedTrap untuk pengujian lambat saat diaktifkan di phpunit.xml. Namun menggunakan variabel lingkungan bernama PHPUNIT_SPEEDTRAP
dapat mengaktifkan atau menonaktifkan ekstensi:
$ PHPUNIT_SPEEDTRAP="disabled" ./vendor/bin/phpunit
Travis CI populer untuk menjalankan pengujian di cloud setelah memasukkan kode baru ke repositori.
Langkah 1) Aktifkan SpeedTrap di phpunit.xml, tetapi setel PHPUNIT_SPEEDTRAP="disabled"
untuk menonaktifkan pembuatan profil saat menjalankan pengujian.
<phpunit bootstrap="vendor/autoload.php"> ... <php> <env name="PHPUNIT_SPEEDTRAP" value="dinonaktifkan" /> </php> <ekstensi> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </ekstensi> </phpunit>
Langkah 2) Konfigurasikan .travis.yml
dengan PHPUNIT_SPEEDTRAP="enabled"
ke profil untuk pengujian lambat saat dijalankan di Travis CI:
bahasa: phpphp: - 7.3env: - PHPUNIT_SPEEDTRAP="diaktifkan"
Langkah 3) Lihat keluaran build Travis CI dan baca laporan kelambatan yang dicetak di konsol.
Dokumentasi Travis CI - Variabel Lingkungan
Langkah 1) Aktifkan SpeedTrap di phpunit.xml. Laporan kelambatan akan ditampilkan selama semua eksekusi rangkaian pengujian.
<phpunit bootstrap="vendor/autoload.php"> ... <ekstensi> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </ekstensi> </phpunit>
Langkah 2) Konfigurasikan .travis.yml
dengan PHPUNIT_SPEEDTRAP="disabled"
untuk mematikan pembuatan profil saat dijalankan di Travis CI:
bahasa: phpphp: - 7.3env: - PHPUNIT_SPEEDTRAP="dinonaktifkan"
Langkah 3) Lihat keluaran build Travis CI dan konfirmasikan bahwa laporan kelambatan tidak dicetak di konsol.
Berguna ketika Anda hanya ingin membuat profil pengujian lambat sesekali.
Langkah 1) Siapkan phpunit.xml untuk mengaktifkan SpeedTrap, tetapi nonaktifkan profil kelambatan dengan mengatur PHPUNIT_SPEEDTRAP="disabled"
seperti ini:
<phpunit bootstrap="vendor/autoload.php"> ... <php> <env name="PHPUNIT_SPEEDTRAP" value="dinonaktifkan" /> </php> <ekstensi> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </ekstensi> </phpunit>
Langkah 2) Saat menjalankan phpunit
dari baris perintah, aktifkan profil kelambatan hanya untuk proses ini dengan meneruskan variabel lingkungan PHPUNIT_SPEEDTRAP="enabled"
seperti ini:
$ PHPUNIT_SPEEDTRAP=diaktifkan ./vendor/bin/phpunit
Symfony Framework hadir dengan paket symfony/phpunit-bridge yang menginstal versi PHPUnitnya sendiri dan mengabaikan apa yang didefinisikan dalam file composer.json atau composer.lock proyek Anda. Lihat versi PHPUnit yang diinstal dengan perintah ls vendor/bin/.phpunit/
symfony/phpunit-bridge memungkinkan variabel lingkungan SYMFONY_PHPUNIT_REQUIRE
untuk menentukan dependensi tambahan saat menginstal phpunit.
Cara termudah untuk mengatur variabel lingkungan untuk skrip simple-phpunit
adalah melalui phpunit.xml.dist:
<phpunit bootstrap="vendor/autoload.php"> <php> <env name="SYMFONY_PHPUNIT_REQUIRE" value="johnkary/phpunit-speedtrap:^4"/> <env nama="SYMFONY_PHPUNIT_VERSION" nilai="9"/> </php> <ekstensi> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </ekstensi> </phpunit>
Menggunakan contoh di atas, menjalankan vendor/bin/simple-phpunit
sekarang akan menginstal PHPUnit 9 terbaru dan memerlukan phpunit-speedtrap v4.
Ikuti langkah-langkah berikut untuk menambahkan fitur baru atau mengembangkan fork Anda sendiri:
# Get source code (or replace with your fork URL) $ git checkout https://github.com/johnkary/phpunit-speedtrap.git phpunit-speedtrap # Install dev dependencies $ cd phpunit-speedtrap $ composer install # Run test suite to verify code runs as expected $ vendor/bin/phpunit
SpeedTrap terinspirasi oleh opsi --profile
RSpec yang menampilkan umpan balik tentang pengujian lambat.
phpunit-speedtrap tersedia di bawah Lisensi MIT.