Jawaban lengkap untuk pertanyaan ini akan sangat panjang. Saya akan mencoba menyebutkan poin utama.
Untuk memisahkan masalah, Anda mungkin melihat tes untuk:
A - Validasi desain basis data.
B - Validasi bahwa program berinteraksi dengan benar dengan database.
Validasi desain database harus dilakukan oleh orang yang mendesain database. Pengembang (saat pengujian unit) harus lebih memperhatikan bagian (B). Perbedaan utama yang saya lihat antara dua jenis tes adalah alat yang digunakan. Untuk (A), Anda akan menggunakan lingkungan yang tidak tergantung pada kode proyek, sedangkan pada (B) Anda tentu saja akan menggunakan kode proyek. Dalam teks berikut, saya akan mencampur keduanya.
Untuk menjawab pertanyaan khusus Anda:
Aturan nilai domain kolom
Setiap kolom memiliki tipe data terkait. Setiap kolom harus divalidasi terhadap aturan bisnis untuk membuktikan bahwa itu mewakili tipe data yang benar. Masalah dapat muncul jika tipe data kolom tidak kompatibel dengan persyaratan bisnis atau jika kode menggunakan tipe data yang berbeda dari bagaimana itu didefinisikan dalam database.
Sebagai contoh:
Jika kolom didefinisikan sebagai int kecil, Anda seharusnya tidak dapat menyimpan teks di dalamnya. Ini adalah tes penting terutama ketika kolom bersifat opsional, karena bisa saja tidak diketahui sampai seseorang benar-benar memasukkan beberapa data di dalamnya.
Bisakah Anda menyimpan nilai negatif dalam kolom di mana bisnis mengharuskan itu terjadi?
Aturan nilai default kolom
Beberapa kolom dikaitkan dengan spesifikasi nilai default di DDL (Data Def. Language) di mana jika selama menyisipkan insert tidak memberikan nilai, database akan menganggap nilai default. Ini dapat diuji dengan tidak melewatkan nilai dan mengamati nilai hasil menyimpan database. Tes ini juga dapat mencakup memeriksa kolom Nullable. Ini jarang memerlukan tes karena dapat diverifikasi dari DDL kecuali indeks unik dibangun di kolom.
Aturan keberadaan nilai
Seperti yang saya pahami, Anda memverifikasi bahwa data yang dimasukkan atau diperbarui menunjukkan seperti yang diharapkan dalam database.
Aturan nilai baris
Saya tidak tahu persis apa artinya yang satu ini.
Aturan ukuran
Setiap kolom memiliki ukuran dalam database berdasarkan pada bagaimana itu didefinisikan dalam DDL. Anda ingin memastikan bahwa nilai apa pun yang sesuai dengan persyaratan (baik yang dimasukkan dari GUI atau yang dihasilkan sebagai hasil perhitungan) akan disimpan dengan benar di kolom. Misalnya tipe data Integer Kecil tidak memungkinkan Anda untuk menyimpan nilai 5 miliar. Juga, nama yang didefinisikan sebagai VARCHAR2 (30) tidak akan menampung 40 karakter, jadi aturan bisnis harus sangat jelas di sini, khususnya ketika kolom digunakan untuk mengumpulkan data. Anda ingin menguji apa yang terjadi dalam situasi seperti itu.
pedoman tentang bagaimana / di mana untuk memulai
Salah satu cara untuk melakukan ini adalah dengan membuat rencana pengujian. Anda ingin memastikan Anda menggunakan versi spesifikasi yang benar (seperti dokumen persyaratan dan Use Cases) dan perangkat lunak. Anda juga perlu mengoordinasikan tes ini dengan tes yang dilakukan oleh Unit Testing (jika ada). Anda mungkin menemukan tes duplikat yang tidak perlu Anda lakukan lagi. Anda ingin mengambil salinan database sebelum pengujian sehingga Anda bisa mengulangi tes tertentu jika perlu. DBA dapat membantu Anda dengan ini. Anda juga perlu memeriksa dengan tim Anda bagaimana mereka mendokumentasikan tesis tesis dan memverifikasi cakupan pengujiannya. Anda dapat memecah database Anda menjadi bagian logis dan memulai pengujian setiap bagian logis secara terpisah. Proses pengujian dapat dimulai dengan mempelajari DDL dari database dan memverifikasi bahwa kolom didefinisikan dengan benar seperti yang disyaratkan oleh bisnis. Anda harus menggunakan perangkat lunak aplikasi dan bukan alat lain untuk melakukan sebagian besar tes. Misalnya pertanyaan berikut:
Apakah kolom seharusnya dari tipe yang ditentukan (tidak ada gunanya membuat Nama sebagai Int).
Apakah ukurannya kompatibel dengan persyaratan bisnis?
Apakah semua kolom dalam persyaratan bisnis ditemukan dalam database?
Apakah kolom nol benar-benar opsional?
dll.
Selanjutnya, Anda bisa mendesain kasus uji untuk menguji hal di atas. Anda dapat menggunakan GUI untuk melakukan sebagian besar tes.
Ada tes database penting lainnya yang belum Anda sebutkan. Mereka berurusan dengan:
1 - Menguji bahwa kunci utama benar-benar unik dari perspektif bisnis.
2 - Menguji bahwa indeks unik (selain PK) benar-benar unik dari perspektif bisnis.
3 - Menguji kendala Kunci Asing berfungsi.
4 - Menguji apa yang terjadi ketika suatu baris dihapus dan pengaruhnya terhadap baris terkait.
5 - Tes lain tentang konstruksi basis data khusus seperti CHEKC, Pemicu jika ada.
6 - Normalisasi tabel yang benar dan kolom yang dinormalisasi memiliki nilai yang benar.
Di atas bukan daftar lengkap tetapi harus Anda mulai.
Saya pikir Anda mendekati ini dengan cara yang salah.
Basis data apa pun yang saya tahu memverifikasi data sebelum memasukkannya ke dalam tabel - ini memvalidasi terhadap definisi setiap kolom. Anda tidak dapat memasukkan string 80 karakter ke dalam kolom SMALLINT (3) - database akan gagal dalam upaya itu dan memberi tahu Anda bahwa Anda telah membuat kesalahan. Anda tidak perlu mengujinya sendiri dengan memasukkan data dan kemudian mengambilnya.
Apa yang ingin Anda miliki adalah aturan validasi / penyaringan data sebelum dikirim ke database.
Aturan validasi / penyaringan tersebut harus dijalankan pada data di aplikasi Anda yang sebenarnya. Anda kemudian dapat mengatur tes untuk memastikan mereka benar, dengan mengumpankannya dengan data yang benar dan salah untuk memastikan itu lulus atau gagal validasi sesuai.
Sejauh desain database berjalan, Anda tidak dapat benar-benar memverifikasinya dengan tes - karena banyak desain akan berfungsi bahkan jika mereka tidak ideal (dan definisi perubahan ideal di antara orang yang berbeda). Desain basis data yang tepat dilengkapi dengan pengalaman dan pengetahuan, bukan dengan tes otomatis.
sumber