TestForge

Bab 4 — Test analysis dan design

Teknik black-box, white-box, dan berbasis pengalaman, plus pendekatan berbasis kolaborasi.

30 mntPersiapan Ujian Foundation Level

Bab yang menentukan hasil Anda

Bab 4 menyumbang 11 dari 40 pertanyaan di paket latihan kami — lebih banyak daripada bab mana pun, dan lebih banyak daripada bab 3 dan 6 digabungkan. Ia juga bab pertama dengan tujuan pembelajaran K3, dan itu perubahan jenis, bukan perubahan derajat.

Pertanyaan K1 dan K2 meminta Anda mengingat atau menjelaskan. K3 meminta Anda menerapkan sebuah teknik pada materi yang tercetak di pertanyaannya lalu menghasilkan sebuah jawaban: sejumlah test case, sekumpulan nilai, sebuah persentase cakupan. Anda tidak bisa mengulang belajar untuk itu dengan membaca. Anda harus mengerjakannya sampai mekanismenya otomatis, karena dalam tekanan waktu ujian Anda akan punya kira-kira sembilan puluh detik untuk masing-masing.

BagianTujuanTingkat KYang diinginkannya
4.1 Ikhtisar1K2Ketiga kategorinya, dan masing-masing berdasar apa
4.2 Teknik black-box4Semuanya K3Terapkan EP, BVA, decision table, state transition
4.3 Teknik white-box3K2Statement, branch, dan apa nilai white-box
4.4 Berbasis pengalaman3K2Error guessing, eksploratori, berbasis checklist
4.5 Berbasis kolaborasi3K2, K2, K3User story, acceptance criteria, ATDD

Lima dari 14 tujuan pembelajaran babnya adalah K3, dan empat di antaranya ada di §4.2. Di situlah waktu latihan Anda sebaiknya dibelanjakan.

4.1 Ketiga kategorinya

KategoriDiturunkan dariMelihat kodenya?
Black-boxPerilaku objek uji yang dispesifikasikanTidak
White-boxStruktur internal atau implementasinyaYa
Berbasis pengalamanPengetahuan dan pengalaman testernyaBisa keduanya

Teknik black-box tidak bergantung pada bagaimana sesuatu dibangun, jadi pengujiannya selamat dari penulisan ulang. Teknik white-box mengukur seberapa banyak strukturnya yang Anda jalankan. Teknik berbasis pengalaman menemukan apa yang dilewatkan dua yang lain, justru karena ia tidak diturunkan dari sebuah dokumen yang mungkin dirinya sendiri tidak lengkap.

4.2 Teknik black-box — bagian K3-nya

Track 1 mengajarkan keempatnya secara mendalam: equivalence partitioning, boundary value analysis, decision table, dan state transition testing. Yang menyusul adalah versi berbentuk-ujiannya: bagaimana pertanyaannya diajukan, bagaimana Anda menghitung, dan di mana nilainya bocor.

Equivalence partitioning

Bagi domain input (atau output) menjadi partisi yang anggotanya semua seharusnya ditangani dengan cara yang sama, lalu uji satu nilai dari masing-masing. Setiap partisi entah valid entah invalid, dan domainnya harus dipartisi sepenuhnya — setiap nilai yang mungkin berada tepat di satu partisi.

Contoh dikerjakan. Sebuah kolom menerima umur dari 18 sampai 65 inklusif.

PartisiJenisSebuah nilai wakil
di bawah 18invalid12
18–65valid40
di atas 65invalid70
bukan angkainvalid"abc"

Cakupan = partisi yang dijalankan ÷ total partisi × 100%. Empat partisi, empat pengujian, 100%.

Aturan yang menggerus nilai: jalankan hanya satu partisi invalid per pengujian. Kalau Anda mengirim umur 12 dan sebuah nilai bukan angka di pengujian yang sama lalu ditolak, Anda tidak bisa tahu aturan mana yang menolaknya — dan cacat keduanya tetap tersembunyi. Partisi valid boleh digabungkan dengan bebas.

Boundary value analysis

BVA memperhalus EP: cacat menggerombol di tepi partisi yang terurut, jadi uji tepinya. Ia berlaku hanya di tempat partisinya terurut — 18 sampai 65 punya batas, "metode pembayaran" tidak.

