• Tidak ada hasil yang ditemukan

Software Testing Strategies

N/A
N/A
Protected

Academic year: 2021

Membagikan "Software Testing Strategies"

Copied!
84
0
0

Teks penuh

(1)

Software Testing Strategies

Mata Kuliah Testing & Implementasi Sistem Program Studi Sistem Informasi 2013/2014 STMIK Dumai Materi 9 Pertemuan 12 & 13

(2)

--Acknowledgement

• Materi dari Chapter 17 – “Software Testing

Strategies.”

• Materi dalam slide ini sebagian besar diambil

dari slide buku [Pressman, 2010], mohon tidak

digunakan untuk keperluan lain selain kuliah

TIS.

• Sumber lain:

– Materi Testing dan Implementasi [Ayuliana, 2011]

– Teknik Pengujian Perangkat Lunak [Nur Cahyo]

(3)

Software Testing

• Testing adalah proses percobaan

penggunaan program dengan menguji

segala kemungkinan error untuk

mendapatkan software yang diterima oleh

pengguna.

(4)

Siapa yang Melakukan Testing?

developer independent tester

Mengerti sistem,

Namun akan melakukan testing sepengetahuannya, sesuai unit per fungsi sistem

Harus belajar tentang sistemnya, Akan banyak mencoba-coba

(5)

Apa yang diperlihatkan saat Testing

Errors

Kecocokan requirements

Performance sistem

(6)

Prinsip Pengujian

• Harus bisa dilacak hingga sampai ke

kebutuhan customer.

• Harus direncanakan sejak model dibuat.

• Prinsip Pareto: 80% error uncovered.

• Dari lingkup kecil menuju yang besar.

• Tidak bisa semua kemungkinan diuji.

(7)

Software yang Mudah Diuji

• Karakteristiknya:

– Operability: mudah digunakan.

– Observability: mudah diamati.

– Controlability: mudah dikendalikan.

– Decomposability: mudah diuraikan.

– Simplicity: lingkup kecil, semakin mudah diuji.

– Stability: jarang berubah.

(8)

Strategi Testing

• Strategi testing software mengintegrasikan

metode-metode disain test cases ke dalam

suatu rangkaian tahapan yang terencana

dengan baik sehingga pengembangan

software dapat berhasil.

• Strategi menyediakan peta yang menjelaskan

tahap-tahap yang harus dilakukan sebagai

bagian dari testing, dan membutuhkan usaha,

waktu, serta sumber daya untuk tahap-tahap

ini dilaksanakan.

(9)

Strategi Testing …(2)

• Strategi testing menjadi satu kesatuan dengan:

– perencanaan tes,

– disain test case,

– ekesekusi tes,

– pengumpulan serta evaluasi data hasil testing.

• Strategi testing software harus fleksibel untuk

mengakomodasi kustomisasi testing.

• Pada saat yang bersamaan, juga harus

konsisten dan tegas agar dapat melakukan

(10)

Karakteristik Kerangka Testing

• Karekteristik umum kerangka testing:

– Testing dimulai dari tingkat komponen terkecil sampai pada integrasi antar komponen pada keseluruhan

sistem komputer tercapai.

– Teknik testing berbeda-beda sesuai dengan waktu penggunaannya.

– Testing dilakukan oleh pengembang software dan

(untuk proyek besar) dilakukan oleh suatu grup tes yang independen.

– Testing dan debugging adalah aktivitas yang berlainan, tapi debugging harus diakomodasi disetiap strategi

(11)

Verifikasi vs. Validasi

• Testing software sering dikaitkan dengan verifikasi dan validasi (V&V).

• Verifikasi merupakan sekumpulan aktivitas yang

memastikan software telah melakukan fungsi tertentu dengan benar.

• Validasi merupakan sekumpulan aktivitas yang memastikan bahwa software yang dibangun dapat dilacak terhadap

kebutuhan/permintaan pelanggan. • Menurut Boehm:

– Verifikasi  “Are we building the product right?” – Validasi  “Are we building the right product?”

(12)

• Verifikasi:

– “Apakah kita membangun produk dengan

benar?”

– Software seharusnya sesuai dengan

spesifikasinya. Gunakan proses software yang

