Rekayasa Perangkat Lunak

40
Rekayasa Perangkat Lunak Teknik Pengujian Perangkat Lunak Ernastuti

Transcript of Rekayasa Perangkat Lunak

Page 1: Rekayasa Perangkat Lunak

Rekayasa Perangkat Lunak

Teknik Pengujian

Perangkat Lunak

Ernastuti

Page 2: Rekayasa Perangkat Lunak

• Pengembangan sistem perangkat lunak melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar.

• Kesalahan dapat mulai terjadi pada permulaan proses di mana sasaran ditetapkan secara tidak sempurna, kemudian dalam disain dan tahapan pengembangan selanjutnya.

Page 3: Rekayasa Perangkat Lunak

• Karena ketidakmampuan manusia untuk melakukan dan berkomunikasi dengan sempurna, maka pengembangan perangkat lunak harus selalu diiringi dengan aktivitas jaminan kualitas.

• Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas PL, dan mempresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean.

Page 4: Rekayasa Perangkat Lunak

• Dengan meningkatnya visibilitas perangkat lunak sebagai suatu elemen sistem,dan

• Biaya yang muncul akibat kegagalan perangkata lunak, maka

• memotivasi dilakukakannya perencanaan yang baik melalui pengujian yang teliti.

Page 5: Rekayasa Perangkat Lunak

• Hal Wajar:

Organisasi pengembangan PL meningkatkan 30 – 40 % usaha proyek pengembangan PL pada

TAHAP PENGUJIAN.

Page 6: Rekayasa Perangkat Lunak

Test-Case PL

• Yang dibahas pada Kuliah:

Dasar dan teknik Perangkat Lunak untuk disain test-case suatu PL.

Page 7: Rekayasa Perangkat Lunak

• Dasar-dasar pengujian PL menentukan sasaran penolakan bagi pengujian PL.

• Disain Test-case berfokus pada serangkain teknik untuk pembuatan test-case yang memenuhi keseluruhuan sasaran pengujian.

Page 8: Rekayasa Perangkat Lunak

Dasar-dasar Pengujian PL

• Pengujian menyajikan anomali yang menarik bagi perekayasa PL.

• Pada proses rekayasa PL, perekayasa pertama-tama berusaha membangun PL dari konsep abstrak ke implementasi yang dapat dilihat, baru kemudian dilakukan pengujian.

• Perekayasa menciptkan sederetan test-case yang dimaksudkan untuk membongkar PL yang sudah dibangun.

Page 9: Rekayasa Perangkat Lunak

• Pada dasarnya, pengujian merupakan satu langkah dalam proses

rekayasa PL yang dapat dianggap (secara psikologis) sebagai hal yang destruktif daripada konstruktif.

• Haruskah pengujian peninggalkan rasa bersalah pada pengembang PL?

• Apakah pengujian benar-benar bersifat merusak?

Jawaban untuk 2 pertanyaan tersebut adalah “TIDAK”.

Page 10: Rekayasa Perangkat Lunak

SASARAN PENGUJIAN

• Glen Myers tahun 79, menyatakan sejumlah aturan yang berfungsi sebagai sasaran pengujian:

1. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan.

2. Test-case yang baik adalah test-case yang memiliki probabilitas untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya.

3. Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya.

Page 11: Rekayasa Perangkat Lunak

• Sasaran Pengujian tersebut mengimplikasikan adanya perubahan titik pandang yang dramatis.

• Sasaran berlawanan dengan pandangan yang biasanya dipegang: bahwa pengujian yang berhasil adalah adalah pengujian yang tidak ada kesalahan yang ditemukan.

• Sasaran kita adalah mendisain pengujian yang secara sistematis mengungkap kelas kesalahan yang berbeda dan melakukannya dengan jumlah waktu dan usaha minimum.

Page 12: Rekayasa Perangkat Lunak

• Bila pengujian dilakukan secara sukses (sesuai dengan sasaran), maka akan ditemukan kesalahan di dalam perangkat lunak.

• Sebagai keuntungan sekunder, pengujian menunjukkan bahwa fungsi perangkat lunak bekerja sesuai dengan spesifikasi dan bahwa persyaratan kinerja telah dipenuhi.

