TESTING & IMPLEMENTASI SISTEM 4KA Teknik Pengujian Perangkat Lunak
helen.staff.gunadarma.ac.id
[email protected]
Overview • WHITE BOX TESTING - Basis Path Testing - Loop Testing • BLACK BOX TESTING - Equivalence Partitioning
helen.staff.gunadarma.ac.id
[email protected]
White Box VS Black Box Testing
WHITE BOX TESTING helen.staff.gunadarma.ac.id
[email protected]
White Box Testing • Juga dikenal dengan clear box testing, glass box testing, transparent box testing, dan structural testing. • Pengujian yang didasarkan pada detail prosedur dan alur logika kode program. • Dilakukan oleh orang yang memiliki pengetahuan tentang programming dan implementasinya. helen.staff.gunadarma.ac.id
[email protected]
Keunggulan WB Testing • Sebagai Software engineer yang memiliki akses ke source code, hal ini menjadi sangat mudah untuk melakukan skenario pengujian secara efektif. • Membantu Software engineer untuk mengoptimalkan source code. • Baris kode yang tidak efisien dapat dihilangkan agar mencegah bugs pada program. helen.staff.gunadarma.ac.id
[email protected]
Kelemahan WB Testing • Karena dibutuhkan Software engineer yang berpengalaman dalam White-box testing sehingga mengeluarkan biaya tambahan. • Terkadang sangat sulit melihat setiap baris kode untuk mencari bugs pada program yang akan diuji. helen.staff.gunadarma.ac.id
[email protected]
Basis Path Testing (Berbasis Alur) • Merupakan teknik ujicoba white box pertama yang diusulkan oleh Tom McCabe. • Tujuannya meyakinkan bahwa test case akan menguji setiap path pada suatu program paling sedikit satu kali.
helen.staff.gunadarma.ac.id
[email protected]
Flow Graph (Graf Alur) Flow Chart
Flow Graph
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
1
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
F
T
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
4
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
4
5
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
4
5
T 6
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
4
5
T 6
F 7
helen.staff.gunadarma.ac.id
[email protected]
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
T
4
5
F
T 6
7
8
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3 9
F
T
4
5
F
T 6
7
8
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3 9
F
T
4
T 5 10
F
T 6
7
8
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
9
T
T
4
F 5
10
11
F
T 6
7
8
1
Flow Graph READ a, b, c; DO WHILE ((a<20) and (b<40)) PRINT (a+b); IF (a == c) THEN PRINT (a); ELSE PRINT (c); END DO; IF (c<=100) THEN PRINT (a+b); ELSE PRINT (a-b); END.
2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Cyclomatic Complexity • Mendefinisikan jumlah independent path untuk memastikan bahwa seluruh perintah telah dieksekusi sedikitnya satu kali. • Hasil kompleksitas cyclomatic menggambarkan banyaknya path dan batas atas sejumlah testing yang harus dirancang dan dieksekusi untuk seluruh perintah dalam program. helen.staff.gunadarma.ac.id
[email protected]
Independent Path
1 2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Independent Path
1 2
T
F
• 1 – 2 – 9 – 10 – 12
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Independent Path
1 2
T
F
• 1 – 2 – 9 – 10 – 12 • 1 – 2 – 9 – 11 – 12
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Independent Path
1 2
T
F
• 1 – 2 – 9 – 10 – 12 • 1 – 2 – 9 – 11 – 12 • 1 – 2 – 3 – 9 – 10 – 12
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Independent Path
1 2
• 1 – 2 – 9 – 10 – 12 • 1 – 2 – 9 – 11 – 12 • 1 – 2 – 3 – 9 – 10 – 12 •1–2–3–4–5–6–8–2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Independent Path
1 2
• 1 – 2 – 9 – 10 – 12 • 1 – 2 – 9 – 11 – 12 • 1 – 2 – 3 – 9 – 10 – 12 •1–2–3–4–5–6–8–2 •1–2–3–4–5–7–8–2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Kompleksitas Cyclomatic • Jumlah Region dari graf alur • V(G) = E – N + 2 Dimana E = jumlah edge, dan N = jumlah node • V(G) = P + 1 Dimana P = jumlah predicates nodes
1 2
F
R2
10
3
F
9
T
R1
R4
T
T
F 5 11
12
4
T
R5
R3
6
F 7
8
Kompleksitas Cyclomatic • Jumlah Region dari graf alur • V(G) = E – N + 2 Dimana E = jumlah edge, dan N = jumlah node • V(G) = P + 1 Dimana P = jumlah predicates nodes
1
15 – 12 +2
2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Kompleksitas Cyclomatic • Jumlah Region dari graf alur • V(G) = E – N + 2 Dimana E = jumlah edge, dan N = jumlah node • V(G) = P + 1 Dimana P = jumlah predicates nodes
1 2
T
F
3
F
9
T
4
F
T
5 10
11
12
F
T 6
7
8
Graph Metrik • Graph metrik adalah matrik empat persegi yang mempunyai ukuran (sejumlah baris dan kolom) yang sama dengan jumlah node pada flow graph. • Baris dan kolom menggambarkan nodes, isi matriks menggambarkan edges.
helen.staff.gunadarma.ac.id
[email protected]
TERHUBUNG KE SIMPUL 1 SIMPUL
1
2
3
4
5
6
7
8
1
3
1 1
5
1
1
6
1
7
1
10 11 12
11
1 1
4
9
10
1
2
8
9
1 1
1
12
Untuk setiap baris : 1) 1 – 1 = 0 2) 2 – 1 = 1 3) 2 – 1 = 1 4) 1 – 1 = 0 5) 2 – 1 = 1 6) 1 – 1 = 0 7) 1 – 1 = 0 8) 1 – 1 = 0 9) 2 – 1 = 1 10) 1 – 1 = 0 11) 1 – 1 = 0 1 ------------------- + 1 4 1 -------- + CC = 5 helen.staff.gunadarma.ac.id
[email protected]
Latihan Soal Tentukan : 1. Flow Graph 2. Graph Metrik 3. Kompleksitas cyclomatic 4. Independent path ! helen.staff.gunadarma.ac.id
[email protected]
Loop Testing • Loop merupakan kendala yang sering muncul untuk menerapkan algoritma dengan tepat. • Uji coba loop merupakan teknik pengujian white box yg fokusnya pada validitas dari loop. • Kelas loop yaitu : loop sederhana, loop tersarang, loop terangkai, loop tidak terstruktur. helen.staff.gunadarma.ac.id
[email protected]
Kelas Loop
BLACK BOX TESTING helen.staff.gunadarma.ac.id
[email protected]
Black Box Testing • Software Tester tidak memiliki akses source code. • Tester akan berinteraksi dengan user interface yang menyediakan input dan memeriksa outputnya, juga menguji performa program atau menguji functionfunction yang tidak bekerja dengan benar. helen.staff.gunadarma.ac.id
[email protected]
Keunggulan BB Testing • Cocok dan efisien untuk source code dengan skala besar. • Menguji program dari sudut pandang user. • Software tester dalam jumlah yang banyak dapat menguji program tersebut tanpa harus memiliki pengetahuan tentang programming. helen.staff.gunadarma.ac.id
[email protected]
Kelemahan BB Testing • Software tester hanya menjalankan beberapa skenario pengujian yang dipilih. • Pengujian yang tidak efisien karena Software tester memiliki pengetahuan yang terbatas tentang program. • Pengujian yang tidak spesifik karena Software tester tidak memiliki akses ke source code. helen.staff.gunadarma.ac.id
[email protected]
Equivalence Partitioning • Membagi domain input dari program menjadi beberapa kelas data dari kasus ujicoba yang dihasilkan. • Class yang ekuivalen merepresentasikan sekumpulan keadaan valid dan invalid untuk kondisi input.
helen.staff.gunadarma.ac.id
[email protected]
Example : Tanggal (1 s.d. 31)
Invalid Partition •… • -2 • -1 •0
Valid Partition •1 •2 •3 •… • 31
Invalid Partition • 32 • 33 • 34 •…
helen.staff.gunadarma.ac.id
[email protected]
Example : Usia (20 s.d. 80 tahun, kecuali 60 s.d. 65)
Invalid Partition •… • -1 •0 •1 •… • 19 • 20
Valid Partition • 20 • 21 •… • 58 • 59
Invalid Partition • 60 • 61 •… • 64 • 65
Valid Partition • 66 • 67 •… • 79 • 80
Invalid Partition • 81 • 82 •…
helen.staff.gunadarma.ac.id
[email protected]
Example : dengan kondisi •
Dalam sebuah sistem penghitung bunga simpanan, bunga diberikan sesuai dengan jumlah simpanan : Bunga 3% untuk simpanan $0 s.d. $100 Bunga 5% untuk simpanan $101 s.d. $1,000 Bunga 7% untuk simpanan di atas $1,000
Invalid Partition •… • -$ 2 • -$ 1
Valid
Valid
Valid
(untuk bunga 3%)
(untuk bunga 5%)
(untuk bunga 7%)
•$0 •$1 •$2 •… • $ 99 • $ 100
• $ 101 • $ 102 •… • $ 999 • $ 1,000
• $ 1,001 • $ 1,002 • $ 1,003 •…
helen.staff.gunadarma.ac.id
[email protected]
Testing Sistem Real Time • Karakteristik khusus untuk sistem realtime memberikan tantangan tersendiri ketika ujicoba dilaksanakan. • Ketergantungannya dengan waktu, sifat alami dari beberapa aplikasi yang tidak sinkron, menambah kesulitan baru dan potensial sebagai elemen untuk ujicoba dengan waktu beragam. • Tidak hanya ujicoba whitebox maupun blackbox, tetapi juga ketepatan waktu pengiriman data dan pemrosesan paralel. helen.staff.gunadarma.ac.id
[email protected]
4 Langkah Strategi •
•
•
•
Task Testing, yaitu dengan mengujicobakan setiap task secara independen. Behavioral Testing, mensimulasikan perilaku sistem realtime dan menentukannya sebagai konsekuensi dari peristiwa eksternal. Setiap kesalahan yang terjadi diuji secara individual, dan perilaku executable sistem diperiksa untuk menentukan apakah terdeteksi kesalahan perilaku sistem. Intertask Testing, task yang tidak sinkron yang berkomunikasi dengan task lainnya diuji dengan beberapa data dan pemrosesan untuk menentukan apakah kesalahan antar task akan terjadi. System Testing, software dan hardware telah disatukan dan diujikan dalam uji sistem sebagai satu kesatuan. Testing ini dilakukan untuk menemukan kesalahan pada software dan hardware interface helen.staff.gunadarma.ac.id
[email protected]
Automated Testing Tools - Miller • •
•
•
• • •
•
Static Analyzer, program sistem analisis ini mendukung untuk pembuktian dari pernyataan tanpa bukti statis, perintah-perintah yang lemah dalam struktur program dan format. Code Auditors, sebuah filter dengan kegunaan khusus yang digunakan untuk memeriksa kualitas software untuk memastikan bahwa software tersebut telah memenuhi standars pengkodean minimum. Assertion Processors, sistem preprocessor/postprocessor ini digunakan untuk memberitahukan programmer dengan menyediakan klaim, yang disebut assertion, yaitu mengenai suatu perilaku program yang benar-benar ditemukan saat pelaksanaan program riil Test File Generators, merupakan pembangun processor, dan dipenuhi dengan definisi awal nilai, file masukan yang serupa untuk program yang sedang diujikan. Test Data Generators. merupakan sistem analisis otomatis yang membantu pengguna aplikasi dalam memilih data uji yang menyebabkan program berperilaku khusus Test Verifiers, tool ini mengukur cakupan uji internal, terkadang berhubungan dengan uji struktur kontrol dari objek uji, dan melaporkan cakupan nilai untuk para ahli jaminan kualitas Test Harnesses. Tools ini mendukung pemrosesan uji coba dengan (1) meng-install program kandidat dalam lingkungan uji, (2) berikan input data, dan (3) simulasikan dengan menggunakan stubs perilaku dari modul-modul subordinat Output Comparators, tool ini membuatnya sangat memungkinkan untuk membandingkan sekumpulan output dari suatu program dengan sekumpulan output dari proses sebelumnya (yang telah diarsipkan) untuk menentukan perbedaan diantara keduanya.
Automated Testing Tools - Dunn •
•
•
Symbolic Execution System, tool ini menampilkan ujicoba program dengan menggunakan input aljabar, dari pada nilai data numerik,. Software yang diuji akan menguji satu class data uji dari pada satu kasus uji spesifik. Output yang dihasilkan dalam bentuk aljabar dan dapat dibandingkan dengan output yang diharapkan yang telah ditulis dalam bentuk aljabar Environment Simulator, merupakan tool untuk sistem berbasis komputer khusus, yang mampu untuk menguji model lingkungan eksternal dari suatu software realtme, dan mensimulasikan kondisi operasi sesungguhnya secara dinamis. Data Flow Analyzer, tool ini melacak aliran data yang melewati sistem, dan berusaha untuk menemukan data reference yang belum didefinisikan , peng-indeks-an yang salah, dan kesalahan data terkait lainnya. helen.staff.gunadarma.ac.id
[email protected]