Apa itu Pengujian Dinamis? Jenis, Teknik & Contoh

⚡ Ringkasan Cerdas

Pengujian Dinamis menjalankan aplikasi dan mengamati bagaimana kode yang berjalan berperilaku dengan input nyata, sehingga penguji dapat memvalidasi fungsionalitas, kinerja, dan stabilitas yang tidak dapat diungkapkan oleh peninjauan dokumen apa pun.

  • 🎯 Tujuan: Validasi perilaku runtime yang sebenarnya, bukan dokumen yang mendeskripsikannya.
  • 🔀 Dua cabang: Kotak putih memeriksa kode, kotak hitam memeriksa perilaku.
  • 🧱 Empat tingkatan: Pengujian unit, integrasi, sistem, dan penerimaan semuanya menjalankan kode.
  • ⚙️ Non-fungsional: Pemeriksaan kinerja, pemulihan, kompatibilitas, keamanan, dan kegunaan dijalankan di sini.
  • 🔄 Proses: Strategi, desain pengujian, penyiapan lingkungan, eksekusi, dan pelaporan cacat.
  • 💰 Kompromi: Deteksi cacat yang lebih mendalam dengan imbalan waktu, lingkungan, dan biaya.

Jenis, teknik, dan contoh Pengujian Dinamis

Apa itu Pengujian Dinamis?

Pengujian Dinamis Pengujian dinamis adalah metode pengujian perangkat lunak yang digunakan untuk menguji perilaku dinamis kode perangkat lunak. Tujuan utama pengujian dinamis adalah untuk memeriksa perilaku perangkat lunak dengan variabel dinamis — variabel yang bukan konstanta — dan untuk menemukan area lemah dalam lingkungan runtime perangkat lunak. Kode harus dieksekusi untuk menguji perilaku dinamis.

Pengujian adalah verifikasi dan validasiDan dibutuhkan kedua V untuk menyelesaikan pengujian. Verifikasi dilakukan dengan pengujian statis, yang meninjau persyaratan, dokumen desain, dan kode tanpa menjalankannya. Validasi dilakukan dengan pengujian dinamis, yang menjalankan build dan membandingkan apa yang sebenarnya dilakukan aplikasi dengan apa yang seharusnya dilakukan.

Tabel di bawah ini membedakan keduanya secara sekilas.

Aspek Pengujian statis (verifikasi) Pengujian dinamis (validasi)
Code dieksekusi Tidak Ya
Kegiatan-kegiatan khas RevTinjauan, penelusuran, inspeksi, analisis statis Eksekusi kasus uji di semua level pengujian
Pertanyaan terjawab Apakah kita membangun produk dengan benar? Apakah kita membangun produk yang tepat?
Kerusakan ditemukan Persyaratan yang ambigu, pelanggaran standar pengkodean, kode mati. Output yang salah, kebocoran memori, kesalahan waktu, kegagalan integrasi
Mulai Segera setelah artefak itu ada Setelah file eksekusi dibuat
Biaya relatif perbaikan Lebih rendah, karena cacat terdeteksi lebih awal. Lebih tinggi, karena cacat muncul lebih lambat.

Contoh Pengujian Dinamis

Contoh singkat yang telah dikerjakan menunjukkan bagaimana pengujian dinamis berperilaku dalam praktiknya.

Misalkan sebuah halaman Login sedang diuji. Halaman tersebut memiliki dua kolom, Nama Pengguna dan Kata Sandi, dan Nama Pengguna dibatasi hanya untuk karakter alfanumerik.

Saat pengguna memasukkan Nama Pengguna sebagai “Guru99”, sistem menerimanya. Saat pengguna memasukkan “GuruSaat memasukkan "99@123", aplikasi akan menampilkan pesan kesalahan. Hasil ini menunjukkan bahwa kode tersebut bertindak secara dinamis berdasarkan input pengguna.

Oleh karena itu, pengujian dinamis berarti bekerja dengan sistem yang sebenarnya, memberikan masukan, dan membandingkan perilaku aktual aplikasi dengan perilaku yang diharapkan — dengan kata lain, bekerja dengan sistem dengan tujuan menemukan kesalahan.

