Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Testing Aplikasi

Sebelum diinstal di tempat customer, aplikasi yang kita buat harus ditest. Itu jelas. Semua orang melakukannya. Hanya saja, teknik melakukan testing akan membedakan antara yang pro dan belajaran (apalagi yang baru lulus kuliah :P)

Mari kita ambil contoh nyata. Misalkan kita punya class Calculator, dengan satu method divide yang tugasnya membagi dua bilangan. Berikut kodenya :

public class Calculator {
    public double divide (double a, double b) {
          return 0;
    }
}

Programmer pemula (atau pro yang kurang wawasan), hampir pasti akan segera menulis

public static void main(String[] xxx) {
    Calculator c = new Calculator();
    System.out.println("10 dibagi 2 adalah : " +c.divide(10,2));  // hasilnya harus 5
}

Hmm… primitif sekali. Dengan segala kecanggihan teknologi komputer, kita yang berada di tengah dunia komputer, membuat program komputer, masih menggunakan teknologi jaman DOS prompt untuk melakukan test.

Apa yang salah dengan kode test di atas? Salah, karena programmer harus mengeksekusi kode di atas, melihat bahwa tampilan yang dihasilkan seperti ini :

10 / 2 adalah : 0

membetulkan kode, kemudian lihat lagi, memastikan kali ini tampilannya seperti ini :

10 / 2 adalah : 5

Mengapa salah? Karena ini tidak otomatis. Bagaimana kalau kita punya 100 method? Bagaimana kalau tiap method punya 2 kemungkinan yang harus ditest (misalnya: pembagian dengan 0, pembagian dengan bilangan negatif)? Berarti ada sekitar 200 baris yang harus diteliti. Dan ini akan menjadi membosankan dan melelahkan.

Programmer profesional (baca: menghidupi anak istri dari coding) yang berwawasan luas akan menggunakan Automated Unit Testing. Tools ini akan memungkinkan kita untuk melakukan test secara :

  • Cepat

  • Otomatis

  • Dapat dieksekusi dengan tekan satu tombol

Programmer profesional yang berwawasan tersebut akan menulis test seperti ini :

public void testDivide() {
    Calculator c = new Calculator();
    assertEquals(5, c.divide(10,2));
}

Dengan cara ini, komputerlah yang akan memeriksa kode kita. Pada waktu kita jalankan, komputer akan mencetak tanda titik bila sukses, huruf F bila gagal, dan huruf E bila terjadi Exception. Tidak perlu lagi periksa secara manual. 200 test? Tidak perlu khawatir. Tinggal jalankan dan lihat. Berapa huruf yang muncul, itulah yang diperbaiki.

Bagusnya lagi, semua test tadi dapat dikonfigurasi sehingga dapat dijalankan sekaligus. Jadi dengan sekali tekan tombol, kita dapat menjalankan semua test yang telah kita buat dari sejak project dimulai.

Proses ini dapat diotomasi lebih jauh lagi, apabila kita menggunakan Ant, atau plugin IDE (misalnya Eclipse). Proses testing dapat diintegrasikan. Sehingga kalau biasanya setelah melakukan perubahan di source code kita lakukan save dan compile, dengan sedikit konfigurasi, kita ubah menjadi save-compile-test. Dengan sekali tekan tombol, kode yang baru saja kita edit telah ditest.

Ingatlah, programmer profesional mencari nafkah dari coding. Semakin cepat menyelesaikan aplikasi, semakin cepat dapat mengirimkan tagihan ke customer, dan semakin cepat pula istri akan tersenyum.

Tulisan ini merupakan bagian pertama dari rangkaian tulisan tentang Otomasi Pembuatan Aplikasi.


Lebaran dan Mudik

Selamat Lebaran Idul Fitri 1426 H. Mohon maaf lahir dan batin.

Seperti tahun yang lalu, lebaran ini diramaikan dengan kegiatan mudik. Ini adalah rutinitas baru sejak menikah. Maklum, sebelumnya saya tidak punya kampung, karena lahir dan besar di Jakarta. Pada waktu orang-orang pulang kampung, saya malah pulang kota.

Transportasi tahun ini jauh lebih baik daripada tahun kemarin. Primajasa baru saja membuka pool bis di Jl. Mayjend Sutoyo, beberapa ratus meter jalan kaki dari rumah. Ruang tunggu AC, air mineral gratis, pelayanan yang ramah, dan yang paling penting, calon penumpang yang jauh lebih sedikit (daripada di terminal umum). Bis jurusan Garut cuma ada satu jenis, yaitu AC Ekonomi. Bagi pembaca yang awam dengan urusan per-bis-an, AC Ekonomi adalah bis yang dilengkapi dengan AC, tapi memiliki konfigurasi tempat duduk seperti bis Ekonomi, yaitu dua di kiri dan tiga di kanan dengan sandaran bangku yang terima apa adanya alias tidak bisa diatur kemiringannya.

Bandingkan dengan terminal Kampung Rambutan (yang biasanya kami gunakan). Baru sampai pintu gerbang, ‘keramahan’ calo sudah bisa dinikmati. Berhasil menerobos kerumunan calo, kami harus menunggu di ruang tunggu masal, yang dikelilingi bis ngetem (tentunya sambil menyalakan mesin). Pilihan bis juga terbatas. Sampai tahun lalu, bis yang menuju Garut cuma Karunia Bakti. Dan kita tidak bisa memilih AC atau Ekonomi, karena Karunia Bakti cuma punya satu jalur antrian. Jika kebetulan yang dapat giliran bis Ekonomi, pilihannya adalah naik, atau menunggu bis berikutnya (yang belum tentu AC).

Simply said, pool Primajasa yang baru ini benar-benar suatu berkah yang wajib disyukuri.

Dari sisi transportasi, memang menjadi lebih mudah. Tapi dari sisi peserta mudik, lain ceritanya. Tahun kemarin, Khalisa masih di dalam perut Ambu. Tapi tahun ini, dia sudah bisa duduk sendiri. Ini menimbulkan tantangan tersendiri. Khalisa Laughing

Sebulan sebelum lebaran, kami sudah ujicoba membawa Khalisa ke Garut, dan berjalan dengan lancar. Dia menikmati perjalanan, dan tampaknya senang melihat pemandangan di jalan. Dengan total durasi perjalanan Jakarta- Garut yang cuma 4 jam saja, nampaknya dia tidak terlalu bosan. Tapi mudik berbeda, walaupun Jakarta-Cileunyi dapat ditempuh dalam waktu 3 jam, Nagrek tidak.

Kimi Raikonnen Para pembaca tentunya sudah pernah mendengar tentang Nagrek. Tanjakan curam yang dilengkapi dengan beberapa tikungan berbentuk huruf U, yang bahkan dapat membuat miris Kimi Raikonnen sekalipun. Nagrek sudah lama menjadi momok para pemudik. Kendaraan yang kondisi kesehatannya minim jangan harap selamat. Kendaraan yang sangat sehat juga harus dilengkapi dengan pengemudi yang handal.

Sebetulnya, pada kondisi normal, Nagrek mudah dilalui. Memang membutuhkan keterampilan tinggi, tapi tidak terlalu menakutkan. Yang membuat Nagrek menjadi bottleneck adalah, pada saat mudik banyak bis yang lewat berbarengan. Bis, seperti kita tahu, lemah di tanjakan, sehingga kita akan banyak menghadapi logam sebesar rumah berbobot ratusan ton yang merangkak tertatih-tatih sambil menyemburkan bakaran solar hitam di belakangnya. Menurut saya, inilah faktor utama yang membuat KO kendaraan berkondisi pas-pasan. Mereka dipaksa menanjak pelan-pelan (kadang berhenti) di belakang bis. Suhu panas, putaran mesin tinggi, intensitas pengereman yang tinggi, semua ini sangat menyiksa mesin. Seandainya jalan lancar, semua ini bisa dihindari.

Alhasil, pada kesempatan mudik kali ini, Nagrek berhasil kami lalui dalam waktu 4 jam. Lepas dari Nagrek, jalanan lancar dan sepi. Khalisa sudah lelah dan bosan. Walaupun demikian, dia tetap shalehah dan tidak terlalu rewel. Sementara itu, anak tetangga sebelah sudah menangis menjerit-jerit. Segala daya upaya sudah dikerahkan, tetapi nampaknya perjalanan mudik terlalu berat untuknya. Menurut keterangan yang berhasil dikumpulkan, bocah tersebut berusia 9 bulan. Satu bulan lebih tua daripada Khalisa. Narasumber tersebut (yang disinyalir adalah bapaknya) tidak bersedia berkomentar lebih lanjut dengan alasan sibuk. Setelah itu, dia terlihat sibuk meracik susu formula untuk anaknya yang histeris tersebut.

Alhamdulillah Khalisa adalah pengguna ASI yang loyal. Ini sangat memudahkan orang tua pada waktu mudik. Kami tidak perlu membawa kaleng susu, termos, perangkat dot, dan segala macam sanitizer. Cukup cari tempat duduk yang memiliki sedikit privasi.