bagus.

• Validasi:

– “Apakah kita membangun produk yang benar?”

– Software seharusnya melakukan apa yang

pengguna benar-benar butuhkan

(13)

Tentang Testing

• Testing merupakan basis (fase) terakhir dimana

kualitas dapat dinilai dan error dapat diidentifikasi.

• Tapi testing tidak boleh dipandang sebagai jaring

pengamanan.

• “Anda tidak dapat melakukan tes terhadap kualitas.

Jika kualitas tidak ada sebelum Anda memulai testing,

maka kualitas juga tidak akan ada saat Anda selesai

melakukan testing.”

• Kualitas dibangun ke dalam software sepanjang proses

rekayasa software.

(14)

Tentang Testing

• Penerapan metode dan alat bantu, manajemen dan

pengukuran yang solid, akan mengarah pada kualitas

yang ditetapkan pada saat testing berlangsung.

• Dari Miller:

“Motivasi yang patut digaris bawahi dari testing adalah

untuk memberikan dukungan kualitas software

dengan metode-metode yang dapat diaplikasikan

secara ekonomis dan efektif baik pada sistem berskala

besar atau sistem berskala kecil.”

(15)

Pengorganisasian Testing

Software

• Tujuannya:

Untuk mengurangi resiko terjadinya konflik, dan mempersiapkan diri apabila konflik tetap terjadi.

• Ada sejumlah konsep yang salah tentang testing, antara lain:

– Pengembang software tidak perlu melakukan testing sama sekali.

– Software diberikan pada orang lain (yang tak dikenal

kredibilitasnya), yang akan melakukan tes pada software tersebut tanpa pemahaman dan salah arah.

– Tester baru bekerja atau ikut serta ke dalam proyek, hanya apabila tahap testing pada proyek tersebut

(16)
(17)
(18)
(19)

Unit Testing

Modul 1

Kumpulan Test case

Modul #n

Unit Testing Modul 1

Modul 2

Unit Testing Modul 2

(20)

Unit Testing

• Unit testing berfokus pada usaha verifikasi pada unit terkecil dari disain software  komponen atau modul software.

• Penggunaan diskripsi disain tingkat komponen sebagai

tuntunan, jalur kendali yang penting dites untuk menemukan

errors, terbatas hanya pada modul tersebut.

• Kompleksitas relatif terhadap tes dan errors yang dibatasi oleh cakupan yang telah ditetapkan pada unit testing.

• Unit testing berorientasi pada testing white box, dan tahapan dapat dilakukan secara paralel pada banyak komponen.

(21)

Unit Testing

Modul yang akan ditest test cases results software engineer

(22)

Tes yang Terdapat di Unit Testing

• Modul antar muka  dites untuk memastikan aliran informasi, apakah telah berjalan seperti yang diharapkan (masuk dan

keluar dari unit program yang dites)

• Struktur data lokal  diperiksa untuk memastikan apakah

penyimpanan data telah merawat integritasnya secara temporal selama tahap eksekusi algoritma

• Batasan kondisi  dites untuk memastikan modul beroperasi dengan benar pada batasan yang telah ditetapkan untuk limitasi atau batasan pemrosesan

• Semua jalur independen (basis paths) pada struktur kendali  diperiksa untuk memastikan apakah semua pernyataan dalam modul telah dieksekusi minimal sekali

(23)

Unit Testing

interface

struktur data lokal batasan kondisi

bagian yang independent bagian penanganan error

Modul yang akan ditest

(24)

Lingkungan Unit Test

Module Stub driver HASIL AKHIR test cases interface

struktur data lokal batasan kondisi

bagian yang independent bagian penanganan error

(25)

• Tes aliran data antar modul dibutuhkan sebelum

inisialisasi tes lainnya.

– Jika data tidak masuk dan keluar dengan benar, semua tes lainnya akan beresiko gagal.

– Sebagai tambahan, struktur data lokal harus diperiksa dan akibat pada keseluruhan data ditentukan (jika

memungkinkan) selama unit testing.

(26)

Perlu diperhatikan pada Unit Testing

• Pemilihan jalur eksekusi testing adalah tugas yang

esensial selama unit test.

• Test cases harus didisain untuk melihat:

