Candi Borobudur

Borobudur adalah nama sebuah candi Buddha yang terletak di Borobudur, Magelang, Jawa Tengah, Indonesia. Lokasi candi adalah kurang lebih 100 km di sebelah barat daya Semarang, 86 km di sebelah barat Surakarta, dan 40 km di sebelah barat laut Yogyakarta. Candi berbentuk stupa ini didirikan oleh para penganut agama Buddha Mahayana sekitar tahun 800-an Masehi pada masa pemerintahan wangsa Syailendra. Monumen ini terdiri atas enam teras berbentuk bujur sangkar yang diatasnya terdapat tiga pelataran melingkar, pada dindingnya dihiasi dengan 2.672 panel relief dan aslinya terdapat 504 arca Buddha.[1] Stupa utama terbesar teletak di tengah sekaligus memahkotai bangunan ini, dikelilingi oleh tiga barisan melingkar 72 stupa berlubang yang di dalamnya terdapat arca buddha tengah duduk bersila dalam posisi teratai sempurna dengan mudra (sikap tangan) Dharmachakra mudra (memutar roda dharma).

Gunung Bromo

Gunung Bromo (dari bahasa Sanskerta: Brahma, salah seorang Dewa Utama Hindu), merupakan gunung berapi yang masih aktif dan paling terkenal sebagai obyek wisata di Jawa Timur. Sebagai sebuah obyek wisata, Gunung Bromo menjadi menarik karena statusnya sebagai gunung berapi yang masih aktif. Bromo mempunyai ketinggian 2.392 meter di atas permukaan laut itu berada dalam empat wilayah, yakni Kabupaten Probolinggo, Pasuruan, Lumajang, dan Kabupaten Malang. Bentuk tubuh Gunung Bromo bertautan antara lembah dan ngarai dengan kaldera atau lautan pasir seluas sekitar 10 kilometer persegi. Gunung Bromo mempunyai sebuah kawah dengan garis tengah ± 800 meter (utara-selatan) dan ± 600 meter (timur-barat). Sedangkan daerah bahayanya berupa lingkaran dengan jari-jari 4 km dari pusat kawah Bromo.

Pulau Komodo

Pulau Komodo adalah sebuah pulau yang terletak di Kepulauan Nusa Tenggara. Pulau Komodo dikenal sebagai habitat asli hewan komodo. Pulau ini juga merupakan kawasan Taman Nasional Komodo yang dikelola oleh Pemerintah Pusat. Pulau Komodo berada di sebelah timur Pulau Sumbawa, yang dipisahkan oleh Selat Sape. Secara administratif, pulau ini termasuk wilayah Kecamatan Komodo, Kabupaten Manggarai Barat, Provinsi Nusa Tenggara Timur, Indonesia. Pulau Komodo merupakan ujung paling barat Provinsi Nusa Tenggara Timur, berbatasan dengan Provinsi Nusa Tenggara Barat.

Pulau Lombok

Pulau Lombok (jumlah penduduk pada tahun 2001: 2.722.123 jiwa)[1] adalah sebuah pulau di kepulauan Sunda Kecil atau Nusa Tenggara yang terpisahkan oleh Selat Lombok dari Bali di sebelat barat dan Selat Alas di sebelah timur dari Sumbawa. Pulau ini kurang lebih berbentuk bulat dengan semacam "ekor" di sisi barat daya yang panjangnya kurang lebih 70 km. Luas pulau ini mencapai 5.435 km², menempatkannya pada peringkat 108 dari daftar pulau berdasarkan luasnya di dunia. Kota utama di pulau ini adalah Kota Mataram.

Iguana

Iguana ialah sejenis kadal yang hidup di daerah tropis di Amerika Tengah, Amerika Selatan, dan Karibia. Pertama kali mereka disebutkan oleh seorang naturalis berkebangsaan Austria Josephus Nicolaus Laurenti pada tahun 1768. Ada 2 spesies yang berbeda dari jenis kadal ini: iguana hijau dan iguana Antilles Kecil.

Tampilkan postingan dengan label Rekayasa Perangkat Lunak. Tampilkan semua postingan
Tampilkan postingan dengan label Rekayasa Perangkat Lunak. Tampilkan semua postingan

Senin, 21 Oktober 2013

TDD Rekayasa Perangkat Lunak


TESTING - Test Case pada TDD

