Anda di halaman 1dari 47

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.

✘ Pengujian domain adalah jenis pengujian fungsional dan menguji


aplikasi dengan memasukkan input yang menarik dan
mengevaluasi outputnya.

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:

Domain Testing - Introduction, Testing Strategy &


conclusion (qacraft.com)
9
Contoh Domain
✘ Banking Domain –
✘ Retail Domains –
✘ Healthcare Domain –

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).

What is Domain Testing in Software Testing? (with Example) (guru99.com)


13
Struktur Domain Testing
✘ Identifikasi dan uji variabel yang menyimpan hasil (variabel output).
✘ Evaluasi bagaimana program menggunakan nilai variabel ini.
✘ Identifikasi variabel tambahan yang berpotensi terkait untuk pengujian
kombinasi.
✘ Bayangkan risiko yang belum tentu dipetakan ke dimensi yang jelas.
✘ Identifikasi dan daftar variabel yang tidak dianalisis. Kumpulkan informasi
untuk analisis nanti.
✘ Ringkas analisis Anda dengan tabel risiko/ekuivalensi.

What is Domain Testing in Software Testing? (with Example) (guru99.com)


14
3.
Data Flow Testing

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:

✘ Pernyataan di mana variabel menerima nilai,


✘ Pernyataan di mana nilai-nilai ini digunakan atau dirujuk.

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.

✘ Metrik Halstead memungkinkan Anda mengevaluasi waktu


pengujian source code OO apa pun. Ini hanya masuk akal pada
tingkat file sumber.

23
Operator dan Operan
✘ Menurut Halstead, "Program komputer adalah implementasi dari
algoritma yang dianggap sebagai kumpulan token yang dapat
diklasifikasikan sebagai operator atau operan."

Parameter Metrik Arti

N1 Total Operator Total Operator yang ada

N2 Total Operan Total operan yang ada

n1 Operator Berbeda Jumlah operator berbeda yang ada

n2 Operan Berbeda Jumlah operan berbeda yang ada

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

Operator Kemunculan Operan Kemunculan

for 2 2 2

= 6 1 3

– 1 0 1

<= 2 – –

++ 2 – –

return 2 – –

{} 3 – –

n1=14 N1=53 n2=10 N2=38


35
5.
Loop Testing
What is Loop Testing? Methodology, Example (guru99.com)

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).

✘ Pengujian loop adalah pengujian white box. Teknik ini digunakan


untuk menguji loop dalam program.

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.

✘ Namun jika penghitung loop untuk satu loop


digunakan sebagai nilai awal untuk yang lain, maka
itu tidak akan dianggap sebagai loop independen.

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

Anda mungkin juga menyukai