• Sebagai tambahan, data yang dikumpulkan pada saat pengujian dilakukan, memberikan indikasi yang baik mengenai reliabilitas perangkat lunak dan beberapa menunjukkan kualitas perangkat lunak secara keseluruhan.

Page 13: Rekayasa Perangkat Lunak

• Tetapi ada satu hal yang tidak dapat dilakukan oleh pengujian, yaitu:

• Pengujian tidak dapat memperlihatkan tidak adanya cacat.

• Pengujian hanya dapat memperlihatkan bahwa ada kesalahan Perangkat Lunak.

Page 14: Rekayasa Perangkat Lunak

Prinsip Pengujian

• Sebelum mengaplikasikan metode untuk mendisain test-case yang efektif, perekayasa PL harus memahami prinsip dasar yang menuntun pengujian PL.

• Davis, tahun 1995, mengusulkan serangkaian prinsip pengujian yang telah diadaptasi untuk digunakan pada kuliah ini, yaitu:

Page 15: Rekayasa Perangkat Lunak

Prinsip Pengujian (1)

Semua pengujian harus dapat ditelusuri sampai kepersyaratan pelanggan.

• Sebagaimana telah diketahui, sasaran pengujian PL adalah untuk mengungkap kesalahan.

• Hal ini memenuhi kriteria bahwa cacat yang paling fatal (dari titik pandang pelanggan) adalah cacat yang menyebabkan program gagal memenuhi persyaratannya.

Page 16: Rekayasa Perangkat Lunak

Prinsip Pengujian (2)

Pengujian harus direncanakan lama sebelum pengujian itu mulai.

• Perencanaan pengujian dapat mulai segera setelah model persyaratan dilengkapi.

• Definisi detil mengenai test-case dapat dimulai segera setelah model disain diteguhkan. Dengan demikian semua pengujian dapat direncanakan dan dirancang sebelum semua kode dibangkitkan.

Page 17: Rekayasa Perangkat Lunak

Prinsip Pengujian (3)

Pengujian harus mulai dari yang kecil dan berkembang ke pengujian yang besar.

• Pengujian pertama yang direncanakan dan dieksekusi biasanya berfokus pada modul program individual.

• Selagi pengujian berlangsung maju, pengujian mengubah fokus dalam usaha menemukan kesalahan pada cluster model yang terintegrasi, dan akhirnya pada sistem secara keseluruhan.

Page 18: Rekayasa Perangkat Lunak

Prinsip Pengujian (4)

Pengujian yang mendalam tidaklah mungkin.

• Jumlah jalur permutasi untuk program yang berukuran menengahpun sangat besar. Karena itulah maka tidak mungkin mengeksekusi setiap kombinasi jalur skema pengujian.

• Tetapi dimungkinkan untuk secara adekuat mencakup logika program dan memastikan bahwa semua kondisi dalam disain prosedural telah diuji.

Page 19: Rekayasa Perangkat Lunak

Prinsip Pengujian (5)

• Untuk menjadi paling efektif, pengujian harus dilakukan oleh pihak ketiga yang independen.

• Yang dimaksudkan dengan kata yang paling efektif adalah pengujian yang memiliki probabilitas tertinggi di dalam menemukan kesalahan (sasaran utama pengujian).

• Perekayasa perangkat lunak yang membuat sistem bukanlah orang yang paling tepat untuk melakukan semua pengujian bagi perangkat lunak.

Page 20: Rekayasa Perangkat Lunak

Testabilitas

Dalam lingkungan yang ideal, perekayasa PL mendesain suatu program komputer, sebuah sistem, atau suatu produk dengan “testabilitas” di dalam pikirannya.

Hal ini memungkinkan individu yang berurusan dengan pengujian mendisain test-case yang efektif secara lebih mudah.

Page 21: Rekayasa Perangkat Lunak

Tetapi apakah testabilitas itu?

James Bach menggambarkan testabilitas dengan cara berikut:

Testabilitas PL secara sederhana adalah seberapa mudah sebuah program komputer dapat diuji.

Page 22: Rekayasa Perangkat Lunak

Karena pengujian sangat sulit, perlu diketahui apa yang dapat dilakukan untuk membuatnya menjadi mudah.

Kadang2 pemrogram bersedia melakukan hal-hal yang yang akan membantu proses pengujian, dan checklist mengenai masalah2 disain yang mungkin, fitur, dlsb, dapat menjadi berguna dalam bernegosiasi dengan mereka.

