Strategi Testing Rudi Susanto
module to be tested results software engineer
test cases
Testing Strategy • Strategi testing software mengintegrasikan metode metode disain test cases software 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, dan sumber daya bilamana tahap-tahap ini direncanakan dan dilaksanakan. • Strategi testing harus menjadi satu kesatuan dengan perencanaan tes, disain test case, ekesekusi tes, dan pengumpulan serta evaluasi data hasil testing.
Karakteristik Umum Strategi Pengujian software • Pengujian dimulai pada level modul dan dilanjutkan terus hingga integrasi dari keseluruhan sistem. • Setiap saat pengujian mengimplementasikan teknik pengujian yang berbeda. • Pengujian dikelola oleh pengembang Software dan untuk yang berukuran besar dikelola oleh group penguji yang tidak terikat. • Pengujian and debugging merupakan aktifitas yang berbeda, tetapi debugging selalu digunakan di setiap strategi pengujian. 3
Testing dari low-level ke high level (Tahapan Testing) • Sistem tidak diujikan sebagai suatu unit tunggal, kecuali untuk program yang kecil. • Systems yang Besar terdiri dari sub-systems, dimana masing2 sub-system terdiri dari modules yang dibentuk oleh procedures and functions. • Proses testing dilakukan dalam beberapa langkah sehingga diproses secara incrementally dalam proses implementasi sistem. 4
Testing Technique Component testing
Unit Testing
Verification (Process Oriented)
Module Testing
Integrated testing
Sub-System Testing
User testing
Acceptance Testing
White Box Testing Techniques (Tests that are derived from knowledge of the program’s structure and implementation)
System Testing
Validation (Product Oriented)
Black Box Testing Techniques (Tests are derived from the program specification)
5
Pendekatan Strategis ke pengujian perangkat lunak • • • •
Pengujian Unit Pengujian Integrasi Pengujian Validasi Pengujian Sistem
system test
unit test
integration test
validation test
Pengujian Unit
Pengujian Unit • Berfokus pada inti terkecil dari desain perangkat lunak yaitu modul • Biasanya berorientasi pada white box • Interface modul diuji untuk memastikan bahwa informasi secara tepat mengalir masuk dan keluar dari modul yg diuji.
Bagaimana mengujinya?
MODUL
Interface Struktur data lokal Kondisi Batas Jalur independen Jalur penanganan kesalahan
Test Case
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 • Underflow, overflow dan pengecualian pengalamatan
Pengujian Integrasi
Integration Test • “Jika semua modul-modul software telah bekerja dengan baik secara individual, mengapa harus ada keraguan apakah modul-modul tersebut dapat bekerja sama sebagai satu kesatuan?” • Integration testing adalah suatu teknik yang sistematis untuk pembangunan struktur program, dimana pada saat yang bersamaan melakukan testing untuk mendapatkan errors yang diasosiasikan dengan antar-muka. • Obyektifitasnya adalah untuk menindaklanjuti komponenkomponen yang telah melalui unit testing dan membangun suatu struktur program sesuai dengan disain yang telah dituliskan sebelumnya.
Integration Test Pengujian keseluruhan system atau sub-system yang terdiri dr komponen yg terintegrasi. Test integrasi menggunakan black-box dengan test case ditentukan dari spesifikasi. Kesulitannya adalah menemukan/melokasikan Penggunaan Incremental integration testing dapat mengurangi masalah tersebut.
Integration Test Integrasi test ada 2 cara :
1)Integrasi non-inkremental/ big bang Integrasi ini dilakukan dg cara semua modul digabung seluruhnya. Setelah itu barulah dilakukan pengujian. 2) Integrasi inkremental Integrasi ini dilakukan untuk membangun dan menguji interface program dlm segmen-segmen kecil, sehingga kesalahan lebih mudah diisolasi dan dibetulkan. Interface lebih mungkin untuk diuji dg lengkap. 14
Incremental integration test A
T1
T1
A T1
T2
A
T2 T2
B
B
T3 T3
B
C T4
T3 C
T4 T5
D Test sequence 1
Test sequence 2
Test sequence 3
Pendekatan integration test Top-down testing
Berawal dari level-atas system dan terintegrasi dengan mengganti masing-masing komponen secara top-down dengan suatu stub (program pendek yg mengenerate input ke sub-system yg diuji).
Bottom-up testing
Integrasi components ini dimulai dari modul terkecil. hingga sistem lengkap.
Pada prakteknya, kebanyakan test integrasi menggunakan kombinasi kedua strategi pengujian tsb.
Top-down testing Level 1
Testing sequence
Level 2 Le vel 2 stubs
Le vel 3 stubs
Level 1
Level 2
Le vel 2
. ..
Level 2
Bottom-up testing Test drivers Level N
Test drivers
Level N
Level N–1
Le vel N
Level N–1
Level N
Level N
Level N–1
Testing sequence
Catatan Pemilihan strategi integrasi (top-down atau bottom-up) tergantung pada karakteristik program dan juga jadwal proyek. Secara umum pendekatan gabungan (disebut Sandwitch testing) dapat dilakukan. Strategi gabungan yg terbaik adalah : strategi top-down untuk level-level atas dari struktur program, dan strategi bottom-up untuk level-level bawah.
19
Pengujian Validasi
Pengujian Validasi Bertujuan untuk memastikan apakah semua elemen konfigurasi software telah dikembangkan dengan tepat. Validasi berhasil bila software berfungsi sesuai harapan pengguna. Validasi dicapai melalui sederetan pengujian Black-Box yang memperlihatkan kesesuaian dengan persyaratan pelanggan
Bentuk Validasi Test 1. Tes Penerimaan ( Acceptance Test ) 2. Tes Alpha 3. Tes Beta
Validation Test 1. Acceptance Test Apabila software dibangun untuk satu pelanggan maka sederetan pengujian penerimaan dapat dilakukan untuk memungkinkan pelanggan me-validasi semua persyaratan (pengujian dilakukan oleh pelanggan) Pengujian terakhir sebelum sistem dipakai oleh user. Melibatkan pengujian dengan data dari pengguna sistem. 2. Test Alpha & Beta Apabila software dibangun sebagai sebuah produk untuk digunakan oleh banyak pelanggan, maka dilakukan test Alpha dan Beta. 23
Acceptance Test | Penilaian Terhadap Faktor Usabilitas A
Mudah digunakan
1
2
3
4
5
B
User Friendly
1
2
3
4
5
C
Mudah dimengerti
1
2
3
4
5
D
Tingkat Kepercayaan
1
2
3
4
5
E
1
2
3
4
5
F
Tingkat kesesuaian dengan yg dibutuhkan Waktu Respons
1
2
3
4
5
G
Tingkat komfortabel
1
2
3
4
5
Alpha Test Dilakukan pada sisi pengembang oleh user yang potensial. Software digunakan pada setting yang natural (sebenarnya), sehingga bila terjadi error, user dapat merekam masalah yang ada. Dilakukan pada sebuah lingkungan yang terkontrol oleh pengembang.
25
Beta Test Dilakukan oleh satu atau lebih user. Biasanya dilakukan oleh selain pengembang / pihak ketiga. Pengujian dilakukan diluar kontrol pengembang sistem. User merekam semua masalah yang mereka temukan dan melaporkan ke pengembang. Kemudian pengembang melakukan modifikasi dan akhirnya mempersiapkan pelepasan produk ke seluruh pelanggan. 26
Pengujian Sistem
Sistem Test Bertujuan untuk memastikan bahwa semua elemen/komponen sistem saling berhubungan dengan tepat dan keseluruhan fungsi/kinerja sistem dapat tercapai. Bentuk tes sistem : 1.Tes / pengujian Perbaikan 2.Tes / pengujian Keamanan 3.Tes / pengujian Stress 4.Tes / pengujian Kinerja 28
Sistem Test 1. Tes Perbaikan Pengujian yang memaksa sistem untuk gagal (dirusakkan) dengan berbagai cara dan memeriksa apakah perbaikan dapat dilakukan dengan tepat. 2. Tes Keamanan Pengujian yang dilakukan untuk membuktikan apakah perlindungan (keamanan) yang ada pada sistem benar-benar dapat melindungi sistem dari gangguan. 29
Sistem Test 3. Tes Stress
Pengujian yang dilakukan untuk melihat bagaimana sistem dalam keadaan abnormal. Menguji sistem dengan nilai yg melebihi maksimum load. Stressing suatu system menyebabkan tidak mudah kerusakan. Contoh : melakukan login ke server ketika sejumlah besar workstation melakukan proses menjalankan perintah sql database
30
Sistem Test 4. Tes Kinerja
Pengujian untuk menguji kinerja run-time (saat berjalan) dari software didalam konteks sistem yang terintegrasi Catatan : Tes kinerja sering digunakan bersamaan dengan tes stress, dimana kita bisa melihat bagaimana kinerja sistem dalam keadaan abnormal.
31
Menjalankan Pengujian
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
Cont’d • Idealnya semua komponen dan fungsi yg ada pada sisi client dan server harus dites (tapi sgt jarang bisa dilakukan) pendekatan terbaik agar tetap sesuai dengan batasan waktu dan budget : – Mengecek requirement project – Mensetting prioritas sesuai hasil risk analysis – Tentukan fokus testing yg dilakukan
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 Data Base yang lebih banyak
Cont’d – 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
faktor faktor seperti project requirement, risk analysis, budget dan schedule menentukan kategori testing yang mana yang sesuai dengan project web yang dilaksanakan
Kategori testing web • • • • •
Load testing Security testing Link testing HTML validation dll
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 ( Common Gateway Interface) , desain database dan faktorfaktor lain bisa juga memberikan pengaruh
– Testing bisa dilakukan dengan 2 cara •
Testing keseluruhan komponen dibawah kondisi yang bermacammacam
•
Testing masing-masing komponen
Security testing – Menguji semua fungsi yg berhubungan dengan firewall, enkripsi, autentikasi, transaksi, akses database – Menguji perlindungan yang diberikan – Selain permasalahan kontrol akses di sisi client (password dan enkripsi) juga ada permasalahan di sisi server spt siapa yg 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
Link testing – Untuk menentukan apakah link dari suatu situs baik itu ke internal dan external web pages bekerja – Web yg memiliki banyak link ke situs luar perlu link testing yg dijadwal secara teratur
HTML validation – Ditentukan oleh audience yg dituju, jenis browser yang kemungkinan akan dipakai dan seberapa sesuai dengan standar html atau ekstensi lainnya
Contoh Laporan Hasil Test Nomor Kesalahan : Nama Program: Tipe Laporan: (1. Usulan, 2.Salah Perancangan, 3. Salah program, 4. Salah dokumentasi, 5. Query) Severity: 1. Minor, 2. Serius, 3. Fatal Attachment (Y/N) Adakah kesalahan (Y/T) Bagaimana bentuk kesalahan: Bagaimana kesalahan dapat terjadi: Usulan Perbaikan: Nama Penguji: Tanggal Uji: --------------------------------Diisi oleh programmer: Ditujukan kepada: Resolusi: 1. Dapat diperbaiki 2. Tidak dapat diperbaiki 3. Pengujian ditarik kembali 4. Bekerja sesuai spesifikasi 5. Kesalah tidak dapat dihasilkan lagi 6. Tidak setuju dengan usulan ----------Sertifikasi Resolusi Dibuat oleh: Programmer, Tester: Project Manager:
Tanggal:
Tanggal:
Study Kasus! • Pada awal tahun 2014 ini Bank XYZ baru saja selesai membangun sistem I-banking versi terbarunya. Maka dari itu sebelum digunakan oleh nasabah dan juga untuk mengetahui kapasitas maksimum operasi I-banking Bank XYZ serta adanya kemacetan (bottlenecks) yang menyebabkan degradasi, diperlukannya untuk melakukan pengujian beban pada sistem I-banking. Pengujian dilakukan dalam perangkat lunak maupun perangkat keras (server) dengan cara melakukan stress test pada sistem Ibanking. Proses pengujian harus melalui Cloud atau melalui jaringan Internet karena untuk dapat mensimulasikan seolah-olah user asli saat membuka web I-banking tersebut.
Tugas! • Carilah Tools yang bisa digunakan untuk pengujian website secara otomatis, kemudian lakukan pengujian dengan tools tersebut!
Terima Kasih