Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Creative Coding
Code

Panduan Pemula ke Unit Pengujian: Apakah Unit Pengujian?

by
Length:MediumLanguages:

Malay (Melayu) translation by Evita Karlina (you can also view the original English article)

Bergantung kepada latar belakang anda, anda mungkin atau mungkin tidak pernah mendengar ujian unit, pembangunan yang didorong oleh ujian, pembangunan yang didorong oleh tingkah laku, atau beberapa jenis kaedah ujian yang lain. Sering kali, metodologi ini digunakan dalam konteks sistem atau aplikasi perisian yang lebih besar dan kurang dalam konteks projek berasaskan WordPress (walaupun semakin baik!)

Secara terang-terangan, komuniti pembangunan agak dibahagikan kepada ujian perisian automatik - anda mempunyai beberapa orang yang menganggap anda harus mempunyai ujian untuk 100% dari semua kod anda, ada yang percaya bahawa 80% adalah mencukupi, kira-kira 50%, dan ada yang puas dengan 20% atau lebih. Walau apa pun keadaannya, artikel ini bukan mengenai alasan untuk tahap ujian yang anda miliki dalam projek anda atau tidak mengambil kedudukan pada ujian perisian umum.

Sebaliknya, kita akan melihat apa yang diperlukan untuk bangun dan berjalan dengan unit menguji projek pembangunan WordPress anda. Kami akan menghampiri siri ini dari perspektif pemula mutlak supaya kita dapat memahami manfaat unit ujian dan cara mengkonfigurasi persekitaran kita untuk menyokong perpustakaan ujian unit supaya kita dapat mula melakukan ini dalam kerja masa depan kita. Akhir sekali, semua ini akan dilakukan dengan membina dan menguji plugin yang mudah diuji dari bawah.


Apakah Unit Ujian?

Sebelum kita memulakan persekitaran kita dan menulis apa-apa kod, mari kita tentukan dengan tepat apa ujian unit, kenapa patut dilakukan, dan bagaimana untuk memulakan dalam menggabungkannya dalam projek kita.

Pada tahap tinggi, ujian unit merujuk kepada amalan menguji fungsi dan kawasan tertentu - atau unit - kod kami. Ini memberi kami keupayaan untuk mengesahkan bahawa fungsi kami berfungsi seperti yang diharapkan. Ini bermakna bahawa untuk sebarang fungsi dan diberi satu set input, kita boleh menentukan sama ada fungsi itu mengembalikan nilai yang betul dan akan mengendalikan kegagalan dengan baik semasa pelaksanaan mesti input tidak sah disediakan.

Pada akhirnya, ini membantu kami untuk mengenal pasti kegagalan dalam algoritma dan / atau logik kami untuk membantu meningkatkan kualiti kod yang merumuskan fungsi tertentu. Semasa anda mula menulis lebih banyak ujian, anda akhirnya membuat satu set ujian yang boleh anda laksanakan pada bila-bila masa semasa pembangunan untuk mengesahkan kualiti kerja anda secara berterusan.

Kelebihan kedua untuk menghampiri pembangunan dari perspektif ujian unit ialah anda mungkin menulis kod yang mudah untuk diuji. Oleh kerana ujian unit memerlukan kod anda mudah diuji, ini bermakna kod anda mesti menyokong jenis penilaian tertentu ini. Oleh itu, anda lebih cenderung mempunyai bilangan yang lebih kecil, lebih banyak fungsi yang difokuskan yang menyediakan operasi tunggal pada satu set data dan bukannya fungsi besar yang menjalankan beberapa operasi yang berbeza.

Kelebihan ketiga untuk menulis ujian unit pepejal dan kod yang teruji adalah bahawa anda boleh menghalang perubahan masa depan daripada fungsi yang melanggar. Oleh kerana anda sedang menguji kod anda semasa anda memperkenalkan fungsi anda, anda akan mula membangunkan satu kes ujian yang boleh dijalankan setiap kali anda bekerja pada logik anda. Apabila kegagalan berlaku, anda tahu bahawa anda mempunyai sesuatu untuk ditangani.

Sudah tentu, ini datang dengan meluangkan masa untuk melaburkan serangkaian ujian awal dalam pembangunan, tetapi apabila projek itu berkembang anda hanya dapat menjalankan ujian yang telah anda buat untuk memastikan fungsi yang ada tidak patah apabila fungsi baru diperkenalkan.


Perancangan Plugin kami

Salah satu cara terbaik untuk bermula dengan ujian unit adalah untuk melakukannya dalam konteks aplikasi praktikal. Sepanjang siri dua bahagian ini, kami akan membina satu plugin mudah dan ujian menulis untuk menampung semua fungsi.

Pertama, mari kita merancang projek: Kami akan menulis plugin kecil yang akan menambah mesej ringkas di bahagian atas satu jawatan yang mengalu-alukan pengguna berdasarkan bagaimana mereka telah menemui jawatan blog tertentu. Idea ini sangat mirip dengan Reader Welcome tetapi tidak akan menyertakan hampir fungsi seperti - kita hanya membina demo untuk mempelajari selok belok ujian.

Bagaimanapun, inilah caranya plugin akan berfungsi:

  • Jika pengguna menavigasi ke tapak dari Google, kami akan memberikan mesej unik
  • Jika pengguna menavigasi ke laman web dari Twitter, kami akan memberikan mesej unik
  • Jika tidak, kami tidak akan memaparkan apa-apa

Jelas sekali, betul? Ini juga akan menyediakan asas untuk menambah mesej tersuai untuk perkhidmatan lain dan melanjutkan lagi kemampuan pengujian unit kami jika anda ingin melakukannya.


Menyediakan Alam Sekitar

Untuk unit ujian kod kami, kami memerlukan perpustakaan pihak ketiga yang kami sertakan dalam projek kami yang sebenarnya akan melaksanakan ujian yang kami tulis. Dalam siri ini, kami akan menggunakan PHPUnit. Anda boleh ambil salinannya di sini.

Seterusnya, kami perlu menyediakan persekitaran pembangunan kami, melancarkan plugin kami, dan masukkan perpustakaan yang diperlukan untuk menguji kod kami. Artikel ini mengandaikan bahawa anda sudah mempunyai pemasangan WordPress berfungsi dan berjalan.

Jadi, pertama, mari menyediakan direktori plugin:

  • In /wp-content/plugins membuat direktori bernama Hello-Reader
  • Dalam direktori Hello-Reader, buat fail yang dipanggil plugin.php dan direktori dipanggil tests
  • Kami akan melancarkan plugin untuk memastikan bahawa WordPress melihat projek kami dengan betul
  • Kami akan mengimport perpustakaan ujian unit supaya kita boleh mula menulis ujian kami

Inilah rangka untuk plugin yang akan kami buat:

