Rekayasa perangkat lunak (rpl)
SEMESTER
PENDEK
2015/2016
REKAYASA
PERANGKAT LUNAK
(RPL)
Betha Nurina Sari,M.Kom
PERTEMUAN 11-12
Pengujian Software
Pentingnya pengujian
sistem
Pengujian perangkat lunak dilakukan
untuk menentukan keberadaan,
kualitas, dan kemurnian dari atributatribut sistem aplikasi.
Pengujian dilakukan dengan
memanfaatkan tool dan teknik.
Semakin baik struktur dari proses
pengujian, semakin baik pula hasil
pengujiannya
Konsep kecocokan aplikasi
Keefektifan dari aplikasi komputer dalam
lingkungan bisnis ditentukan dari tingkat
kecocokan aplikasi tersebut dalam
lingkungan operasinya.
Kecocokan (ft) merupakan suatu konsep
yang menekankan pada bagaimana
tingkat kegunaan (usable), pembantuan
(helpful) dan manfaat dari unjuk kerja
aplikasi dalam membantu tugas-tugas
pemakai.
Semakin baik tingkat bantuan aplikasi
Konsep kecocokan aplikasi
Konsep kecocokan ini penting dalam
aspek desain maupun pengujian.
Desain harus bertujuan untuk
membangun aplikasi yang "cocok" dengan
proses bisnis pemakai dan proses
pengujian harus dapat meyakinkan tingkat
kecocokan yang dikehendaki dipenuhi.
Pengujian yang berkonsentrasi pada
struktur dan kebutuhan (requirement)
dapat gagal memenuhi aspek kecocokan.
Aspek Kecocokan
1.
2.
3.
4.
Data: data yang andal, timelines (tepat waktu),
konsisten dan banyak berguna (useful)
terkendali dalam aplikasi yang diotomatisasi
bagi pemakai.
Orang-orang: keahlian, training, kemampuan
belajar dan kesenangan untuk menggunakan
dan berinteraksi dengan aplikasi yang
diotomatisasi.
Struktur: pembangunan yang tepat dari sistem
aplikasi untuk mengoptimalkan tcknologi dan
memenuhi kebutuhan.
Aturan-aturan: prosedur-prosedur yang harus
dipatuhi dalam pemrosesan data.
Proses Testing
7
Unit
Testing
Module
Testing
Component Testing
Sub-system
Testing
System
Testing
Integration Testing
Acceptance
Testing
User
Testing
Proses Testing
8
Unit testing
Module Testing
Pengujian masing-masing unit komponen
program untuk meyakinkan bhw sudah
beroperasi secara benar
Pengujian terhadap koleksi unit-unit komponen
yang saling berhubungan.
Sub-system Testing
Pengujian terhadap koleksi module-module
yang membentuk suatu sub-system (aplikasi)
Proses Testing
9
System Testing
Pengujian terhadap integrasi sub-system, yaitu
keterhubungan antar sub-system
Acceptance Testing
Pengujian terakhir sebelum sistem dipakai oleh
user.
Melibatkan pengujian dengan data dari
pengguna sistem.
Biasa dikenal sebagai “alpha test” (“beta test”
untuk software komersial, dimana pengujian
dilakukan oleh potensial customer)
Proses Testing
10
Component testing
Pengujian komponen-komponen program
Biasanya dilakukan oleh component developer
(kecuali untuk system kritis)
Integration testing
Pengujian kelompok komponen-komponen
yang terintegrasi untuk membentuk subsystem ataupun system
Dilakukan oleh tim penguji yang independent
Pengujian berdasarkan spesifkasi sistem
Hirarki pengujian P/L
11
Hubungan antara rencana pengujian dan
proses pengembangan sistem
Spesifkasi
Kebutuhan
Spesifkasi
Sistem
Acceptance
Test plan
System
Integration
Test plan
Service
Acceptance
test
Perancangan
Sistem
Sub-System
Integration
Test plan
System
Integration
test
Detail
Perancangan
Module and
Unit code and
test
Sub-System
Integration
test
12
Pendekatan Strategis ke pengujian
perangkat lunak
Pengujian
Pengujian
Pengujian
Pengujian
Unit
Integrasi
Validasi
Sistem
Pengujian Unit
Berfokus pada inti terkecil dari desain
perangkat lunak yaitu modul
Biasanya berorientasi pada white box
MODUL
MODUL
Interface
Struktur data lokal
Kondisi Batas
Jalur independen
Jalur penanganan kesalahan
Test Case
Pengujian Unit
Checklist untuk pengujian interface
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 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?
Pengujian Unit
Apakah defnisi variabel global konsisten
dengan modul ?
Apakah batasan yang dilalui merupakan
argumen?
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
Underfow, overfow dan pengecualian pengalamatan
Seberapa baik sistem yang
sudah dibangun ?
l
Dua Aspek yang dipertimbangkan:
• Apakah implementasi sudah sesuai dengan
spesifkasi ?
• Apakah spesifkasi sesuai dengan kebutuhan
user ?
l
Validasi
• “Apakah sistem yang dikembangkan sudah
benar?”
• Pengujian dimana sistem ketika
diimplementasikan sesuai dengan yang
iharapkan
l
Verifkasi
Integration testing
Pengujian keseluruhan system atau subsystem yang terdiri dr komponen yg
terintegrasi.
Test integrasi menggunakan black-box
dengan test case ditentukan dari
spesifkasi.
Kesulitannya adalah
menemukan/melokasikan
Penggunaan Incremental integration
testing dapat mengurangi masalah
tersebut.
Incremental integration
testing
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
testing
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 di level hingga sistem lengkap sudah
teruji.
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
Pendekatan Testing
Architectural validation
Top-down integration testing lebih baik digunakan dalam
menemukan error dalam sistem arsitektur.
System demonstration
Top-down integration testing hanya membatasi pengujian
pada awal tahap pengembangan system.
Test implementation
Seringkali lebih mudah dengan menggunakan bottom-up
integration testing
Interface testing
Dilakukan kalau module-module dan
sub-system terintegrasi dan
membentuk sistem yang lebih besar
Tujuannya untuk medeteksi fault
terhadap kesalahan interface atau
asumsi yg tidak valid terntang interface
tsb.
Sangat penting untuk pengujian
terhadap pengembangan sistem dgn
menggunakan pendekatan objectoriented yg didefnisikan oleh objectobjectnya
Pengujian Validasi
Kajian Konfgurasi (audit)
Elemen
dari proses validasi
Memastikan apakah semua elemen
konfgurasi perangkat lunak telah
dikembangkan dengan tepat
Pengujian Validasi
Pengujian Alpha dan Beta
Pengujian
Alpha
Usability
labs
Usability factors checklist
Pengujian
Beta
Pengujian Sistem
Pengujian
Perbaikan
Pengujian Keamanan
Pengujian Stress
Pengujian Kinerja
Pengujian Aplikasi Server
Volume Testing
Stress Testing
Performance Testing
Data Recovery Testing
Data Backup and Restore
Testing
Data Security Testing
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 anatar
batasan fsik dan batasan logik.
Contoh:
Mengujikan proses antar server dan antar partisi hardisik
pd satu server.
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.
Performance Testing
Dilakukan secara paralel dengan Volume dan Stress testing
untuk mengetahui unjuk kerja sistem (waktu respon,
throughput rate) pada beberapa kondisi proses dan
konfgurasi.
Dilakukan pada semua konfgurasi 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
Performance testing tools
33
Below is the comprehensive list of most
widely used performance testing
tools for measuring web application
performance and load stress capacity.
These load testing tools will ensure your
application performance in peak trafc
and extreme stress conditions.
Top 15 Performance Testing Tools
34
Apache JMeter
NeoLoad
LoadRunner
LoadUI
WebLOAD
WAPT
Loadster
LoadImpact
Rational Performance Tester
Testing Anywhere
OpenSTA
QEngine (ManageEngine)
Loadstorm
CloudTest
Httperf
Data Recovery Testing
Investigasi dampak kehilangan data
melalui proses recovery ketika terjadi
kegagalan proses.
Penting dilakukan karena data yg
disimpan di server dapat dikonfgurasi
dengan berbagai cara.
Kehilangan Data terjadi akibat
kegagalan sistem, hardisk rusak,
peghapusan yg tidak sengaja,
kecelakaan, virus dan pencuri.
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).
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.
Debugging
Eksekusi case of case
Test Case
Pengujian
Tambahan
Penyebab
yang
dicurigai
Pengujian regresi
Koreksi
Penyebab
yang
diidentifikasi
Debugging
Hasil
NEXT >>>
1 Agustus : Presentasi Perancangan
Software
3 Agustus : Presentasi Pengujian
software
8 Agustus : UAS
PENDEK
2015/2016
REKAYASA
PERANGKAT LUNAK
(RPL)
Betha Nurina Sari,M.Kom
PERTEMUAN 11-12
Pengujian Software
Pentingnya pengujian
sistem
Pengujian perangkat lunak dilakukan
untuk menentukan keberadaan,
kualitas, dan kemurnian dari atributatribut sistem aplikasi.
Pengujian dilakukan dengan
memanfaatkan tool dan teknik.
Semakin baik struktur dari proses
pengujian, semakin baik pula hasil
pengujiannya
Konsep kecocokan aplikasi
Keefektifan dari aplikasi komputer dalam
lingkungan bisnis ditentukan dari tingkat
kecocokan aplikasi tersebut dalam
lingkungan operasinya.
Kecocokan (ft) merupakan suatu konsep
yang menekankan pada bagaimana
tingkat kegunaan (usable), pembantuan
(helpful) dan manfaat dari unjuk kerja
aplikasi dalam membantu tugas-tugas
pemakai.
Semakin baik tingkat bantuan aplikasi
Konsep kecocokan aplikasi
Konsep kecocokan ini penting dalam
aspek desain maupun pengujian.
Desain harus bertujuan untuk
membangun aplikasi yang "cocok" dengan
proses bisnis pemakai dan proses
pengujian harus dapat meyakinkan tingkat
kecocokan yang dikehendaki dipenuhi.
Pengujian yang berkonsentrasi pada
struktur dan kebutuhan (requirement)
dapat gagal memenuhi aspek kecocokan.
Aspek Kecocokan
1.
2.
3.
4.
Data: data yang andal, timelines (tepat waktu),
konsisten dan banyak berguna (useful)
terkendali dalam aplikasi yang diotomatisasi
bagi pemakai.
Orang-orang: keahlian, training, kemampuan
belajar dan kesenangan untuk menggunakan
dan berinteraksi dengan aplikasi yang
diotomatisasi.
Struktur: pembangunan yang tepat dari sistem
aplikasi untuk mengoptimalkan tcknologi dan
memenuhi kebutuhan.
Aturan-aturan: prosedur-prosedur yang harus
dipatuhi dalam pemrosesan data.
Proses Testing
7
Unit
Testing
Module
Testing
Component Testing
Sub-system
Testing
System
Testing
Integration Testing
Acceptance
Testing
User
Testing
Proses Testing
8
Unit testing
Module Testing
Pengujian masing-masing unit komponen
program untuk meyakinkan bhw sudah
beroperasi secara benar
Pengujian terhadap koleksi unit-unit komponen
yang saling berhubungan.
Sub-system Testing
Pengujian terhadap koleksi module-module
yang membentuk suatu sub-system (aplikasi)
Proses Testing
9
System Testing
Pengujian terhadap integrasi sub-system, yaitu
keterhubungan antar sub-system
Acceptance Testing
Pengujian terakhir sebelum sistem dipakai oleh
user.
Melibatkan pengujian dengan data dari
pengguna sistem.
Biasa dikenal sebagai “alpha test” (“beta test”
untuk software komersial, dimana pengujian
dilakukan oleh potensial customer)
Proses Testing
10
Component testing
Pengujian komponen-komponen program
Biasanya dilakukan oleh component developer
(kecuali untuk system kritis)
Integration testing
Pengujian kelompok komponen-komponen
yang terintegrasi untuk membentuk subsystem ataupun system
Dilakukan oleh tim penguji yang independent
Pengujian berdasarkan spesifkasi sistem
Hirarki pengujian P/L
11
Hubungan antara rencana pengujian dan
proses pengembangan sistem
Spesifkasi
Kebutuhan
Spesifkasi
Sistem
Acceptance
Test plan
System
Integration
Test plan
Service
Acceptance
test
Perancangan
Sistem
Sub-System
Integration
Test plan
System
Integration
test
Detail
Perancangan
Module and
Unit code and
test
Sub-System
Integration
test
12
Pendekatan Strategis ke pengujian
perangkat lunak
Pengujian
Pengujian
Pengujian
Pengujian
Unit
Integrasi
Validasi
Sistem
Pengujian Unit
Berfokus pada inti terkecil dari desain
perangkat lunak yaitu modul
Biasanya berorientasi pada white box
MODUL
MODUL
Interface
Struktur data lokal
Kondisi Batas
Jalur independen
Jalur penanganan kesalahan
Test Case
Pengujian Unit
Checklist untuk pengujian interface
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 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?
Pengujian Unit
Apakah defnisi variabel global konsisten
dengan modul ?
Apakah batasan yang dilalui merupakan
argumen?
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
Underfow, overfow dan pengecualian pengalamatan
Seberapa baik sistem yang
sudah dibangun ?
l
Dua Aspek yang dipertimbangkan:
• Apakah implementasi sudah sesuai dengan
spesifkasi ?
• Apakah spesifkasi sesuai dengan kebutuhan
user ?
l
Validasi
• “Apakah sistem yang dikembangkan sudah
benar?”
• Pengujian dimana sistem ketika
diimplementasikan sesuai dengan yang
iharapkan
l
Verifkasi
Integration testing
Pengujian keseluruhan system atau subsystem yang terdiri dr komponen yg
terintegrasi.
Test integrasi menggunakan black-box
dengan test case ditentukan dari
spesifkasi.
Kesulitannya adalah
menemukan/melokasikan
Penggunaan Incremental integration
testing dapat mengurangi masalah
tersebut.
Incremental integration
testing
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
testing
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 di level hingga sistem lengkap sudah
teruji.
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
Pendekatan Testing
Architectural validation
Top-down integration testing lebih baik digunakan dalam
menemukan error dalam sistem arsitektur.
System demonstration
Top-down integration testing hanya membatasi pengujian
pada awal tahap pengembangan system.
Test implementation
Seringkali lebih mudah dengan menggunakan bottom-up
integration testing
Interface testing
Dilakukan kalau module-module dan
sub-system terintegrasi dan
membentuk sistem yang lebih besar
Tujuannya untuk medeteksi fault
terhadap kesalahan interface atau
asumsi yg tidak valid terntang interface
tsb.
Sangat penting untuk pengujian
terhadap pengembangan sistem dgn
menggunakan pendekatan objectoriented yg didefnisikan oleh objectobjectnya
Pengujian Validasi
Kajian Konfgurasi (audit)
Elemen
dari proses validasi
Memastikan apakah semua elemen
konfgurasi perangkat lunak telah
dikembangkan dengan tepat
Pengujian Validasi
Pengujian Alpha dan Beta
Pengujian
Alpha
Usability
labs
Usability factors checklist
Pengujian
Beta
Pengujian Sistem
Pengujian
Perbaikan
Pengujian Keamanan
Pengujian Stress
Pengujian Kinerja
Pengujian Aplikasi Server
Volume Testing
Stress Testing
Performance Testing
Data Recovery Testing
Data Backup and Restore
Testing
Data Security Testing
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 anatar
batasan fsik dan batasan logik.
Contoh:
Mengujikan proses antar server dan antar partisi hardisik
pd satu server.
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.
Performance Testing
Dilakukan secara paralel dengan Volume dan Stress testing
untuk mengetahui unjuk kerja sistem (waktu respon,
throughput rate) pada beberapa kondisi proses dan
konfgurasi.
Dilakukan pada semua konfgurasi 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
Performance testing tools
33
Below is the comprehensive list of most
widely used performance testing
tools for measuring web application
performance and load stress capacity.
These load testing tools will ensure your
application performance in peak trafc
and extreme stress conditions.
Top 15 Performance Testing Tools
34
Apache JMeter
NeoLoad
LoadRunner
LoadUI
WebLOAD
WAPT
Loadster
LoadImpact
Rational Performance Tester
Testing Anywhere
OpenSTA
QEngine (ManageEngine)
Loadstorm
CloudTest
Httperf
Data Recovery Testing
Investigasi dampak kehilangan data
melalui proses recovery ketika terjadi
kegagalan proses.
Penting dilakukan karena data yg
disimpan di server dapat dikonfgurasi
dengan berbagai cara.
Kehilangan Data terjadi akibat
kegagalan sistem, hardisk rusak,
peghapusan yg tidak sengaja,
kecelakaan, virus dan pencuri.
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).
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.
Debugging
Eksekusi case of case
Test Case
Pengujian
Tambahan
Penyebab
yang
dicurigai
Pengujian regresi
Koreksi
Penyebab
yang
diidentifikasi
Debugging
Hasil
NEXT >>>
1 Agustus : Presentasi Perancangan
Software
3 Agustus : Presentasi Pengujian
software
8 Agustus : UAS