Test driven development adalah metodologi terbaru dalam pengembangan perangkat lunak. Berbeda dengan metodologi lain yang berbasiskan develop then test, metodologi ini mewajibkan pembuatan kasus-kasus pengujian terlebih dahulu sebelum membuat applikasi.
Langkah umumnya adalah :
1. buat class baru
2. buat class pengujinya
3. buat skeleton class baru
4. buat skeleton class penguji
5. kompilasi
6. jalankan di di nunit
7. jika ada kesalahan perbaiki kode class baru dan class penguji dan lakukan langkah 5 dan 6 lagi

Alasan-alasan yang menyebakan metodologi ini dikembangkan adalah :
• pengujian belakangan sering tidak lengkap
• sulit menguji ketika applikasi sudah komplek
• sulit menguji ketika sudah ada user interface (data entri lambat dan tidak reuse)
• manajemen test case sulit dilakukan kecuali pada tataran dimana perusahaan software sudah besar
• metodologi lain menghasilkan code yang kurang self explainatory (menjelaskan dirinya)

Kesulitan utama dalam pembuatan dalam metodologi ini adalah penciptaan kelengkapan kasus pengujian. Ada beberapa teknik yang akan penulis bagikan sebagai hasil uji coba penulis sejauh ini antara lain refactoring, boundary testing dan cylomatic testing. Semua jenis testing ini adalah white box testing. Inti ketiga testing di atas adalah membandingkan hasil yang diperolah dari method yang kita buat dan hasil kalkulasi yang dilakukan manual. Semuanya akan penulis jelaskan di bagian bawah artikel ini nanti.


Pembangkitan kasus uji pada prinsipnya mengacu pada operasi-operasi yang ada dalam sebuah method yang akan diuji. Secara garis besar operasi elementer dalam sebuah method meliputi :
• kalkulasi
• perulangan
• analisa kasus
Jadi sebagai bagian dari kelengkapan artikel akan dibuat beberapa contoh yang berdasarkan 3 operasi elementer di atas. Sebagai contoh akan dibuat beberapa method.
Refactoring adalah teknik memodifikasi source code. Teknik ini sebenarnya mungkin agak salah kaprah untuk dipakai sebagai bagian dari metodologi ini, karena tujuan refactoring adalah memperbaiki struktur internal source code agar mudah dipahami dan dibaca. Namun penulis merasa teknik ini adalah teknik pengujian parsial yang sangat membantu.

