Dokumen tersebut membahas strategi dan prinsip-prinsip pengujian perangkat lunak, mulai dari pengujian unit, integrasi, validasi, hingga sistem. Beberapa poin penting adalah perlunya perencanaan pengujian, independensi pengujian, serta pendekatan berbasis resiko."
3. Perbedaan bahasa generasi ke-4
dengan bahasa generasi ke3
4GL
Jalur kode yang lebih sedikit
Memberikan potensi dilakukannya pemrograman oleh
end user untuk aplikasi mereka sendiri
Metodologi pengembangan
Produktivitas yang meningkat
Layanan yang meningkat
Partisipasi pemakai
4. Perbedaan bahasa generasi ke-4
dengan bahasa generasi ke3
3GL
Kepadatan
Efisiensi mesin
Fungsionalitas
Kompatibilitas
Produktivitas pengkodean
Pengujian dan pemeliharaan
7. Memilih bahasa yang tepat
Mencocokan bahasa dengan aplikasi rancangan
perangkat lunak
Tingkat penggunaan dalam dunia bisnis
Keekspresifan
Kemudahan
Maintainability
9. (IEEE – Institute of Electrical and Electronics Engineering, ANSI – American
National Standards Institute)
Menurut standar ANSI/IEEE 1059
Testing adalah proses menganalisa
suatu entitas software untuk
mendeteksi perbedaan antara kondisi
yang ada dengan kondisi yang
diinginkan (defect/errors/bugs) dan
mengevaluasi fitur-fitur dari entitas
software
10. Definisi Sederhana Kualitas
Menurut CROSBY:
Kualitas adalah pemenuhan terhadap kebutuhan.
Menurut ISO-8402:
Kualitas adalah keseluruhan dari fitur yang menjadikan
produk dapat memuaskan atau dipakai sesuai kebutuhan
dengan harga yang terjangkau.
Menurut W.E. Perry:
Kualitas adalah pemenuhan terhadap standar.
Menurut R. Glass:
Kualitas adalah tingkat kesempurnaan.
Menurut J. Juran:
Kualitas adalah tepat guna.
11. Hubungan testing dan kualitas
Software yang berkualitas adalah software
yang bebas error dan bug secara objektif,
tepat waktu dan dana, sesuai dengan
kebutuhan atau keinginan dan dapat dirawat
(maintainable)
Definisi objektif :
Suatu proses pembuktian yang
terstruktur,terencana dan
terdokumentasi dengan baik
12. Hubungan Testing Dan Kualitas
Testing tidak dapat memastikan kualitas
software, namun dapat memberikan jaminan
terhadap software pada suatu tingkat tertentu
Jaminan kualitas (Quality Assurance – QA)
mengukur kualitas proses yang digunakan untuk
membuat produk berkualitas
Testing merupakan bagian dari aktifitas
QA
13. Hubungan Testing Dengan Kualitas
Proyek pengembangan software memiliki
kecenderungan untuk mengalami kegagalan
Proyek yang gagal ???
Salah satu usaha menurunkan tingkat resiko terjadinya
kegagalan adalah dengan berorientasi pada kualitas
14. Tujuan testing
Adalah menemukan sebanyak mungkin
masalah (error)
Tujuan dari menemukan masalah adalah
memperbaikinya
Tangani masalah yang bersifat penting,
karena tidak semua permasalahan dapat.
15. Misi tim testing
Tidak hanya untuk melakukan testing, tetapi juga
membantu meminimalkan resiko kegagalan proyek
Mencari masalah dari produk
Mencari masalah potensial
Mencari kehadiran masalah
Intinya adalah mencari dan melaporkan sehingga tim lain
dapat membuat keputusan terhadap pengembangan
produk
16. Cont'd
Perlu diingat, tester hanya menginformasikan
Tidak melakukan pembenahan kode
Tester adalah individu yang memberikan hasil
pengukuran dari kualitas produk
17. Psikologi testing
Jika pengembangan dilakukan secara konstruktif, maka
testing dilakukan secara destruktif
Tester harus mempunyai keinginan yang mendasar untuk
membuktikan kode gagal dan akan melakukan apa saja
untuk membuatnya gagal
Bila seorang tester hanya ingin membuktikan bahwa kode
beraksi sesuai dengan fungsi bisnisnya, maka tester
tersebut telah gagal dalam menjalankan tugasnya sebagai
tester
18. Prinsip-prinsip testing
prinsip pertama
Testing yang komplit (dilakukan secara
menyeluruh) tidak memungkinkan
dilakukan.
Kemungkinan jumlah kombinasi testcase
yang amat besar
Pertimbangan domain masukan yang mungkin
sangat besar jumlahnya (masukan yang valid,
tdk valid, masukan yg diedit dll)
Kompleksitas user interface dan desain.
19. Cont'd
Jalur program yang mungkin dapat
dilewati sangat banyak
Harus dilakukan test ulang, setiap ada
perbaikan pada masing-masing bug
20. Prinsip kedua
Testing merupakan pekerjaan yang
kreatif dan sulit
mitos-mitos yang salah tentang testing :
Testing itu mudah
Tiap orang akan dapat melakukan testing
dengan sendirinya
padahal
21. Cont'd
Testing bukanlah hal yang sederhana,
karena
Untuk dapat melakukan testing yang
efektif harus mengetahui keseluruhan
sistem
Sistem sendiri tidak sederhana (mudah
dipahami)
22. Prinsip ketiga
Testing berbasis pada resiko
walaupun testing secara keseluruhan tidak dapat
dilakukan,
tidak berarti bahwa testing yang efektif tidak dapat
dilakukan
testing merupakan hasil pertimbangan dari resiko dan
ekonomi
23. Cont'd
Secara ringkas, testing dipengaruhi oleh pertimbangan :
Sumber daya dan biaya yang dibutuhkan untuk
melakukan testing menurut skala prioritas, kompleksitas
dan kesulitan testing
Biaya dari keterlambatan pengiriman produk
(kemungkinan besar disebabkan testing)
Kemungkinan adanya suatu defect
Biaya yang disebabkan oleh defect, bilamana defect tsb
menyebabkan error yang membawa kerugian langsung
maupun tak langsung bagi customer
24. Prinsip keempat
Testing harus direncanakan
butuh pemikiran dengan pendekatan secara keseluruhan,
desain tes dan penetapan hasil yang diinginkan untuk
setiap kasus tes (test case) yang dipilih
test plan : dokumen yang mencakup keseluruh tujuan
testing dan pendekatan testing
test design : dokumen yang mendefinisikan apa yang
telah dipilih untuk dites dan
hasil yang diharapkan
“test direncanakan dan didesain sebelum kode dibuat”
25. Cont'd
Perencanaan tes sangat penting, yaitu :
Untuk dapat menjaga arah pelaksanaan tes agar tidak
menyimpang dari tujuan tes itu sendiri (mengukur
kualitas SW)
Menjaga kesesuaian penggunaan sumber daya dan jadwal
proyek dengan menetapkan apa yang akan dites dan
kapan berhenti
Membantu tester fokus terhadap apa yang akan dites
(membuat test case)
26. Prinsip kelima
Testing butuh independensi
testing yang paling efektif adalah yang dilakukan oleh
pihak ketiga (tidak bias)
27. Dasar-dasar testing
Testing dikatakan baik, jika :
Kemungkinan mendapatkan error tinggi
Tidak redundan --> resource terbatas,
tiap tes yang dilakukan HARUS memiliki
tujuan yang berbeda
Tidak terlalu simpel atau kompleks
28. Cont'd
Kode untuk kondisi khusus mendapatkan
porsi tes yang sama dengan kode yang
umum
Kode untuk kondisi khusus --> peluang
mempunyai bug tinggi
Testing untuk kode yang dijalankan
dalam kondisi normal tidak
mengeksekusi error handling code
Testing yang sukses adalah testing yang
berhasil menemukan error yang tidak
diketahui
30. Strategi uji coba PL memudahkan para perancang untuk
menentukan keberhasilan system yang telah dikerjakan.
Hal yang harus diperhatikan adalah langkah-langkah
perencanaan dan pelaksanaan harus direncanakan dengan
baik dan berapa lama waktu, upaya dan sumber daya yang
diperlukan.
Strategi uji coba mempunyai karakteristik sebagai berikut :
Pengujian mulai pada tingkat modul yg paling bawah,
dilanjutkan dengan modul di atasnya kemudian hasilnya
dipadukan.
Teknik pengujian yang berbeda mungkin menghasilkan
sedikit perbedaan (dalam hal waktu)
31. Pengujian dilakukan oleh pengembang perangkat lunak dan (untuk
proyek yang besar) suatu kelompok pengujian yang independen.
Pengujian dan debugging merupakan aktivitas yang berbeda, tetapi
debugging termasuk dalam strategi pengujian.
Pengujian PL adalah satu elemen dari topik yang lebih luas yang
sering diacu sebagai verifikasi dan validasi (V& V).
Verifikasi : Kumpulan aktifitas yg menjamin penerapan PL benar-
benar sesuai dengan fungsinya.
Validasi : Kumpulan aktivitas yang berbeda yang memastikan
bahwa PL yang dibangun dapat memenuhi keperluan pelanggan.
Dengan kata lain :
Verifikasi : “ Apakah kita membuat produk dgn benar?”
Validasi : “ Apakah kita membuat benar-benar suatu produk?”
32. Pendekatan Strategis ke pengujian
perangkat lunak
1. Pengujian Unit
2. Pengujian Integrasi
3. Pengujian Validasi
4. Pengujian Sistem
33. 1. Pengujian Unit
Berfokus pada inti terkecil dari desain perangkat lunak
yaitu modul
Biasanya berorientasi pada white box
34. Pengujian Unit
Checklist untuk pengujian interface (Myers)
Apakah jumlah parameter input sama dengan jumlah
argumen?
Apakah antara atribut dan parameter argumen sudah
cocok?
Apakah antara sistem satuan parameter dan argumen
sudah cocok?
Apakah jumlah argumen yang ditransmisikan ke modul
yang dipanggil sama dengan atribut parameter?
35. Pengujian Unit
Apakah atribut dari argumen yang ditransmisikan ke
modul yang dipanggil sama dengan atribut parameter?
Apakah sistem unit dari argumen yang ditransmisikan ke
modul yang dipanggil sama dengan sistem satuan
parameter?
Apakah jumlah atribut dan urutan argumen ke fungsi-
fungsi built-in sudah benar?
Adakah referensi ke parameter yang tidak sesuai dengan
poin entri yang ada?
Apakah argumen input only diubah?
Apakah definisi variabel global konsisten dengan modul ?
Apakah batasan yang dilalui merupakan argumen?
36. Pengujian Unit
Test case harus didesain untuk mengungkap kesalahan
dalam kategori
pengetikan yang tidak teratur dan tidak konsisten
inisialisasi yang salah atau nilai-nilai default
Nama variabel yang tidak benar
Tipe data yang tidak konsisten
37. Seberapa baik sistem yang sudah dibangun ?
Dua Aspek yang dipertimbangkan:
Apakah implementasi sudah sesuai dengan spesifikasi ?
Apakah spesifikasi sesuai dengan kebutuhan user ?
Validasi
“Apakah sistem yang dikembangkan sudah benar?”
Pengujian dimana sistem ketika diimplementasikan sesuai
dengan yang diharapkan
Verifikasi
“Apakah sistem dikembangkan dengan cara yang benar ?”
Pengujian apakah sistem sudah sesuai dengan spesifikasi
38. 2. Integration testing
Menjelaskan kecacatan dalam antarmuka dan
interaksi antar komponen terpadu (modul).
Semakin besar kelompok komponen perangkat lunak
yang diuji terkait dengan elemen-elemen dari desain
arsitekturnya akan dipadukan dan diuji sampai
perangkat lunak bekerja sebagai sistem.
39. 3. Pengujian Validasi
Setelah semua kesalahan diperbaiki maka langkah
selanjutnya adalah validasi testing.
Pengujian validasi dikatakan berhasil bila fungsi yang ada
pada PL sesuai dengan yg diharapkan pemakai.
Validasi PL merupakan kumpulan seri uji coba black box
yang menunjukkan sesuai dengan yg diperlukan.
Kemungkinan kondisi setelah pengujian:
1. Karakteristik performansi fungsi sesuai dengan spesifikasi
dan dapat diterima.
2. Penyimpangan dari spesifikasi ditemukan dan dibuatkan
daftar penyimpangan.
40. Pengujian Alpha dan Beta
Apabila PL dibuat untuk pelanggan maka dapat
dilakukan aceeptance test sehingga memungkinkan
pelanggan untuk memvalidasi seluruh keperluan.
Test ini dilakukan karena memungkinkan pelanggan
menemukan kesalahan yang lebih rinci dan
membiasakan pelanggan memahami PL yg telah
dibuat.
41. Pengujian Alpha
Dilakukan pada sisi pengembang oleh seorang pelanggan.
PL digunakan pada setting yang natural dengan
pengembang “yang memandang” melalui bahu pemakai
dan merekam semua kesalahan dan masalah pemakaian.
Pengujian Beta
Dilakukan pada satu atau lebih pelanggan oleh pemakai
akhir PL dalam lingkungan yang sebenarnya, pengembang
biasanya tidak ada pada pengujian ini. Pelanggan merekam
semua masalah (real atau imajiner) yang ditemui selama
pengujian dan melaporkan pada pengembang pada
interval waktu tertentu.
42. 4. Pengujian Sistem
Pada akhirnya PL digabungkan dengan elemen system
lainnya dan rentetan perpaduan system dan validasi
tes dilakukan. Jika uji coba gagal atau diluar batasan
dari proses daur siklus pengembangan system,
langkah yang diambil selama perancangan dan
pengujian dapat diperbaiki. Keberhasilan perpaduan
PL dan system yang besar merupakan kuncinya.
Sistem testing merupakan rentetan pengujian yang
berbeda-beda dengan tujuan utama mengerjakan
keseluruhan elemen system yang dikembangkan.
43. Proses Pengujian Software
Unit test
Integration
test
test
Validation
System
test
System engineering
Requirements
Software Design
Code & Implementation
V&V Targets
44. Pengujian Sistem (lanjutan)
Recovery/perbaikan Testing
Adalah system testing yang memaksa PL mengalami kegagalan dalam
bermacam-macam cara dan memeriksa apakah perbaikan dilakukan
dengan tepat.
Security Testing
Adalah pengujian yang akan melalukan verifikasi dari mekanisme
perlindungan yang akan dibuat oleh system, melindungi dari hal-hal
yang mungkin terjadi.
Strees Testing
Dirancang untuk menghadapi situasi yang tidak normal pada saat
program diuji. Testing ini dilakukan oleh system untuk kondisi seperti
volume data yang tidak normal (melebihi atau kurang dari batasan)
atau frekuensi.
46. 1.Testing aplikasi desktop
Jenis :
Functionality :
Aplikasi harus terlihat dan berfungsi sebagaimana mestinya terhadap end-user
atau pengguna akhir. Testing dilakukan dengan menggunakan data yang
menggambarkan data yang digunakan oleh pengguna sesungguhnya.
Data yang dimasukkan tersimpan dengan benar pada database.
Pengujian dilakukan sekelompok pengguna dengan kemampuan yang berbeda.
Configuration
Jika aplikasi Anda di-develop untuk lingkungan yang besar, testing harus
dilakukan pada komputer khusus. Komputer yang digunakan sebagai komputer
testing harus terlebih dahulu dikonfigurasi hanya dengan:
a. Operating system yang dibutuhkan. b. Software pendukung/add on untuk
aplikasi Driver yang diperlukan oleh aplikasi, jika ada. c. Aplikasi yang dites.
47. Compatibility
Hardware
OS
Diimplementasikan pada konfigurasi yang berbeda diuji
compatibilitasnya. Misalnya jika membuat di IE, coba di
Firefox, Opera, Safari
HTML validation
48. 2. Pengujian Aplikasi Server
Volume Testing
Stress Testing
Performance Testing
Data Recovery Testing
Data Backup and Restore Testing
Data Security Testing
49. Volume Testing
Menemukan kelemahan sistem selama melakukan
pemrosesan data dalam jumlah yang besar dalam
periode waktu yang singkat.
Tujuan: meyakinkan bahwa sistem tetap melakukan
pemrosesan data antara batasan fisik dan batasan
logik.
Contoh:
Mengujikan proses antar server dan antar partisi hardisk
pada satu server.
50. Stress Testing
Tujuan: mengetahui kemampuan sistem dalam
melakukan transaksi selama periode waktu puncak
proses. Contoh periode puncak: ketika penolakan
proses login on-line setelah sistem down atau pada
kasus batch, pengiriman batch proses dalam jumlah yg
besar dilakukan setelah sistem down.
Contoh: Melakukan login ke server ketika
sejumlah besar workstation melakukan proses
menjalankan perintah sql database.
51. Performance Testing
Dilakukan secara paralel dengan Volume dan Stress testing
untuk mengetahui unjuk kerja sistem (waktu respon,
throughput rate) pada beberapa kondisi proses dan
konfigurasi.
Dilakukan pada semua konfigurasi sistem perangkat keras
dan lunak.
Mis.: pd aplikasi Client-Server diujikan pd kondisi korporate
ataupun lingkungan sendiri (LAN vs. WAN, Laptop vs.
Desktop)
Menguji sistem dengan hubungannya sistem ke lain pada
server yg sama.
Load Balancing Monitor
Network Monitor
52. Data Recovery Testing
Investigasi dampak kehilangan data melalui proses
recovery ketika terjadi kegagalan proses.
Penting dilakukan karena data yang disimpan di server
dapat dikonfigurasi dengan berbagai cara.
Kehilangan Data terjadi akibat kegagalan sistem,
hardisk rusak, peghapusan yang tidak sengaja,
kecelakaan, virus dan pencuri.
53. Data Backup and Restore Testing
Dilakukan untuk melihat prosedur back-up dan recovery.
Diakukan dengan mensimulasikan beberapa kesalahan
untuk menguji proses backup dan recovery.
Pengujian dilakukan terhadap strategi backup:
frekuensi, medium, waktu, mekanisme backup (manual/
otomatis), personal, ? Berapa lama backup akan disimpan.
Switching antara live dan backup server ketika terjadi
kerusakan (load log transaction pada back-up kemudian
melaku recovery).
54. Data Security Testing
Privilege access terhadap database diujikan pada
beberapa user yang tidak memiliki privilege access ke
database.
Shutdown database engine melalui operating system
(dengan beberapa perintah OS) yg dapat mematikan
aplikasi database.
55. Testing aplikasi web
Testing untuk aplikasi web memiliki banyak kesamaan
dengan testing untuk aplikasi client server, tetapi
aplikasi web lebih sulit karena tingkat
kompleksitasnya lebih tinggi interaksi komponen
(teknologi) yang dipergunakan tidak terbatas
Browser
OS
Aplikasi plugin, dll
56. Idealnya semua komponen dan fungsi yang ada pada
sisi client dan server harus dites (tapi sangat jarang
bisa dilakukan) pendekatan terbaik agar tetap
sesuai dengan batasan waktu dan budget :
Mengecek requirement project/kebutuhan proyek
Mensetting prioritas sesuai hasil risk analysis
Tentukan fokus testing yang dilakukan
57. Risk analysis
Risk analysis yang dilakukan harus mempertimbangkan :
seberapa mirip lingkungan test dengan
lingkungan produksi (idealnya akan mirip)
fungsionalitas mana yang sangat kritikal
terhadap tujuan pembuatan website
area mana yang memerlukan interaksi DB
yang lebih banyak
58. tipe permasalahan seperti apa yang akan
lebih sering dikomplain
area mana dari suatu situs yang akan lebih
sering dibuka
aspek mana yang memiliki resiko keamanan
lebih tinggi
59. faktor faktor seperti project
requirement, risk analysis, budget dan
schedule menentukan kategori testing
yang mana yang sesuai dengan project
web yang dilaksanakan
60. Kategori testing web
Load testing
Security testing
Link testing
HTML validation
dll
61. Penjelasan
Load testing
Testing dengan load yang sudah diatur rangenya untuk
menentukan pada poin mana respons time sistem turun atau
bahkan gagal sama skali.
Server yang dipakai, seting konfigurasi yang dipergunakan,
script CGI, desain database dan faktor-faktor lain bisa juga
memberikan pengaruh
Testing bisa dilakukan dengan 2 cara
Testing keseluruhan komponen dibawah kondisi yang
bermacam-macam
Testing masing-masing komponen
62. Security testing
Untuk aplikasi web base mengharuskan tingkat keamanan yang
tinggi, testing aplikasi harus mempertimbangkan pengujian
keamanan aplikasi tersebut.
Menguji semua fungsi yang berhubungan dengan firewall, enkripsi,
autentikasi, transaksi, akses database.
Selain permasalahan kontrol akses di sisi client (password dan
enkripsi) juga ada permasalahan di sisi server seperti siapa yang
berhak mempublish dan memodifikasi file html, siapa yang
memiliki wewenang untuk melakukan publikasi final, yang meng-
approve suatu file graphics, file sound dan halaman layout
Sebagai contoh adalah sebuah aplikasi e-commerce yang
mengizinkan transaksi melalui kartu kredit. Cukup banyak terjadi
kasus pencurian PIN/Password credit card dengan memanfaatkan
kelemahan aplikasi e-commerce.
63. Link testing
Untuk menentukan apakah link dari suatu situs baik itu ke
internal dan external web pages bekerja
Web yang memiliki banyak link ke situs luar perlu link testing
yang dijadwal secara teratur
HTML validation
Ditentukan oleh audience yg dituju, jenis browser yang
kemungkinan akan dipakai dan seberapa sesuai dengan
standar html, microsoft atau ekstensi lainnya
65. Cont’d
Link testing
WebLight, HTML PowerTools, Broken Link
Preventer, W3C Link Checker
HTML validation
WebLight, HTML PowerTools, W3C CSS Validation
Service, W3C HTML Validation Service