Pertemuan 6
Pertemuan 6
1.
Branch Testing
2
Branch Testing
✘ Pengujian berbasis area percabangan
✘ Yang bertujuan untuk memastikan bahwa setiap cabang yang
mungkin dari setiap titik keputusan dieksekusi setidaknya sekali
dan dengan demikian memastikan bahwa semua kode yang dapat
dijangkau dieksekusi.
✘ Artinya, setiap cabang diambil setiap jalan, benar dan salah. Ini
membantu dalam memvalidasi semua cabang dalam kode
memastikan bahwa tidak ada cabang yang mengarah ke perilaku
aplikasi yang tidak normal
3
Branch Testing (tutorialspoint.com)
Contoh
Read A Untuk menghitung Cakupan Cabang, kita harus mencari
tahu jumlah minimum jalur yang akan memastikan
Read B bahwa semua tepi tertutup.
IF A+B > 10 THEN Dalam hal ini tidak ada jalur tunggal yang akan
memastikan cakupan semua tepi sekaligus.
Print "A+B is Large"
ENDIF Tujuannya adalah untuk mencakup semua
kemungkinan keputusan benar/salah.
If A > 5 THEN
Print "A Large"
ENDIF
4
Penyelesaian
✘ Jalur 1 - A1-B2-C4-D6-E8
✘ Jalur 2 - A1-B3-5-D7
✘ Cakupan Cabang (BC) =
Jumlah jalur =2
5
2.
Domain Testing
6
Domain Testing
✘ Pengujian domain adalah teknik pengujian perangkat lunak di
mana memilih sejumlah kecil kasus uji dari kelompok kasus uji yang
hampir tak terbatas. Untuk menguji beberapa aplikasi,
pengetahuan khusus domain memainkan peran yang sangat
penting.
7
Domain Testing
✘ Pengujian domain bersifat fungsional Pengujian di mana output dari
suatu sistem diuji dengan jumlah input minimum untuk
memastikan bahwa sistem tidak menerima nilai yang tidak valid
dan sistem tidak dapat menerima nilai input yang berada di luar
rentang.
✘ Ini adalah salah satu metode Pengujian white box yang penting. Ini
juga memverifikasi bahwa sistem tidak boleh menerima input,
kondisi di luar rentang yang ditentukan.
8
Pengetahuan Domain
✘ Sulit bagi seseorang untuk melakukan pekerjaan apa pun secara
efektif di bidang apa pun di mana orang tersebut tidak terbiasa.
Jadi, penting untuk memiliki pengetahuan domain dasar di setiap
bidang tempat kita akan bekerja.
✘ Ini juga penting karena jika kita tidak memiliki pengetahuan
domain dasar, maka kita tidak dapat melakukan sesuatu secara
efektif:
10
Strategi pengujian domain
✘ Putuskan apa yang bisa salah dengan batasan.
✘ Temukan cara untuk menangani setiap kasus.
✘ Putuskan Nilai apa yang harus saya uji.
✘ Centang titik uji yang berlebihan.
✘ Tentukan apakah ada batas yang salah.
✘ Verifikasi setiap batas dari semua domain.
11
Skill Domain Testing
✘ Cepat Belajar
✘ Pengetahuan domain
✘ Dapat bekerja di bawah tekanan
✘ Keahlian Teknis dan Pemrograman
✘ Keterampilan otomatisasi
✘ Keterampilan berburu serangga
✘ Kemampuan berkomunikasi
✘ Pengujian domain membutuhkan pengetahuan domain sehingga jika kita
memberikan input yang benar, kita bisa mendapatkan hasil yang diharapkan.
12
Struktur Domain Testing
✘ Biasanya, penguji mengikuti langkah-langkah di bawah ini dalam
pengujian domain. Ini dapat disesuaikan / dilewati sesuai dengan
kebutuhan pengujian.
○ Identifikasi variabel yang berpotensi menarik.
○ Identifikasi variabel yang dapat Anda analisis sekarang dan urutkan (terkecil
hingga terbesar dan sebaliknya).
○ Membuat dan mengidentifikasi nilai batas dan nilai kelas ekivalensi seperti di
atas.
○ Identifikasi dimensi sekunder dan analisis masing-masing dengan cara klasik.
(Dalam contoh di atas, Gender adalah dimensi sekunder).
15
??
Pengujian aliran data adalah keluarga strategi pengujian berdasarkan
pemilihan jalur melalui aliran kontrol program untuk mengeksplorasi
urutan peristiwa yang terkait dengan status variabel atau objek data.
Pengujian Aliran Data berfokus pada titik di mana variabel menerima
nilai dan titik di mana nilai-nilai ini digunakan.
16
Definisi
✘ Data Flow Testing adalah jenis pengujian struktural. Ini adalah metode
yang digunakan untuk menemukan jalur uji suatu program sesuai dengan
lokasi definisi dan penggunaan variabel dalam program. Ini tidak ada
hubungannya dengan diagram aliran data.
✘ Hal ini berkaitan dengan:
17
Data Flow Testing
18
Data Flow Testing
✘ Pengujian Aliran Data menggunakan grafik aliran kontrol untuk
menemukan situasi yang dapat mengganggu aliran program.
✘ Referensi atau mendefinisikan anomali dalam aliran data
terdeteksi pada saat asosiasi antara nilai dan variabel. Anomali
tersebut adalah:
○ Sebuah variabel didefinisikan tetapi tidak digunakan atau
direferensikan,
○ Sebuah variabel digunakan tetapi tidak pernah didefinisikan,
○ Sebuah variabel didefinisikan dua kali sebelum digunakan
19
Data FlowTesting
Keuntungan Pengujian Aliran Data: Kekurangan Pengujian Aliran Data
Pengujian Aliran Data digunakan untuk
Proses yang memakan waktu dan mahal
menemukan masalah berikut-
○ Untuk menemukan variabel yang Membutuhkan pengetahuan tentang bahasa
digunakan tetapi tidak pernah
pemrograman
didefinisikan,
○ Untuk menemukan variabel yang
didefinisikan tetapi tidak pernah
digunakan,
○ Untuk menemukan variabel yang
didefinisikan beberapa kali sebelum
digunakan,
○ Dealokasi variabel sebelum
digunakan.
20
Data Flow Testing - GeeksforGeeks
Contoh
21
4.
Halstead Metrics
22
Halstead
✘ Tujuan Halstead adalah untuk mengidentifikasi properti terukur
dari source code, dan hubungan di antara mereka.
23
Operator dan Operan
✘ Menurut Halstead, "Program komputer adalah implementasi dari
algoritma yang dianggap sebagai kumpulan token yang dapat
diklasifikasikan sebagai operator atau operan."
24
Vocabulary (n)
✘ Jumlah operator dan operan unik dalam
program Anda.
Length (N)
✘ Ukuran program yang diabstraksi diperoleh
dengan menghapus semuanya kecuali
operator dan operan dari program aslinya.
25
Volume (V)
✘ Volume Halstead menggambarkan ukuran implementasi suatu
algoritma. Perhitungan volume didasarkan pada jumlah operasi
yang dilakukan dan operan yang ditangani dalam algoritma yang
dikodekan sebagai string biner dengan panjang seragam (dan
berpotensi nonintegral).
26
Difficulty (D)
✘ Tingkat kesulitan atau rawan kesalahan (D) program sebanding
dengan jumlah operator unik dalam program. D juga sebanding
dengan rasio antara jumlah total operan dan jumlah operan unik
(yaitu jika operan yang sama digunakan berkali-kali dalam
program, itu lebih rentan terhadap kesalahan).
27
Level (L)
✘ Level program (L) adalah kebalikan dari kerentanan program. Yaitu.
program tingkat rendah lebih rentan terhadap kesalahan daripada
program tingkat tinggi.
28
Effort (E)
✘ Upaya untuk melaksanakan (E) atau memahami suatu program
sebanding dengan volume dan tingkat kesulitan program tersebut.
29
Time to program (T)
✘ Waktu untuk melaksanakan atau memahami suatu program (T)
sebanding dengan usaha. Eksperimen empiris dapat digunakan
untuk mengkalibrasi besaran ini. Halstead telah menemukan
bahwa membagi usaha dengan 18 memberikan perkiraan waktu
dalam detik.
30
Estimated bugs (B)
✘ Jumlah perkiraan bug (B) berkorelasi dengan kompleksitas
keseluruhan perangkat lunak, dan merupakan perkiraan jumlah
kesalahan dalam implementasi.
Perkiraan bug dalam file harus kurang dari 2.
Pengalaman menunjukkan bahwa, ketika
memprogram dengan C atau C++, file sumber
hampir selalu mengandung lebih banyak
kesalahan daripada yang disarankan B. Jumlah
cacat cenderung tumbuh lebih cepat dari B.
31
Keuntungan Metrik Halstead
✘ Hal ini sederhana untuk menghitung.
✘ Ini mengukur kualitas program secara keseluruhan.
✘ Ini memprediksi tingkat kesalahan.
✘ Ini memprediksi upaya pemeliharaan.
✘ Itu tidak memerlukan analisis penuh dari struktur pemrograman.
✘ Hal ini berguna dalam penjadwalan dan pelaporan proyek.
✘ Ini dapat digunakan untuk bahasa pemrograman apa pun.
32
Kekurangan Metrik Halstead
✘ Itu tergantung pada kode lengkapnya.
✘ Tidak ada gunanya sebagai model estimasi prediktif.
33
Contoh
Operator Kemunculan Operan Kemunculan
int 4 sort 1
() 5 x 7
, 4 n 3
[] 7 i 8
if 2 j 7
< 2 save 3
; 11 im1 3
34
Software Engineering | Halstead's Software Metrics -
javatpoint
for 2 2 2
= 6 1 3
– 1 0 1
<= 2 – –
++ 2 – –
return 2 – –
{} 3 – –
36
Apa itu Pengujian Loop?
✘ Pengujian Loop didefinisikan sebagai jenis pengujian perangkat
lunak, yang sepenuhnya berfokus pada validitas konstruksi loop. Ini
adalah salah satu bagian dari Pengujian Struktur Kontrol
(pengujian jalur, pengujian validasi data, pengujian kondisi).
37
Tipe Loop Testing
✘ Simple loop (sederhana)
✘ Nested loop (Bersarang)
✘ Concatenated loop (Bersambung)
✘ Unstructured loop (Tidak terstruktur)
38
Alasan Loop Testing
✘ Pengujian dapat memperbaiki masalah pengulangan loop
✘ Pengujian loop dapat mengungkapkan kemacetan
kinerja/kapasitas
✘ Dengan menguji loop, variabel yang tidak diinisialisasi dalam loop
dapat ditentukan
✘ Membantu untuk mengidentifikasi masalah inisialisasi loop.
39
Bagaimana melakukan Pengujian Loop
✘ Saat menguji loop, itu harus diperiksa pada tiga level berbeda:
○ Ketika loop dimasukkan
○ Selama pelaksanaannya dan
○ Ketika loop dibiarkan
40
Simple Loop
✘ Lewati seluruh loop
✘ Buat 1 melewati loop
✘ Buat 2 lintasan melalui loop
✘ Buat lintasan melalui loop di mana a<b, n
adalah jumlah maksimum lintasan melalui
loop
✘ Buat b, b-1; b+1 melewati loop di mana "b"
adalah jumlah maksimum lintasan yang
diizinkan melalui loop.
41
Nested Loop
✘ Atur semua loop lainnya ke nilai minimum dan
mulai dari loop terdalam
✘ Untuk loop terdalam, lakukan tes loop sederhana
dan tahan loop luar pada nilai parameter iterasi
minimumnya
✘ Lakukan tes untuk loop berikutnya dan kerjakan ke
luar.
✘ Lanjutkan sampai loop terluar telah diuji.
42
Concatenated Loops
✘ Dalam loop bersambung, jika dua loop independen
satu sama lain maka mereka diuji menggunakan
loop sederhana atau mengujinya sebagai loop
bersarang.
43
Unstructured Loops
✘ Untuk loop tidak terstruktur, diperlukan
restrukturisasi desain untuk
mencerminkan penggunaan konstruksi
pemrograman terstruktur.
44
Batasan dalam pengujian Loop
✘ Bug loop sebagian besar muncul di perangkat lunak tingkat rendah
✘ Bug yang diidentifikasi selama pengujian loop tidak terlalu halus
✘ Banyak bug yang mungkin terdeteksi oleh sistem operasi sehingga
akan menyebabkan pelanggaran batas memori, kesalahan
penunjuk yang dapat dideteksi, dll.
45
46
47