– kesalahan dari komputasi yang salah, – komparasi yang tidak benar,

– alur kendali yang tak tepat.

• Basis path dan loop testing adalah teknik yang efektif

untuk hal ini.

(27)

• Kesalahan komputasi yang umum terjadi:

– Kesalahan prioritas aritmetik. – Mode operasi campuran.

– Ketidakakuratan presisi.

– Kesalahan representasi simbolik dari ekspresi.

• Komparasi dan alur kendali merupakan satu

kesatuan. Biasanya perubahan alur kendali

terjadi setelah komparasi.

(28)

• Test case harus mencakup kesalahan:

– Komparasi tipe data berbeda

– Operator logika dan prioritas yang tak benar – Terminasi loop yang tidak konsisten atau tidak

semestinya.

– Kegagalan apabila konflik iterasi terjadi.

(29)

Kesalahan Umum Testing

• Kesalahan potensial yang harus dites saat evaluasi

penanganan kesalahan:

– Diskripsi kesalahan tidak jelas.

– Catatan kesalahan tidak berfungsi untuk

menghitung kesalahan.

– Diskripsi kesalahan tidak menyediakan informasi

yang cukup untuk mengarahkan penyebab

kesalahan.

– Tidak adanya prioritas kesalahan

– Kesalahan data, kesalahan sistem, atau yang lainnya

tidak dipilah dengan benar

(30)

• Pada kebanyakan aplikasi, drivers tidak lebih dari

“program utama” yang menerima data test case,

memasukkan data ke komponen yang dites, dan

mencetak hasil yang bersangkutan.

• Stubs berlaku untuk menggantikan modul-modul

yang merupakan subordinat (dipanggil oleh)

komponen yang dites. Stub atau “dummy

subprogram” menggunakan antar muka modul

subordinat, mungkin melakukan manipulasi data

minimal, mencetak masukan verifikasi, dan

mengembalikan kendali ke modul yang sedang dites.

(31)

• Drivers dan stubs menimbulkan biaya lebih. Karena

software harus ada penambahan kode (biasanya

tidak berdasarkan disain formal), yang tidak

diikutsertakan saat produk software dirilis.

• Pada kasus-kasus tertentu, testing dapat ditunda

penyelesaiannya (kondisi komplit) sampai tahap

integration test (dimana drivers atau stubs juga

digunakan).

(32)

• Unit testing disederhanakan bila suatu

komponen didisain dengan kompleksitas

tinggi.

• Ada beberapa situasi dimana sumber daya

tidak mencukupi untuk melakukan unit testing

secara komplit.

• Untuk itu perlu melakukan pemilihan

modul-modul yang kritis dan yang mempunyai

kompleksitas tinggi, untuk unit testing.

(33)
(34)

Integration Testing

• Integrasi testing meliputi prosedur-prosedur yang disertakan untuk menghubungkan modul-modul menjadi subsistem

maupun sistem lengkap.

• Ujicoba integrasi dibangun dari spesifikasi sistem, yaitu ujicoba terhadap hubungan antar program-program untuk

menentukan kemungkinan pelaksanaan dan kekuatannya. • Ujicoba diaplikasikan dan diutamakan pada ujicoba interface

(35)

Integration Testing

• Terdapat dua pendekatan yang dapat dilaksanakan:

– Incremental testing, modul dapat ditambahkan pada

modul lainnya untuk ujicoba individual, biasanya berupa

penulisan modul baru.

– Nonincremental testing, seluruh modul dalam program

dapat dibangun terlebih dahulu, kemudian digabungkan

dan diujicobakan sebagai satu entitas, sehingga seluruh interface dalam modul diujicoba dalam satu waktu untuk keseluruhan program.

(36)

Integration Testing Strategies

Options:

Pendekatan “big bang”

(37)

Incremantal Testing

• Terdapat beberapa metode untuk

mengaplikasikan Incremental testing, yaitu :

a. Top-down testing

b. Bottom-up testing

c. Kombinasi (Sandwich Testing)

d. Regression & Smoke Testing

(38)

Top-Down Integration

Modul teratas dites per sub modul

Tes satu sub modul, dan tes sub-sub modul yang ada di dalamnya

