Apa itu Pengujian Loop? Metodologi, Contoh

โšก Ringkasan Cerdas

Pengujian Loop memvalidasi konstruksi loop di dalam sebuah program, memeriksa apa yang terjadi ketika sebuah loop dilewati, dimasuki sekali, dieksekusi pada batasnya, dan didorong satu putaran melebihi jumlah maksimum yang diizinkan.

  • ๐Ÿ”˜ Definisi: Teknik struktur kontrol kotak putih yang ditujukan untuk validitas loop, bukan untuk penyaringan.
  • ๐Ÿ” Empat kelas: Perulangan sederhana, bersarang, berantai, dan tidak terstruktur masing-masing membutuhkan strategi tersendiri.
  • ๐Ÿ“ Tiga titik pemeriksaan: Masuk ke dalam perulangan, perilaku selama eksekusi, dan kondisi keluar.
  • ๐Ÿงช Jalur perbatasan: Nol, satu, dua, hitungan tipikal, lalu b-1, b dan b+1 iterasi.
  • ๐Ÿชœ Urutan bersarang: Mulailah dari lingkaran terdalam, tahan lingkaran terluar pada nilai minimum, lalu lanjutkan ke arah luar.
  • ๐Ÿž Cacat yang ditemukan: Batasan selisih satu angka, penghitung yang belum diinisialisasi, perulangan tak terbatas, dan hambatan kapasitas.
  • โš ๏ธ Keterbatasan: Bug perulangan terdapat pada kode tingkat rendah dan jarang sekali sulit dideteksi setelah ditemukan.

Metodologi Pengujian Perulangan, jenis-jenis perulangan, dan contoh kasus uji.

Apa itu Pengujian Loop?

Pengujian Lingkaran adalah jenis pengujian perangkat lunak yang berfokus sepenuhnya pada validitas konstruksi perulangan dalam sebuah program. Ini adalah salah satu bagian dari pengujian struktur kontrol, bersama dengan pengujian jalur, pengujian validasi data dan pengujian kondisi.

Pengujian loop adalah a pengujian kotak putih Teknik ini diterapkan oleh seseorang yang dapat membaca kode sumber dan melihat kondisi perulangan, penghitung, dan jalur keluar. Penguji tidak menebak perilaku dari antarmuka pengguna; perulangan itu sendiri adalah objek yang diuji.

Diagram di bawah ini menunjukkan posisi pengujian loop dalam keluarga pengujian struktur kontrol.

Pengujian loop ditunjukkan sebagai cabang dari pengujian struktur kontrol.

Jenis loop Diuji

Sebelum memilih strategi, identifikasi jenis perulangan mana dari keempat jenis perulangan yang Anda pertimbangkan. Contoh jenis perulangan yang diuji adalah,

  • Lingkaran sederhana โ€” sebuah jalur tunggal dengan satu pintu masuk dan satu pintu keluar, seperti jalur biasa untuk, sementara or lakukan-sementara membangun.
  • Lingkaran bersarang โ€” satu loop ditempatkan di dalam loop lain, sehingga loop dalam berjalan hingga selesai pada setiap putaran loop luar.
  • Lingkaran gabungan โ€” dua atau lebih loop yang berjalan berurutan satu demi satu.
  • Lingkaran tidak terstruktur โ€” kombinasi tak terencana dari loop bersarang dan tergabung, biasanya hasil dari lompatan masuk atau keluar dari badan loop.

Kelas menentukan upaya yang dibutuhkan. Sebuah perulangan sederhana hanya membutuhkan beberapa iterasi; perulangan yang tidak terstruktur biasanya membutuhkan perancangan ulang kode sebelum dapat diuji sama sekali.

Mengapa Pengujian Loop?

Pengujian Loop dilakukan karena alasan berikut

  • Pengujian dapat memperbaiki masalah pengulangan loop
  • Pengujian loop dapat mengungkap hambatan kinerja dan kapasitas.
  • Dengan menguji perulangan, variabel yang belum diinisialisasi dalam perulangan dapat ditentukan.
  • Ini membantu mengidentifikasi masalah inisialisasi loop.

Ada juga alasan komersial. Sebuah loop yang berjalan satu iterasi terlalu banyak akan merusak total; sebuah loop yang tidak pernah berakhir akan membuat proses macet. Kedua cacat ini murah untuk ditemukan saat kode masih berada di mesin pengembang dan mahal untuk ditemukan di lingkungan produksi.

Bagaimana melakukan Pengujian Loop: Metodologi Lengkap

Saat menguji sebuah perulangan, perulangan tersebut harus diperiksa pada tiga tingkatan yang berbeda:

  • Saat memasuki loop
  • Selama pelaksanaannya, dan
  • Saat loop tersisa

Strategi pengujian untuk semua loop ini adalah sebagai berikut.

Lingkaran sederhana

Sebuah loop sederhana memiliki satu titik masuk dan satu titik keluar, seperti yang ditunjukkan di bawah ini.

Diagram alir loop sederhana dengan satu titik masuk dan satu kondisi keluar.

Sebuah loop sederhana diuji dengan cara berikut:

  1. Lewati seluruh putaran
  2. Lakukan 1 kali putaran melalui loop.
  3. Buat 2 melewati loop
  4. Membuat a melewati lingkaran di mana a < b, itu adalah jumlah iterasi menengah yang umum.
  5. Membuat b, b-1 dan b+1 melewati loop di mana b adalah jumlah maksimum pengulangan yang diizinkan melalui loop.

Dua kasus terakhir memiliki nilai paling besar. Lewatiping Loop tersebut membuktikan bahwa kondisi keluar dievaluasi sebelum badan program dijalankan, dan bKasus +1 membuktikan bahwa perulangan menolak untuk bekerja melebihi batas yang dideklarasikan, bukan karena melampaui batas array.

Loop Bersarang

Loop bersarang melipatgandakan jumlah kemungkinan kombinasi iterasi, sehingga diuji dari dalam ke luar, bukan sekaligus.

Diagram alir loop bersarang dengan loop dalam yang dikelilingi oleh loop luar.

Untuk perulangan bersarang, Anda perlu mengikuti langkah-langkah berikut.

  1. Atur semua loop lainnya ke nilai minimumnya dan mulai dari loop terdalam.
  2. Untuk loop terdalam, lakukan tes loop sederhana dan pertahankan loop terluar pada nilai parameter iterasi minimumnya
  3. Lakukan pengujian untuk loop berikutnya dan lanjutkan ke arah luar.
  4. Lanjutkan hingga loop terluar telah diuji.

Loop Gabungan

Loop yang digabungkan berada satu demi satu dalam jalur eksekusi yang sama, seperti yang ditunjukkan pada diagram.

Diagram alir perulangan yang digabungkan menunjukkan dua perulangan yang dieksekusi secara berurutan.

Dalam perulangan yang digabungkan, jika dua perulangan saling independen, maka keduanya diuji menggunakan pendekatan perulangan sederhana, jika tidak, keduanya diuji sebagai perulangan bersarang.

Namun, jika penghitung putaran dari satu putaran digunakan sebagai nilai awal untuk putaran lainnya, kedua putaran tersebut tidak dianggap independen.

Loop Tidak Terstruktur

Loop yang tidak terstruktur adalah kasus tersulit, karena kontrol masuk dan keluar dari badan loop secara acak.

Diagram alir loop tidak terstruktur dengan lompatan kontrolping masuk dan keluar dari tubuh lingkaran

Untuk perulangan yang tidak terstruktur, desain harus disusun ulang untuk mencerminkan penggunaan konstruksi pemrograman terstruktur. Setelah kode direduksi menjadi bentuk sederhana, bersarang, atau gabungan, strategi pencocokan di atas berlaku.

Contoh Pengujian Perulangan dengan Kasus Uji

Contoh yang dikerjakan akan membuat jumlah iterasi menjadi lebih konkret. Pertimbangkan sebuah rutin yang mengalikan hasil yang sedang berjalan dengan setiap bilangan bulat dari 1 hingga n, sebuah perhitungan faktorial. Penghitung loop dimulai dari 1, kondisi keluarnya adalah melawan > n, dan loop tersebut dideklarasikan untuk menerima maksimal 12 kali pengulangan sebelum hasilnya melampaui batas tipe integer yang dideklarasikan.

Dengan menganggap ini sebagai sebuah perulangan sederhana, jumlah iterasi yang direkomendasikan di atas diterjemahkan menjadi sebagai berikut: kasus uji.

Uji kasus Nilai n Operan yang dieksekusi Apa yang dibuktikannya
TC01 0 0 (loop dilewati) Kondisi keluar dievaluasi sebelum program dijalankan, dan hasilnya tetap pada nilai awalnya yaitu 1.
TC02 1 1 Satu kali proses menghasilkan hasil yang benar dan penghitung bertambah satu kali.
TC03 2 2 Akumulator membawa nilai ke depan antara dua lintasan yang berurutan.
TC04 5 5 Penghitungan kisaran menengah yang umum menghasilkan angka 120 seperti yang diharapkan, yang mengkonfirmasi perilaku normal.
TC05 11 11 Satu kali lintasan di bawah maksimum masih tetap selesai secara normal (b-satu).
TC06 12 12 Nilai maksimum yang dinyatakan diterima dan perulangan berakhir (b).
TC07 13 ditolak Satu kali lewat melebihi batas maksimum akan ditolak daripada dibiarkan meluap tanpa pemberitahuan (b+ 1).

Perhatikan bahwa TC01 dan TC07 adalah dua kasus yang paling sering diabaikan oleh pengembang, dan keduanya mengungkap cacat inisialisasi yang terlewat dan luapan. Nilai negatif dari n termasuk dalam himpunan yang sama jika spesifikasi mengizinkannya untuk disediakan, yang menghubungkan pengujian loop dengan pengujian negatif.

Cacat Umum yang Ditemukan Melalui Pengujian Loop

Pengujian berulang terus menemukan kelompok kesalahan kecil yang sama, itulah sebabnya jumlah iterasi tetap layak dijalankan setiap saat.

  • Batas selisih satu โ€” suatu kondisi yang ditulis sebagai < dimana <= sesuai dengan yang direncanakan, sehingga loop berjalan satu putaran terlalu sedikit atau satu putaran terlalu banyak.
  • Penghitung atau akumulator yang belum diinisialisasi โ€” sebuah total yang membawa nilai sisa dari panggilan sebelumnya.
  • Loop tak terbatas โ€” kondisi keluar yang tidak akan pernah dapat dipenuhi oleh badan perulangan karena penghitung hanya diperbarui pada beberapa cabang.
  • Asumsi loop yang dilewati โ€” kode setelah loop yang membaca variabel yang seharusnya diatur oleh badan loop, yang gagal ketika loop berjalan nol kali.
  • Kesalahan kapasitas dan kinerja โ€” sebuah perulangan yang benar tetapi membaca ulang basis data pada setiap putaran, sehingga biaya meningkat seiring dengan jumlah iterasi.
  • Interferensi loop bersarang โ€” sebuah loop dalam yang menggunakan kembali penghitung loop luar dan secara diam-diam mengubah jumlah iterasi luar.

Karena setiap kesalahan dipetakan ke jumlah iterasi tertentu, cacat yang muncul di sini mudah direproduksi dan cepat diperbaiki dibandingkan dengan cacat yang ditemukan pada tingkat yang lebih tinggi. tingkat pengujian.

Pengujian Loop vs Teknik Pengujian Struktur Kontrol Lainnya

Pengujian loop adalah salah satu anggota dari keluarga struktur kontrol, dan mudah dikelirukan dengan teknik-teknik yang berdekatan. Tabel di bawah ini memisahkan teknik-teknik tersebut.

Teknik Apa yang menjadi targetnya? Tujuan liputan tipikal
Pengujian lingkaran Struktur perulangan: titik masuk, jumlah iterasi, dan titik keluar. Jumlah iterasi nol, satu, tipikal, dan batas untuk setiap perulangan
Pengujian kondisi Ekspresi Boolean di dalam keputusan Setiap kondisi dievaluasi baik benar maupun salah.
Pengujian aliran data Definisi dan penggunaan setiap variabel Setiap pasangan definisi-penggunaan diuji setidaknya sekali.
Pengujian jalur dasar Jalur independen melalui grafik aliran kontrol Sejumlah jalur yang sama dengan kompleksitas siklomatik

Dalam praktiknya, teknik-teknik ini saling melengkapi dan bukan bersaing. Kompleksitas siklomatik memberi tahu Anda berapa banyak jalur independen yang ada, pengujian jalur dasar mencakupnya, dan pengujian perulangan kemudian menambahkan jumlah iterasi yang tidak akan dipaksakan oleh cakupan jalur saja. Semuanya adalah pengujian dinamis aktivitas, karena kode harus dieksekusi agar hasilnya dapat diamati.

Batasan dalam pengujian Loop

Teknik ini memiliki batasan yang nyata, dan mengetahui batasan tersebut dapat mencegah investasi berlebihan.

  • Bug loop sebagian besar muncul di perangkat lunak tingkat rendah
  • Bug yang diidentifikasi selama pengujian loop tidak terlalu kentara
  • Banyak dari bug tersebut mungkin dapat dideteksi oleh sistem operasi, karena menyebabkan pelanggaran batas memori, kesalahan penunjuk yang dapat dideteksi, dan kesalahan serupa lainnya.
  • Mengidentifikasi kelas dari setiap perulangan dan mengujinya sesuai dengan kelas tersebut membutuhkan waktu, yang sulit dibenarkan pada jalur kode yang memiliki risiko kecil.

Pertanyaan Umum Demo Slot

Pengembang dan penguji teknis dengan akses kode sumber, biasanya selama pengujian unit atau tinjauan kode. Penguji bisnis tidak dapat menerapkannya, karena kondisi perulangan tidak terlihat dari antarmuka pengguna.

Sebuah model membaca kondisi perulangan dan secara otomatis mengusulkan jumlah iterasi nol, satu, tipikal, dan batas, termasuk kasus luapan (overflow). Seorang peninjau tetap memastikan bahwa setiap hasil yang diharapkan sesuai dengan spesifikasi.

Proses ini berjalan cepat karena pola iterasinya terstruktur. Asisten berbasis agen juga dapat menjalankan rangkaian pengujian dan melaporkan jumlah pengujian yang gagal, tetapi menentukan jumlah maksimum pengujian yang diizinkan tetap menjadi keputusan desain yang berada di tangan manusia.

Jalankan kasus tersebut dengan batas waktu atau pengaman iterasi agar pengujian gagal dengan cepat alih-alih membuat rangkaian pengujian macet. Pastikan jumlah percobaan tercatat, bukan hanya nilai keluaran akhir.

Jauh lebih sedikit daripada setiap kombinasi. Pengujian dari dalam ke luar menjaga jumlah tetap bersifat aditif di seluruh level, bukan multiplikatif, karena loop luar dipertahankan pada nilai minimumnya sementara loop dalam dijalankan.

Tidak ada alat khusus untuk itu. Tim menggabungkan kerangka kerja pengujian unit seperti... JUnit atau gunakan pytest dengan alat cakupan yang melaporkan cakupan cabang, lalu baca laporannya untuk memastikan jalur iterasi nol telah tercapai.

Tidak. Cakupan cabang terpenuhi setelah sebuah loop dimasuki dan keluar satu kali. Pengujian loop juga menuntut pass yang dilewati dan jumlah batas, yang tidak pernah dipaksakan oleh cakupan cabang saja.

Kapan pun tidak terstruktur โ€” kontrol lompatping masuk atau keluar dari tubuh. Penataan ulang menjadi bentuk sederhana, bertingkat, atau gabungan biayanya lebih murah daripada merancang tes untuk setiap titik masuk yang tidak teratur.

Ringkaslah postingan ini dengan: