Apa itu Pengujian Berbasis Model?

⚡ Ringkasan Cerdas

Pengujian Berbasis Model memeriksa perilaku runtime perangkat lunak terhadap prediksi yang dibuat oleh model absolut.tracmodel sistem, menghasilkan kasus uji secara otomatis dari mesin keadaan terbatas, diagram keadaan, atau notasi UML, bukan secara manual.

  • 🧭 Ide inti: Sebuah model menggambarkan perilaku yang diharapkan, dan setiap kasus uji diturunkan dari model tersebut, bukan ditulis secara individual.
  • 🔀 Dua kerangka kerja: Generasi offline membangun rangkaian langkah sebelum eksekusi, sedangkan generasi online menghasilkan langkah-langkah secara langsung selama proses berjalan.
  • 📐 Notasi model: Mesin keadaan terbatas, diagram keadaan, tabel keputusan, grafik aliran data dan aliran kontrol, serta diagram UML.
  • ⚙️ Proses kerja: Bangun modelnya, pilih kriteria cakupan, hasilkan nilai absolut.tracLakukan pengujian t, rumuskan ke dalam skrip, jalankan, lalu berikan hasilnya.
  • ️ Perkakas: GraphWalker, fMBT, Conformiq, MaTeLo, MBTsuite, dan Spec Explorer menghasilkan jalur dari grafik berarah atau model keadaan.
  • ️ Kompromi: Biaya pemeliharaan menurun dan cakupan meningkat, tetapi teknik ini membutuhkan keterampilan pemodelan dan investasi awal dalam pembelajaran.

Pengujian Berbasis Model yang secara otomatis menurunkan kasus uji dari model perilaku sistem.

Apa itu Pengujian Berbasis Model?

Pengujian Berbasis Model Pengujian perangkat lunak adalah teknik pengujian di mana perilaku perangkat lunak yang diuji saat dijalankan diperiksa terhadap prediksi yang dibuat oleh sebuah model. Model adalah deskripsi perilaku suatu sistem, yang dinyatakan dalam hal urutan input, tindakan, kondisi, output, dan aliran data dari input ke output. Model yang dapat digunakan harus mudah dipahami secara praktis, dapat digunakan kembali dan dibagikan, dan harus menggambarkan sistem yang diuji secara tepat.

Terdapat banyak model yang tersedia, dan masing-masing menggambarkan aspek perilaku sistem yang berbeda. Contoh umum meliputi:

Pengujian Berbasis Model menjelaskan bagaimana suatu sistem berperilaku sebagai respons terhadap tindakan yang ditentukan oleh model. Berikan tindakan tersebut, lalu periksa apakah sistem merespons seperti yang diprediksi oleh model. Setiap perbedaan antara keduanya merupakan cacat pada perangkat lunak atau kesalahan pada model, dan keduanya layak untuk ditemukan.

Ini adalah metode formal yang ringan untuk memvalidasi suatu sistem, dan dapat diterapkan pada pengujian perangkat keras maupun perangkat lunak. Karena pengujian berasal dari spesifikasi perilaku dan bukan dari kode, teknik ini termasuk dalam kategori yang mudah dipahami. pengujian kotak hitam keluarga dari teknik pengujian perangkat lunak.

Contoh Pengujian Berbasis Model

Cara paling sederhana untuk membaca model perilaku adalah dengan mengikuti alurnya. Diagram di bawah ini memodelkan tugas pengeditan teks sederhana, dengan setiap kotak mewakili keadaan yang dapat dialami aplikasi dan setiap panah mewakili tindakan yang dapat dilakukan pengguna.

Contoh Pengujian Berbasis Model yang memodelkan keadaan dan tindakan menulis puisi di Notepad.

Model ini menjelaskan pendekatan sederhana untuk menulis puisi di Notepad dan tindakan yang mungkin terkait dengan setiap langkah. Untuk setiap tindakan, seperti memulai aplikasi, memasukkan puisi, atau menyimpan file, sebuah Kasus cobaan dapat dihasilkan dan hasilnya diverifikasi. Menempuh jalur berbeda melalui diagram yang sama, misalnya memulai dan menutup tanpa menyimpan, menghasilkan kasus uji yang berbeda tanpa biaya desain tambahan, yang merupakan argumen ekonomis untuk keseluruhan teknik ini.

