
Unit Testing adalah tes terkecil dalam serangkaian test untuk menguji sebuah fungsi atau kelas pada kode kita. Sebenarnya, beberapa tahapan testing dalam pengembangan aplikasi. Lebih lanjut, pengujian meliputi Unit Testing, Integration Test, Acceptance test, Performance Test, dsb. Unit testing memegang peranan penting pengujian ini. Tujuannya agar software yang telah rilis memiliki kualitas yang lebih baik. Untuk alasan ini, biasanya pengembang library selalu menyertakan unit test. Artikel ini akan membahas bagaimana cara membuat unit testing di PHP dengan PHPUnit.
Unit test akan menjadi kompas dalam pengujian (base case, edge case hingga corner case) . Tanpa adanya unit test, proses pengujian akan memakan banyak waktu. Pada perusahaan besar seperti Gojek dan Grab, unit test adalah suatu kewajiban. Tak jarang mereka merekrut tenaga khusus untuk melakukan pengujian software sehingga aplikasi menjadi lebih secure & reliable
Unit Test ini memiliki kemiripan dengan Integration Test. Keduanya menggunakan tools yang sama, hanya saja pada unit test tidak memperkenankan service-service dari luar. Setiap bahasa pemrograman atau framework memiliki tools berbeda untuk melakukan unit testing ini. Di PHP, salah satu tools yang populer untuk pengujian unit testing menggunakan PHPUnit
.
Instalasi PHPUnit

Sebelum anda menginstall PHPunit anda harus menginstall composer terlebih dahulu. Composer ini tidak built-in di PHP, karena itu instalasi dilakukan terpisah. Composer merupakan dependency manager pada bahasa pemrograman PHP. File instalasi dan dokumentasi composer tersedia pada website resminya, https://getcomposer.org/. Proses instalasi composer sama seperti software pada umumnya. Kita hanya perlu double klik pada master instalasi kemudian next sampai finish.
Selanjutnya, buat sebuah folder kosong beri nama “belajar-php-unit”. Kemudian jalankan perintah ini pada Terminal atau CMD bagi pengguna OS windows
composer require phpunit/phpunit
Setelah perintah selesai dijalankan, buka folder belajar-php-unit
. Dalam folder tersebut akan muncul tiga file baru yakni composer.json, composer.lock & folder vendor. Nah pada tahapan ini kita sudah berhasil menginstall phpunit.
Membuat Class Baru
Pada tutorial ini kita akan mencoba membuat unit-test pada kelas baru bernama class Matematika. Class Matematika ini adalah library yang kita buat dan akan dipakai oleh kita sendiri atau sendiri atau tim. Kita akan membuat unit test terhadap method yang ada pada class matematika ini.
Buat sebuah file bernama Matematika.php
kemudian isikan source code berikut
<?php
class Matematika
{
/**
* @param integer $bilanganBasic
* @param integer $bilanganExponen
*
* @return integer
*/
public static function pangkatBilangan($bilanganBasic, $bilanganExponen)
{
$nilaiSekarang = 1;
for ($i = 1; $i <= $bilanganExponen; $i++) {
$nilaiSekarang = $nilaiSekarang * $bilanganBasic;
}
return $nilaiSekarang;
}
}
Method ini bertujuan untuk mencari hasil perpangkatan dua bilangan. Dalam method ini terdapat empat case yang mungkin terjadi, yakni:
1. Bilangan basic positif, bilangan exponen positif
2. Bilangan basic negatif, bilangan exponen positif
3. Bilangan basic Positif, exponen negatif
4. Inputan berupa string
Selanjutnya buat file test dengan nama MatematikaTest.php, dengan code seperti berikut:
<?php
use PHPUnit\Framework\TestCase;
require_once "./Matematika.php";
class MatematikaTest extends TestCase
{
/*
* Menguji pangkat bilangan positif, positif
*
*/
public function testPositifSemua()
{
$hasilPangkat = Matematika::pangkatBilangan(2, 3);
$this->assertEquals(8, $hasilPangkat);
}
/*
* Menguji pangkat bilangan negatif, positif
*
*/
public function testNegatifPositif()
{
$hasilPangkat = Matematika::pangkatBilangan(-3, 2);
$this->assertEquals(9, $hasilPangkat);
}
/*
* Menguji pangkat bilangan positif, negatif
*
*/
public function testPositifNegatif()
{
$hasilPangkat = Matematika::pangkatBilangan(4, -2);
$this->assertEquals(1 / 16, $hasilPangkat);
}
/*
* Menguji pangkat bilangan input tidak sesuai
*
*/
public function testInputNgawur()
{
$hasilPangkat = Matematika::pangkatBilangan("a", 4);
$this->assertEquals(10, $hasilPangkat);
}
}
Jalankan unit test dengan command:
vendor/bin/phpunit MatematikaTest.php
Hasil eksekusi unit test ini adalah sebagai berikut
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.
..FE 4 / 4 (100%)
Time: 79 ms, Memory: 4.00 MB
There was 1 error:
1) MatematikaTest::testInputNgawur
A non-numeric value encountered
{FOLDER ANDA}/Matematika.php:16
{FOLDER ANDA}/MatematikaTest.php:52
--
There was 1 failure:
1) MatematikaTest::testPositifNegatif
Failed asserting that 1 matches expected 0.0625.
{FOLDER ANDA}/MatematikaTest.php:42
ERRORS!
Tests: 4, Assertions: 4, Errors: 1, Failures: 1.
Kita melihat dari response tersebut, terdapat 4 test dengan 4 assertions, terdapat 1 error dan 1 failure.
1) MatematikaTest::testInputNgawur
A non-numeric value encountered
Error ini terjadi karena memberi inputan string pada inputan yang seharusnya integer.
Sedangkan 1 Failure terjadi karena hasil yang salah saat melakukan testPositifNegatif. Dalam kasus 2 pangkat -4, seharusnya menghasilkan 0.0625. Ini tidak sesuai dengan kenyataan dari pemanggilan method tersebut yakni 1. Dengan demikian method tersebut gagal untuk case bilangan positif pangkat negatif.
Contoh kasus diatas merupakan contoh kasus sederhana yang sangat lumrah terjadi dalam pengembangan aplikasi.
Meskipun kode yang dibuat sesuai requirement, terdapat case-case yang tidak berjalan pada proses bisnis yang akan terjadi. Itulah dia, cara membuat unit Testing di PHP dengan PHPUnit