Sebagai referensi, berikut saya tuliskan daftar perlengkapan Khalisa yang harus tersedia dalam jangkauan tangan :

  • Mainan

  • Bubur instan

  • Piring makan

  • Sendok makan

  • Gelas

  • Tisu basah (untuk membersihkan sisa makanan di muka)

  • Tisu kering (untuk membersihkan peralatan makan)

  • Air mineral (untuk diminum, dan untuk mencairkan bubur instan)

Sedangkan kostum yang digunakan Khalisa selama perjalanan (dengan bis AC selama 7-8 jam) adalah :

  • Celana panjang

  • Baju lengan panjang

  • Kaus dalam (singlet)

  • Jaket

  • Kaus kaki

  • Jilbab

  • Lampin sekali pakai

Jangan lupa siapkan tiga set pakaian seperti di atas untuk berjaga-jaga.

Demikian laporan mudik tahun ini. Mudah-mudahan masih ada cukup umur untuk mudik di tahun depan.

Endy-Maya-Khalisa


Menggunakan Version Control untuk Dokumen

Aplikasi version control yang bagus dapat mengelola binary file (misalnya jpg, doc, pdf, dsb) dengan baik, seperti halnya mengelola source code yang berformat text. Salah satu diantaranya adalah Subversion.

Dalam konteks project software, feature ini dapat dimanfaatkan untuk menyimpan dokumen lain selain source code, misalnya kontrak kerja sama, dokumen analisa, dsb.

Bahkan untuk kasus ekstrim, Subversion juga dapat digunakan untuk mengelola dokumen pribadi kita, seperti yang dilakukan oleh Oom Joey Hess. Sebelumnya dia menggunakan CVS. Tetapi akhirnya dia beralih ke Subversion.


Autobackup to Gmail

Wordpress memang hebat, ada plugin untuk membackup isi blog (isi tabel MySQL) secara periodik ke email. Email yang kita gunakan bisa ditentukan di konfigurasi. Gunakan Gmail untuk kapasitas yang besar.

Sekarang kita bisa memikirkan tulisan dan tidak perlu mengkhawatirkan backup.


Screen Recording

Jaman sekarang orang bikin tutorial udah gak PDF lagi. Ketinggalan jaman oom. Sekarang musimnya tutorial pake movie, baik AVI, MPG, atau SWF. Jangan sampe kalah gaya sama situs porno.

Di windows ada aplikasi gratis untuk merekam screen, namanya AviScreen. Tapi masalahnya, saya sudah selamat tinggal sama sistem operasi yang ada jendelanya. Bukan apa-apa, namanya ada jendela, pasti debu dan serangga masuk membawa virus. Jadi, AviScreen tidak bisa digunakan.

Untungnya di Linux, pilihan lebih banyak. Ada vnc2swf atau vncrec. vnc2swf outputnya Flash Movie, sedangkan vncrec punya format sendiri yang cuma dia sendiri yang bisa baca.

Update (6 Juni 2006): Ternyata ada lagi aplikasi yang namanya Wink. Tersedia untuk Windows maupun Linux.

Ada beberapa artikel yang membahas tentang cara penggunaan dan perbandingan aplikasi ini. Newsforge dan Linux.com membahas secara lengkap tentang cara penggunaanya.

Berbeda dengan sistem operasi Jendela yang cuma bisa punya satu desktop, di linux desktop bisa sebanyak-banyaknya. Ini bisa menyenangkan (bagi yang sudah tahu), dan bisa juga membingungkan (bagi yang belum tahu). Jadi, kalo AviScreen kita cukup tekan tombol Record, kalau di linux ada beberapa langkah sebelum tekan tombol record, yaitu:

  1. Jalankan VNC server. VNC server adalah aplikasi yang bertugas untuk mempublish desktop kita. Pada saat dijalankan, dia akan menjalankan desktop baru yang berbeda dengan screen yang kita hadapi sekarang.

  2. Jalankan vnc2swf. Setelah itu, kita bisa jalankan vnc2swf untuk connect ke VNC server yang telah kita publish pada langkah pertama.

  3. Mulai merekam. Setelah terhubung dengan VNC server, kita bisa langsung mulai merekam.

Jebakan VNC server : VNC server akan menjalankan desktop baru. Jadi, yang akan direkam adalah desktop baru tersebut, bukan desktop yang sekarang kita gunakan. Jadi kita harus menampilkan dulu desktop baru tersebut, baru mulai merekam. Untuk menampilkan desktop baru tersebut, kita bisa gunakan Remote Desktop Connection yang ada di KDE.

Kalau kita mau merekam desktop yang sedang kita gunakan saat ini, kita harus mempublish desktop dengan aplikasi lain yang namanya x11vnc. Jika dijalankan, aplikasi ini akan mempublish aktivitas desktop kita ke vnc server.

Demikian cara merekam aktivitas desktop. Selamat mencoba.