Lakukan hingga hirarki terbawah

A

B

C

D E

(39)

Top-Down Integration

Urutannya: •M1 •M2 •M5 •M8 •M6 •M3 •M7 •M4

(40)

Top Down Integration

• Diaplikasikan pada modul berbasis top-down/mengarah ke bawah berdasarkan kontrol hirarki., atau diproses dari modul level atas diturunkan sampai modul detail.

• Komponen-komponen high level dari sistem diintegrasikan dan diujicoba sebelum rancangan dan implementasinya lengkap. • Penggabungan modul subordinate dengan modul utama dapat

dilakukan dengan struktur depthfirst atau breadth-first.

• Integrasi depth-first akan mengintegrasikan modul dijalur utama, misal dari gambar adalah A,

• B, C, D akan diintegrasikan lebih dulu, kemudian mengarah ke jalur tengah dan kanan

• Integrasi breadth-first akan mengintegrasikan secara langsung seluruh modul subordinate.

(41)

Bottom-Up Integration

drivers digunakan sekali dalam

satu waktu, jalur depth didahulukan

Modul-modul ini digrup terlebih dahulu, untuk kemudian dites secara integrasi

A B C D E F G cluster

(42)
(43)

Bottom-Up Integration

• Strategi integrasi bottom-up dapat

diimplementasikan dengan langkah-langkah

berikut :

1. Modul low-level dikombinasikan kedalam cluster

(kadang disebut builds) yang menampilkan

subfungsi software khusus

2. Sebuah driver (program kontrol untuk ujicoba)

dibuat untuk mengkoordinasikan kasus uji input dan

output

3. Cluster diujioba

4. Driver dihapuskan dan cluster dikombinasikan

(44)

Bottom-Up Integration

• Ujicoba dimulai dari level terendah dari struktur program dan bergerak keatas sebagai sebuah modul yang

diintegrasikan dan diujicoba.

• Prinsip yang hampir sama dengan top-down juga dilakukan diujicoba bottom-up, dimulai dari bagian input lalu bagian output sebagai strategi ujicoba keseluruhan.

• Sebuah driver dibangun untuk ujicoba modul pada

low-level. Driver merupakan modul ujicoba, atau rutin program yang membangkitkan pemanggilan terhadap modul pada

low-level dan melemparkan data melalui interface.

• Driver mensimulasikan aksi dari grup yang belum dibangun dari superordinat ke modul yang diujicoba

(45)

Bottom-Up Integration

• Keuntungan dari pendekatan bottom-up

untuk mengujicoba identifikasi lebih dulu alur

proses detail yang mungkin terjadi antar

interface low-level dan melatih lebih dulu

kasus input/output.

• Kekurangannya adalah pendekatan ini

menunda kemampuan untuk menampilkan

keseluruhan, kerangka program sampai

seluruh modul telah diujicoba dan

ditempatkan.

(46)

Top-Down vs Bottom-Up

1. Architecture validation, ujicoba top-down mencari kesalahan

pada arsitektur sistem dan level teratas didesain pada tahap awal proses pembentukan. Biasanya berupa kesalahan struktural,

sehingga semakin cepat terdetesi akan mengurangi biaya.

Sedangkan ujicoba bottom-up, desain level teratas tidak divalidasi sampai tahapan terakhir diproses.

2. System demonstration, dengan ujicoba top-down demonstrasi

sistem yang sudah dapat berjalan dapat dilakukan pada awal

proses. Sedangkan dengan ujicoba bottom up, demonstrasi sistem dapat dilakukan bila yang dilakukan jika sistem dibangun dari

(47)

Top-Down vs Bottom-Up

3. Test implementation, ujicoba topdown sulit untuk

diimplementasikan karena simulasi stubs program lower level dari sistem harus dibuat. Ketika digunakan ujicoba botom-up, harus menuliskan driver ujicoba untuk melatih komponen lower level . Ujicoba driver ini mensimulasikan komponen lingkungan dan pemanggilan komponen yang akan diujicoba.

4. Test observation, baik ujicoba top-down maupun bottom-up

mempunyai masalah dengan ujicoba observasi. Pada top-down, level atas dari sistem yang telah diimplementasikan lebih dulu tidak dapat menghasilkan output, untuk mengujicoba level ini maka dibuat agar dapat menghasilkan output. begitu pula