Dua varian, dan ujiannya mengharapkan Anda tahu yang mana yang ditanyakannya:

Untuk rentang valid 18–65Nilai yang diuji
BVA 2 nilaiTiap batas dan tetangga terdekatnya di luar: 17, 18, 65, 66
BVA 3 nilaiTiap batas plus kedua tetangganya: 17, 18, 19, 64, 65, 66

Cakupan = nilai batas yang dijalankan ÷ total nilai batas × 100%.

Hitunglah dengan cermat. Pertanyaan yang berbunyi "memakai boundary value analysis 3 nilai, berapa test case yang dibutuhkan untuk cakupan penuh" sedang meminta Anda menghitung nilai, bukan partisi — dan ia sedang menanyakan apakah Anda ingat bahwa BVA 3 nilai mengambil tetangga di kedua sisi.

Decision table testing

Untuk aturan yang menggabungkan beberapa kondisi. Kondisinya di atas, aksinya di bawah, dan tiap kolom adalah sebuah aturan — satu kombinasi kondisi beserta aksi yang dipicunya.

Contoh dikerjakan. Gratis ongkir berlaku ketika pesanannya di atas 50 dan pelanggannya member; member selalu mendapat diskon 10%.

R1R2R3R4
Pesanan di atas 50TTFF
MemberTFTF
Gratis ongkir
Diskon 10%

Cakupan penuh berarti satu pengujian per aturan, jadi empat pengujian di sini. Dengan n kondisi biner sebuah tabel penuh punya 2ⁿ kolom — tiga kondisi memberi delapan, empat memberi enam belas, dan pertumbuhan itulah yang membuat tabel diringkas.

Meringkas melebur kolom di tempat sebuah kondisi tidak bisa memengaruhi hasilnya, dengan menandainya "–" (tidak peduli). Tabel yang diringkas punya lebih sedikit aturan, dan karenanya lebih sedikit pengujian, tanpa kehilangan kombinasi yang penting. Kalau sebuah pertanyaan menunjukkan tabel dengan tanda hubung, hitung kolom yang ditampilkannya — bukan 2ⁿ.

State transition testing

Untuk perilaku yang bergantung pada apa yang terjadi sebelumnya. Empat bahan: state, event yang memicu transisi, transisi antarstate, dan secara opsional guard dan aksi.

Contoh dikerjakan. Sebuah login yang terkunci setelah tiga kegagalan:

StateEventState berikutnya
Sudah keluarkredensial validSudah masuk
Sudah keluarkredensial tidak valid (ke-1, ke-2)Sudah keluar
Sudah keluarkredensial tidak valid (ke-3)Terkunci
Sudah masukkeluarSudah keluar
Terkuncireset kata sandiSudah keluar

Tiga kriteria cakupan, dengan kekuatan yang meningkat:

  • Semua state: setiap state disinggahi setidaknya sekali.
  • Semua transisi sah (cakupan 0-switch): setiap panah di diagramnya dijalankan setidaknya sekali. Ini arti biasa dari "cakupan 100%" di sini.
  • Semua transisi, yang sah dan yang tidak sah: setiap pasangan state-event di tabel state-nya, termasuk sel yang tidak digambar diagramnya — apa yang terjadi kalau Anda mengirim "reset kata sandi" selagi sudah masuk?

Diagram state hanya menunjukkan transisi yang sah; tabel state menunjukkan setiap pasangan state–event, termasuk yang mustahil. Perbedaan itu persis yang dimanfaatkan sebuah pertanyaan ketika ia menanyakan berapa pengujian yang dibutuhkan untuk sebuah tabel state versus sebuah diagram.

4.3 Teknik white-box

Kembali ke K2 — Anda harus menjelaskannya, bukan menghitung contoh yang besar, meski aritmetikanya cukup sederhana sehingga sebuah pertanyaan tetap bisa meminta sebuah persentase.

Statement testing menjalankan pernyataan yang bisa dieksekusi. Cakupan = pernyataan yang dijalankan ÷ total pernyataan × 100%.

Branch testing menjalankan output keputusan — setiap cabang yang diambil dan yang tidak diambil. Cakupan = cabang yang dijalankan ÷ total cabang × 100%.

Fakta tunggal yang paling sering diujikan di bagian ini:

Cakupan branch 100% menjamin cakupan statement 100%. Kebalikannya tidak benar.

Inilah sebabnya, dalam empat baris:

1  if (balance > 100) {
2      applyBonus();
3  }
4  print(balance);

Satu pengujian dengan balance = 150 mengeksekusi setiap pernyataan — cakupan statement 100% — sementara cabang false-nya tidak pernah diambil, jadi cakupan branch-nya cuma 50%. Kalau cacatnya tinggal di apa yang seharusnya terjadi ketika kondisinya false, cakupan statement berkata "lengkap" dan tidak menemukan apa pun.

Apa nilai pengujian white-box. Ia mengukur cakupan kodenya secara objektif, alih-alih lewat pendapat siapa pun tentang ketuntasan; ia menemukan kode yang tak terjangkau, kode mati, dan perilaku yang tidak terdokumentasi; dan ia menjalankan implementasinya sebagaimana adanya alih-alih sebagaimana yang digambarkan spesifikasinya.

Dan batasnya, yang diujikan sesering nilainya: teknik white-box tidak bisa menemukan kebutuhan yang tidak pernah diimplementasikan. Tidak ada kode untuk dicakup. Itulah sebabnya ia melengkapi pengujian black-box alih-alih menggantikannya.

4.4 Teknik berbasis pengalaman

TeknikApa ituKelemahannya
Error guessingMengantisipasi error, cacat, dan kegagalan dari pengalaman, lalu menyerangnya dengan sengaja — sering dari sebuah checklist jenis cacat masa laluSepenuhnya bergantung pada pengalaman testernya
Pengujian eksploratoriMerancang, mengeksekusi, dan belajar pada saat yang sama, biasanya ber-timebox di bawah sebuah charter, dengan catatan yang direkamSulit direproduksi dan diukur; bukan pengganti cakupan yang terstruktur
Berbasis checklistPengujian yang dipandu sebuah checklist berisi hal-hal yang harus dipastikan, dibangun dari pengalamanChecklist kehilangan efektivitasnya seiring ia menua dan diulang-ulang

Dua hal yang harus dicermati. Pengujian eksploratori bukan pengujian ad hoc — ia ber-timebox, ber-charter, dan terdokumentasi, dan itulah yang menjadikannya sebuah teknik alih-alih klik-klik sembarangan; ia paling berharga di tempat spesifikasinya buruk, waktunya sempit, atau timnya perlu cepat mengenal produknya. Dan kelemahan checklist itu adalah prinsip pengujian menjadi aus dari bab 1 yang memakai topi berbeda.

4.5 Pendekatan berbasis kolaborasi

Menulis user story secara kolaboratif. Tiga C-nya:

  • Card — story-nya sendiri, cukup kecil untuk muat di satu kartu
  • Conversation — bagaimana fiturnya dijelaskan dan dipahami, dan di situlah kebutuhan yang sesungguhnya diselesaikan
  • Confirmation — acceptance criteria yang menyatakan kapan ia selesai

Ditulis oleh ketiga sudut pandang bersama-sama — bisnis, pengembangan, pengujian — dan itulah sebabnya cacatnya tercegah alih-alih ditemukan.

Dua cara menulis acceptance criteria:

GayaBentuk
Berorientasi skenarioGiven sebuah prakondisi, when sebuah peristiwa terjadi, then sebuah hasil menyusul
Berorientasi aturanSebuah daftar verifikasi, atau sekumpulan aturan berbutir yang harus dipenuhi fiturnya

ATDD (K3) — menurunkan test case dari acceptance criteria. Timnya menulis pengujiannya sebelum pengembangannya dimulai, dari kriterianya sendiri. Tujuan pembelajaran ini K3, jadi sebuah pertanyaan bisa mencetak sebuah kriteria lalu menanyakan pengujian apa yang keluar darinya.

Contoh dikerjakan. Kriteria: Given seorang member dengan pesanan di atas 50, when mereka checkout, then ongkirnya gratis.