Pada ketika ini, anda harus dapat menavigasi ke 'Plugin' di Dashboard WordPress anda dan melihat entri untuk 'Hello Reader.' Jelas sekali, plugin ini tidak melakukan apa-apa lagi - kami akan memfokuskan pada itu (serta mengapa kami menggunakan array $GLOBALS dalam artikel seterusnya.

Akhirnya, mari kita persiapkan rangka kerja ujian supaya kita dapat menulis ujian kami. Pertama, kita perlu memasang PHPUnit dan kemudian kita perlu memasang Ujian WordPress.

Nota: Bahagian seterusnya akan memerlukan melakukan kerja dengan terminal dan kemungkinan akan memerlukan anda mengeluarkan beberapa perintah untuk membuat pautan simbolik. Saya cuba membuat ini sebagai mudah dan mudah, tetapi setiap sistem operasi dan konfigurasi akan berbeza. Sila ikuti dengan teliti dan saya menjemput anda untuk berkongsi arahan anda untuk sistem pengendalian anda di dalam komen.

Memasang PHPUnit

PHPUnit adalah pakej rangka kerja unit khusus untuk PHP. Ujian WordPress dan rangka kerja yang akan kami gunakan untuk menulis ujian WordPress kami bergantung pada ini. Malangnya, pemasangan berbeza mengikut platform anda. Saya sedang menjalankan Mac OS X Lion dengan MAMP Pro dan PHP 5.3.6. Jika anda menjalankan platform yang berbeza, pastikan anda merujuk kepada dokumentasi dan / atau berasa bebas untuk berkongsi langkah anda dalam komen.

Pertama buka terminal dan kemas kini pir (ini adalah kemudahan yang akan kita gunakan untuk memasang PHPUnit):

$ cd /Applications/MAMP/bin/php/php5.3.6/bin
$ sudo ./pear upgrade pear

Seterusnya, arahan Pear untuk menggunakan repositori yang akan kami tentukan di terminal:

$ sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear config-set auto_discover 1

Selepas itu, pasang Pear dengan mengeluarkan arahan berikut:

$ sudo /Applications/MAMP/bin/php/php5.3.6/bin/pear install pear.phpunit.de/PHPUnit

Ini akan memasang PHPUnit dalam konteks pemasangan MAMP anda. Untuk mengujinya, jalankan arahan berikut dalam sesi terminal anda:

$ /Applications/MAMP/bin/php/php5.3.6/bin/phpunit --version

Selepas itu mesej berikut harus dipaparkan:

PHPUnit 3.6.11 by Sebastian Bergmann.

Nota: Sekiranya anda mendapat ralat terminal yang menyebut 'unserialize ()', maka terdapat percanggahan antara konfigurasi pir dan versi pir anda. Untuk menyelesaikannya, mengeluarkan arahan berikut (ini hanya mengubah nama fail sekiranya anda mahu memulihkannya kemudian):

$ /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf.old

Memasang Ujian WordPress

Sekarang kita telah memasang dan bekerja PHPUnit, sudah tiba masanya untuk menyediakan Rangka Kerja Pengujian WordPress. Anda boleh merebut pakej dari GitHub. Sekiranya anda selesa dengan kloning repositori, maka berasa bebas untuk berbuat demikian; jika tidak, muat turun arkib projek dan keluarkannya ke dalam direktori ujian yang kami buat sebelum ini dalam artikel ini.

Sebelum menjalankan ujian, kita perlu membuat fail konfigurasi untuk menjalankan ujian WordPress. Ini sama seperti mengedit fail wp-config.php dengan pemasangan WordPress baru, tetapi kami melakukannya untuk pangkalan data ujian. Di bawah, saya telah menyisipkan fail konfigurasi saya dan telah menambah komen. Saya pasti akan melakukan perkara ini ke repositori GitHub artikel ini juga.

Untuk mengesahkan bahawa anda telah memasang ujian dengan betul, anda boleh menjalankan perintah berikut di Terminal anda:

$ /Applications/MAMP/bin/php/php5.3.6/bin/phpunit all

Sekiranya anda mendapat ralat, itu kerana ujian WordPress cuba menggunakan soket untuk pangkalan data MySQL dan bukannya yang digunakan oleh MAMP. Untuk membetulkannya, kita perlu membuat pautan simbolik dari soket MAMP ke lokasi pada cakera yang digunakan oleh unit ujian. Isu arahan berikut dalam sesi terminal anda:

Sekarang, cubalah untuk menjalankan ujian sekali lagi dan anda akan melihat sesuatu seperti tangkapan skrin berikut.

Passing Tests

Sekali lagi, perbatuan anda mungkin berbeza-beza berdasarkan platform yang anda gunakan jadi berasa bebas untuk berkongsi pengalaman anda dalam komen atau bahkan komit ke fail README di GitHub juga supaya orang lain dapat mempunyai rujukan.

Pada ketika ini, kami bersedia untuk memulakan membina plugin kami dan menulis ujian unit kami. Kod di atas telah ditambah kepada GitHub dan saya akan membinanya kerana kami bekerja melalui artikel seterusnya dalam siri ini. Dalam pada itu, pastikan anda mendapat persekitaran anda dan anda sudah bersedia untuk memulakan pembangunan. Dalam artikel seterusnya, kami akan mula menulis ujian, membina plugin kami, dan melihat keseluruhan projek datang bersama dari awal hingga akhir.


Sumber

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.