Dokumen tersebut membahas tentang software testing, dengan mendefinisikan tujuan dan manfaat software testing serta menjelaskan beberapa teknik dan tingkat pengujian perangkat lunak.
2. Definisi Software Testing
• Suatu proses untuk mengevaluasi dan
memverifikasi software dengan tujuan
untuk menemukan kesalahan atau
kelemahan dalam software sehingga
dapat diperbaiki dan meningkatkan
kualitas software.
3. Tujuan Software Testing
• Meningkatkan kualitas software
• Menjamin keandalan dan kinerja
software
• Menemukan bug, kesalahan, dan
kelemahan dalam software
• Memastikan kesesuaian software
dengan kebutuhan pengguna
4. Manfaat Software Testing
• Meningkatkan kualitas software
• Mengurangi risiko kesalahan dan kerusakan pada
software
• Menghemat waktu dan biaya pengembangan
• Menjaga kepuasan pengguna
• Memperbaiki reputasi organisasi
• Meningkatkan efisiensi dan produktivitas
pengembangan software
• Menjaga keamanan data dan privasi pengguna
5. Masalah Utama dalam
Software Testing
• Kriteria seleksi pengujian
• Efektifitas pengujian
• Pengujian penemuan cacat
• Masalah oracle
• Batasan teoritis dan praktis pengujian
• Masalah jalur tidak layak
• Testabilitas
6. Kriteria seleksi pengujian
• Sarana untuk memilih kasus uji atau
menentukan bahwa serangkaian kasus
uji cukup untuk tujuan tertentu.
• Seperangkat kriteria yang digunakan
untuk memilih kasus uji yang paling
tepat untuk memastikan kualitas
software.
8. Efektifitas pengujian
• Sejauh mana pengujian dapat menemukan bug
atau kesalahan pada software dan memastikan
bahwa software memenuhi persyaratan
fungsional dan non-fungsional yang
diinginkan oleh pengguna akhir.
• Faktor yang mempengaruhi efektifitas
pengujian :
– Kualitas tes
– Penggunaan metode dan teknik yang tepat
– Ketersediaan lingkungan dan alat yang memadai
– Kompetensi tim pengujian
– Tujuan pengujian yang jelas
9. Pengujian untuk menemukan
cacat
• Pengujian yang berhasil adalah
pengujian yang menyebabkan sistem
gagal.
• Pengujiannya terdiri dari:
– Pengujian fungsional
– Pengujian keamanan
– Pengujian kinerja
– Pengujian keseluruhan
10. Oracle Problem
• Oracle adalah setiap agen manusia atau
mesin yang memutuskan suatu program
berperilaku benar dalam pengujian yang
diberikan.
• Penyebab oracle problem:
– Dokumentasi spesifikasi kurang lengkap
– Pengujian fungsional yang hanya
memperhatikan output tanpa memperhatikan
bagaimana output tersebut dihasilkan
11. Oracle Problem
• Cara mengatasi oracle problem:
– Dokumentasi spesifikasi harus lengkap dan
jelas
– Pengujian fungsional memperhatikan input
dan proses untuk menghasilkan output
– Pengujian pengguna untuk memastikan
bahwa software berfungsi dengan benar
dari perspektif pengguna
12. Batasan Pengujian Teoritis dan
Praktis
• Pengujian software dapat digunakan
untuk menunjukkan adanya bug, tetapi
tidak dapat menunjukkan tidak adanya
bug.
• Pengujian teoritis menentukan
spesifikasi software sesuai dengan
tujuan bisnis
• Pengujian praktis menunjukkan kinerja
software dalam dunia nyata
13. Masalah Jalur Tidak Layak
• Jalur tidak layak (infeasible path) dalam
pengujian perangkat lunak adalah masalah
yang terjadi ketika suatu jalur dalam kode
program tidak dapat diakses atau tidak dapat
dijalankan selama pengujian.
• Hal ini dapat terjadi karena beberapa faktor,
seperti kegagalan dalam penggunaan variabel,
kondisi tak terduga, atau pengaturan alur
logika yang tidak benar.
14. Masalah Jalur Tidak Layak
• Salah satu solusi untuk masalah jalur tidak
layak adalah dengan melakukan analisis jalur
(path analysis) sebelum melakukan pengujian.
• Pengujian dengan menggunakan teknik
pengujian semu (symbolic testing) atau teknik
pengujian mutasi (mutation testing) juga dapat
membantu mengatasi masalah jalur tidak
layak.
15. Testability
• Kemudahan dalam memenuhi kriteria
cakupan tes tertentu.
• Seberapa mudah kita dapat menemukan
kesalahan atau kegagalan dalam
perangkat lunak melalui pengujian.
16. Hubungan Pengujian dengan
Aktifitas Lain
• Pengujian vs Teknik manajemen
kualitas perangkat lunak
• Pengujian vs Bukti kebenaran dan
verifikasi formal
• Pengujian vs Debugging
• Pengujian vs Konstruksi program
17. Tingkat Pengujian
• Target pengujian
– Objek yang akan diuji
• Tujuan pengujian
– Pengujian dilakukan berdasarkan tujuan
tertentu, yang kurang lebih dinyatakan
secara eksplisit dan dengan berbagai
tingkat presisi.
20. Acceptance Testing
• Penerimaan / pengujian kualifikasi
menentukan apakah suatu sistem
memenuhi kriteria penerimaannya,
biasanya dengan memeriksa perilaku
sistem yang diinginkan terhadap
persyaratan pelanggan.
21. Pengujian Instalasi
• Pengujian sistem di lingkungan
operasional konfigurasi perangkat keras
dan kendala operasional lainnya.
22. Pengujian alfa dan beta
• Pengujian alfa pengujian yang
dilakukan oleh sekelompok kecil
pengguna potensial; dalam lingkungan
pengembangan.
• Pengujian beta pengujian yang
dilakukan oleh sekelompok besar
pengguna nyata; dalam lingkungan
operasional.
23. Pencapaian keandalan dan
evaluasi
• Meningkatkan keandalan perangkat lunak
dengan mengidentifikasi dan memperbaiki
kesalahan yang ada
• Pengujian operasional model pertumbuhan
keandalan digunakan untuk meningkatkan
keandalan perangkat lunak dengan
memperbaiki kesalahan yang terdeteksi dan
menghasilkan kasus uji secara acak yang
sesuai dengan profil operasional perangkat
lunak.
24. Pencapaian keandalan dan
evaluasi
• Evaluasi keandalan perangkat lunak dapat
dilakukan dengan menggunakan uji kehidupan
dan evaluasi program yang diuji.
• Uji kehidupan digunakan untuk mengukur
keandalan perangkat lunak selama digunakan
dalam jangka waktu tertentu
25. Pengujian Regresi
• Pengujian ulang selektif dari sistem atau
komponen untuk memverifikasi bahwa
modifikasi tidak menyebabkan efek
yang tidak diinginkan dan bahwa sistem
atau komponen masih sesuai dengan
persyaratan yang ditentukan.
26. Pengujian Kinerja
• Pengujian kinerja memverifikasi bahwa
perangkat lunak memenuhi persyaratan
kinerja yang ditentukan dan menilai
karakteristik kinerja
27. Pengujian Keamanan
• Pengujian keamanan difokuskan pada
verifikasi bahwa perangkat lunak
dilindungi dari serangan eksternal.
• Secara khusus, pengujian keamanan
memverifikasi kerahasiaan, integritas,
dan ketersediaan sistem dan datanya.
28. Pengujian Stress
• Pengujian stres melatih perangkat lunak
pada beban desain maksimum, serta di
luarnya, dengan tujuan menentukan
batas perilaku, dan untuk menguji
mekanisme pertahanan dalam sistem
kritis.
29. Pengujian Back-to-back
• Pengujian di mana dua atau lebih varian
program dieksekusi dengan input yang
sama, output dibandingkan, dan
kesalahan dianalisis jika ada perbedaan
30. Pengujian Pemulihan
• Ditujukan untuk memverifikasi
kemampuan restart perangkat lunak
setelah sistem crash atau "bencana"
lainnya
31. Pengujian Antarmuka
• Memverifikasi apakah komponen
antarmuka benar untuk menyediakan
pertukaran data dan informasi kontrol
yang benar
• Mensimulasikan penggunaan API oleh
aplikasi pengguna akhir.
32. Pengujian Konfigurasi
• Menguji konfigurasi software yang
dibangun untuk melayani kebutuhan
user yang berbeda dan kebutuhan user
yang berbeda.
33. Pengujian Usabilitas dan HCI
• Mengevaluasi seberapa mudah
pengguna akhir mempelajari dan
menggunakan perangkat lunak
• Melibatkan pengujian fungsi perangkat
lunak yang mendukung tugas pengguna,
dokumentasi yang membantu pengguna,
dan kemampuan sistem untuk
memulihkan dari kesalahan pengguna
34. Teknik Pengujian
• Berdasarkan pengalaman dan intuisi insinyur
• Teknik berbasis domain masukan
• Teknik berbasis kode
• Teknik berbasis kesalahan
• Teknik berbasis penggunaan
• Teknik pengujian berbasis model
• Teknik berdasarkan sifat aplikasi
• Memilih dan menggabungkan teknik
35. Teknik Pengujian Berdasarkan
Intuisi dan Pengalaman Insinyur
• Ad-hoc
– Tes diturunkan dengan mengandalkan
keterampilan, intuisi, dan pengalaman
insinyur perangkat lunak dengan program
serupa.
– Pengujian ad hoc dapat berguna untuk
mengidentifikasi kasus uji yang tidak
mudah dihasilkan oleh teknik yang lebih
formal.
36. Teknik Pengujian Berdasarkan
Intuisi dan Pengalaman Insinyur
• Pengujian eksplorasi
– Pembelajaran simultan
– Desain pengujian
– Pelaksanan pengujian
– Tidak ada definisi yang ditetapkan
sebelumnya dalam rencana pengujian,
melainkan dirancang, dijalankan, dan
dimodifikasi secara dinamis
38. Partisi Ekivalensi
• Teknik pengujian partisi ekivalensi adalah
teknik pengujian perangkat lunak yang
membagi input ke dalam kelompok atau
partisi, di mana setiap partisi mewakili kelas
yang sama dalam hal pengujian, dan menguji
setiap partisi secara terpisah.
• Metode ini didasarkan pada asumsi bahwa
jika satu nilai pada partisi telah diuji, maka
nilai-nilai lain pada partisi tersebut akan
memiliki perilaku yang sama.
39. Langkah-langkah Pengujian
Partisi Ekivalensi
• Identifikasi input yang
diperlukan untuk menguji
sistem.
• Bagi setiap input menjadi
kelompok atau partisi
yang sesuai dengan kelas
yang sama dalam hal
pengujian.
• Tentukan nilai ekstrem
pada masing-masing
partisi.
• Uji satu nilai pada
masing-masing partisi
secara terpisah.
• Verifikasi apakah hasil
pengujian sesuai dengan
harapan.
• Uji kombinasi nilai dari
partisi yang berbeda.
• Verifikasi apakah hasil
pengujian sesuai dengan
harapan.
40. Pengujian Berpasangan
• Metode pengujian perangkat lunak yang
digunakan untuk menguji kombinasi input
yang berbeda dalam sebuah sistem dengan
menggunakan jumlah tes minimal.
• Teknik pengujian berpasangan bekerja dengan
memilih beberapa kombinasi input yang
mewakili semua kemungkinan kombinasi
input yang mungkin dalam sistem.
41. Boundary Value Analysis
• Suatu teknik pengujian perangkat lunak
yang digunakan untuk mengidentifikasi
masalah atau kesalahan yang mungkin
terjadi di sekitar batas nilai input yang
diterima oleh suatu program.
42. Pengujian Acak
• metode pengujian perangkat lunak yang
didasarkan pada pemilihan input atau
data uji secara acak untuk mengetahui
apakah program dapat menghasilkan
keluaran yang sesuai dengan spesifikasi
atau tidak.
43. Langkah-langkah Pengujian
Acak
• Membuat kumpulan data uji
• Menentukan jenis pengujian yang dilakukan;
fungsional, integrasi, atau performa
• Menentukan metrik keberhasilan
• Menentukan pengaturan pengujian
• Menjalankan pengujian
• Analisis hasil pengujian
• Mengulangi pengujian
44. Teknik Berbasis Kode
• Kriteria berbasis aliran kontrol
• Kriteria berbasis aliran data
• Model referensi untuk pengujian
berbasis kode
45. Kriteria Berbasis Aliran
Kontrol
• Metode pengujian perangkat lunak yang
berfokus pada struktur kontrol dari kode
• Setiap jalur dalam kode diuji untuk
memastikan bahwa semua kemungkinan
pernyataan dan kondisi telah diuji
dengan benar
46. Kriteria dalam Pengujian
Berbasis Aliran Kontrol
• Coverage Statement
• Coverage Branch
• Coverage Path
• Kriteria Kondisional + Loop
47. Kriteria Berbasis Aliran Data
• Kriteria pengujian yang memperhatikan
aliran data di dalam kode dan
memastikan bahwa setiap variabel telah
diinisialisasi dengan benar sebelum
digunakan dan nilai yang benar diproses
di setiap kondisi.
48. Kriteria Berbasis Aliran Data
• Memastikan bahwa setiap baris kode dijalankan
setidaknya satu kali selama pengujian
• Memeriksa apakah setiap cabang atau kondisi
dijalankan setidaknya satu kali selama pengujian
• Memastikan bahwa setiap cabang atau kondisi
dijalankan setidaknya satu kali dengan nilai input
yang berbeda
49. Kriteria Berbasis Aliran Data
• Memastikan bahwa setiap variabel diinisialisasi
sebelum digunakan dan setiap penggunaan variabel
memiliki nilai yang benar
• Memeriksa aliran data di dalam program dan
memastikan bahwa setiap definisi variabel digunakan
dalam aliran data yang benar
50. Model Referensi untuk
Pengujian Berbasis Kode
• Kerangka kerja atau panduan yang
digunakan oleh tim pengujian perangkat
lunak untuk melakukan pengujian pada
kode program yang telah dibuat.
• ISO/IEC 29119
• V-Model
• Spiral Model
• Agile
• Rapid Software
Testing
52. Menebak Kesalahan
• Teknik pengujian perangkat lunak yang
dilakukan dengan mengasumsikan bahwa
pengujian yang dilakukan seharusnya
memperkirakan kesalahan yang paling
mungkin terjadi pada perangkat lunak
• Pengujian dilakukan dengan melakukan
serangkaian aksi dan masukan yang
diasumsikan dapat memicu kesalahan atau
bug tertentu.
53. Pengujian Mutasi
• Teknik pengujian perangkat lunak yang
digunakan untuk mengevaluasi
kehandalan (reliabilitas) suatu sistem
dengan menghasilkan program-program
varian (mutan) dari kode sumber yang
asli
55. Profil Operasional
• Teknik pengujian perangkat lunak yang
berfokus pada menguji performa
(kinerja) perangkat lunak dalam kondisi
penggunaan nyata.
• Digunakan untuk memastikan bahwa
perangkat lunak berfungsi dengan baik
di bawah beban kerja atau kondisi
penggunaan yang realistis.
56. Profil Operasional
• Skenario pengujian dapat mencakup
pengujian beban (load testing),
pengujian stress (stress testing),
pengujian ketahanan (endurance
testing), dan pengujian ketahanan
berulang (reliability testing).
57. User Observation Heuristic
• Teknik pengujian perangkat lunak yang
dilakukan dengan cara mengamati dan
memeriksa interaksi pengguna dengan
perangkat lunak
• Memahami bagaimana pengguna
berinteraksi dengan perangkat lunak dan
mengidentifikasi masalah atau kelemahan
yang mungkin tidak terdeteksi melalui
teknik pengujian tradisional.
58. Teknik Pengujian Berbasis
Model
• Tabel keputusan
• Finite state machine
• Spesifikasi formal
• Model alur kerja
• Teknik pengujian perangkat lunak yang dilakukan dengan
menggunakan model matematis sebagai dasar untuk menguji
perangkat lunak
• Model matematis yang digunakan dapat berupa model proses
bisnis, model diagram aliran data, atau model lainnya yang
digunakan untuk merepresentasikan perilaku sistem.
• Mengidentifikasi masalah atau kelemahan dalam perangkat
lunak sebelum dirilis ke pasar
59. Tabel Keputusan
• Teknik ini digunakan untuk menguji
sistem dengan mencocokkan kombinasi
input dengan output yang diharapkan
• Merepresentasikan skenario pengujian
dan membuat keputusan berdasarkan
kombinasi input yang diberikan
60. Tabel Keputusan
• Tabel Keputusan terdiri dari dua bagian
utama, yaitu kondisi (condition) dan
tindakan (action).
– Kondisi merepresentasikan input atau data
masukan yang diberikan ke sistem
– Tindakan merepresentasikan output atau
hasil yang diharapkan dari sistem.
61. Finite State Machine
• Sebuah model matematis yang digunakan untuk
merepresentasikan perilaku sistem yang terdiri dari
kumpulan status (state) dan transisi antar status
tersebut
• FSM digunakan untuk merepresentasikan perilaku
sistem dalam bentuk diagram
• FSM digunakan untuk membuat testcase. TestCase
dihasilkan dari FSM diagram yang telah dibuat
dengan cara melakukan kombinasi transisi dari setiap
status pada FSM tersebut
62. Spesifikasi Formal
• Deskripsi formal dari perilaku yang diharapkan dari
sistem atau komponen perangkat lunak
• Menghasilkan model yang dapat diuji dan diuji untuk
memastikan bahwa perilaku sistem sesuai dengan
yang diharapkan.
• Aljabarik
• Keluarga urutan
• Logika
• State Machine
63. Model Alur Kerja
• Model alur kerja dalam konteks pengujian
perangkat lunak berbasis model (model-based
testing) mengacu pada proses pengembangan,
pengujian, dan verifikasi perangkat lunak
dengan menggunakan model matematika
formal sebagai dasar untuk menghasilkan
kasus uji.
64. Teknik Berbasis pada Sifat
Aplikasi
• Teknik di atas berlaku untuk semua
jenis perangkat lunak.
• Teknik tambahan untuk derivasi dan
eksekusi pengujian didasarkan pada
sifat perangkat lunak yang diuji
65. Memilih dan Menggabungkan
Teknik
• Menggabungkan fungsional dan
struktural
– Teknik pengujian berbasis model dan
berbasis kode sering dikontraskan sebagai
pengujian fungsional vs. struktural.
– Kedua pendekatan untuk menguji seleksi
ini tidak dilihat sebagai alternatif
melainkan sebagai pelengkap
66. Memilih dan Menggabungkan
Teknik
• Deterministik dan acak
– Pengujian deterministik dilakukan dengan menguji setiap
fitur dan fungsi perangkat lunak secara sistematis dan
berurutan
– Pengujian acak dilakukan dengan cara yang tidak
terstruktur dan tidak berurutan
– Kombinasi pengujian deterministik dan acak dapat
menghasilkan pengujian yang lebih efektif. Pengujian
deterministik membantu memastikan bahwa setiap fitur dan
fungsi diuji dengan baik, sementara pengujian acak dapat
menemukan kelemahan yang mungkin terlewatkan dalam
pengujian deterministik
67. Test-Related Measures
• Evaluasi program yang diuji
– Pengukuran program yang membantu
perencanaan dan perancangan pengujian
– Jenis kesalahan, klasifikasi, dan statistik
– Kerapatan kesalahan
– Life test, evaluasi keandalan
– Model pertumbuhan keandalan
68. Test-Related Measures
• Evaluasi pengujian yang dilakukan
– Cakupan / pengukuran ketelitian
– Penyemaian kesalahan
– Skor mutasi
– Perbandingan dan efektifitas relatif dari
berbagai teknik
69. Aktifitas Pengujian
• Perencanaan
• Pembangkitan kasus uji
• Pengembangan lingkungan pengujian
• Pelaksanaan
• Evaluasi hasil pengujian
• Pelaporan masalah
• Pelacakan cacat