Oleh karena itu, pengujian dinamis adalah proses memvalidasi aplikasi perangkat lunak sebagaimana yang akan dilakukan oleh pengguna akhir, dalam lingkungan yang berbeda, untuk membangun perangkat lunak yang tepat.

Apa yang dilakukan pengujian dinamis?

Tujuan utama pengujian dinamis adalah untuk memastikan bahwa perangkat lunak berfungsi dengan benar selama dan setelah instalasi, menghasilkan aplikasi yang stabil tanpa cacat besar. Tidak ada perangkat lunak yang sepenuhnya bebas dari kesalahan, dan pengujian dapat menunjukkan adanya cacat tetapi tidak pernah menunjukkan ketiadaannya.

Pengujian dinamis juga memastikan konsistensi di seluruh perangkat lunak, seperti yang ditunjukkan oleh contoh ini.

Dalam aplikasi perbankan terdapat beberapa layar, seperti Akun Saya, Transfer Dana, dan Bill Bayar. Semuanya berisi kolom jumlah.

Misalkan kolom Akun Saya menampilkan jumlah 25,000, Transfer Dana menampilkan $25,000 dan Bill Layar pembayaran menampilkan $25000. Jumlahnya sama, tetapi cara penampilannya berbeda, yang membuat perangkat lunak tersebut tidak konsisten.

Konsistensi tidak hanya terbatas pada fungsionalitas. Ia juga mencakup standar seperti kinerja, kegunaan, dan kompatibilitas, itulah mengapa pengujian dinamis sangat penting.

Jenis Pengujian Dinamis

Pengujian dinamis diklasifikasikan menjadi dua kategori.

  • Putih Box pengujian
  • Black Box pengujian

Diagram di bawah ini memetakan kedua kategori tersebut terhadap tingkatan pengujian yang berada di bawahnya.

Pengujian dinamis dibagi menjadi white box dan black box dengan level fungsional dan non-fungsional.

Setiap jenis dan tujuan penggunaannya dijelaskan di bawah ini.

Putih Box pengujian — sebuah metode pengujian perangkat lunak di mana struktur internal dan desainnya diketahui oleh penguji. Tujuan utamanya adalah untuk memeriksa bagaimana sistem bekerja berdasarkan kode. Metode ini terutama dilakukan oleh pengembang atau penguji white box yang memiliki pengetahuan pemrograman.

Black Box pengujian — sebuah metode pengujian di mana struktur internal, kode, dan desain TIDAK diketahui oleh penguji. Tujuan utamanya adalah untuk memverifikasi fungsionalitas sistem yang sedang diuji. Jenis pengujian ini memerlukan eksekusi rangkaian pengujian lengkap, sebagian besar dilakukan oleh penguji, dan tidak memerlukan pengetahuan pemrograman.

Pengujian kotak hitam diklasifikasikan lagi menjadi dua jenis.

  • Pengujian Fungsional
  • Pengujian Non-Fungsional

Pengujian Fungsional

Pengujian fungsional Pengujian dilakukan untuk memverifikasi bahwa semua fitur yang dikembangkan sesuai dengan spesifikasi fungsional. Pengujian ini dilakukan dengan menjalankan pengujian fungsional. kasus uji Ditulis oleh tim QA. Pada fase ini, sistem diuji dengan memberikan input, memverifikasi output, dan membandingkan hasil aktual dengan hasil yang diharapkan.

Terdapat berbagai tingkatan pengujian fungsional, yang terpenting adalah empat hal berikut ini.

  • Pengujian Unit — Unit adalah bagian kode kecil yang dapat diuji. Pengujian unit dilakukan pada unit perangkat lunak individual dan dilakukan oleh pengembang.
  • Tes integrasi — dilakukan setelah pengujian unit, dengan menggabungkan unit-unit yang dapat diuji secara individual. Ini dilakukan oleh pengembang atau penguji.
  • Pengujian Sistem — dilakukan untuk memastikan bahwa sistem berperilaku sesuai dengan persyaratan. Pengujian ini umumnya dilakukan ketika sistem sudah siap sepenuhnya, oleh penguji, setelah build dirilis ke tim QA.
  • Ujian penerimaan — dilakukan untuk memverifikasi apakah sistem telah memenuhi persyaratan bisnis dan siap untuk digunakan atau diimplementasikan. Pemeriksaan ini umumnya dilakukan oleh pengguna akhir.

Pengujian Non-Fungsional

Pengujian non-fungsional Pengujian non-fungsional adalah teknik pengujian yang tidak berfokus pada aspek fungsional, melainkan berkonsentrasi pada atribut non-fungsional sistem, seperti kebocoran memori, kinerja, atau ketahanan. Pengujian non-fungsional dilakukan di semua tingkatan pengujian.

Terdapat banyak teknik pengujian non-fungsional, di antaranya yang terpenting adalah lima teknik di bawah ini.

  • Pengujian Kinerja — memeriksa apakah waktu respons sistem normal, sesuai dengan persyaratan, di bawah beban jaringan yang diinginkan.
  • Pengujian Pemulihan — memverifikasi seberapa baik sistem pulih dari kerusakan dan kegagalan perangkat keras.
  • Pengujian Kompatibilitas — memverifikasi bagaimana sistem berperilaku di berbagai lingkungan.
  • Pengujian Keamanan — memverifikasi kekokohan aplikasi, memastikan bahwa hanya pengguna dan peran yang berwenang yang dapat mengakses sistem.
  • Kegunaan Pengujian — memverifikasi kemudahan penggunaan sistem oleh pengguna akhir, dan seberapa nyaman pengguna tersebut menggunakannya.

Teknik Pengujian Dinamis

Setelah jenis-jenisnya ditentukan, pertanyaan selanjutnya adalah bagaimana siklus pengujian dinamis sebenarnya dijalankan.

Teknik pengujian dinamis dalam STLC Terdiri dari tugas-tugas seperti analisis kebutuhan untuk pengujian, perencanaan pengujian, desain dan implementasi kasus uji, penyiapan lingkungan pengujian, eksekusi kasus uji, pelaporan bug, dan akhirnya penutupan pengujian. Setiap tugas dalam pengujian dinamis bergantung pada penyelesaian tugas sebelumnya dalam proses pengujian.

Dalam STLC, proses pengujian dinamis yang sebenarnya dimulai dari desain kasus uji. Diagram di bawah ini menunjukkan urutan aktivitas, yang masing-masing dijelaskan setelahnya.

Alur proses pengujian dinamis mulai dari desain pengujian hingga eksekusi dan pelaporan bug.

Sebelum memulai proses, strategi yang akan diikuti untuk pengujian dinamis harus disepakati terlebih dahulu.

Strategi pengujian harus berfokus terutama pada sumber daya yang tersedia dan jangka waktu. Berdasarkan kedua faktor tersebut, tujuan pengujian, ruang lingkup pengujian, fase atau siklus pengujian, jenis lingkungan, asumsi atau tantangan yang mungkin dihadapi, dan risiko semuanya harus didokumentasikan.

Setelah strategi ditetapkan dan diterima oleh manajemen, proses perancangan kasus uji yang sebenarnya dimulai.

Desain dan implementasi pengujian

Pada fase ini, tim mengidentifikasi hal-hal berikut.

  • Fitur yang akan diuji
  • Kondisi pengujian yang berasal dari fitur-fitur tersebut
  • Item cakupan yang diperoleh dari kondisi pengujian
  • Kasus uji yang berasal dari item cakupan.

Kotak hitam teknik desain pengujian seperti pembagian kesetaraan, analisis nilai batas, pengujian tabel keputusan ke pengujian transisi negara Hal-hal inilah yang mengubah kondisi pengujian menjadi serangkaian kasus yang dapat dieksekusi secara konkret.

Uji pengaturan lingkungan

The lingkungan pengujian Seharusnya selalu serupa dengan lingkungan produksi. Pada fase ini, build diinstal dan mesin pengujian dikelola dan dikonfigurasi.

Eksekusi uji

Selama fase ini, kasus uji sebenarnya dieksekusi, baik secara manual maupun melalui sistem. otomatisasi, dan hasil aktual dicatat dibandingkan dengan hasil yang diharapkan.

Laporan bug ditangkap

Berdasarkan eksekusi, jika hasil yang diharapkan dan hasil aktual tidak sama, kasus uji harus ditandai sebagai Gagal dan bug dicatat dalam laporan bug. manajemen cacat proses.

Keuntungan Pengujian Dinamis

  • Pengujian dinamis mengungkap cacat yang dianggap terlalu sulit atau rumit untuk dideteksi, dan yang sama sekali tidak dapat dicakup oleh analisis statis.
  • Perangkat lunak ini dieksekusi dari ujung ke ujung, yang meningkatkan kualitas produk dan proyek secara keseluruhan.
  • Pengujian dinamis merupakan cara penting untuk mendeteksi ancaman keamanan dalam sistem yang sedang berjalan.
  • Kesalahan yang hanya terjadi saat runtime, seperti kebocoran memori, masalah waktu, dan kegagalan integrasi, muncul di sini dan tidak di tempat lain.

Kekurangan Pengujian Dinamis

  • Pengujian dinamis memakan waktu, karena menjalankan aplikasi atau kode membutuhkan banyak sumber daya.
  • Hal ini meningkatkan biaya proyek, karena tidak dimulai sejak awal siklus hidup perangkat lunak dan masalah yang diperbaiki pada tahap selanjutnya membutuhkan biaya perbaikan yang lebih besar.
  • Lingkungan yang menyerupai lingkungan produksi dan data uji yang realistis adalah prasyarat, dan keduanya membutuhkan upaya untuk membangun dan memeliharanya.

Pertanyaan Umum Demo Slot

Pengembang bertanggung jawab atas sisi white box, menjalankan pemeriksaan unit dan komponen. Penguji QA bertanggung jawab atas sisi black box, mulai dari pengujian sistem dan seterusnya. Pengguna akhir menutup siklus dengan pengujian penerimaan.

Model membaca persyaratan dan kasus yang ada, kemudian mengusulkan nilai batas, input yang tidak valid, dan urutan status yang biasanya dilewati oleh proses manual. Penguji tetap mengkonfirmasi setiap hasil yang diharapkan sebelum dieksekusi.

Ya. Kerangka pernyataan (assertion scaffolding), objek halaman (page objects), dan pengaturan fixture adalah kode berulang yang dapat ditangani dengan baik oleh asisten. Menentukan apa yang dianggap sebagai perilaku yang benar tetap merupakan penilaian manusia yang berakar pada persyaratan.

Kerangka unit seperti JUnit, TestNG dan pytest, ditambah UI dan API runner seperti Selenium, Cypress ke Postman. Muat peralatan seperti JMeter menutupi sisi yang tidak berfungsi dari otomatisasi.

Laporan kerja white box mencakup cakupan pernyataan, cabang, dan jalur dari eksekusi yang diinstrumentasi. Laporan kerja black box mencakup cakupan persyaratan dan kondisi pengujian. Tidak satu pun angka tersebut secara sendiri-sendiri membuktikan bahwa build telah diuji secara memadai.

Tidak. Pengujian dinamis menggambarkan eksekusi kode, siapa pun atau apa pun yang menjalankannya. Pengujian berbasis skrip. panduan Pengujian yang dijalankan secara dinamis dan rangkaian pengujian regresi otomatis adalah contoh pengujian dinamis.

Ya. Pengujian Keamanan Aplikasi Dinamis menyelidiki aplikasi yang sedang berjalan dari luar, persis seperti kotak hitam. pengujian keamanan melakukan hal tersebut, dan melaporkan kerentanan yang hanya muncul saat runtime.

Ini adalah tulang punggungnya. Unit dan rangkaian API mengatur setiap commit, sementara yang lebih lama regresi dan pengujian performa dijalankan setiap malam terhadap build yang telah di-deploy.

Ringkaslah postingan ini dengan: