Sedikit tentang sederhana. Desain tes. Bagian 1

Saat ini, pengujian perangkat lunak adalah salah satu proses utama untuk menciptakan suatu produk. Tidak masalah apa pun metodologi, pendekatan, proses, atau pengujian perangkat lunak yang Anda gunakan dengan cara apa pun selalu ada dalam proses Anda. Dalam beberapa tahun terakhir (dan mungkin bahkan satu dekade), pengujian perangkat lunak telah berkembang menjadi bidang TI yang terpisah, yang terus berkembang di komunitas global.

Dan ya, hari ini kita akan berbicara tentang penguji manual (fungsional) biasa, tanpa bias dalam otomatisasi, beban kerja, dan jenis pengujian teknis lainnya!

Sekarang profesi penguji manual adalah salah satu proses TI paling populer dan salah satu cara termudah untuk masuk ke TI.

Mengapa

Karena penguji tidak melakukan apa-apa, mereka tidak membutuhkan pengetahuan. Semua orang bisa menguji!

Karena profesi seorang penguji manual pada tahap awal tidak memerlukan pengetahuan dan keterampilan khusus. "Pengetahuan" utama untuk tester adalah kemampuan untuk "menghancurkan" dan berpikir analitis. Dan yang paling penting - untuk memiliki pola pikir non-standar, untuk menemukan solusi non-sepele untuk tugas-tugas tersebut. Monster tertentu yang tahu cara menghancurkan dan menghancurkan :)

Hard skill selalu dapat diajarkan, tetapi soft skill, sayangnya, sangat sulit untuk diajarkan, karena itu adalah karakter seseorang, sikapnya terhadap sesuatu, dll. Biasanya saya memandang manajer yang merekrut spesialis dalam pengujian manual untuk keterampilan keras. Kenapa kamu melakukan ini ??? (Anda dapat meninggalkan jawaban di komentar) Baiklah, oke, mari kita lanjutkan :)

Jika kita mempertimbangkan fitur teknis pengujian yang harus diketahui oleh penguji manual, maka mereka dapat dibagi menjadi 2 bagian utama, mungkin banyak yang akan tidak setuju dengan saya, mereka akan berteriak seperti itu, Anda salah, pengujian sangat sulit - ini adalah persiapan untuk pengujian dan pengujian.

Kami akan mempertimbangkan bagian paling menarik dan menarik dari pengujian - persiapan untuk pengujian. Pada bagian dari proses pengujian inilah tergantung pada seberapa baik dan benar Anda melakukan pengujian itu sendiri, menemukan cacat yang diperlukan dan memastikan wajah puas Pelanggan (atau produk mitra), kualitas tugas setelah implementasi.

Banyak dari Anda yang terlibat dalam pengujian, dengan satu atau lain cara, sedang bersiap untuk pengujian. Perbedaannya biasanya hanya pada seberapa besar Anda memformalkan tahap proses pengujian ini. Jika Anda melakukan pengujian penelitian, jangan menulis skrip pengujian, mereka memberi Anda sistem dan Anda segera bergegas ke medan perang, bagaimanapun, Anda sedang bersiap untuk pengujian. Seringkali, pada proyek sederhana, penguji mungkin tidak memperhatikan hal ini, karena tahap analitik dan persiapan untuk pengujian berlangsung pada tingkat yang tidak disadari. Namun meski begitu, dia masih ada di sana.

Dan dalam seri artikel ini kita akan membicarakan hal ini.

Di tempat kerja saya, saya sering memberikan pelatihan untuk penguji genggam, dan saya menghadapi situasi yang tampaknya semua orang pernah mendengar tentang teknik desain pengujian, tetapi tidak ada yang menggunakannya dalam pekerjaan.

Ini terlihat seperti ini:

  • Mengapa kita membutuhkan teknik desain uji?
  • Untuk mengidentifikasi validasi untuk pengujian dengan benar.
  • Apakah Anda menggunakannya dalam pekerjaan Anda?
  • Secara eksplisit tidak, kami sendiri yang menentukan apa yang perlu diperiksa.

Mengapa ini terjadi? Bagaimanapun, teknik desain tes adalah dasar untuk menulis skrip tes. Ini sama dengan bisa mengendarai mobil, tetapi tidak tahu aturan lalu lintas. Mengapa penguji tidak menggunakannya dalam pekerjaan mereka?

Jawabannya sederhana.

Pertama, ketika penguji diajarkan dalam kursus pengujian (atau belajar mandiri pada buku dan artikel), mereka diberitahu bagaimana menerapkan teknik desain tes pada contoh dasar. Dan masalah utama dari pelatihan tersebut adalah bahwa penguji tidak dapat mentransfer pengetahuan yang diperoleh ke tugas nyata mereka. Artinya, gunakan teknik desain tes dalam pekerjaan sehari-hari.
Kedua, ketika mengajar teknik desain tes, proses ini sangat formal, yang terlihat seperti tester perlu memformalkan segala sesuatu dalam karyanya. Dan biasanya tidak ada yang membutuhkan ini untuk siapa pun.

Dengan kata sederhana, teknik desain pengujian adalah seperangkat aturan yang memungkinkan Anda untuk menentukan daftar cek untuk pengujian dengan benar. Dan yang paling penting adalah menggunakan aturan-aturan ini selalu dan di mana-mana :) untuk dapat menerapkan aturan-aturan ini pada tingkat intuitif. Ini adalah kemampuan untuk "melakukan analisis di kepala" yang membedakan penguji yang baik!

Di organisasi saya, serta standar dan praktik yang diterima secara umum, tugas desain pengujian adalah:

  • Persyaratan pengujian dan analisis risiko
  • Menentukan Pemeriksaan untuk Pengujian
  • Formalisasi cek dalam bentuk skrip uji
  • Prioritas pemeriksaan
  • Menentukan Pendekatan Pengujian

Dalam seri artikel ini, saya akan mencoba untuk memberi tahu Anda tidak hanya tentang teknik desain pengujian, tetapi juga tentang bagaimana menggunakan SEMUA dari mereka (yaitu, semuanya bersama-sama, dan bukan satu atau dua spesifik) dalam praktiknya, termasuk contoh fungsi dari bank kami. Cara menghasilkan cek untuk pengujian menggunakan teknik desain uji untuk sistem dan proses besar. Dan yang paling penting, Anda akan mendapatkan jawaban kapan dan di mana tes untuk menerapkan teknik desain tes.

Jadi mari kita mulai.

Dan kita akan mulai dengan yang paling sederhana, yaitu sekitar 2 teknik desain uji dasar yang semua orang dengar, dan saya yakin mereka menerapkannya, tetapi kemungkinan besar pada tingkat intuitif dalam pekerjaan mereka.
Ini adalah kelas kesetaraan dan nilai batas.

Apa itu kelas ekivalensi?

Kelas Equivalence adalah sekumpulan input (atau output) data perangkat lunak yang diproses oleh suatu program berdasarkan satu algoritma atau mengarah ke satu hasil.

Artinya, ini adalah seperangkat nilai tertentu yang dapat Anda gantikan dalam program dan mendapatkan hasil yang sama. Hasilnya tidak hanya nilai-nilai spesifik, tindakan program, tetapi juga hanya ruang lingkup. Oleh karena itu, kelas kesetaraan paling sederhana di mana tes dibagi adalah 2 kelas utama: skenario positif dan negatif.

Mereka selalu ada di sana. Setiap tester membagi cek ke dalam kelas-kelas ini, tetapi tidak setiap tester tahu mengapa dia melakukannya. Jawabannya adalah kelas kesetaraan.

Selanjutnya, setiap kelas ekivalensi dapat dibagi menjadi kelas tambahan, dll. sampai waktu pemeriksaan tidak akan mengarah ke titik dan hasil tes khusus.

Pertimbangkan sebuah contoh:

Sistem penilaian menghitung tingkat bunga pinjaman untuk klien berdasarkan usianya, yang dimasukkan dalam bentuk:

  • Berumur 18 hingga 25 tahun - 18%
  • Dari 25 hingga 45 tahun - 16%
  • Lebih dari 45 tahun - 20%

Kami mendefinisikan 2 kelas utama - ini adalah skenario positif dan negatif .

Skenario positif adalah semua nilai yang mengarah pada hasil, skenario negatif adalah nilai yang hasilnya tidak digambarkan sebagai hasil yang diharapkan.

Selanjutnya, kami membagi kelas skenario positif menjadi 3 kelas nilai input 18-24, 25-44 dan 45+

Di kelas skenario negatif, kami membentuk nilai berdasarkan kebutuhan untuk memeriksa kegagalan program, jadi kami memiliki 0, 1-17, nilai negatif, input karakter, dll.

Hasil dari partisi ini adalah nilai atau rentang nilai di mana kita hanya perlu melakukan satu pemeriksaan dengan nilai apa pun dari rentang data. Situasi seperti nilai tunggal dalam rentang dapat terjadi. Ini juga merupakan kelas ekivalensi yang terpisah dan juga memerlukan verifikasi.

Total yang kita miliki.

  • Pemeriksaan positif: Memasukkan nilai: 19, 30, 48 (nilai dapat berupa rentang kelas apa pun yang diberikan)
  • Pemeriksaan negatif: 0, 3, -1, A, dll.

Sangat penting bahwa teknik desain tes tidak diterapkan secara independen dari yang lain! Sekarang kita melihatnya secara terpisah, tetapi pada akhirnya saya akan mengajarkan Anda bagaimana menggunakannya bersama.

Fitur lain dari kelas ekivalensi adalah aplikasi mereka. Saya membedakan 3 level penerapan teknik desain tes untuk mempersiapkan pengujian.

  • Level pertama adalah memeriksa elemen-elemen sistem (misalnya, bidang, kotak centang, tombol, dll.)
  • Tingkat kedua - memeriksa logika sistem saat menggabungkan data dalam elemen-elemen sistem
  • Tingkat ketiga adalah memeriksa proses bisnis sistem dan logika program.

Secara visual, tampilannya seperti ini:

gambar

Kelas kesetaraan lebih relevan dengan tingkat 1 dan digunakan untuk menguji elemen program. Namun secara ideologis, pendekatan ini dapat diterapkan ke tingkat lain.

Bagian integral dari pengecekan setiap elemen adalah teknik lain - nilai batas .

Nilai batas melengkapi kelas yang setara, dengan demikian sepenuhnya mencakup pemeriksaan elemen perangkat lunak.

Nilai batas adalah teknik desain uji yang melengkapi kelas kesetaraan dengan pemeriksaan tambahan pada batas kondisi.

Tampaknya semuanya sederhana!

Mari kita kembali ke contoh kita sebelumnya.

Sistem penilaian menghitung tingkat bunga pinjaman untuk klien berdasarkan usianya, yang dimasukkan dalam bentuk:

  • Berumur 18 hingga 25 tahun - 18%
  • Dari 25 hingga 45 tahun - 16%
  • Lebih dari 45 tahun - 20%

Apa yang akan menjadi perbatasan di sini?

Jika Anda berpikir tentang panjangnya lapangan di halaman Habra, atau tentang liburan di negara-negara hangat, saya ingin membuat Anda marah, ini tidak begitu :)

Apa yang menentukan nilai batas perlu sesuatu yang lain. Yaitu, tentukan nilai mana yang merupakan awal dan akhir untuk kelas kami. Dan yang paling penting !!! Penelitian bertahun-tahun di bidang pengujian telah menunjukkan bahwa sebagian besar cacat ditemukan oleh penguji di persimpangan nilai yang mengubah kondisi kerja program.

Oleh karena itu, selain nilai batas, kami menggunakan nilai 2 tambahan untuk pengujian, nilai sebelum batas dan nilai setelah batas.

Sebagai hasilnya, kami memiliki:

Batas-batas kelas kami: 17, 18, 19, 24, 25, 26, 44, 45, 46, dan maks.

Juga, kami memiliki kelas negatif, yaitu dari 0 hingga 18. Oleh karena itu, kami juga harus menggunakan nilai batas untuk pengujian: -1, 0, 1, 17,18

Selanjutnya, kami mengecualikan nilai duplikat, dan kami memperoleh nilai untuk memeriksa elemen entri data.

-1, 0, 1, 17, 18, 19, 24, 25, 26, 44, 45, 46, maks.

Nilai maksimal biasanya ditentukan oleh Pelanggan atau analis. Jika Anda tidak dapat memberikan, maka Anda harus menjatuhkannya dan tidak mencentangnya, Anda harus memilih nilai yang sesuai dengan akal sehat (jarang ada orang yang akan datang untuk pinjaman pada usia 100).

Langkah selanjutnya adalah memaksakan nilai batas pada nilai-nilai kelas ekivalensi, mengecualikan pemeriksaan yang tidak perlu menggunakan aturan "satu nilai cukup untuk memeriksa satu kelas" dan menyelesaikan daftar.

Jika sebelumnya kita memiliki 3 nilai untuk 3 kelas, 19, 30 dan 48, maka setelah menentukan nilai batas, kita dapat mengecualikan nilai 30 dan 48 dari daftar dan menggantinya dengan nilai pra-batas, seperti 26 (bukan 30) dan 46 ( bukannya 48).

Nilai batas ditentukan tidak hanya untuk nilai numerik, tetapi juga untuk nilai alfabet (misalnya, batas alfabet dan pengodean), tanggal dan waktu, dan nilai semantik. Batas nilai numerik tergantung pada format input, jika Anda memiliki bilangan bulat, misalnya 2, maka nilai batas akan menjadi 1 dan 3. Jika nilai fraksional, maka batas untuk angka 2 akan menjadi 1,9 (1,99) atau 2,1 ( 2.01), dll.

Teknik desain tes Level 1 sederhana dan mudah. Saya pikir Anda akan mengatakan itu mudah, tetapi mengapa memeriksa setiap elemen dengan seksama. Dan Anda akan benar! ..

Paling sering mereka digunakan dalam pengembangan perangkat lunak baru, karena sekali setelah memeriksa elemen-elemen sistem selama pengembangan, mereka kemudian tidak sering mengalami perubahan pada tingkat operasi elemen. Anda tidak perlu terus memeriksa setiap nilai elemen di setiap layar program Anda, tetapi perlu diingat bahwa jika logika pemrosesan dalam elemen program berubah, Anda harus memverifikasi ulang bahwa nilai elemen diproses dengan benar.

Yah, terlalu mudah ??? Sekarang kita akan mulai menganalisis teknik yang lebih kompleks, bersiap-siaplah.

Teknisi desain pengujian Level 2 bertanggung jawab atas variabilitas dan kombinatorik data saat menguji perangkat lunak.

Teknik utama dari desain tes adalah pengujian parwise (pengujian berpasangan) . Inti dari teknik ini adalah meminimalkan variabilitas kombinasi cek yang memadai untuk memastikan perangkat lunak berkualitas tinggi.

Dengan kata sederhana, aturan Pareto diterapkan dalam teknik ini, 80% dari kualitas dapat dicapai hanya dalam 20% dari pemeriksaan kombinasi data.

Teknik ini dikembangkan melalui lebih dari 15 tahun penelitian IEEE di bidang analisis penyebab cacat dalam sistem. Hasil penelitian menunjukkan bahwa 98% dari semua cacat terjadi ketika konflik pasangan data input atau satu parameter input.

Mengapa pasangan itu dipilih? Selami rimba statistik matematika dan teori probabilitas untuk menemukan jawabannya .

Tentu saja, kami tidak akan pergi ke sana hari ini. Teori probabilitas terlalu rumit untuk spesialis TI sederhana, semuanya sederhana, lakukan permainan dadu reguler dengan 6 wajah.

Biarkan hilangnya nilai 2 adalah cacat, maka probabilitas cacat saat melempar kubus adalah 1/6 = 0,167.

Jika kita melempar 2 dadu, maka probabilitas jatuh 2 deuces (2 cacat) menjadi lebih rendah dan sama dengan 0,167 * 0,167 = 0,028, untuk 3 sudah 0,005, dll.

Ternyata probabilitas cacat terjadi dengan kombinasi 3 atau lebih parameter sangat kecil sehingga dapat dibuang.

Ketika kami menguji program, selalu ada sejumlah elemen yang mempengaruhi hasil, misalnya, formulir untuk mengisi data pada aplikasi pinjaman. Ada sejumlah bidang yang bersama-sama memberikan hasil. Ini adalah kombinatorik data saat mengisi bidang yang kami periksa menggunakan pengujian berpasangan.

Mari kita lihat contoh fungsionalitas desain kartu jarak jauh di bank.

gambar

Jika kami perhatikan dengan teliti, kami akan melihat lima bidang data dengan Anda:

  • Nama lengkap
  • Tanggal lahir
  • Ponsel
  • Seri Nomor Paspor
  • Email
  • serta 2 kotak centang.

Tugas kami, menggunakan teknik-teknik tingkat pertama, adalah untuk menentukan daftar kelas kesetaraan yang dapat diambil oleh program.

PENTING bahwa ketika menggunakan teknik pengujian berpasangan, kita tidak berbicara tentang hasil tes. Penting bagi kita untuk memeriksa variabilitas data saat mengisi aplikasi.

Jadi

Bidang nama lengkap dapat mengambil nilai (kelas):

  • Nama dalam bahasa Rusia
  • Nilai tidak valid
  • Nilai kosong

Sangat sering penguji tidak mengerti nilai apa yang harus dipilih untuk teknik yang diberikan, jika mereka tidak dibatasi oleh kemampuan untuk masuk. Sebagai contoh, jika kita memiliki kesempatan untuk memilih jenis kelamin seseorang M atau F, maka semuanya sederhana, ada 2 makna. Tetapi ketika kita memiliki garis untuk input data, maka dalam pengujian berpasangan kita tidak memeriksa kebenaran mengisi bidang tertentu, karena pemeriksaan ini harus dilakukan pada tingkat pertama dari desain pengujian (atau gabungkan dengan pengujian berpasangan). Kami menggunakan kelas ekivalensi untuk bidang ini, karena kami tidak peduli akan seperti apa nilainya.

Kita melangkah lebih jauh, tanggal lahir , serta ponsel, seri dan nomor paspor juga dapat memiliki 3 status:

  • Nilai yang valid
  • Nilai tidak valid
  • Nilai kosong

Karena Email adalah opsional, bidang ini memiliki 2 nilai:

  • Nilai yang valid
  • Nilai tidak valid

Kotak centang biasanya hanya memiliki 2 negara - Y atau N.

Untuk memeriksa semua kombinasi dari formulir ini, kita perlu melakukan lebih dari 1000 tes, tetapi menggunakan pengujian berpasangan, kita hanya perlu 9 tes!
Magic, saya tidak berpikir :)

Langkah selanjutnya adalah menyusun array ortogonal dengan kombinasi data. Cara termudah untuk menyusun array adalah dengan mengisi data berpasangan, dimulai dengan elemen yang memiliki jumlah nilai tertinggi dan kemudian menurun. Karena dalam contoh kita ada 4 elemen dengan jumlah nilai yang sama, kita dapat memilih pasangan apa saja.

Kami mengambil nama lengkap dan seri nomor paspor. Tugas kita adalah untuk memilah-milah semua nilai pasangan yang diberikan di antara mereka sendiri:

gambar

Setelah mengulangi lebih dari satu pasangan, kami membuat pasangan lain dan mulai mengulangi nilai-nilai tersebut (misalnya, nomor ponsel)

gambar

Kami menghubungkan elemen berikutnya dan seterusnya sampai seluruh tabel terisi penuh, yang akan terlihat seperti ini:

gambar

gambar

Dengan demikian, kami mendapatkan 9 tes dengan kelas kesetaraan khusus yang dapat kami perkenalkan untuk menguji kerja variabilitas data untuk formulir. Kami dapat mengisi kelas dengan nilai-nilai spesifik yang kami dapatkan dengan Anda menggunakan tingkat pertama teknik desain tes.

Sebagai kesimpulan dari artikel ini, saya akan mengatakan bahwa teknik desain-uji yang ditinjau hanya mencakup sebagian dari pemeriksaan untuk menguji program, yaitu, memeriksa operasi yang benar dari elemen-elemen program dan hasil kombinasi mereka selama operasinya. Pada bagian kedua, kami akan beralih ke teknik desain uji yang memungkinkan Anda mengerjakan keajaiban pengujian untuk menguji logika program dan prosesnya. Ini adalah komponen yang sangat penting dari pengujian manual, dan justru inilah yang sering Anda uji di tempat kerja Anda!

Semoga bermanfaat!

Source: https://habr.com/ru/post/id462553/


All Articles