Testing merupakan salah satu fase penting yang harus dilakukan ketika membuat sebuah aplikasi. Testing biasanya dilakukan secara berbarengan pada saat menulis kode. Ada banyak gaya
dalam melakukan testing dan yang paling favorit biasanya adalah gaya konvensional. Dengan menggunakan gaya ini programmer desktop akan menggunakan console/winform untuk melihat hasil tes dari sebuah unit (fungsi/method) sedangankan programmer web langsung menggunakan halaman web.
Ini adalah gaya lama yang kita pelajari dari jaman Majapahit #eh, maksudnya masa-masa kuliah dulu :-D, kan enggak keren banget udah jadi programmer pro (programmer yang udah kerja) tapi testingnya masih bergaya mahasiswa
:-D
Dengan testing gaya jadul
ini, kita
yang harus melakukan evaluasi terhadap hasil tesnya. Contoh tes di atas 5 + 2
kok hasilnya 10
. Bayangkan klo kita kurang teliti bakalan jadi bug di kemudian hari.
Jika Anda bosan dengan gaya ini (konvensional/jadul/mahasiswa) dan ingin naik level, kita bisa menggunakan tool yang memang dibuat khusus untuk melakukan unit testing seperti NUnit.
Dengan menggunakan tool unit testing, komputer
-lah yang melakukan evaluasi terhadap hasil tesnya. Kita tinggal duduk manis he he :-)
Jenis-jenis Testing
Sebenarnya ada banyak jenis-jenis testing, tetapi karena keterbatasan waktu dan ilmu, saya hanya membahas jenis-jenis testing berikut :
Jadi kita akan membahas Unit Testing terlebih dulu.
Unit testing
Unit testing adalah testing di level paling detail dari aplikasi. Artinya, testing di level method/function. Tes ini biasanya dilakukan oleh programmer dan bukan oleh tester, karena membutuhkan pengetahuan yang rinci tentang desain aplikasi dan kode yang ditulis. Ada beberapa tool yg bisa digunakan untuk keperluan ini tergantung dari bahasa pemrograman yang kita gunakan. Misal di .NET (NUnit), Java (JUnit) dan PHP (PHPUnit).
Di postingan ini kita akan menggunakan NUnit sebagai tool untuk melakukan unit testing. NUnit adalah framework unit testing yang digunakan untuk bahasa pemrograman .NET. NUnit sendiri merupakan hasil portingan dari JUnit. Sebelum menggunakan NUnit tentunya harus kita download dan kemudian menginstallnya.
Membuat Project
Untuk uji coba unit testing ada dua project yang akan kita buat yaitu :
Project CalculatorLib – Ini adalah project target yang akan kita tes untuk setiap unitnya (fungsi/method).
Project CalculatorUnitTest – Ini adalah project unit testing yang digunakan untuk mengetes project CalculatorLib.
Membuat Project CalculatorLib
Project CalculatorLib adalah project yang akan kita buatkan unit testingnya, project ini bertipe Class Library
.
Nah di project ini, kita akan membuat class baru dengan nama Calculator
kemudian menambahkan empat method yaitu Tambah
, Kurang
, Kali
dan Bagi
.
Coba perhatikan gambar di atas, method Tambah
sengaja dibuat salah dengan menggunakan operator kali (*), biar nanti keliatan efeknya ketika dites menggunakan NUnit.
Setelah project CalculatorLib selesai kita lanjut dengan membuat project CalculatorUnitTest.
Membuat Project CalculatorUnitTest
Project CalculatorUnitTest adalah project unit testing yang digunakan untuk mengetes project CalculatorLib, project ini juga bertipe Class Library
.
Di project ini, kita akan menambahkan class baru dengan nama CalculatorTest
yang mempunyai empat method yaitu TambahTest
, KurangTest
, KaliTest
dan BagiTest
. Jadi konvensi penamaannya adalah untuk nama class di tambah akhiran Test
. Contoh class Calculator
menjadi CalculatorTest
. Untuk method juga sama, misal method Tambah
menjadi TambahTest
, method Kurang
menjadi KurangTest
begitu seterusnya.
Method-method yang ada di class unit testingnya, biasanya bersifat independent
artinya masing-masing method ini bisa dijalankan/eksekusi secara mandiri (tidak tergantung dengan method yang lain) sehingga kita bisa menjalankan unit testing secara berulang.
Menambahkan Referensi Project CalculatorLib
Agar project CalculatorUnitTest bisa mengakses semua class dan method yang ada di project CalculatorLib, kita terlebih dulu harus menambahkan referensi CalculatorLib. Caranya seperti berikut :
Klik kanan node References -> Add Reference…
Aktifkan panel Solution kemudian pilih project CalculatorLib
Klik tombol Ok, kemudian cek lagi node References, seharusnya sudah ada tambahan library CalculatorLib
Kemudian lengkapi kode class CalculatorTest, seperti gambar di bawah ini.
Menambahkan Library Unit Testing
Seperti penjelasan saya di awal postingan, untuk contoh unit testing ini kita akan menggunakan NUnit. Berikut langkah-langkah menambahkan library NUnit
Klik kanan node References -> Add Reference…
Setelah tampil dialog Reference Manager, aktifkan panel Assemblies -> Extensions kemudian aktifkan pilihan nunit.framework
Klik tombol Ok, kemudian cek lagi node References, seharusnya sudah ada tambahan library nunit.framework
Menulis Unit Testing
Setelah menambahkan library unit testing, project CalculatorUnitTest tidak otomatis langsung dikenali oleh tool unit testing, ada hal-hal lainnya yang perlu kita ketahui dalam menulis unit testing menggunakan Nunit yaitu :
Attributes
Digunakan untuk memberi tag/penanda class dan method yang akan dites. Ada dua attribut yang sering digunakan yaitu attribut [TestFixture]
untuk menandai class
dan attribut [Test]
untuk menandai method. Contoh :
Selain itu ada attribut lain yang digunakan untuk menandai method yang berfungsi sebagai method inisialisasi yaitu attribut [SetUp]
. Contoh :
Jadi method Init
di atas akan dijalankan terlebih dulu sebelum tool Nunit menjalankan method-method lain yang ditandai dengan attribut [Test]
.
Assertions
Merupakan sekumpulan method static yang digunakan untuk mengevaluasi method yang akan dites. Jadi method-method assertions akan mengembalikan nilai boolean (true/false). Contoh :
Pada gambar di atas kita menggunakan salah satu method Assertions
yaitu method AreEqual
untuk membandingkan dua buah nilai, yaitu nilai yang di harapkan (expected) dan nilai aktual. Nilai expected kita inputkan secara manual sedangkan nilai aktual dihasilkan dari pemanggilan method. Coba perhatikan potongan kode berikut :
Dari hasil pemanggilan method Tambah(5, 2), jika menghasilkan nilai 7 maka method AreEqual
akan mengembalikan nilai true yang artinya tes berhasil karena sesuai dengan nilai yang diharapkan yaitu 7
selain itu akan mengembalikan nilai false/gagal.
Untuk referensi method-method Assertions
lainnya bisa dicek disini.
NUnit GUI Runner
Merupakan tool GUI bawaan NUnit yang digunakan untuk menjalankan project unit testing. Tool ini membutuhkan file assembly (dll) dari project unit testing. Jadi project CalculatorUnitTest harus kita build
terlebih dulu untuk menghasilkan file assembly(CalculatorUnitTest.dll), kemudian kita buka menggunakan tool NUnit GUI Runner
.
Caranya dari menu File -> Open Project kemudian cari hasil build project CalculatorUnitTest (CalculatorUnitTest.dll).
Untuk memulai tes, klik tombol Run
Dari gambar di atas hanya method Tambah
yang gagal melewati unit testing, coba kita cek kode unit testnya.
Dari kode di atas 5 + 2
seharusnya menghasilkan nilai 7
(nilai expected/diharapkan), tetapi dari hasil unit testingnya malah menghasilkan nilai 10
, dari mana datangnya nilai 10
ini ?
Dari sini kita sudah bisa menebak ada yang salah dengan method Tambahnya, coba kita cek lagi method Tambah dari class Calculator.
Ops!!! ternyata benar ada kesalahan logic
yaitu salah operator di method Tambah yang seharusnya menggunakan operator tambah (+) malah menggunakan operator kali (*), sehingga wajar 5 * 2
menghasilkan nilai 10
bukannya 7
. Jadi harus kita benarin dulu operatornya kemudian build ulang.
Setelah itu kita cek lagi hasil unit testingnya
Selamat MENCOBA :-)
Referensi :