Archive
Unit Testing di C++
Saya merupakan fans dari Test Driven Development. Bagi anda penggila Agile atau Extreme Programming hal itu mungkin tidak asing lagi. Ketika saya pindah dari c# ke c++, salah satu hal yang paling ingin saya cari adalah bagaimana melakukan Unit Test. karena dengan melakukan dari test kita bisa dapat belajar lebih cepat dan terarah. Visual Studio C++ 11 menawarkan kemudahan untuk melakukan native testing. Kita tidak perlu memanfaatkan C++ CLI utk melakukan nya. Benar-benar native.
Silahkan mengikuti langkah-langkahnya berikut ini. Your testing experience will be better with C++
Enjoy this one. Be Test Addicted
Behaviour Driven Development (Part 2)
Nama test yg jelas sangat membantu jika test tersebut error. Ketika kita melakukan perubahan dan test yg sebelumnya berhasil gagal, maka kita dapat mengeceknya dari nama methodnya. Apa sebenarnya behaviour yg diinginkan dari test tersebut. Biasanya salah satu dari berikut yg terjadi …
- Ada bug baru. Solusinya perbaiki bugnya
- Behaviournya masih relevan tetapi sudah berpindah ke tempat lain. Solusinya pindahkan test tersebut ke tempat yg semestinya dan mungkin mengubahnya.
- Behaviournya sudah tidak sesuai lagi. Karena system sudah berubah. Perubahan requirement. Solusinya : delete test tersebut.
Pilihan yg terakhir itu biasanya kita ga percaya diri melakukannya. Karena kita takut kualitas code menjadi berkurang. Tapi sebenarnya itu alasanya kita menggunakan kata should (seharusnya). Jadi ketika kita lihat test tersebut kita bisa mengujinya dngan kata really (benarkah). Benarkah seperti itu ?? atau sekarang sudah tidak lagi. Jadi ketika test tersebut gagal kita bisa menguji kembali dengan kata benarkah harus seperti itu ?
Read more…
Evident Data
Bagaimana membuat maksud dari data yg ditampilkan jelas? Nah berarti ada dua jenis data. Yaitu data masukan dan keluaran. Jadi buatlah relasi antara kedua data tersebut jelas. Bagaimana prosesnya perubahan data tersebut. Karena kita menulis test bukan hanya untuk komputer. tetapi juga untuk orang lain yg akan menggunakan kelas tersebut. jadi dia bisa belajar dari test tersebut bagaimana behaviour dari suatu kelas atau fungsi.
Contohnya kita akan mengubah satu mata uang ke yg lain. dan kita mengambil 1,5 percent komisi. Exchange rate dari USD ke GBP adalah 2:1. Yg kita tukarkan adalah $100. kita akan mendapat 50GBp – 1.5% = 49.25 GBP. KIta dapat menterjemahkannya menjadi test seperti berikut.
Read more…
Test Data
Data apa yg akan digunakan dalam test ?? Pilihlah data yg membuat test tersebut mudah dibaca dan dimengerti. Karena test tersebut adalah dokumentasi. Pilihlah data test yg benar2 menuntun kita ke design yg benar dan complete. Kalau misalnya 1 dan 2 tidak memiliki makna yg berbeda gunakanlah satu. Lebih simple.
Pikirkanlah data2 apa saja yg bisa menyebabkan alur yg berbeda dari code yg dibuat. Jangan memunculkan data yg akan menuntun ke flow yg sama berulang. Read more…
Assert First
Kapan kita harus menuliskan assert.. Assert.AreEquals(…, …..); ???
Tulislah pertama kali …
Ketika kita menuliskan test, kita sebenarnya menyelesaikan beberapa masalah sekaligus. meskipun kita tidak memikirkan bagaimana implementasinya. Diantaranya :
- Fungsionalitasnya punya siapa ?? apakah dari method yg sudah ada, modifikasi method, method baru, ataukah kelas baru
- Bagaimana dia akan dipanggil ?
- Bagaimana mengecek fungsi tersebut benar atau salah
- Bagaimana jawaban yg benar ?
- Apakah test2 lain yg muncul ?
dapat disederhanakan menjadi dua bagian bagaimana jawaban yg benar dan bagaimana cara mengeceknya. Contohnya adalah komunikasi socket. ketika kita selesai maka socket akan ditutup dan kita mendapatkan hasil bacaan string abc. nah itulah kuncinya. Apa yg kita mau ? Socket akan tertutup dan hasil pembacaan string abc. dari sanalah kita bergerak. bergeraklah dari akhir.
Read more…