Page 23: Rekayasa Perangkat Lunak

Ada metrik yang dapat digunakan untuk mengukur testabilitas di dalam sebagian besar aspeknya.

Testabilitas digunakan untuk melihat melihat seberapa adekuat serangkaian pengujian tertentu akan mencakup produk.

Page 24: Rekayasa Perangkat Lunak

Cheklist

Checklist berikut ini memberikan serangkaian karakteristik yang membawa kepada PL yang dapat diuji.

1. Operabilitas:

semakin baik PL bekerja, semakin efisien PL dapat diuji.

2. Observabilitas:

apa yang anda lihat adalah apa yang diuji.

Page 25: Rekayasa Perangkat Lunak

1. Operabilitas: Sistem memiliki beberapa bug (bug menambah

analisis dan biaya pelaporan ke proses pengujian)

Tidak ada bug yag memblok eksekusi pengajian

Produk berkembang di dalam tahapan funsgional (memungkinkan pengembangan dan pengujian secara simultan).

Page 26: Rekayasa Perangkat Lunak

2. Observabilitas:

-Output yang berbeda dikeluarkan oleh masing-masing input.

-Tahap dan variabel sistem dapat dilihat atau diartikan selama eksekusi.

-Sistem dan variable yang lalu dapat dilihat atau diartikan (misalnya, log transaksi)

-Semua faktor yang mempengaruhi output dapat dilihat.-Output yang tidak benar dapat diidentifikasikan sengan

mudah.-Kesalahan internal dideteksi secara otomatis melalui

mekanisme self-testing.-Kesalahan internal dilaporkan secara otomatis.-Kode sumber dapat diakses.

Page 27: Rekayasa Perangkat Lunak

Checklist

3. Kotrolabilitas: semakin baik kita dapat mengontrol PL, semakin

banyak pengujian yang dapat diotomatisasi dan dioptimalkan.

4. Dekomposabilitas: dengan mengontrol ruang lingkup pengujian,

kita dapat dengan lebih cepat mengisolasi masalah dan melakukan pengujian kembali secara lebih halus.

Page 28: Rekayasa Perangkat Lunak

3. Kontrobilitas:-Semua output yang mungkin dapat dimunculkan

melalui beberapa kombinasi output.-Semua kode dapat dieksekusi melalui berbagai

kombinasi input.-Keadaan dan variable perangkat lunak dan

perangkat keras dapat dikontrol secara langsung oleh perekayasa pengujian.

-Format input dan output konsisten dan terstruktur.-Pengujian dapat dispesifikasi, dioptimasi, dan

direproduksi dengan baik.

Page 29: Rekayasa Perangkat Lunak

4. Dekomposabilitas:

-Sistem perangkat lunak dibangun dari modul-modul independen.

-Modul-modul perangkat lunak dapat diuji secara independen.

Page 30: Rekayasa Perangkat Lunak

Checklist

5. Kesederhanaan: semakin sedikit yang diuji, semakin cepat kita

dapat mengujinya.

6. Stabilitas: semakin sedikit perubahan, semakin sedikit

gangguan dalam pengujian.

7. Kemampuan untuk dapat dipahami: semakin banyak informasi yang kita miliki,

semakin halus pengujian yang akan dilakukan.

Page 31: Rekayasa Perangkat Lunak

5. Kesederhanaan:-Kesederhanaan fungsional (seperti, kumpulan

fitur adalah kebutuhan minimum untuk memenuhi persyaratan)

-Kesederhanaan struktural (seperti, arsitektur dimodularisasi untuk membatasi penyebaran kesalaha)

-Kesederhanaan kode (seperti, standar pengkodean diadopsi demi kemudahan inspeksi dan pemeliharaan)

Page 32: Rekayasa Perangkat Lunak

6. Stabilitas:

-Perubahan ke PL tidak sering.

-Perubahan ke PL terkontrol.

-Perubahan ke PL memvalidasi pengujian yang sudah ada.

-Kegagalan PL dapat diperbaiki dengan baik.

Page 33: Rekayasa Perangkat Lunak

7. Kemampuan untuk dapat dipahami.-Disain dipahami dengan baik-Ketergantungan di antara komponen internal,

eksternal, dan yang dipakai bersama, dipahami dengan baik.