PengujianDiturunkan dariDiharapkan
Member, pesanan 60Kriterianya sebagaimana dinyatakanGratis ongkir
Member, pesanan 50Batas — apakah "di atas" itu inklusif?Sesuai aturannya; tanyakan kalau tidak dinyatakan
Member, pesanan 40Negatif — kondisinya tidak terpenuhiOngkir dibebankan
Bukan member, pesanan 60Negatif — kondisi yang satunya tidak terpenuhiOngkir dibebankan

Perhatikan apa yang diperagakan contoh itu, karena itulah inti tujuan pembelajarannya: penurunan menghasilkan pengujian positif dan negatif, dan ia menyingkap kerancuan di "di atas 50" sebelum satu baris kode pun ada — dan itu argumen bab 3 untuk pengujian statis yang tiba dari arah sebaliknya.

Perbedaan yang menentukan nilai

Pasangan yang tertukarGaris pemisahnya
Cakupan statement / branch100% branch ⇒ 100% statement; tidak pernah sebaliknya
BVA 2 nilai / 3 nilaiTetangga di satu sisi / di kedua sisi
Partisi / nilai batasYang dihitung EP / yang dihitung BVA
Partisi valid / partisi invalidDigabung bebas / satu invalid per pengujian
Decision table penuh / diringkas2ⁿ aturan / lebih sedikit, dengan sel "tidak peduli" — hitung yang tercetak
Diagram state / tabel stateHanya transisi sah / setiap pasangan state–event, termasuk yang tidak sah
Semua state / semua transisiMenyinggahi tiap state / menjalankan setiap panah
Eksploratori / ad hocBer-charter, ber-timebox, terdokumentasi / tanpa struktur
Nilai white-box / batas white-boxCakupan kode yang objektif / buta terhadap apa yang tidak pernah ditulis
Black-box / berbasis pengalamanDiturunkan dari spesifikasi / dari pengetahuan testernya

Cara membelanjakan minggu terakhir

Khusus untuk bab ini, dan ini berbeda dari bab lainnya: jangan membacanya ulang. Kerjakan keempat teknik §4.2 terhadap materi yang segar sampai Anda bisa menghasilkan partisinya, nilai batasnya, hitungan aturannya, dan hitungan transisinya tanpa ragu. Di dalam ujian, pertanyaan-pertanyaan ini bernilai lebih dari seperempat kertasnya dan hanya di situlah jawabannya benar atau salah tanpa kerancuan — dan itu bermata dua.

Latih dengan drill

Delapan pertanyaan, tanpa batas waktu, setiap jawabannya dijelaskan:

Kuis bab 4 → — simulator ujiannya berbahasa Inggris.

Hitung waktu Anda sendiri: kalau sebuah pertanyaan K3 memakan lebih dari dua menit di sini, ia akan memakan dua pertanyaan lain di kertas ujian yang sesungguhnya.

Selanjutnya: Bab 5 — mengelola aktivitas pengujian, bab dengan tujuan pembelajaran terbanyak di seluruh silabusnya.

Uji pemahaman Anda

4 pertanyaan. Tidak perlu akun, dan tidak ada yang dikirim ke mana pun selain ke pemeriksa jawaban.

  1. 1. Sebuah kolom menerima nilai dari 10 sampai 99 inklusif. Memakai boundary value analysis 3 nilai, nilai apa saja yang disumbangkan batas bawah rentang valid-nya?

  2. 2. Sebuah suite pengujian mencapai cakupan statement 100% atas sebuah modul. Apa yang bisa Anda simpulkan tentang cakupan branch-nya?

  3. 3. Anda menguji sebuah form dengan tiga partisi input yang invalid. Kenapa tiap pengujian sebaiknya menjalankan hanya satu partisi invalid dalam satu waktu?

  4. 4. Pernyataan mana tentang teknik berbasis pengalaman dan teknik white-box yang benar?(pilih semua yang sesuai)

Jawab semua pertanyaan dulu.

ISTQB® adalah merek dagang terdaftar milik International Software Testing Qualifications Board. TestForge QA Academy tidak berafiliasi dengan, tidak didukung oleh, dan tidak terakreditasi oleh ISTQB maupun member board mana pun di bawahnya. Soal latihan ditulis berdasarkan learning objective pada silabus yang diterbitkan dan bukan salinan dari ujian sungguhan mana pun.