Kategori-kategori luas dalam pikiran saya adalah:
Pengujian kotak hitam . Anda tidak dapat melihat kode dan hanya menguji secara membabi buta sampai batas tertentu karena apa yang ada dalam aplikasi atau sistem tersembunyi dari Anda. Jadi dalam hal ini orang tidak tahu semua kasus kesalahan dan harus menebak dengan berbagai kondisi batas yang mungkin atau mungkin tidak jelas untuk menemukan semua kasus.
Pengujian kotak putih . Anda bisa melihat kode dan dapat memverifikasi jalur kode apa yang sedang digunakan sehingga cakupan kode dapat digunakan sebagai metrik untuk memastikan bahwa semua logika digunakan dalam sistem. Idenya di sini adalah untuk mengetahui seperti apa kode itu untuk membantu memandu pengujian sehingga tidak seisterius pengujian kotak hitam.
Pengujian kotak abu-abu adalah hibrida dari dua yang sebelumnya.
Kasus batas cenderung menjadi sesuatu yang dapat dilihat seseorang dalam pengujian kotak putih karena ada berbagai kondisi untuk dilihat dalam kode yang ditulis oleh seseorang, misalnya jika Anda memiliki program yang meminta nomor dan seseorang memasukkan X bagaimana ini ditangani harus dilihat di suatu tempat dalam kode.
Klasifikasi umum pengujian adalah:
Tes unit . Ini umumnya adalah tes terkecil yang menguji sesuatu yang agak spesifik, misalnya apakah metode ini menangani kasus batas ini? Perhatikan bahwa injeksi ketergantungan dapat digunakan di sini untuk kasus-kasus yang melibatkan benda tiruan untuk mengurangi ketergantungan untuk tes.
Tes integrasi . Ini adalah pengujian di mana beberapa komponen terhubung dan pengujian dijalankan untuk memastikan komponen bekerja dengan baik. Perhatikan bahwa sementara unit test dapat bekerja secara independen, ini adalah tempat untuk menguji seberapa baik hal-hal datang bersamaan karena mungkin ada miskomunikasi antar lapisan yang menyebabkan tes ini berguna dalam menangkap berbagai gotcha. Istilah Tes ujung ke ujung digunakan untuk tes integrasi di mana rantai penuh komponen diuji dari "satu titik akhir aplikasi ke yang lain" (apa pun artinya).
Tes regresi . Ini akan menjadi tes yang dilakukan di masa lalu yang dilakukan lagi untuk memastikan bahwa apa yang diperbaiki tetap diperbaiki dan bug tidak diperkenalkan kembali ke kode.
Tes kegunaan . Ini akan menjadi tes yang dilakukan untuk melihat seberapa baik pengguna akhir dapat bekerja dengan perangkat lunak untuk menyelesaikan berbagai tugas. Di mana ada sesuatu yang otomatis untuk membuat sesuatu lebih cepat atau menyesuaikan UI sehingga sesuatu lebih mudah digunakan.
Tes penerimaan pengguna . Ini akan menjadi tes yang dilakukan oleh pengguna akhir sehingga mereka dapat melihat secara langsung bagaimana sesuatu bekerja dan setuju bahwa perangkat lunak memang memenuhi kebutuhan bisnis yang memintanya.
Tes fungsional adalah semua jenis tes berdasarkan spesifikasi fungsional perangkat lunak yang diuji. Ini selalu merupakan tes kotak hitam.
Tes kinerja. Ini akan menjadi tes yang dilakukan untuk memastikan sistem dapat menangani sejumlah beban tertentu tanpa menjadi terlalu lambat. Misalnya, menguji web server server yang baru dapat menangani 100 pengguna yang memukul situs secara bersamaan akan menjadi contoh dari tes kinerja. Ini juga dapat disebut "tes beban" atau "tes stres" karena umumnya ide di sini adalah mendorong sistem hingga batasnya atau memverifikasi bahwa sistem dapat menangani beberapa proyeksi dari departemen lain. Alasan untuk tes ini adalah bahwa sering ada banyak pengaturan konfigurasi untuk dioptimalkan yang dapat mengambil lebih dari sedikit pekerjaan untuk menemukan kemacetan dan mengatasi masalah dengan ini. Hambatan di sini bisa berupa memori, I / O, CPU atau bandwidth jaringan yang menyebabkan sistem tidak responsif seperti yang diharapkan.
Pengembangan yang Didorong Tes adalah metodologi dan tidak merujuk pada jenis tes tertentu melainkan tes ditulis sebelum kode sehingga tes yang mendorong pengembangan daripada perilaku , domain , atau fitur menjadi beberapa contoh lain dalam hal proses.
Integrasi Kontinu adalah praktik menjalankan beberapa tes seperti unit, tes integrasi dan regresi secara teratur sehingga jika perubahan memecah tes, ini ditangkap sedini mungkin.