-Perubahan ke disain dikomunikasikan.-Dokumentasi teknik dapat diakses dengan cepat.-Dokumentasi teknis diorganisasikan dengan baik.-Dokumentasi teknis spesifik dan detil.-Dokumentasi teknis akurat.

Page 34: Rekayasa Perangkat Lunak

• Atribut-atribut yang disusulkan James Bach tersebut dapat digunakan oleh perekayasa PL untuk mengembangkan suatu konfigurasi PL (yakni program, data, dokumen, dll) yang dapat dipertanggungjawabkan pada pengujian.

Page 35: Rekayasa Perangkat Lunak

Bagaimana dengan pengujian itu sendiri?

1. Pengujian yang baik memiliki probabilitas yang tinggi untuk menemukan kesalahan.

2. Pengujian yang baik tidak redundan.

3. Pengujian yang baik seharusnya jenis terbaik.

4. Pengujian yang baik tidak boleh terlalu sederhana atau terlalu kompleks.

Page 36: Rekayasa Perangkat Lunak

Bagaimana dengan pengujian itu sendiri?

Kaner tahun 1993 mengusulkan atribut2 daripengujian yang baik sbb:

1. Pengujian yang baik memiliki probabilitas yang tinggi untuk menemukan kesalahan.

Untuk mencapai hal ini, penguji harus memahami PL dan berusaha mengembangkan gambaran mental mengenai bagaimana PL dapat gagal. Idealnya kelas-kelas kegagalan itu diselidiki.

Sebagai contoh, kelas kegagalan potensial pada GUI adalah kegagalan untuk mengenali posisi mouse yang sesuai. Serangkaian pengujian akan dirancang untuk menguji mouse untuk memperlihatkan kesalahan di dalam pengenalan posisi mouse.

Page 37: Rekayasa Perangkat Lunak

2. Pengujian yang baik tidak redundan. Waktu pengujian dan sumber daya terbatas. Tidak ada

manfaatnya melakukan pengujian dengan tujuan yang sama dengan pengujian lainnya. Setiap pengujian harus memiliki tujuan yang berbeda (bahkan meskipun benar-benar berbeda). Sebagai contoh, modul PL Safe-Home didisain untuk mengenali password pemakai untuk mengaktifkan dan mendeaktifkan sistem. Dalam usaha mengungkap kesalahan pada input password, penguji mendisain serangkaian pengujian yang memasukkan serangkaian password. Password yang berlaku dan tidak berlaku (empat urutan numeris) diinputkan sebagai pengujian yang berbeda. Tetapi masing-masing password valid/invalid harus memeriksa mode kegagalan yang berbeda. Sebagai contoh, password invalid 1234 tidak boleh diterima oleh sistem yang diprogram untuk mengenali 8080 sebagai password yang valid. Bila 1234 diterima, maka kesalahan muncul. Pengujian yang lain, katakanlah 1235, akan memiliki tujuan yang sama dengan 1234 sehingga redundan. Tetapi input invalid 8081 atau 8180 memiliki perbedaan yang jelas, yang bersusaha memperlihatkan bahwa suatu kesalahan akan muncul untuk password yang dekat tetapi tidak sama dengan password valid.

Page 38: Rekayasa Perangkat Lunak

3. Pengujian yang baik seharusnya jenis terbaik.

Dalam suatu kelompok pengujian yang memiliki tujuan yang serupa, batasan waktu dan sumber daya dapat menghalangi eksekusi hanya kelompok kecil dari pengujian tersebut. Pada kasus semacam ini maka pengujian yang memiliki kemungkinan paling besar untuk mengungkap seluruh kelas kesalahan yang tinggi yang harus digunakan.

Page 39: Rekayasa Perangkat Lunak

4. Pengujian yang baik tidak boleh terlalu sederhana atau terlalu kompleks.

Meskipun kadang-kadang mungkin untuk menggabungkan serangkaian pengujian ke dalam satu test-case, secara umum masing-masing test-case harus dieksekusi secara terpisah.

Page 40: Rekayasa Perangkat Lunak

• Pengujian perangkat lunak merupakan – proses eksekusi suatu program dengan

maksud menemukan kesalahan – elemen kritis dalam jaminan kualitas

perangkat lunak– aktifitas yang mempresentasikan kajian

pokok dari spesifikasi, disain dan pengkodean