10 Alat Pengujian PHP untuk Plugin WordPress
Diterbitkan: 2022-08-05Tidak ada perangkat lunak yang bebas dari bug. Ini adalah aksioma yang berlaku untuk setiap bahasa pemrograman dan setiap aplikasi.
Ketika bug tersebut digunakan dalam situs web Anda dalam produksi, Anda dapat menderita konsekuensi buruk dari berbagai tingkat keparahan. Ini adalah beberapa contohnya, mulai dari yang mengganggu hingga yang merugikan secara ekonomi:
- Ringan: Pengguna tidak dapat mengklik tautan yang rusak.
- Serius: Tombol "Kirim" formulir kontak tidak berfungsi, yang ditemukan pengguna hanya setelah menulis pesan mereka.
- Parah: Gerbang pembayaran tidak dikonfigurasi dengan benar, membuat pengguna tidak dapat membeli produk di toko e-niaga Anda, sehingga meninggalkan situs.
Tidak ada satu alat pun yang cukup untuk menangani semua aspek pengujian aplikasi dari semua kemungkinan sudut yang berbeda. Memang, selain menemukan bug, penting untuk melakukan tes tambahan untuk memvalidasi fungsi lain dari aplikasi, seperti:
- Aksesibilitas dan kegunaan
- Kinerja yang dapat diterima
- Penanganan lalu lintas dan beban
Pada artikel ini, kami akan meninjau 10 alat yang dibuat oleh komunitas open source yang dapat membantu menyusun tumpukan untuk menguji kode PHP di plugin WordPress. Beberapa alat ini dirancang khusus untuk menguji kode PHP; yang lain dimaksudkan untuk menguji kode WordPress; dan beberapa alat lain dibuat untuk menangani beberapa fungsi umum yang berguna untuk pengujian.
1. Dev Kinsta
DevKinsta adalah suite pengembangan lokal untuk situs WordPress. Hanya dengan memberikan beberapa detail dasar, instance lokal dari situs WordPress langsung diinstal, dan disertakan dengan beberapa alat pengembangan yang berguna seperti kotak masuk email, manajer basis data, dan pencatatan untuk pemecahan masalah yang lebih mudah.
DevKinsta biasanya digunakan oleh pengembang dan desainer saat membuat tema dan plugin WordPress mereka. Tetapi juga dapat digunakan sebagai server web lokal untuk menjalankan tes integrasi dan fungsionalitas. Ini dilakukan bersama-sama dengan alat HTTP yang membantu Anda memverifikasi konten respons dan tajuk sudah benar.
Fitur utama DevKinsta adalah:
- Mudah untuk memutar lingkungan WordPress baru dan menghapusnya setelah tidak diperlukan lagi
- Mengizinkan pengujian terhadap versi PHP dan WordPress apa pun yang didukung, dan kombinasi apa pun darinya
- Terintegrasi dengan mulus dengan MyKinsta di mana pengguna dapat membuat cadangan eksternal dari situs dan data mereka
2. PHPUnit
PHPUnit adalah kerangka kerja pengujian berorientasi programmer untuk PHP. Ini adalah kerangka kerja paling populer untuk menjalankan pengujian unit dalam kode PHP, dengan tujuan memvalidasi unit individu dari kode sumber.
Tes PHPUnit memungkinkan pengembang untuk menemukan masalah sedini mungkin dalam siklus pengembangan, membantu memastikan bahwa tidak ada regresi kode yang diperkenalkan (yaitu perubahan pada beberapa bagian kode tidak menyebabkan masalah di tempat lain).
Fitur utama PHPUnit adalah:
- Pengujian fitur baru
- Validasi kode yang baru di-refactored
- Dapat sepenuhnya otomatis dan dieksekusi dalam proses Integrasi Berkelanjutan pilihan
- Debug
- Dokumentasi otomatis tentang penggunaan yang diharapkan melalui permintaan fungsionalitas dan batasan
- Mengizinkan pendekatan Pengembangan Berbasis Tes (TDD) di mana pengembang pertama kali membuat tes pertama, lalu fungsionalitas
3. Otak Monyet
Brain Monkey adalah utilitas pengujian untuk PHP dan WordPress. Ini menyediakan alat kerangka-agnostik yang memungkinkan Anda untuk mendefinisikan kembali metode PHP dan menguji perilaku aplikasi PHP apa pun. Ini juga menyediakan alat khusus untuk menguji kode WordPress.
Fitur utama Brain Monkey adalah:
- Mengizinkan pengujian unit untuk berinteraksi dengan perpustakaan eksternal yang tidak dimuat
- Mengizinkan pemanggilan fungsi WordPress tanpa perlu memuat lingkungan WordPress
- Dapat menegaskan bahwa fungsi WordPress (seperti
add_filter
ataudo_action
) memanggil fungsionalitas seperti yang diharapkan
4. Pemalsu Otak
Brain Faker menggunakan Faker (pustaka PHP populer untuk menghasilkan data palsu) dan Brain Monkey untuk menyediakan pembuatan objek WordPress palsu dan fungsi terkait yang mudah untuk Anda uji, termasuk:
-
WP_Post
, dan tiruan fungsi terkait sepertiget_post
danget_post_field
-
WP_User
, dan tiruan fungsi terkait sepertiget_userdata
,get_user_by
,user_can
, dan banyak lagi -
WP_Term
, dan tiruan fungsi terkait sepertiget_term
danget_term_by
- Contoh
WP_Comment
-
WP_Site
, dan tiruan fungsi terkait sepertiget_site
-
WP_Post_Type
, dan tiruan fungsi terkait sepertiget_post_type_object
danpost_type_exists
-
WP_Taxonomy
, dan tiruan fungsi terkait sepertiget_taxonomy
dantaxonomy_exists
- Contoh
WP_Error
Fitur utama Brain Faker adalah:
- Menyuntikkan data WordPress palsu tetapi realistis ke dalam unit test — mengakses tanggal modifikasi posting palsu akan berperilaku sebagai tanggal (misalnya
2022-04-17T13:06:58+00:00
), nama pengguna akan sesuai (misalnya"John Smith"
), contoh posting palsu dibuat oleh contoh pengguna palsu, dan seterusnya - Data palsu dapat disediakan sebelumnya atau dibuat secara acak
- Extensible — pengembang dapat mengejek kelas dan fungsi dari plugin WordPress mereka sendiri
5. Ejekan
Mockery adalah kerangka kerja objek tiruan PHP sederhana namun fleksibel yang dimaksudkan untuk digunakan bersama dengan PHPUnit, PHPSpec, atau kerangka kerja pengujian unit lainnya. Ini menawarkan kerangka uji ganda yang mampu mendefinisikan semua kemungkinan operasi objek dan interaksi menggunakan Domain Specific Language (DSL) yang dapat dibaca manusia.
Fitur utama Mockery adalah:
- Memungkinkan pembuatan objek tiruan dan rintisan yang fleksibel (yang memberikan jawaban yang telah ditentukan sebelumnya untuk panggilan tertentu yang dilakukan selama pengujian)
- Meningkatkan kemampuan isolasi pengujian PHPUnit
- API fleksibel untuk mengekspresikan ekspektasi yang diolok-olok, meniru sebanyak mungkin deskripsi bahasa alami (misalnya
$mock->shouldReceive('myMethod')->once()->andReturn('Hello world!');
) - Pengujian unit menggunakan objek tiruan dalam memori untuk menghindari kebutuhan untuk mengakses sistem yang lebih lambat (seperti database, sistem file, atau layanan eksternal)
- Dapat mengejek perilaku deterministik dan non-deterministik
6. Alat Ekspor Asli WordPress
Alat ekspor asli WordPress mengunduh data WordPress situs ke perangkat Anda sebagai file XML, termasuk posting, halaman, jenis posting khusus, komentar, bidang khusus, kategori, tag, taksonomi khusus, pengguna, dan media. File XML memiliki format khusus (disebut WordPress eXtended RSS atau file WXR) yang dapat diimpor ke situs WordPress mana pun.
Alat ini tidak dirancang khusus untuk pengujian. Namun, kegunaannya berasal dari kemampuan membuat snapshot dari database WordPress yang berisi kumpulan data yang sesuai, yang kemudian dapat digunakan untuk pengujian. Ini berarti situs WordPress dalam produksi, yang berisi data nyata, dapat diekspor dan diimpor ke dalam instance pengembangan atau pementasan untuk menguji fungsionalitas baru.
Fitur utama alat ekspor WordPress adalah:
- Pembuatan data pengujian menggunakan situs WordPress yang sebenarnya
- File ekspor yang dapat dibagikan dari seluruh basis data
- Berguna baik untuk integrasi dan pengujian unit
7. Membuang-buang waktu
Guzzle adalah klien HTTP PHP yang memudahkan untuk mengirim permintaan HTTP dan berintegrasi dengan layanan web.
Guzzle adalah alat generik, jadi pengujian hanyalah salah satu dari kemungkinan kasus penggunaannya. Bersama dengan server web lokal seperti DevKinsta, Guzzle memungkinkan untuk menjalankan tes integrasi: Anda dapat menggunakan Guzzle untuk mengirim permintaan HTTP ke server web pengembangan, lalu meneruskan respons ke unit test di PHPUnit yang memverifikasi konten dan header ditetapkan seperti yang diharapkan.
Fitur utama Guzzle adalah:
- Memenuhi Rekomendasi Standar PHP “PSR-7” (untuk antarmuka pesan HTTP), menghalangi penguncian vendor
- Sederhana dan cepat
- Pengujian dilakukan terhadap situs WordPress yang sebenarnya, meningkatkan keandalan
- Dapat dieksekusi dari dalam PHPUnit untuk kemudahan dan kecepatan
- Tes integrasi dapat diotomatisasi dan ditambahkan ke proses Integrasi Berkelanjutan
8. WP-CLI
WP-CLI adalah antarmuka baris perintah untuk WordPress. Dengannya, Anda dapat memperbarui plugin, mengonfigurasi instalasi multisitus, dan banyak lagi, tanpa menggunakan browser web.
WP-CLI tidak secara khusus merupakan alat pengujian, tetapi pengujian adalah di antara banyak kasus penggunaannya. Misalnya, setelah menjalankan server web pengembangan baru, Anda dapat menjalankan skrip bash yang berisi perintah WP-CLI untuk mengimpor data pengujian ke situs WordPress, membuat pengguna dengan peran dan kemampuan yang sesuai, menginstal plugin pihak ketiga yang diperlukan, dan tugas-tugas lain yang serupa.
Karena skrip dengan perintah WP-CLI dapat disimpan di repositori Git Anda, proses untuk menjalankan tes integrasi kemudian dapat diotomatisasi dan diintegrasikan dalam proses Integrasi Berkelanjutan Anda:
- Gunakan alat ekspor WordPress untuk menghasilkan data pengujian nyata, dan simpan di repositori Git.
- Gunakan DevKinsta untuk meluncurkan server web dengan instans WordPress baru.
- Gunakan WP-CLI untuk mengimpor data pengujian ke situs WordPress (DevKinsta dapat dioperasikan melalui WP-CLI).
- Buat unit test di PHPUnit yang meminta Guzzle menjalankan permintaan HTTP terhadap server web untuk memverifikasi konten dan header respons Anda.
Fitur utama WP-CLI adalah:
- Mengizinkan eksekusi perintah jarak jauh terhadap instance WordPress melalui antarmuka baris perintah
- Dapat diperluas dengan alat lain
- Meningkatkan kemampuan tumpukan pengujian
- Memungkinkan otomatisasi penuh dari proses
9. XDebug
XDebug adalah ekstensi untuk PHP yang menyediakan berbagai fitur untuk meningkatkan pengalaman pengembangan PHP, termasuk debugging, peningkatan pelaporan kesalahan PHP, penelusuran, pembuatan profil, dan analisis cakupan kode.
XDebug tidak akan membantu Anda menguji kode Anda, tetapi akan membantu mencari tahu di mana bug itu. Menggabungkan XDebug dengan PHPUnit sangat efektif: Jika pengujian gagal dan Anda tidak dapat menemukan sumber masalahnya, Anda dapat menggunakan XDebug untuk menambahkan breakpoint dalam kode pengujian unit. Saat menjalankan unit test lagi, skrip PHP akan dijeda di setiap breakpoint tersebut, memungkinkan Anda untuk memeriksa status eksekusi saat ini (tumpukan panggilan, nilai properti dan objek, dll.) dan mencoba menemukan apa yang salah.
Fitur utama XDebug adalah:
- Fitur integrasi untuk editor PHP populer, termasuk VS Code, PHPStorm dan Sublime
- Profil berapa banyak waktu yang dihabiskan dalam setiap panggilan fungsi dan berapa banyak memori yang dikonsumsi
- Jauh lebih kuat daripada hanya menggunakan
var_dump
untuk men-debug kode - Memungkinkan modifikasi nilai variabel dengan cepat saat berhenti di breakpoint
10. PHPStan
PHPStan adalah alat analisis statis untuk PHP, dirancang untuk menemukan bug dalam kode bahkan sebelum menulis tes.
Tujuan PHPStan adalah untuk mengurangi jumlah tes yang harus ditulis oleh pengembang. Alat ini adalah yang pertama dieksekusi di tumpukan pengujian, secara preemtif menangkap bug sebanyak mungkin. Hanya bug yang tidak dapat disimpulkan dari analisis statis (misalnya bug dengan logika cacat) yang harus divalidasi melalui unit test.
PHPStan bekerja dengan memindai seluruh basis kode dan mencari ketidakcocokan. Misalnya, nilai respons dari fungsi yang mengembalikan float tidak dapat ditetapkan ke parameter fungsi bertipe integer. Setiap kali kode berisi kejadian seperti itu, itu adalah bug potensial, dan PHPStan akan memperingatkan Anda tentang hal itu selama tahap pengembangan, tepat saat Anda sedang menulis kode aplikasi.
Fitur utama PHPStan adalah:
- Otomatisasi dan integrasi dalam proses Integrasi Berkelanjutan yang ada
- Menemukan banyak bug rumit, seperti ketidakcocokan jenis
- Memindai seluruh basis kode, menemukan bug di bagian kode yang jarang dieksekusi
- Diorganisir dalam tingkat kompleksitas yang meningkat untuk memungkinkan integrasi bertahap
- Fitur ekstensi untuk kerangka kerja PHP dan CMS paling populer, termasuk Symfony, Laravel, Doctrine, Nette, dan WordPress
Ringkasan
Biaya untuk memasukkan bug tanpa diketahui ke dalam aplikasi Anda dalam produksi dapat merusak reputasi dan pendapatan Anda, jadi Anda harus mencoba untuk membasminya sebelum memengaruhi pengguna Anda.
Dalam aplikasi yang kompleks, hampir tidak mungkin untuk memiliki keyakinan 100% bahwa itu tidak akan mengandung bug. Karena itu, Anda harus menyiapkan proses untuk menemukan dan menghapus bug sebanyak mungkin selama siklus pengembangan awal.
Dengan toolkit pengujian yang dirancang dengan baik, Anda dapat meminimalkan kemungkinan aplikasi Anda berperilaku dengan cara yang tidak terduga. Komunitas open source telah membuat dan menyediakan banyak alat untuk menguji berbagai aspek aplikasi, yang Anda bisa — dan harus! — gunakan untuk menghasilkan tumpukan pengujian yang komprehensif.
Pada artikel ini, kami telah meninjau 10 alat untuk membantu Anda mencapai tujuan Anda untuk menguji kode PHP di plugin WordPress.
Manakah dari alat ini yang Anda gunakan untuk proyek terbaru Anda? Beri tahu kami apa yang Anda buat dengannya di bagian komentar di bawah!