Untuk menggambar beberapa aspek jawaban bersama dan menambahkan 2p ...
Catatan: komentar saya terutama berkaitan dengan pengujian basis data , dan bukan pengujian UI (meskipun jelas sama berlaku).
Database sama-sama membutuhkan pengujian seperti aplikasi front end tetapi cenderung diuji berdasarkan 'apakah ini bekerja dengan front end?' atau 'apakah laporan menghasilkan hasil yang benar?', yang menurut saya menguji sangat terlambat dalam proses pengembangan database dan tidak terlalu kuat.
Kami memiliki sejumlah klien yang menggunakan pengujian unit / integrasi / sistem untuk database data warehouse mereka selain UAT / kinerja / et al biasa. tes. Mereka menemukan bahwa dengan integrasi berkesinambungan dan pengujian otomatis, mereka mengambil banyak masalah sebelum sampai ke UAT tradisional, sehingga menghemat waktu dalam UAT dan meningkatkan peluang keberhasilan UAT.
Saya yakin sebagian besar akan setuju bahwa kekakuan yang serupa harus diterapkan pada pengujian basis data seperti pada pengujian ujung depan atau laporan.
Hal utama dengan pengujian adalah menguji entitas kecil yang sederhana, memastikan kebenarannya, sebelum melanjutkan ke kombinasi entitas yang kompleks, memastikan kebenarannya sebelum memperluas ke sistem yang lebih luas.
Jadi memberikan beberapa konteks untuk jawaban saya ...
Pengujian Unit
- memiliki fokus pengujian untuk membuktikan bahwa unit berfungsi, misalnya tabel, tampilan, fungsi, prosedur tersimpan
- harus 'mematikan' antarmuka untuk menghapus dependensi eksternal
- akan memberikan datanya sendiri. Anda memerlukan kondisi awal data yang diketahui, jadi jika ada kemungkinan data pra-tes yang ada, maka pemotongan / penghapusan harus terjadi sebelum populasi
- akan berjalan secara ideal dalam konteks eksekusi sendiri
- akan menjernihkan sendiri dan menghapus data yang digunakan; ini hanya penting ketika bertopik tidak digunakan.
Keuntungan melakukan ini adalah bahwa Anda menghapus semua dependensi eksternal pada tes dan melakukan jumlah pengujian terkecil untuk membuktikan kebenaran. Jelas, tes ini tidak dapat dijalankan pada basis data produksi. Mungkin ada sejumlah jenis tes yang akan Anda lakukan, tergantung pada jenis unitnya, termasuk:
- pemeriksaan skema, beberapa orang mungkin menyebutnya tes 'kontrak data'
- nilai kolom melewati
- pelaksanaan jalur logika dengan nilai data yang berbeda untuk fungsi, prosedur, tampilan, kolom terhitung
- pengujian kasus tepi - NULL, data buruk, angka negatif, nilai yang terlalu besar
(Unit) Pengujian Integrasi
Saya menemukan posting SE ini membantu dalam berbicara tentang berbagai jenis pengujian.
- memiliki fokus pengujian untuk membuktikan bahwa unit terintegrasi bersama
- dilakukan pada sejumlah unit bersama
- harus 'mematikan' antarmuka untuk menghapus dependensi eksternal
- akan memberikan data sendiri, untuk menghilangkan efek dari pengaruh data luar
- akan berjalan secara ideal dalam konteks eksekusi sendiri
- akan menjernihkan sendiri dan menghapus data yang dibuat; ini hanya penting ketika bertopik tidak digunakan.
Dalam beralih dari tes unit ke tes integrasi ini, sering kali akan ada sedikit lebih banyak data, untuk menguji berbagai kasus uji yang lebih luas. Jelas, tes ini tidak dapat dijalankan pada basis data produksi.
Ini kemudian dilanjutkan ke Pengujian Sistem , Pengujian Integrasi Sistem (alias pengujian ujung-2-ujung), dengan peningkatan volume data dan peningkatan cakupan. Semua tes ini harus menjadi bagian dari kerangka pengujian regresi. Beberapa tes ini mungkin dipilih oleh pengguna untuk dilakukan sebagai bagian dari UAT, tetapi UAT adalah tes yang ditentukan oleh pengguna , bukan seperti yang didefinisikan oleh IT - masalah umum!
Jadi sekarang saya telah memberikan beberapa konteks, untuk menjawab pertanyaan Anda yang sebenarnya
- data pra-populasi untuk pengujian unit dan integrasi dapat menyebabkan kesalahan pengujian palsu dan harus dihindari.
- Satu-satunya cara untuk memastikan pengujian yang konsisten adalah dengan tidak membuat asumsi tentang sumber data dan mengendalikannya dengan ketat.
- konteks pelaksanaan pengujian terpisah adalah penting, untuk memastikan bahwa satu tester tidak bertentangan dengan tester lain yang melakukan tes yang sama pada cabang kode sumber yang dikendalikan oleh basis data yang berbeda.