Suwun mas bro mbak sist

Minggu, 08 Januari 2012

Teknik pengujian perangkat

 TEKNIK PENGUJIAN PERANGKAT LUNAK
(Software Testing Techniques)
 By
 Kustanto, S.T.,M.Eng
 Overview
 Berhubungan dengan berfungsinya
komponen-komponen yang teridentifikasi
dengan jelas.

 Komponen-komponen dapat berupa fungsi
atau sekumpulan metode yang digabungkan menjadi modul atau objek


 KENAPA HARUS DIUJI ?
 Kita bukan seorang programmer yg cukup baik
 Kita mungkin tidak dapat cukup berkonsentrasi untuk menghindari kesalahan
 Kita kadang2 lupa menggunakan pemrograman terstruktur secara penuh, perancangan atas-bawah utk mendapatkan solusi
 Kita kadang buruk dalam mengerjakan sesuatu
 Kita seharusnya dapat membedakan apa yg dikatakan programmer lain atau pelanggan dan apa yg sebenarnya mereka pikirkan
 Kita seharusnya merasa bersalah apabila seseorang harus menguji koding kita
 Pengujian merupakan suatu perizinan terhadap kesalahan

 Tujuan Pengujian
 Menjalankan program untuk menemukan error.
 Test case (uji kasus) yang bagus adalah yang memiliki kemungkinan terbesar untuk menemukan error yang tersembunyi.
 Pengujian yang sukses adalah yang berhasil menemukan error yang tersembunyi.
 Hasil dari tahap pengujian ini nantinya akan dimanfaatkan untuk fase pengembangan lebih lanjut, yaitu fase perawatan atau maintenance perangkat lunak

 Fase Pengujian
 Point of Interest
 Hal-hal yang perlu diperhatikan sebelum
melakukan pengujian :

 Component Testing

 Seringkali disebut sebagai pengujian cacat
atau defect testing.
 Pengujian cacat yang berhasil adalah perlakuan uji yang menyebabkan sistem berjalan tidak benar


 Component Testing
 Component Testing
 Ada tiga langkah :
– Pengujian Kotak Hitam (Black-Box Testing)
– Pengujian Struktural (Structural Testing)
– Pengujian Jalur (Path Testing)

 Black-Box Testing

 Pengujian ini diturunkan dari spesifikasi
program atau komponen.
 Perilaku yang diperhatikan hanyalah
INPUT dan OUTPUT.
 Seringkali disebut juga sebagai pengujian
fungsional, karena penguji hanya berkepentingan dengan fungsionalitas
bukan implementasinya



 Black-Box Testing

 Structural Testing

 Pendekatan yang diturunkan dari
pengetahuan struktur dan implementasi
perangkat lunak.
 Seringkali disebut sebagai pengujian kotak
putih atau White-Box Testing.
 Pengujian ini biasanya diterapkan untuk
unit program yang relatif kecil.
 Penguji dapat melakukan analisis terhadap kode program dan menggunakan pengetahuan mengenai struktur komponen untuk menurunkan data uji.




 Structural Testing

 Path Testing

 Strategi pengujian struktural yang bertujuan untuk melatih setiap jalur eksekusi independen melalui komponen atau program.
 Jika setiap jalur independen dieksekusi,
maka semua statement pada komponen
harus dieksekusi minimal satu kali


 Path Testing
 Pada sistem berorientasi objek, pengujian
jalur ini digunakan pada saat menguji
methods yang terkait dengan objek.
 Jika dimodelkan, maka pengujian ini dapat
digambarkan sebagai diagram alir
(flowchart) dari struktur program


 Path Testing
 Jumlah jalur independen pada program
dapat dihitung dari kompleksitas siklomatik
dari diagram alir program



 DASAR2 PENGUJIAN PERANGKAT LUNAK
 Objektifitas Pengujian
◦ Test case yg baik adalah yg mempunyai probabilitas yg tinggi untuk menemukan error yg tak diketemukan
◦ Pengujian merupakan suatu proses eksekusi program yang ditujukan untuk menemukan error
◦ Uji yg sukses adalah yg dapat ‘membuka’ error yang tak diketemukan
 Dua klas input yg disediakan untuk proses uji
1. konfigurasi software, termasuk Software Requirement Specification, Design Specification dan Source code
2. konfigurasi uji, termasuk Test Plan & Procedure, perangkat testing yg akan digunakan, test case dan hasil yg diharapkan
 PERANCANGAN TEST CASE
 Test case yg dirancang harus mempunyai probabilitas yg tinggi untuk menemukan sebuah error dalam waktu & effort yg minimum.

 Dua metode pendekatan perancangan test case
1. White Box Testing (pada sesuatu yg kecil (modul)) berfokus pada struktur kontrol program.
 Dijamin semua independent path (jalur bebas) telah dijalankan setidaknya satu kali
 Menjalankan semua keputusan logis pada sisi true & false
 Menjalankan semua looping
 Melakukan struktur data internal untuk menjamin validitas

 PERANCANGAN TEST CASE (lanj.)

2. Black Box Testing (yang besar) berfokus pada kebutuhan fungsional software, memungkinkan perancang untuk memperoleh kondisi2 input yg secara penuh menguji semua kebutuhan fungsional suatu program
 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.
 Dilakukan oleh pihak ketiga yang independen.
 Testability
 Kemudahan untuk diuji.
 Karakteristiknya:
◦ Operability: mudah digunakan.
◦ Observability: mudah diamati.
◦ Controlability: mudah dikendalikan.
◦ Decomposability: mudah diuraikan.
◦ Simplicity: lingkup kecil, semakin mudah diuji.
◦ Stability: jarang berubah.
◦ Understandability: mudah dipahami.
 Desain Kasus Pengujian
 Black box testing
◦ Memastikan fungsional P/L berjalan.
◦ Kesesuaian input dengan output.
◦ Tidak memperhatikan proses logic internal.
 White box testing
◦ Pengamatan detail prosedur.
◦ Mengamati sampai level percabangan kondisi dan perulangan.
 WHITE BOX TESTING : Basis Path Testing
 Metode pertama yg diusulkan oleh Tom McCabe (1976). Metode ini memungkinkan perancangan memperoleh pengukuran yang kompleksitas dari perancangan prosedural dan menggunakan pengukuran ini sebagai pedoman pendefinisian sekumpulan basis dari jalur eksekusi
 Perangkat yang digunakan
1. Notasi Flow Graph atau Program Graph
Contoh :
- sequence - if



- until
 White Box Testing
 Metode: basis path testing.
 Memakai notasi flow graph.
 BASIS PATH TESTING
 Cyclomatic Complexity, merupakan pengukuran per.lunak yang menyediakan pengukuran kuantitatif dari kompleksitas logis suatu program. Nilai cyclomatic complexity mendefinisikan jumlah jalur bebas pada basis program.
 Independent path (jalur bebas) merupakan jalur pada program yg menunjukkan setidaknya satu kumpulan pernyataan pemrosesan baru atau kondisi baru.

Langkah2 Basis Path Testing
- gunakan rancangan atau kode sebagai pondasi, lalu gambarkan flow graph
- tentukan cyclomatic complexity, dinyatakan V(G) dari flow graph
- tentukan sekumpulan basis secara linear jalur bebas
- persiapkan test case yg akan memperkuat eksekusi setiap jalur pada sekumpulan basis program
 Kompleksitas Cyclomatic
 Menunjukkan jumlah skenario pengujian yang harus dilakukan untuk menjamin cakupan seluruh program.
 BLACK BOX TESTING
 Merupakan metode pelengkap White Box Testing. Berfokus pada kebutuhan fungsional dari per.lunak.
 Memungkinkan perancang untuk memperoleh sekumpulan kondisi2 input yg secara penuh menguji semua kebutuhan fungsional suatu program
 Metode ini berusaha menemukan kesalahan yg termasuk kategori di bawah ini
- fungsi2 yg hilang atau tidak benar
- kesalahan pada antarmuka
- kesalahan pada struktur data atau pengaksesan database ekternal
- kesalahan pada performance
- kesalahan pada inisialisasi dan terminasi
 Contoh White Box Testing
 Black Box Testing – Graph Based

 Black Box Testing – Equivalence Partitioning





 Contoh: Input NPM dalam SIAMIK
◦ Jika dikosongi?
◦ Jika diisi dengan format yang salah?
◦ Jika diisi dengan NPM yang benar?
 Black Box Testing – Analisa Nilai Batas
 Menguji untuk input di sekitar batas atas maupun bawah sebuah range nilai yang valid.
 Menguji nilai maksimal dan minimal.
 Menerapkan (1 & 2) untuk output.
 Menguji batas struktur data yang dipakai. Misal ukuran array.
 Black Box Testing – Perbandingan
 Spesifikasi kebutuhan yang sama dimungkinkan menghasilkan aplikasi/ perangkat lunak yang berbeda.
 Skenario pengujian pada aplikasi yang demikian bisa digunakan untuk skenario pengujian aplikasi serupa yang lain.
 Skenario Pengujian Khusus
 Pengujian GUI.
 Pengujian arsitektur client/ server.
 Pengujian dokumentasi dan fasilitas bantuan.
 Pengujian sistem waktu nyata.
 CONTOH LAIN
 Contoh lain White Box Testing atau Control Structure Testing adalah
1. Condition Testing, menjalankan kondisi logis yang terdapat pada modul program
2. Data Flow Testing, metode yg menyeleksi jalur test program menurut lokasi pendefinisian & menggunakan variabel2 program
3. Loop Testing, berfokus pada validitas dari bentuk loop (simple loop, concatenated loop, nested loop, unstructured loop)


 CONTOH LAIN

 Contoh lain Black Box Testing adalah
1. Equivalence Partitioning, membagi domain input dari program ke dalam klas2 data
2. Boundary Value Analysis (BVA) melengkapi Equivalence Partitioning, dengan melakukannya dari domain output
3. Cause-effect Graphing, memvalidasi aksi2 & kondisi yg kompleks

 CHAPTER 18
STRATEGI PENGUJIAN P/L

 STRATEGI PENGUJIAN P/L
 Membahas langkah-langkah yang harus dikerjakan sebagai bagian dari pengujian.
 Kapan dilaksanakan? Berapa usaha, waktu dan sumber daya yang digunakan?
 Meliputi: perencanaan, desain test case, pelaksanaan, koleksi data dan evaluasi.
 Kaidah Umum Pengujian
 Dimulai dari pengujian tingkat komponen menuju integrasi.
 Titik yang berbeda dimungkinkan memakai teknik pengujian yang berbeda.
 Pengujian dilakukan oleh developer dan (untuk proyek yang besar) tim independen.
 Testing dan debugging adalah berbeda. Namun debugging pasti berkaitan dengan strategi testing apapun.
 Strategi Pengujian
 Dimulai dari unit testing terhadap source code hingga system testing terhadap spesifikasi kebutuhan.
 Langkah Pengujian

 Unit Testing

 Integration Testing
 Top – down integration
 Integration Testing
 Bottom – up integration
 Integration 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.
 Validation Testing
 Disebut sukses jika fungsi P/L dapat diterima oleh customer (berdasarkan dokumen SKPL).
 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.
 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.
 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 bug selanjutnya yang mungkin muncul jika bug diperbaiki?
◦ Apa yang bisa dilakukan untuk mencegah bug terjadi untuk pertama kalinya?
 Any Questions?
End of Session

Tidak ada komentar: