"Panduan Praktisi untuk Desain Tes Perangkat Lunak" Lee Copeland diterbitkan pada tahun 2003.
Sejak itu, buku itu tertanam kuat dalam daftar buku yang harus dibaca oleh setiap penguji. Layak dibaca dalam aslinya. Bunyinya sangat bagus: bahasanya tidak rumit, gayanya mudah. Dalam perjalanan buku ini, penulis sedikit menyeterika dirinya sendiri, murid-muridnya, pembaca dan, secara umum, pada lingkup kegiatan kita.
Berikut ini bukan terjemahan, melainkan ringkasan terperinci dari bagian "Teknik Pengujian Kotak Hitam", yang menjelaskan penerapan teknik desain pengujian.
Buku itu jatuh ke tangan saya atas saran dari seorang mantan kolega, yang terima kasih khusus kepadanya.
Agar uji yang paling efektif dan efisien harus dirancang, tidak hanya ditampar bersama.
Pengujian Kelas Kesetaraan
Pengujian Nilai Batas
Pengujian tabel keputusan
Pengujian berpasangan
Pengujian Transisi Negara
Gunakan Pengujian Kasus
Pengujian Kelas Kesetaraan
Teknik
- Tentukan kelas kesetaraan.
- Buat kasus uji untuk setiap kelas ekivalensi.
Kelas ekivalensi adalah dataset yang menjalankan modul yang sama dan harus menghasilkan hasil yang sama.
Setiap data dalam kelas adalah ekuivalen, yang berarti bahwa jika satu kasus uji dalam kotak ekivalensi telah menemukan / tidak menemukan cacat, maka semua kasus uji lain di dalam kelas ekivalensi ini akan mendeteksi / tidak menemukan cacat yang sama.
Pendekatan alternatif adalah dengan menggunakan kelas ekivalensi bukan untuk input, tetapi untuk output. Bagilah varian output ke dalam kelas ekivalensi, tentukan nilai input mana yang dapat memicu output tersebut. Keuntungannya adalah bahwa setiap opsi keluar yang mungkin diperiksa. Kerugiannya adalah bahwa di dalam kelas ekivalensi keluaran, beberapa kelas ekivalensi input dapat disembunyikan.
Jika ada beberapa variabel:
- kelas yang valid dari beberapa variabel digabungkan menjadi satu test case;
- kelas yang tidak valid diuji secara terpisah.
Biarkan desainer dan programmer Anda tahu kapan mereka telah membantu Anda. Mereka akan menghargai pemikiran itu dan dapat melakukannya lagi.
Pengujian Nilai Batas
Teknik
- Tentukan kelas kesetaraan
- Tentukan batas-batas setiap kelas ekivalensi
- Buat kasus uji untuk setiap nilai batas, pilih satu titik langsung di perbatasan, di atas dan di bawah perbatasan.
Harus diingat bahwa titik di atas atau di bawah batas dapat menjadi contoh kelas kesetaraan lain, dalam hal ini, duplikasi tes tidak diperlukan.
Nilai ditentukan berdasarkan jenis. Jika batasnya 5, maka poin 4 dan 6 diuji untuk bidang tempat bilangan bulat dimasukkan, dan poin 4.99 dan 5.01 diuji untuk bidang di mana jumlah dalam rubel dan copeck dimasukkan.
Jika ada beberapa variabel:
- nilai minimum batas yang valid digabungkan menjadi satu kasus uji;
- nilai maksimum batas yang valid digabungkan dalam kasus uji lain;
- batas yang tidak valid diuji secara terpisah, seperti halnya dengan kelas yang tidak valid.
Pengujian nilai batas berfokus pada batas karena di situlah banyak cacat bersembunyi.
Pengujian Tabel Keputusan
Teknik
- Tentukan semua kondisi
- Buat semua kombinasi kondisi yang memungkinkan
- Hapus kombinasi yang tidak perlu. Mereka yang mengubah nilai tidak berpengaruh pada hasil (Jangan peduli - DC) dihapus
- Tentukan Tindakan
- Buat kotak uji untuk setiap kombinasi
Tabel keputusan - mewakili hubungan kondisi gabungan dan tindakan yang dihasilkan.
Jika kondisinya adalah rentang nilai, maka tes juga dibuat untuk memeriksa nilai di atas dan di bawah batas.
Dengan hati-hati melihat tabel, Anda dapat melihat bahwa dalam aturan 1, 2, 3, 4, jika kode stok tidak valid, maka memeriksa kondisi yang tersisa tidak masuk akal. Aturan 5 dan 6 dapat digabungkan, karena kondisi untuk memeriksa dana tidak mempengaruhi hasil. Kondisi yang tidak mempengaruhi hasil ditandai sebagai "DC". Tabel dikonversi:
Karena selalu ada kemungkinan bahwa tabel tidak dapat dikonversi dengan benar atau kode yang ditulis salah lebih baik sehingga tabel asli masih di tangan.
Penguji Perangkat Lunak Terkenal Mick Jagger memberikan saran yang sangat baik mengenai hal ini "Anda tidak selalu bisa mendapatkan yang Anda inginkan, tetapi jika Anda mencoba kadang-kadang, Anda mungkin akan menemukannya, Anda mendapatkan yang Anda butuhkan."
Pengujian pasangan
Teknik
- Tentukan parameter
- Tentukan jumlah nilai untuk setiap parameter (pilihan untuk variabel)
- Buat array yang berisi kolom untuk setiap parameter dan nilai dalam kolom yang berisi semua kombinasi nilai dari parameter ini satu sama lain.
- Cocokkan dengan array ortogonal yang dihasilkan untuk tujuan pengujian.
- Bangun test case.
Secara eksperimental ditentukan bahwa sebagian besar cacat adalah cacat mode tunggal atau cacat mode ganda, yaitu. dimanifestasikan ketika satu parameter digabungkan dengan hanya satu parameter lainnya, sedangkan nilai parameter yang tersisa tidak masalah.
Jika jumlah kombinasi nilai variabel besar, Anda tidak boleh mencoba untuk menguji semua kombinasi yang mungkin, lebih baik untuk fokus pada pengujian semua pasangan nilai variabel.
Dua pendekatan pengujian berpasangan: metode array ortogonal dan algoritma allpair.
Array ortogonal adalah array dua dimensi yang memiliki properti khusus: jika Anda memilih dua kolom dalam array, maka semua kemungkinan kombinasi nilai parameter akan ada di dalamnya, semua pasangan kolom memiliki properti yang sama.
Semua pasangan - untuk membuat array, digunakan algoritma yang menghasilkan pasangan secara langsung, tanpa menggunakan penyeimbangan tambahan. Jika ada sejumlah besar parameter yang mengambil sejumlah kecil nilai, maka metode ini lebih baik untuk pemasangan.
Tidak perlu membuat kombinasi berpasangan secara manual, karena ini ada banyak alat .
Harus diingat bahwa pembatasan mungkin timbul karena fakta bahwa beberapa kombinasi parameter tidak akan pernah terjadi.
Tidak ada "fisika cacat perangkat lunak" yang mendasari yang menjamin pengujian berpasangan akan bermanfaat. Hanya ada satu cara untuk mengetahuinya - cobalah.
Diagram transisi keadaan
Teknik
State - Suatu kondisi di mana sistem mengharapkan satu peristiwa atau lebih. State mengingat apa yang diterima pada input dan menentukan respons yang harus terjadi. Acara ini dapat dibawa ke negara baru dan / atau memulai tindakan baru. Negara biasanya mencerminkan nilai beberapa variabel dalam sistem. Digambarkan dalam bentuk lingkaran.
Transisi - Merupakan transisi dari keadaan saat ini ke yang baru, sebagai hasil dari beberapa tindakan. Digambarkan sebagai panah.
Peristiwa - Peristiwa yang menyebabkan negara berubah. Biasanya suatu peristiwa memasuki sistem dari dunia luar melalui beberapa antarmuka. Terkadang peristiwa ini dipicu di dalam sistem itu sendiri, misalnya, seperti timer, penurunan di bawah level tertentu. Diyakini bahwa peristiwa itu terjadi secara instan. Suatu peristiwa dapat bersifat independen atau terkait. Ketika suatu peristiwa terjadi, sistem dapat mengubah keadaan atau tetap dalam kondisi yang sama dan / atau memulai suatu tindakan. Acara mungkin memiliki parameter terkait (nomor kartu, jumlah dalam akun). Digambarkan sebagai keterangan pada panah transisi.
Tindakan - Operasi yang dimulai sebagai akibat dari perubahan kondisi. Ini sering merupakan respons sistem. Ingatlah bahwa suatu tindakan terjadi selama transisi antar negara. Statusnya sendiri statis. Hal ini ditunjukkan dengan tanda tangan tanda panah transisi setelah acara.
Diagram transisi keadaan adalah satu entitas khusus (misalnya, proses pencadangan). Kesalahan umum adalah upaya untuk menggabungkan entitas yang berbeda dalam satu diagram (misalnya, Reservasi dan Penumpang dengan peristiwa dan tindakan yang terkait dengan masing-masing diagram).
Ini dapat digunakan ketika sistem perlu mengetahui latar belakang atau urutan operasi yang benar.
Berdasarkan Diagram Transisi Negara, Tabel Transisi Negara disusun. Tabel ini berisi 4 kolom: keadaan saat ini, acara, tindakan, keadaan selanjutnya.
Keuntungan dari tabel transisi Negara adalah bahwa ia adalah daftar semua kemungkinan kombinasi transisi dari negara ke negara, termasuk yang tidak valid. Saat menganalisis tabel seperti itu, kesenjangan dalam persyaratan mungkin diperhatikan. Menggunakan tabel transisi keadaan dapat membantu Anda melacak transisi negara yang tidak valid.
Anda dapat memilih satu dari 4 opsi untuk membuat kasus uji:
- Buat set uji kasus sehingga semua negara diselesaikan setidaknya satu kali. Dalam satu kasus uji, transisi melalui beberapa negara dapat dijelaskan. Ini adalah tingkat cakupan tes yang agak lemah.
- Buat set kasus uji sehingga semua peristiwa dipicu setidaknya satu kali. Uji kasus yang mencakup semua peristiwa pada saat yang sama mencakup semua kondisi. Lagi-lagi cakupan tes lemah.
- Buat set uji kasus sehingga semua jalur diselesaikan setidaknya satu kali. Metode ini baik dari sudut pandang cakupan tes, tetapi secara praktis tidak layak. Jika diagram memiliki siklus, maka jumlah jalur yang mungkin dapat menjadi tak terbatas.
- Buat set uji kasus sehingga semua transisi diselesaikan setidaknya satu kali. Metode ini memberikan tingkat cakupan tes yang baik, sehingga disarankan untuk menggunakannya.

Strategi yang disarankan untuk membuat kasus uji adalah dengan menguji semua transisi negara setidaknya satu kali. Dalam sistem berisiko tinggi di mana cakupan uji yang lebih andal diperlukan, dimungkinkan untuk membuat kasus uji untuk setiap jalur (rantai transisi) antar negara.
Dan sekarang untuk sesuatu yang sama sekali berbeda. Monty Python
Gunakan Pengujian Kasus
Teknik
Use case - ini adalah skenario yang menggambarkan bagaimana aktor (biasanya seseorang, tetapi mungkin sistem lain) menggunakan sistem untuk mencapai tujuan tertentu. Kasus penggunaan dijelaskan dari perspektif pengguna, bukan sistem. Pekerjaan internal untuk menjaga kesehatan sistem bukan bagian dari use case.
Setidaknya satu test case harus memeriksa skenario utama, dan setidaknya satu case harus dalam skenario alternatif.
Gunakan Kasus Uji Rekomendasi Kasus
- Mulai dengan data yang valid dan skenario paling umum.
- Periksa nilai batas dan nilai tidak valid (menggunakan teknik yang dibahas sebelumnya).
- Skenario yang jarang digunakan penting untuk sistem (yang disebut Shut Down The Nuclear Reactor)
- Tes untuk setiap cabang ekstensi dari setiap langkah
- Cobalah untuk melakukan operasi dengan cara yang tidak biasa
- Cabut prasyarat jika itu benar-benar bisa terjadi
- Jika suatu transaksi memiliki loop, jalankan dalam satu lingkaran, dan jangan sekali atau dua kali - menjadi lebih keras
- Temukan jalan yang sangat panjang dan berliku dan ikuti
- Jika diharapkan transaksi akan dieksekusi dalam urutan logis, cobalah untuk mengeksekusinya dalam urutan terbalik (misalnya, isi bidang bukan dari atas ke bawah, tetapi dari bawah ke atas)
- Buat tes bukti bodoh
Gunakan Templat Deskripsi Kasus
Jika Anda tidak mencoba hal-hal aneh. Anda tahu pengguna akan.