(48)

Metode Testing Kombinasi

Ciri-cirinya:

• Tidak ada aturan baku yang menetapkan kapan

digunakan ujicoba dengan pendekatan topdown

atau bottom-up dilaksanakan.

• Untuk keefektifan dilakukan dikombinasikan

keduanya.

• Pada dasarnya sama-sama menggunakan metode

modul per modul.

(49)

Sandwich Testing

Top modules are tested with stubs

Worker modules are grouped into builds and integrated

A B C D E F G cluster

(50)

Regression Testing

• Regression testing: dilakukan pengujian setiap

kali ada modul baru yang diintegrasikan atau

ada modul yang berubah.

• Smoke testing: test daily, untuk proyek jenis

kritis-waktu.

(51)
(52)
(53)

Higher Order Testing

• Validation testing

– Fokus pada requirement sistem • Alpha/Beta testing

– Fokus pada penggunaan kustomer • System testing

– Recovery testing

• Verifikasi kemampuan recovery sistem – Security testing

• Fokus pada proteksi sistem – Stress testing

• Tes sistem pada kondisi yang abnormal – Performance Testing

(54)

Validasi Testing

• Kriteria yang diuji pada saat validasi testing antara lain:

– Format input – Format output – Organisasi file – Akses file

– Interface

• Ujicoba ini mengaplikasikan teknik black-box dalam mencari kesalahan atau kegagalan dalam paket software lengkap. • Pada dasarnya validasi mengikuti ujicoba modul dan ujicoba

integrasi.

• Sangat tidak mungkin menguji seluruh sistem sebelum seluruh modul diujicoba dan dibuat penyesuaian.

(55)

Validasi Testing

• Fungsi program dites untuk memastikan kesesuaian

dengan desain.

• Record input direpresentasikan untuk ujicoba fungsi

yang menyertakan field data yang benar dan tidak.

• Termasuk situasi dimana nilai data alphanumerik lebih

panjang daripada field yang telah didesain atau

penempatan nilai yang salah seperti nilai data numerik

diberikan pada field alphanumerik

• Parameter input dan output diperiksa untuk nilai

elemen data yang benar dan salah untuk menetapkan

kemampuan program dalam mengatasinya.

(56)
(57)

Alpha & Beta Testing

• Biasanya proses yang disebut alpha and beta

testing, digunakan untuk menemukan kesalahan

yang hanya bisa ditemukan oleh end user.

• Ketika ujicoba alpha dilakukan, maka software

dipergunakan sebagaimana mestinya, dengan

pengembang software yang tetap mengawasi

apabila terjadi kesalahan. Atau dengan kata lain

ujicoba alpha dilakukan dalam lingkungan yang

terkontrol.

(58)

Alpha & Beta Testing

Ujicoba beta dilakukan dari sisi end user, baik seorang maupun beberapa orang, dimana pihak pengembang tidak berada bersama para end user tersebut. Atau

dengan kata lain, ujicoba beta dilakukan dalam lingkungan yang tidak terkontrol oleh pengembang.

• Para pengguna akan mencatat semua kesalahan yang terjadi dan melaporkannya kepada pihak pengembang dalam interval waktu tertentu.

• Sebagai hasilnya, pihak pengembang akan melakukan

modifikasi dan melakukan persiapan untuk mengeluarkan produknya ke seluruh pengguna.

(59)

Alpha & Beta Testing

• Disebut sukses jika fungsi P/L dapat diterima oleh

kustomer (berdasarkan dokumen SKPL).

Kesimpulannya …

• Alpha test: dilakukan di tempat developer oleh

customer pada lingkungan yang terkendali.

• Beta test: dilakukan di tempat customer tanpa

melibatkan developer pada lingkungan yang tak

terkendali.

(60)

System Testing

• Mengujicoba keseluruhan sistem dengan lingkungannya. • Tidak hanya menguji program tetapi juga mengujicoba

kemampuan keseluruhan sistem.

• Program dapat berfungsi dengan baik ketika dibandingkan dengan spesifikasi.

