TESTING & IMPLEMENTASI SISTEM
description
Transcript of TESTING & IMPLEMENTASI SISTEM
Pengkodean Perangkat Lunak, Dasar & Strategi pengujian
perangkat lunakDiema HS, S.Kom
TESTING & IMPLEMENTASI SISTEM
PENGKODEAN PERANGKAT LUNAK
Perbedaan bahasa generasi ke-4 dengan bahasa generasi ke34GL Jalur kode yang lebih sedikitMemberikan potensi dilakukannya
pemrograman oleh end user untuk aplikasi mereka sendiri
Metodologi pengembanganProduktivitas yang meningkatLayanan yang meningkatPartisipasi pemakai
Perbedaan bahasa generasi ke-4 dengan bahasa generasi ke33GL KepadatanEfisiensi mesinFungsionalitasKompatibilitasProduktivitas pengkodeanPengujian dan pemeliharaan
Bahasa pemrograman berorientasi objekJenis bahasa OOP
MurniSmalltalk
Hybridw C++CCobol
Perangkat bahasa penggunaan khususAlat bahasa berorientasi pemakai interaktifDBMSAlat bahasa hypertext dan multimedia
Memilih bahasa yang tepatMencocokan bahasa dengan aplikasi
rancangan perangkat lunakTingkat penggunaan dalam dunia bisnisKeekspresifanKemudahanMaintainability
DASAR –DASAR PENGUJIAN PERANGKAT LUNAK
(IEEE – Institute of Electrical and Electronics Engineering, ANSI – American National Standards Institute)Menurut standar ANSI/IEEE 1059Testing 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
Definisi Sederhana KualitasMenurut 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.
Hubungan testing dan kualitasSoftware 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
Hubungan Testing Dan Kualitas
Testing membuat kualitas dapat dilihat secara objektif, karena testing merupakan pengukuran dari kualitas software
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
Hubungan Testing Dengan KualitasProyek pengembangan software memiliki
kecenderungan untuk mengalami kegagalan
Proyek yang gagal ???
Salah satu usaha menurunkan tingkat resiko terjadinya kegagalan adalah dengan berorientasi pada kualitas
Tujuan testingAdalah menemukan sebanyak
mungkin masalah (error)Tujuan dari menemukan masalah
adalah memperbaikinyaTangani masalah yang bersifat penting, karena tidak semua permasalahan dapat.
Misi tim testingTidak hanya untuk melakukan testing, tetapi
juga membantu meminimalkan resiko kegagalan proyekMencari masalah dari produkMencari masalah potensialMencari kehadiran masalahIntinya adalah mencari dan melaporkan sehingga
tim lain dapat membuat keputusan terhadap pengembangan produk
Cont'dPerlu diingat, tester hanya menginformasikanTidak melakukan pembenahan kodeTester adalah individu yang memberikan hasilpengukuran dari kualitas produk
Psikologi testingJika pengembangan dilakukan secara
konstruktif, maka testing dilakukan secara destruktifTester 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
Prinsip-prinsip testingprinsip pertama Testing yang komplit (dilakukan secara menyeluruh) tidak memungkinkan dilakukan.Kemungkinan jumlah kombinasi testcase yang amat besarPertimbangan domain masukan yang mungkin sangat besar jumlahnya (masukan yang valid, tdk valid, masukan yg diedit dll)
Kompleksitas user interface dan desain.
Cont'dJalur program yang mungkin dapat dilewati sangat banyak
Harus dilakukan test ulang, setiap ada perbaikan pada masing-masing bug
Prinsip keduaTesting merupakan pekerjaan yang kreatif dan sulitmitos-mitos yang salah tentang testing :
Testing itu mudahTiap orang akan dapat melakukan testing dengan sendirinya
padahal
Cont'dTesting bukanlah hal yang sederhana, karenaUntuk dapat melakukan testing yang efektif harus mengetahui keseluruhan sistem
Sistem sendiri tidak sederhana (mudah dipahami)
Prinsip ketigaTesting 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
Cont'dSecara 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 defectBiaya yang disebabkan oleh defect, bilamana
defect tsb menyebabkan error yang membawa kerugian langsung maupun tak langsung bagi customer
Prinsip keempatTesting harus direncanakan
butuh pemikiran dgn pendekatan secara keseluruhan, desain tes dan penetapan hasil yg diinginkan utk setiap kasus tes (test case) yg dipilih
test plan : dokumen yg mencakup keseluruh tujuan testing dan pendekatan testing
test design : dokumen yg mendefinisikan apa yg telah dipilih utk dites dan hasil yg diharapkan
“test direncanakan dan didesain sebelum kode dibuat”
Cont'dPerencanaan tes sangat penting, yaitu :Utk dpt menjaga arah pelaksanaan tes agar tidak
menyimpang dari tujuan tes itu sendiri (mengukur kualitas SW)
Menjaga kesesuaian penggunaan sumber daya dan jadual proyek dengan menetapkan apa yang akan dites dan kapan berhenti
Membantu tester fokus terhadap apa yang akan dites (membuat test case)
Prinsip kelimaTesting butuh independensi
testing yang paling efektif adalah yang dilakukan oleh pihak ketiga (tidak bias)
Dasar-dasar testingTesting 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
Cont'dKode untuk kondisi khusus mendapatkan porsi tes yang sama dengan kode yang umumKode untuk kondisi khusus --> peluang memp. 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
“ STRATEGI PENGUJIAN/TESTING PERANGKAT LUNAK ”
Strategi uji coba PL memudahkan para perancang untuk menentukan keberhasilan system yg telah dikerjakan. Hal yg harus diperhatikan adalah langkah-langkah perencanaan dan pelaksanaan harus direncanakan dengan baik dan berapa lama waktu, upaya dan sumber daya yg diperlukan.
Strategi uji coba mempunyai karakteristik sbb :Pengujian mulai pada tingkat modul yg paling bawah,
dilanjutkan dgn modul di atasnya kemudian hasilnya dipadukan.
Teknik pengujian yang berbeda mungkin menghasilakn sedikitperbedaan (dalam hal waktu)
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 seringdiacu sebagai verifikasi dan validasi (V& V).Verifikasi : Kumpulan aktifitas yg menjamin penerapan PL benar-
benar sesuai dgn fungsinya.Validasi : Kumpulan aktivitas yang berbeda yang memastikan
bahwa PL yang dibangun dapat memenuhi keperluan pelanggan.Dgn kata lain :
Verifikasi : “ Apakah kita membuat produk dgn benar?”Validasi : “ Apakah kita membuat benar-benar suatu produk?”
Pendekatan Strategis ke pengujian perangkat lunak1. Pengujian Unit2. Pengujian Integrasi3. Pengujian Validasi4. Pengujian Sistem
1. Pengujian UnitBerfokus pada inti terkecil dari desain
perangkat lunak yaitu modulBiasanya berorientasi pada white box
Pengujian UnitChecklist 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?
Pengujian UnitApakah 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?
Pengujian UnitTest case harus didesain untuk
mengungkap kesalahan dalam kategori pengetikan yang tidak teratur dan tidak
konsisteninisialisasi yang salah atau nilai-nilai defaultNama variabel yang tidak benarTipe data yang tidak konsisten
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 diharapkanVerifikasi
“Apakah sistem dikembangkan dengan cara yang benar ?”
Pengujian apakah sistem sudah sesuai dengan spesifikasi
2. Integration testingMenjelaskan 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.
3. Pengujian ValidasiSetelah semua kesalahan diperbaiki maka langkah
selanjutnya adalah validasi testing. Pengujian validasi dikatakan berhasil bila fungsi yg ada
pada PL sesuai dgn yg diharapkan pemakai.Validasi PL merupakan kumpulan seri uji coba black box
yg menunjukkan sesuai dgn yg diperlukan.Kemungkinan kondisi setelah pengujian:1. Karakteristik performansi fungsi sesuai dgn spesifikasi
dan dapatditerima.
2. Penyimpangan dari spesifikasi ditemukan dan dibuatkan daftarpenyimpangan.
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 yg lebih rinci dan membiasakan pelanggan memahami PL yg telah dibuat.
Pengujian AlphaDilakukan pada sisi pengembang oleh seorang pelanggan. PL digunakan pada setting yg natural dgn pengembang “yg memandang” melalui bahu pemakai dan merekam semua kesalahan dan masalah pemakaian.
Pengujian BetaDilakukan pada satu atau lebih pelanggan oleh pemakai akhir PL dalam lingkungan yg sebenarnya, pengembang biasanya tidak ada pada pengujian ini. Pelanggan merekan semua masalah (real atau imajiner) yg ditemui selama pengujian dan melaporkan pada pengembang pada interval waktu tertentu.
4. Pengujian SistemPada akhirnya PL digabungkan dgn elemen
system lainnya dan rentetan perpaduan system dan validasi tes dilakukan. Jika uji coba gagal atau diluar skope dari proses daur siklus pengembangan system, langkah yg diambil selama perancangan dan pengujian dapat diperbaiki. Keberhasilanperpaduan PL dan system yg besar merupakan kuncinya.
Sistem testing merupakan rentetan pengujian yg berbeda-beda dgn tujuan utama mengerjakan keseluruhan elemen system yg dikembangkan.
Pengujian Sistem (lanjutan)Recovery/perbaikan Testing
Adalah system testing yg memaksa PL mengalami kegagalan dalambermacam-macam cara dan memeriksa apakah perbaikan dilakukan dgntepat.
Security TestingAdalah pengujian yg akan melalukan verifikasi dari mekanismeperlindungan yg akan dibuat oleh system, melindungi dari hal-hal ygmungkin terjadi.
Strees TestingDirancang untuk menghadapi situasi yg tidak normal pada saat programdiuji. Testing ini dilakukan oleh system untuk kondisi seperti volume data yg tidak normal (melebihi atau kurang dari batasan) atau frkkuensi.
Menjalankan test1. Testing aplikasi desktop2. Testing aplikasi server3. Testing aplikasi web
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.
CompatibilityHardware OS Diimplementasikan pada konfigurasi yang
berbeda diuji compatibilitasnya. Misalnya jika membuat di IE, coba di Firefox, Opera, Safari
HTML validation
2. Pengujian Aplikasi ServerVolume TestingStress TestingPerformance TestingData Recovery TestingData Backup and Restore TestingData Security Testing
Volume TestingMenemukan 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 hardisik pd satu server.
Stress TestingTujuan: 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.
Performance TestingDilakukan 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 korporateataupun lingkungan sendiri (LAN vs. WAN, Laptop vs. Desktop) Menguji sistem dengan hubungannya sistem ke lain pada
server yg sama.Load Balancing MonitorNetwork Monitor
Data Recovery TestingInvestigasi dampak kehilangan data melalui
proses recovery ketika terjadi kegagalan proses.
Penting dilakukan karena data yg disimpan di server dapat dikonfigurasi dengan berbagai cara.
Kehilangan Data terjadi akibat kegagalan sistem, hardisk rusak, peghapusan yg tidak sengaja, kecelakaan, virus dan pencuri.
Data Backup and Restore TestingDilakukan 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).
Data Security TestingPrivilege 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.
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 terbatasBrowserOSAplikasi plugin, dll
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/kebutuhan
proyekMensetting prioritas sesuai hasil risk analysisTentukan fokus testing yg dilakukan
Risk analysisRisk 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
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 webLoad testingSecurity testingLink testingHTML validationdll
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-macamTesting masing-masing komponen
Security testing Untuk aplikasi web base mengharuskan tingkat keamanan
yang tinggi, testing aplikasi harus mempertimbangkan pengujian keamanan aplikasi tersebut.
Menguji semua fungsi yg berhubungan dengan firewall, enkripsi, autentikasi, transaksi, akses database.
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
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.
Link testingUntuk 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 validationDitentukan oleh audience yg dituju, jenis browser
yang kemungkinan akan dipakai dan seberapa sesuai dengan standar html, microsoft atau ekstensi lainnya
Tool yang dipergunakanLoad testing
Curl-Loader, StressTester, Proxy Sniffer, Funkload,
Loadea, LoadManager, webStress, WAPT,FORECAST, dll
Security testingHailstorm, OWASP Security testing tools, GamaSec,Wikto, add-ons di firefox SQL Inject Me 0.4.0
Cont’dLink testing
WebLight, HTML PowerTools, Broken LinkPreventer, W3C Link Checker
HTML validationWebLight, HTML PowerTools, W3C CSS
ValidationService, W3C HTML Validation Service
TERIMA KASIH ATAS PERHATIAN ANDA !!!