Testing SI – part.4

Senin, 14 September 2009

Pertemuan ke empat ini mebahas tentang testing strategies. Perlu membuat strategi dalam proses testing agar proses testing bisa berjalan dengan cepat sehingga produk segera jadi dan mengurangi pembengkakan biaya yang mungkin bisa terjadi. Pembahasan pertemuan kali ini sangat panjang dan detail…

diagram


Unit testing

Level paling bawah dalam bentuk fungsi atau method (OOP). Jika unit testing dilakukan dalam bentuk procedural akan lebih susah. Unit testing mengadopsi konsep OOP sehingga bisa diterapkan di berbagai bahasa. Berbagai bahasa sudah banyak yang menggunakan konsep OOP, karena sudah ada unit test. Di dalam unit test ada test case, test case berupa inputan. Inputan dibandingkan dengan data yang kita harapkan, jika output benar berarti implementasi berhasil.

Dalam unit test, cara membuatnya adalah membuat class yang baru yang berisi method-method untuk test. Pertama membentuk unit test baru test case. Banyak sekali unit test framework, contohnya: JUnit (java), CUnit (c#), dan lain-lain. Cara membuat test case tiap bahasa pemrograman bisa berbeda-beda. Untuk lebih detail tentang framework untuk unit test bisa search di wikipedia.

Keuntungan unit test…

  • Jika suati saat kita akan ganti code, kesalahan bisa dicegah karena sudah ada test case dalam unit test.
  • Mendukung test otomatis —– Bisa dibuat berbasis GUI dan bisa otomatis dijalankan
  • Selagi coding bisa langsung menemui errornya —– Waktu coding, jalankan unit test…..agar error tidak menumpuk dan merugikan aspek yang lain (lower cost to fix)
  • Waktu melakukan perubahan lebih mudah, karena ada kontrol.
  • Fitur baru tidak akan merusak code sebelumnya
  • Code yang mau bekerja akan bekerja di masa depan karena ada kontrol dan tidak error
  • Akan lebih mudah jika ada programmer baru, karena di test case sudah ada dokumentasinya, jadi tidak perlu mengajari lagi.
  • Semua implementasi bagus, karena semua sudah di test

Kekurangan unit test…

  • Kerja programmer lebih besar
  • Hanya berlaku pada unitnya saja
  • Exhaustive input testing —– Kombinasi inputan sebanyak mungkin agar validasi complex
  • Regression —– Penyebab yang ditimbulkan karena perubahan (code)
  • Detail in slide…

Di SCM…(kalo ndak salah kepanjangannya Software Control Manager pa gitu)

Setiap perubahan akan dicatat atau didokumentasikan. Siapa yang mengubah, apa yang diubah, kapan diubah, dimana diubah akan diketahui. Semua bisa ditelusuri dan bahkan bisa di roll back.

Integration berguna untuk penggabungan modul. Misalnya sistem di kampus ingin mensinkronkan antara biro 1 dan biro 2, dengan integration kita bisa menggabungkan 2 modul tersebut.

Unit test berhasil tidak menjamin integration test sukses karena hubungannya dengan modul. Unit test bekerja dalam modul. Jika antar modul tidak bisa, harus integration.

BIG BANG

Di konsep ini, harus jadi semua baru diintegrasikan. Jadi sebelum mengintegrasikan, semua modul harus sudah jadi dan bisa diimplementasikan. Di konsep ini mengisolasi masalah susah, karena modul yang  digunakan sangat banyak. Ketika kita memperbaiki satu modul, bisa jadi yang lain menjadi salah. Oleh karena itu, konsep ini tidak cocok untuk pembangunan produk dalam skala besar.

INCREMENTAL

  • Top down

Sistem yang terbesar, pecah menjadi yang lebih kecil-kecil dan semakin detail. Driver modul utama besar, ada modul dummy (modul blueprint yang diberi nilai kembalian). Modul dummy yang belum bisa digunakan disebut stubs

  • Bottom up

Kebalikan dari top down, lebih aman. Dikerjakan dari bawah dulu, kemudian baru digabungkan dengan modul lain melalui driver.

  • Detail incremental on slide…

Next week akan membahas tentang high level testing…WOW!!!

Senin, 14 September 2009

Pertemuan ke empat ini mebahas tentang testing strategies. Perlu membuat strategi dalam proses testing agar proses testing bisa berjalan dengan cepat sehingga produk segera jadi dan mengurangi pembengkakan biaya yang mungkin bisa terjadi. Pembahasan pertemuan kali ini sangat panjang dan detail…

Diagram segitiga

Unit testing

Level paling bawah dalam bentuk fungsi atau method (OOP). Jika unit testing dilakukan dalam bentuk procedural akan lebih susah. Unit testing mengadopsi konsep OOP sehingga bisa diterapkan di berbagai bahasa. Berbagai bahasa sudah banyak yang menggunakan konsep OOP, karena sudah ada unit test. Di dalam unit test ada test case, test case berupa inputan. Inputan dibandingkan dengan data yang kita harapkan, jika output benar berarti implementasi berhasil.

Dalam unit test, cara membuatnya adalah membuat class yang baru yang berisi method-method untuk test. Pertama membentuk unit test baru test case. Banyak sekali unit test framework, contohnya: JUnit (java), CUnit (c#), dan lain-lain. Cara membuat test case tiap bahasa pemrograman bisa berbeda-beda. Untuk lebih detail tentang framework untuk unit test bisa search di wikipedia.

Keuntungan unit test…

  • Jika suati saat kita akan ganti code, kesalahan bisa dicegah karena sudah ada test case dalam unit test.
  • Mendukung test otomatis

Bisa dibuat berbasis GUI dan bisa otomatis dijalankan

  • Selagi coding bisa langsung menemui errornya

Waktu coding, jalankan unit test…..agar error tidak menumpuk dan merugikan aspek yang lain (lower cost to fix)

  • Waktu melakukan perubahan lebih mudah, karena ada kontrol.
  • Fitur baru tidak akan merusak code sebelumnya
  • Code yang mau bekerja akan bekerja di masa depan karena ada kontrol dan tidak error
  • Akan lebih mudah jika ada programmer baru, karena di test case sudah ada dokumentasinya, jadi tidak perlu mengajari lagi.
  • Semua implementasi bagus, karena semua sudah di test

Kekurangan unit test…

  • Kerja programmer lebih besar
  • Hanya berlaku pada unitnya saja
  • Exhaustive input testing

Kombinasi inputan sebanyak mungkin agar validasi complex

  • Regression

Penyebab yang ditimbulkan karena perubahan (code)

  • Detail in slide…

Di SCM…(kalo ndak salah kepanjangannya Software Control Manager pa gitu)

Setiap perubahan akan dicatat atau didokumentasikan. Siapa yang mengubah, apa yang diubah, kapan diubah, dimana diubah akan diketahui. Semua bisa ditelusuri dan bahkan bisa di roll back.

Integration berguna untuk penggabungan modul. Misalnya sistem di kampus ingin mensinkronkan antara biro 1 dan biro 2, dengan integration kita bisa menggabungkan 2 modul tersebut.

Unit test berhasil tidak menjamin integration test sukses karena hubungannya dengan modul. Unit test bekerja dalam modul. Jika antar modul tidak bisa, harus integration.

BIG BANG

Di konsep ini, harus jadi semua baru diintegrasikan. Jadi sebelum mengintegrasikan, semua modul harus sudah jadi dan bisa diimplementasikan. Di konsep ini mengisolasi masalah susah, karena modul yang  digunakan sangat banyak. Ketika kita memperbaiki satu modul, bisa jadi yang lain menjadi salah. Oleh karena itu, konsep ini tidak cocok untuk pembangunan produk dalam skala besar.

INCREMENTAL

  • Top down

Sistem yang terbesar, pecah menjadi yang lebih kecil-kecil dan semakin detail. Driver modul utama besar, ada modul dummy (modul blueprint yang diberi nilai kembalian). Modul dummy yang belum bisa digunakan disebut stubs

  • Bottom up

Kebalikan dari top down, lebih aman. Dikerjakan dari bawah dulu, kemudian baru digabungkan dengan modul lain melalui driver.

  • Detail incremental on slide…

Next week akan membahas tentang high level testing…WOW!!!

Leave a comment

Design a site like this with WordPress.com
Get started