• Ujicoba sistem dilakukan pada program setelah melalui testing unit, integrasi dan fungsi.

• Ujicoba meliputi evaluasi kemampuan sistem untuk

berfungsi dalam koordinasi-integrasi manual, off-line, mesin dan proses komputer untuk memastikan bahwa seluruh

(61)

System Testing

• Meguji sistem berbasis komputer secara

menyeluruh, termasuk juga hubungannya dengan

sistem yang lain.

• Diantaranya:

– Recovery testing, jika system failure. – Security testing, jika terjadi serangan.

– Stress testing, terhadap jumlah, frekuensi dan volume pekerjaan.

– Performance testing, untuk mengukur pemakaian sumber daya.

(62)

Recovery testing

• Beberapa sistem berbasis komputer harus mampu me-recover jika terjadi kesalahan, dan mengulang proses dengan waktu yang telah ditentukan sebelumnya.

• Ujicoba recovery merupakan ujicoba sistem yang memaksa

software menjadi gagal dengan berbagai cara dan memverifikasi apakah recovery dilaksanakan secara tepat.

• Jika recovery dilaksanakan secara otomatis, maka lakukan

pengecekan inisialisasi ulang, mekanisme checkpointing, recovery data, dan restart.

• Jika recovery memerlukan bantuan manusia, waktu untuk

perbaikan dievaluasi untuk memastikan apakah sesuai dengan limit/batas waktu yang ada.

(63)

Security Testing

• Melakukan verifikasi terhadap proteksi sistem,

• Proteksi login-logout

• Proteksi pada tiap tipe user (apakah admin, user biasa atau yang lainnya)

(64)

Stress Testing

• Stress test didesain untuk menghadapkan program pada situasi yang abnormal.

• Secara mendasar, seseorang yang melakukan stress testing akan menanyakan: Seberapa jauh kita dapat menggunakan mesin ini sebelum mereka gagal?

• Stress testing mengeksekusi sistem dalam perilaku yang membutuhkan sumberdaya dalam jumlah, frekuensi dan volume yang abnormal.

• Contoh: Tes jika 100 user melakukan edit profil dalam waktu bersamaan, bagaimana fungsi input akan bereaksi.

• Intinya, kasus uji yang memerlukan memory maksimum atau sumber daya lain untuk dieksekusi.

(65)

Stress Testing

• Variasi dari stress testing merupakan teknik

yang disebut sensitivity testing.

• Dalam beberapa situasi (kebanyakan dalam

algoritma matematika) sejumlah range data

yang valid dalam suatu batasan tertentu

dapat menyebabkan proses yang tidak lazim

atau penurunan performa.

(66)

Performance Testing

• Untuk sistem realtime atau embedded, software yang menyediakan fungsi yang dibutuhkan tetapi tidak sesuai dengan kebutuhan performanya, maka software tersebut tidak dapat diterima.

• Performance testing didesain untuk menguji performa real time dari software dalam konteks integrasi sistem.

• Performance testing dilakukan dalam setiap tahapan testing, walaupun pada tahapan unit/modul sudah terlaksana melalui white box testing

• Biasanya performance testing dipasangkan dengan stress testing dan membutuhkan instrumen hardware dan

(67)

Acceptance Testing

• Ujicoba ini merupakan tahapan akhir dalam proses ujicoba sebelum sistem diterima untuk penggunaan operasional

• Sistem diujicoba dengan data yang diberikan oleh pengguna (bukan data simulasi) untuk dinilai penerimaan/kelayakannya. • Acceptance testing dapat mengungkapkan kesalahan dan

penghilangan definisi kebutuhan sistem karena data

sesungguhnya akan melatih sistem dengan cara yang berbeda dibandingkan data ujicoba.

• Acceptance testing juga dapat mengungkapkan

masalah-masalah kebutuhan ketika fasilitas sistem tidak sesuai dengan kebutuhan user atau performa sistem tidak seperti yang

(68)

Tahapan Testing

High Order Testing Integrasi Testing Unit Testing Top-Down Kombinasi (Sandwich) Bottom-Up Validasi Testing Alpha/Beta Testing System Testing Recovery Testing Performance Testing Security Testing Stress Testing Acceptance Testing

(69)
(70)
(71)

Debugging

• Memperbaiki error yang ditemukan pada saat

testing (yang sukses).

• Kaidah dasar sebelum debug:

– Apakah penyebab bug dihasilkan kembali oleh

bagian program yang lain?

– Apakah ada bug selanjutnya yang mungkin

muncul jika suatu bug diperbaiki?

– Apa yang bisa dilakukan untuk mencegah bug

terjadi untuk pertama kalinya?

(72)

Debugging

• Debugging terjadi sebagai konsekuensi dari

keberhasilan ujicoba/testing, yaitu ketika uji

kasus berhasil menemukan kesalahan, debugging

merupakan proses yang memberi hasil dalam

menghilangkan kesalahan-kesalahan tersebut.

• Debugging merupakan hasil dari ujicoba-ujicoba

sebelumnya yang akan menempatkan dan

memperbaiki kesalahan yang terjadi.

(73)
(74)

Gejala & Penyebab

gejala

(symptom) penyebab (cause)

Gejala dan penyebab suatu error bisa terjadi di tempat berbeda

Gejala error bisa terjadi saat error yang lain baru saja diperbaiki

Penyebab error bisa terjadi akibat dari kesalahan kompilasi

Penyebab error dapat terjadi dari asumsi semua orang

Ada gejala error yang terjadi hanya sesekali saja

(75)

Konsekuensi Bugs

Tingkat Kerusakan

RinganMengganggu (annoying)

Menjengkelkan (disturbing) Serius Ekstrim Bencana Infeksi Tipe Bug

Bug Categories: function-related bugs,

system-related bugs, data bugs, coding bugs, design bugs, documentation bugs, standards

(76)

Proses

Debugging

Proses Debugging:

Locate error  Desain perbaikan error  Perbaiki Error  Re-test program

• Proses debugging dimulai dari eksekusi uji, hasilnya

diperkirakan dan kurangnya keterhubungan antara hasil yang diharapkan dengan hasil yang sesungguhnya akan ditemui.

(77)

Proses

Debugging

• Prose debugging berusaha untuk menyesuaikan gejala dengan sebab yang akan mengarahkan pada perbaikan kesalahan

• Proses debugging akan selalu mempunyai salah satu dari 2 output yang mungkin :

– 1. Sebab akan ditemukan, diperbaiki dan dihilangkan

– 2. Sebab tidak ditemukan. Dalam kasus selanjutnya orang yang melaksanakan debugging akan memperkirakan penyebabnya, mendesain kasus uji untuk membantu mem-validasi

(78)

Pendekatan Debugging

Beberapa pendekatan untuk membantu identifikasi antara lain:

1. Memory dumps, tampilan sederhana yang menampilkan

status dari memory pada saat itu, biasanya pada saat

kesalahan(error) terdeteksi. Memory dumps memungkinkan

untuk mencari data tertentu yang diproses secara salah.

2. Execution trace, menyebabkan komputer mencetak catatan

dari urutan eksekusi program. Penelusuran pada umumnya

akan mendaftar nama-nama modul yang dieksekusi. Penelusuran eksekusi disajikan sebagai tool untuk

(79)

Pendekatan Debugging

3. Program desk checking, dilakukan melalui pemeriksaan detail dari

source code yang mengakibatkan pengeksekusian logika dalam pikiran pemeriksa. Seorang programer yang berpengalaman dapat menelusuri logika dan perosesan data dengan me-review source code-nya.

4. Hypothesis testing, melihat program melalui metode analisis.

Berlaku ketika programer mengaplikasikan teknik penanganan dan perbaikan masalah. Ketika satu kesalahan teridentifikasi, analisis dilakukan untuk menentukan jenis kesalahan pemrograman yang mungkin menghasilkan hasil tertentu. Hipotesis berisikan tentang dimana kemungkinan terjadi kesalahan dalam program dan jenis kesalahan apa yang menyebabkan deteksi kesalahan.

(80)

Teknik Debugging

Terdapat 3 kategori pendekatan dalam debugging:

• A. Brute force

– 1. Mengaplikasikan metode ini dengan menggunakan filosofi ”let the computer find the error”

– 2. Menggunakan Memory dumps, tampilan sederhana

yang menampilkan status dari memory pada saat itu,

biasanya pada saat kesalahan(error) terdeteksi.

Memory dumps memungkinkan untuk mencari data

tertentu yang diproses secara salah.

– 3. Walaupun informasi yang dihasilkan sering sukses, tetapi memerlukan usaha dan waktu yang lebih

(81)

Teknik Debugging

• B. Backtracking

– 1. Merupakan metode yang umum digunakan pada program skala kecil – 2. Dimulai dari saat gejala kesalahan terjadi, kode program ditelusuri

kebelakang secara manual sampai saat kesalahan ditemukan

– 3. Execution trace, menyebabkan komputer mencetak catatan dari urutan

eksekusi program. Penelusuran pada umumnya akan mendaftar

nama-nama modul yang dieksekusi. Penelusuran eksekusi disajikan sebagai tool

untuk menentukan urutan proses dari suatu program. Jika program

digagalkan karena suatu kesalahan, maka akan dapat ditemukan modul terakhir yang dieksekusi dan dititik ini perbaikan akan dilaksanakan. – 4. Program desk checking, dilakukan melalui pemeriksaan detail dari

source code yang mengakibatkan pengeksekusian logika dalam pikiran

pemeriksa. Seorang programer yang berpengalaman dapat menelusuri logika dan perosesan data dengan me-review source code-nya.

– 5. Sayangnya semakin banyak baris kode yang ditelususi maka proses akan semakin lama.

(82)

Teknik Debugging

• C. Cause elimination

– 1. Data yang terkait dengan kesalahan diorganisasikan untuk mengisolasi penyebab potensial.

– 2. Hypothesis testing, melihat program melalui metode

analisis. Berlaku ketika programer mengaplikasikan teknik

penanganan dan perbaikan masalah. Ketika satu kesalahan teridentifikasi, analisis dilakukan untuk menentukan jenis kesalahan pemrograman yang mungkin menghasilkan hasil tertentu. Hipotesis berisikan tentang dimana kemungkinan terjadi kesalahan dalam program dan jenis kesalahan apa yang menyebabkan deteksi kesalahan.

(83)

Kesimpulan

• Pengujian software adalah elemen kritis dari jaminan

kualitas software dan merupakan review puncak

terhadap spesifikasi, desain dan pembuatan program.

• Pengujian software menghabiskan upaya 30-40% dari

total pekerjaan proyek.

• Untuk proyek yang membahayakan nyawa manusia,

biaya pengujian bisa 3-5 X proyek biasa.

• Test case yang bagus adalah yang memiliki

kemungkinan terbesar untuk menemukan error yang

tersembunyi.

• Pengujian yang sukses adalah yang berhasil

menemukan error yang tersembunyi.

(84)

Teknik Testing

Referensi

Dokumen terkait

Dalam menentukan siswa berprestasi pada kurikulum 2013 di SMKN 1 Gedangan, dengan menggunakan cara pengambilan rata-rata dari semua total nilai baik nilai

Peserta dan atau pemberi kerja wajib melaporkan akibat kecelakaan atau penyakit akibat kerja kepada BPJS Ketenagakerjaan dan instansi yang bertanggung jawab di

Berdasarkan uraian yang dilakukan dapat diambil kesimpulan bahwa, komposisi yang tepat pada produk ini adalah dengan volume tepung jagung yang lebih banyak

Berdasarkan definisi tersebut, dapat disimpulkan bahwa return on investment adalah rasio yang mengukur laba bersih yang diperoleh perusahaan atas jumlah aktiva

Adalah mutasi yang menyebabkan perubahan kodon spesifik suatu asam amino ke asam amino yang lain..

Jika ada suatu hal yang tidak kamu suka atau sesuatu yang ingin disampaikan ungkapkan dengan jelas dan alasan yang tepat serta bahasa yang sopan. Baik, sampai

Jika auditor selalu ditekan dengan adanya anggaran waktu yang cepat maka auditor akan bertindak terburu-buru dan tidak hati-hati atas pemeriksaan bukti-bukti yang

Teknik yang digunakan dalam iklan ini adalah dengan cara memberikan demonstrasi kepada konsumen tentang manfaat suatu produk yang ditawarkan7. Slice