Contoh Kasus :
Sebagai contoh lihatlah evolusi method penguji bentuk air pada suhu tertentu di bawah ini
Versi 1
Function bentukair(pIntSuhu as integer) as string
Return “padat”
End function
Maka test casenya
• Bentukair(10) akan bernilai benar jika menghasilkan string padat
Versi 2
Function bentukair(pIntSuhu as integer) as string
If pIntSuhu<=0 then
Return “padat”
Else if pIntSuhu>=1 and pIntSuhu<=100 then
Return “Cair”
End if
End function
Maka test casenya
• bentukair(0)) akan bernilai benar jika menghasilkan string “padat”
• bentukair(10)) akan bernilai benar jika menghasilkan string “cair”
Boundary testing adalah teknik membangkitkan nilai-nilai test dengan cara menguji nilai-nilai batas yang ada di dalam analisa kasus yang digunakan. Sebagai contoh lihat method penguji bentuk air pada suhu tertentu di bawah ini
Function bentukair(pIntSuhu as integer) as string
If pIntSuhu<=0 then
Return “padat”
Else if pIntSuhu>=1 and pIntSuhu<=100 then
Return “cair”
Else
Return “gas”
End if
End function
Contoh ini akan menghasilkan beberapa kasus uji yaitu :
• bentukair(-1) akan bernilai benar jika menghasilkan string “padat”
• bentukair(0) akan bernilai benar jika menghasilkan string “padat”
• bentukair(1) akan bernilai benar jika menghasilkan string “cair”
• bentukair(2) akan bernilai benar jika menghasilkan string “cair”
• bentukair(99) akan bernilai benar jika menghasilkan string “cair”
• bentukair(100) akan bernilai benar jika menghasilkan string “cair”
• bentukair(101) akan bernilai benar jika menghasilkan string “gas”
Test case di atas diperoleh dari pengurangan dan penambahan angka 1 terhadap nilai nilai yang dijadikan analisa kasus.
If pIntSuhu<=0 menghasilkan -1, 0 dan 1
If pIntSuhu >=1 and pIntSuhu<=100 menghasilkan 1,2,99,100, 101.
Jika angka 1 tidak memadai gunakan 0.1,0.01,0.001 dan seterusnya bergantung pada tipe data (integer atau real)
Cyclomatic testing adalah sebuah testing untuk menguji semua jalur eksekusi yang ada di sebuah program dengan jalan membangkitkan semua test case yang mungkin. Kembali ke contoh penentu suhu air di atas. Kita dapat menambahkan variable lain untuk memperumit kondisi diatas katakanlah x yang berupa integer berisi nilai 1,2,3,4,5,6
Function bentukair(pIntSuhu as integer, x as integer) as string
If pIntSuhu<=0 then
If x= 1 then
Return “padat1”
Else if x=2 then
Return “padat2”
Else
Return “invalid”
End if
Else if pIntSuhu>=1 and pIntSuhu<=100 then
If x=3 then
Return “cair3”
Else x= 4 then
Return “cair4”
Else
Return “invalid”
End if
Else
If x=5 then
Return “gas5”
Else if x= 6 then
Return “gas6”
Else
Return “invalid”
End if
End function
Karena fungsi di atas merupakan pengembangan dari fungsi bentukair sebelumya maka kita dapat menggunakan testcase dari bentuk air sebelumnya menjadi bagian dari test case fungsi sekarang. Berikut ini adalah daftarnya
• bentukair(-1,0) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(-1,1) akan bernilai benar jika menghasilkan string “padat1”
• bentukair(-1,2) akan bernilai benar jika menghasilkan string “padat2”
• bentukair(-1,3) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(0,0) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(0,1) akan bernilai benar jika menghasilkan string “padat1”
• bentukair(0,2) akan bernilai benar jika menghasilkan string “padat2”
• bentukair(0,3) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(1,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(1,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(1,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(1,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(2,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(2,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(2,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(2,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(99,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(99,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(99,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(99,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(100,2) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(100,3) akan bernilai benar jika menghasilkan string “cair3”
• bentukair(100,4) akan bernilai benar jika menghasilkan string “cair4”
• bentukair(100,5) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(101,4) akan bernilai benar jika menghasilkan string “invalid”
• bentukair(101,5) akan bernilai benar jika menghasilkan string “gas5”
• bentukair(101,6) akan bernilai benar jika menghasilkan string “gas6”
• bentukair(101,7) akan bernilai benar jika menghasilkan string “invalid”
Untuk operasi elementer kalkulasi sebenarnya cukup sulit dilakukan karena begitu banyaknya data uji yang dapat dibuat. Sebagai contoh lihat fungsi tambah1 dibawah ini
Function tambah1(pint as integer) as integer
Return pint+1
End function

Penjelasan nya :
Kelihatannya mudah. Tetapi untuk menjamin sistem ini benar maka data ujinya bisa dari – tak hingga sampai + tak hingga. Sangat banyak. Jadi kita hanya bisa berharap saja.
Untuk operasi elementer perulangan maka dapat digunakan metode yang sama analisa kasus. Sebagai contoh akan dibuat sebuah fungsi yang menentukan apakah sebuah elemen bernilai x ada di dalam sebuah array. Array dinamakan mObjData dan tipe elemennya adalah integer
Function IsExist(x as integer) as boolean
Dim dBolKetemu as boolean =false
Dim I as integer
For i= 0 to mObjData.length-1 do
If x=mObjData[i] then
dBolKetemu=true
exit for
end if
End for
Return dBolKetemu
End function
Maka untuk menguji fungsi diatas adalah
• mObjData kosong tidak memiliki elemen apapun. Akan bernilai benar jika menghasilkan false
• mObjData berisi beberapa buah elemen dan x tidak ada di dalamnya. Akan bernilai benar jika menghasilkan false
• mObjData berisi beberapa buah elemen dan x ada di elemen pertama. Akan bernilai benar jika menghasilkan true
• mObjData berisi beberapa buah elemen dan x ada di elemen terakhir. Akan bernilai benar jika menghasilkan true jadi pada perulangan yang harus di test adalah jika :
• loop tidak dimasuki sama sekali
• loop dimasuki 1 kali
• loop dimasuki sebanyak n kali