Jenis MBT

Ada dua jenis kerangka kerja Pengujian Berbasis Model, dan perbedaan di antara keduanya hanyalah pada waktu pembuatan langkah-langkah pengujian:

  • Offline / a priori: Pembuatan rangkaian pengujian sebelum mengeksekusinya. Rangkaian pengujian adalah kumpulan kasus uji, dan dalam mode ini rangkaian tersebut disimpan, ditinjau, dan dijalankan kembali seperti halnya pengujian lainnya. pengujian otomasi aset.
  • Online / secara langsung: Pembuatan rangkaian pengujian selama eksekusi pengujian, di mana langkah selanjutnya dipilih berdasarkan bagaimana sistem benar-benar merespons langkah sebelumnya.

Generasi offline cocok untuk lingkungan yang teregulasi yang membutuhkan rangkaian yang dapat ditinjau dan diulang. Generasi online cocok untuk sesi eksplorasi jangka panjang terhadap sistem yang memiliki status, karena generator dapat bereaksi terhadap respons nyata daripada respons yang diprediksi.

Bagaimana Pengujian Berbasis Model Bekerja

Terlepas dari kerangka kerja yang digunakan, teknik ini mengikuti lima tahapan yang sama. Setiap tahapan menghasilkan artefak yang digunakan oleh tahapan berikutnya, itulah sebabnya model, dan bukan skrip pengujian, menjadi hal yang dipelihara oleh tim.

  • Langkah 1: Buat modelnya. Terjemahkan persyaratan atau spesifikasi ke dalam bentuk abstrak.tracModel perilaku yang diharapkan, yang mendefinisikan keadaan, transisi antar keadaan, dan masukan yang memicu setiap transisi.
  • Langkah 2: Pilih kriteria pemilihan tes. Kriteria memberi tahu generator kapan harus berhenti. Kriteria umum meliputi cakupan semua keadaan, yang mengunjungi setiap keadaan setidaknya sekali; cakupan semua transisi, yang menjalankan setiap panah setidaknya sekali; dan cakupan jalur atau aliran data untuk eksplorasi yang lebih mendalam.
  • Langkah 3: Hasilkan otot peruttrackasus uji t. Alat tersebut menelusuri model dan memancarkan rangkaian abs.tract langkah yang memenuhi kriteria yang dipilih, beserta hasil yang diharapkan pada setiap langkah.
  • Langkah 4: Wujudkan latihan perut secara konkrettracTes t. Lapisan adaptor memetakan setiap abstracuntuk melakukan tindakan nyata terhadap sistem, seperti interaksi UI, dan API panggilan atau pesan protokol. Peta iniping Ditulis sekali dan digunakan kembali oleh setiap pengujian yang dihasilkan.
  • Langkah 5: Eksekusi dan berikan putusan. Pengujian konkret dilakukan terhadap sistem yang sedang diuji, setiap respons yang diamati dibandingkan dengan prediksi model, dan hasil lulus atau gagal dicatat. trackembali ke elemen model yang menghasilkannya.

The tracKeandalan yang diciptakan pada langkah 5 adalah manfaat praktisnya. Ketika suatu persyaratan berubah, model pun berubah, dan pengujian yang terpengaruh akan dibuat ulang daripada ditulis ulang, itulah sebabnya tim yang sering melakukan pengujian ulang dapat melakukannya. pengujian regresi terhadap spesifikasi yang stabil, manfaatnya paling besar.

Model Berbeda dalam Pengujian

Untuk memahami MBT, perlu memahami beberapa model yang dijelaskan di bawah ini. Masing-masing model mengorbankan kekuatan ekspresif demi usaha, sehingga pilihannya bergantung pada seberapa kompleks perilaku yang sedang diuji.

Mesin Negara Terbatas

Model ini membantu penguji menilai hasil berdasarkan input yang dipilih. Berbagai kombinasi input dapat menghasilkan keadaan sistem yang sesuai.

Sistem tersebut akan memiliki keadaan spesifik dan keadaan saat ini, yang diatur oleh serangkaian masukan yang diberikan oleh para penguji.

Perhatikan contoh di bawah ini. Sebuah sistem memungkinkan karyawan untuk masuk ke dalam aplikasi. Status karyawan saat ini adalah "Keluar", dan akan berubah menjadi "Masuk" setelah karyawan masuk ke dalam sistem. Dalam status "Masuk", karyawan dapat melihat, mencetak, dan memindai dokumen di dalam sistem.

Mesin keadaan untuk contoh tersebut ditunjukkan di sini, dengan setiap panah diberi label sesuai dengan input yang menyebabkan transisi.

Model mesin keadaan terbatas yang menunjukkan keadaan Keluar dan Masuk dari sistem login karyawan.

Bagan Negara

Statechart adalah perluasan dari mesin keadaan terbatas dan dapat digunakan untuk sistem kompleks dan waktu nyata. Statechart menggambarkan berbagai perilaku sistem, memiliki sejumlah keadaan tertentu, dan perilaku sistem dianalisis dan direpresentasikan dalam bentuk peristiwa untuk setiap keadaan. Perluasan yang penting dalam praktiknya adalah hierarki: statechart memungkinkan keadaan bersarang dan paralel, sehingga mesin yang membutuhkan puluhan keadaan datar dapat digambarkan secara ringkas.

Sebagai contoh, cacat dilaporkan dalam alat manajemen cacat dengan status Baru. Setelah cacat diperbaiki oleh pengembang, status harus diubah menjadi Diperbaiki. Jika cacat tidak diperbaiki, status berubah menjadi Dibuka Kembali. Diagram status harus dirancang sedemikian rupa sehingga suatu kejadian dipanggil untuk setiap status.

Siklus hidup cacat tersebut digambarkan di bawah ini, dengan setiap status ditunjukkan sebagai sebuah keadaan dan setiap tindakan alur kerja sebagai peristiwa yang memindahkan cacat di antara keadaan tersebut.

Diagram status siklus hidup cacat yang bergerak melalui status Baru, Diperbaiki, dan Dibuka Kembali

Bahasa Pemodelan Terpadu (UML)

Bahasa Pemodelan Terpadu (UML) UML adalah bahasa pemodelan umum terstandarisasi. UML mencakup serangkaian teknik notasi grafis yang digunakan untuk membuat model visual yang dapat menggambarkan perilaku sistem yang sangat kompleks.

UML memiliki notasi seperti:

  • Kegiatan
  • Aktor
  • Proses bisnis
  • Komponen
  • Bahasa pemrograman

Diagram aktivitas dan mesin keadaan adalah diagram yang paling sering dibaca oleh pembuat tes, seperti yang diilustrasikan oleh contoh model UML di bawah ini.

Notasi diagram UML digunakan sebagai model sumber untuk menghasilkan kasus uji.

Alat Pengujian Berbasis Model

Sebuah model di atas kertas tidak menghasilkan apa pun dengan sendirinya. Diperlukan generator untuk menjalankan model dan menghasilkan jalur pengujian, dan pasar perangkat lunak terbagi menjadi generator sumber terbuka dan platform desain pengujian komersial.

  • GraphWalker — sebuah alat sumber terbuka yang membaca model berbentuk grafik berarah dan menghasilkan jalur uji darinya, dengan generator dan kondisi berhenti yang dapat dipilih.
  • fMBT — seperangkat alat pengujian berbasis model sumber terbuka dari Intel yang mendukung pembuatan dan eksekusi pengujian terhadap model keadaan.
  • Konformiq — sebuah produk desain pengujian otomatis komersial yang menghasilkan kasus uji dan skrip dari model perilaku grafis.
  • MaTeLo dan MBTsuite — platform komersial yang ditujukan untuk model penggunaan statistik dan untuk menghasilkan pengujian ke dalam kerangka kerja otomatisasi yang ada.
  • Penjelajah Spesifikasi - MicrosoftEkstensi pengujian berbasis model untuk Visual Studio, yang banyak dikutip dalam literatur pengujian protokol.

Pemilihan alat lebih bergantung pada dua pertanyaan daripada daftar fitur: notasi apa yang sebenarnya dapat digunakan tim, dan apakah alat tersebut dapat menghasilkan pengujian ke dalam kerangka kerja otomatisasi yang sudah digunakan. Generator yang menghasilkan rangkaian pengujian yang tidak dapat dijalankan siapa pun justru menambah satu langkah dalam proses, bukan menguranginya.

Pengujian Berbasis Model vs Desain Pengujian Tradisional

Perbedaan dengan desain tes tulisan tangan perlu diuraikan, karena kedua pendekatan tersebut gagal di tempat yang berbeda, bukan berarti salah satunya lebih baik.

Aspek Pengujian Berbasis Model Desain pengujian tradisional
Sumber kasus uji Dihasilkan secara otomatis dari model perilaku. Ditulis secara individual oleh seorang penguji berdasarkan persyaratan.
Dampak perubahan persyaratan Perbarui model, hasilkan ulang pengujian yang terpengaruh. Temukan dan edit setiap kasus uji yang terpengaruh secara manual.
Liputan Diukur berdasarkan kriteria model seperti semua keadaan atau semua transisi Diukur berdasarkan persyaratan, dan bergantung pada penilaian penguji.
Biaya dimuka Tingkat tinggi: keterampilan pemodelan, pengaturan alat, dan lapisan adaptor. Rendah: penguji dapat langsung mulai menulis
Paling cocok Sistem yang memiliki status, berumur panjang, dan spesifikasi yang stabil. Proyek pendek, film fitur tunggal, dan karya eksploratif.
Mode kegagalan utama Model yang salah atau usang secara diam-diam menghasilkan pengujian yang salah. Kesenjangan dan duplikasi menumpuk di seluruh rangkaian data yang besar.

Evolusi di bawah ini menempatkan teknik tersebut dalam konteksnya: eksekusi pengujian manual digantikan oleh eksekusi otomatis, dan pendekatan berbasis model menggeser otomatisasi satu tingkat lebih awal, ke dalam desain pengujian itu sendiri.

Evolusi pengujian perangkat lunak dari eksekusi manual melalui otomatisasi hingga pengujian berbasis model.

Tantangan Pengujian Berbasis Model

Penerapan MBT dalam suatu organisasi membutuhkan investasi uang dan upaya yang cukup besar. Berikut adalah kekurangan MBT dalam rekayasa Perangkat Lunak:

  • Para penguji membutuhkan keterampilan pemodelan yang tidak dibutuhkan oleh desain pengujian tradisional.
  • Kurva pembelajarannya panjang, dan proyek pertama biasanya menghabiskan biaya lebih banyak daripada penghematannya.
  • Model itu sendiri bisa jadi sulit dipahami dan ditinjau, terutama setelah ukurannya bertambah besar.
  • Model yang menyimpang dari spesifikasi akan menghasilkan pengujian yang percaya diri namun salah.
  • Lapisan adaptor yang mengubah abstracLangkah-langkah yang diterapkan ke dalam tindakan nyata harus ditulis dan dipelihara secara terpisah.
  • Ukuran model berkembang dengan cepat, sehingga model keadaan yang tidak dibatasi dapat menghasilkan lebih banyak jalur daripada yang dapat dieksekusi oleh tim mana pun.

Tidak satu pun dari hal-hal tersebut merupakan alasan untuk menghindari teknik ini, tetapi secara bersama-sama hal tersebut menjelaskan mengapa MBT biasanya diperkenalkan pada satu subsistem yang stabil terlebih dahulu daripada di seluruh sistem. siklus hidup pengujian perangkat lunak sekaligus.

Keunggulan Pengujian Berbasis Model

Jika dibandingkan dengan biaya-biaya tersebut, manfaat MBT adalah:

  • Pemeliharaan kasus uji dan rangkaian uji menjadi mudah, karena yang diedit adalah modelnya, bukan masing-masing tes.
  • Pengurangan biaya selama masa proyek jangka panjang.
  • peningkatan cakupan tes, karena generator tersebut mengeksplorasi jalur yang akan dilewati seseorang.
  • Rangkaian pengujian yang berbeda dapat dijalankan secara paralel pada sejumlah mesin.
  • Deteksi cacat sejak dini, karena ambiguitas muncul saat model sedang dibangun, sebelum kode apa pun dieksekusi.
  • Peningkatan jumlah cacat yang ditemukan untuk upaya pengujian yang sama.
  • Penghematan waktu pada desain pengujian setelah model dan adaptor tersedia.
  • Kepuasan kerja penguji meningkat, karena upaya bergeser dari penulisan skrip yang berulang ke pemodelan dan analisis.

Para penguji tetap membangun model mental saat mereka bekerja, dan MBT hanya memindahkan model mental tersebut ke atas kertas di mana model tersebut dapat ditinjau, diberi versi, dan digunakan kembali. Posisi teknik ini dibandingkan dengan pendekatan lain yang tersedia dijelaskan dalam jenis pengujian perangkat lunak.

Pertanyaan Umum Demo Slot

Kotak hitam. Pengujian berasal dari model perilaku yang telah ditentukan, bukan dari kode sumber. Teknik ini menjadi kotak abu-abu hanya ketika model dibangun dari dokumen desain internal dan bukan dari persyaratan eksternal.

Hanya perilaku yang layak untuk dibuatkan pengujian. Modelkan satu alur kerja yang memiliki status, seperti proses checkout atau siklus hidup cacat, pada tingkat paling kasar yang masih membedakan hasil nyata. Memodelkan semuanya akan menghasilkan ledakan status yang tidak dapat dieksekusi oleh siapa pun.

Model tersebut harus dimasukkan ke dalam kontrol versi bersama dengan kode, dengan pemilik yang ditunjuk dan langkah peninjauan dalam proses perubahan yang sama dengan spesifikasi. Model tanpa pemilik akan mengalami penyimpangan, dan model yang menyimpang akan menghasilkan pengujian yang meyakinkan tetapi salah.

Tidak. Generator hanya mengeksplorasi apa yang dijelaskan oleh model, jadi apa pun yang diabaikan oleh model tetap tidak teruji. Sesi eksplorasi tetap menjadi cara tim menemukan perilaku yang tidak ditentukan oleh siapa pun, dan sering kali mengungkapkan celah yang kemudian diserap oleh model.

Sistem stateful berumur panjang dengan spesifikasi tertulis: protokol komunikasi, pengontrol tertanam dan otomotif, perangkat medis, alur kerja perbankan, dan peralatan telekomunikasi. Domain-domain tersebut menggabungkan spesifikasi yang stabil dengan terlalu banyak urutan legal untuk dihitung secara manual.

Ketika spesifikasi berubah lebih cepat daripada kemampuan model untuk mengikutinya, ketika fitur tersebut kecil atau berumur pendek, atau ketika tidak ada seorang pun di tim yang dapat memelihara notasi tersebut. Dalam situasi tersebut, kasus yang ditulis tangan lebih hemat biaya dalam keseluruhan proyek.

Pembelajaran mesin menyimpulkan model status draf dari log produksi dan sesi yang direkam, menandai transisi yang tidak pernah dicakup oleh model, dan memberi peringkat jalur yang dihasilkan berdasarkan riwayat cacat sehingga urutan dengan risiko tertinggi dijalankan terlebih dahulu. Para insinyur tetap memvalidasi model yang disimpulkan.

Ya, terutama untuk lapisan adaptor: metode langkah, objek halaman, dan pernyataan yang mengikat abs.tracMencontohkan tindakan model ke panggilan nyata. Memutuskan apa yang harus terkandung dalam model, dan kriteria cakupan mana yang penting, tetap menjadi pertimbangan desain.

Ringkaslah postingan ini dengan: