Teknik atau Kategori Pengujian Perangkat Lunak [ditutup]

16

Apa jenis pengujian perangkat lunak yang Anda ketahui? Saya pernah mendengar tentang Pengembangan Berbasis Tes, Tes unit dll, tetapi tidak dapat memahami pentingnya dan perbedaannya. Misalnya, mengapa kita menggunakan tes regresi atau tes penerimaan. Keuntungan apa yang mereka berikan?

Dehumanizer
sumber
8
Bagian mana dari ini yang membingungkan atau tidak lengkap? en.wikipedia.org/wiki/Software_testing
S.Lott
2
ANDA dapat melewati tes regresi jika Anda tidak peduli jika Anda melanggar fungsi yang ada dan Anda dapat melewatkan tes penerimaan jika Anda tidak peduli apakah orang-orang benar-benar menggunakan perangkat lunak atau membayar untuk itu berpikir itu melakukan apa yang mereka harapkan untuk dilakukan . Pemrogram profesional peduli dengan kedua hal itu.
HLGEM
Saya memberikan suara untuk membuka kembali pertanyaan ini karena itu adalah satu-satunya yang saya temukan memberikan gambaran yang baik tentang berbagai jenis kategori pengujian. Mungkin seseorang memiliki ide bagus bagaimana menulis ulang pertanyaan agar lebih cocok untuk situs ini?
Doc Brown

Jawaban:

38

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.

JB King
sumber
5
+1 ... dan sayangnya, masih ada tes manual bahkan setelah semua itu.
Steven Evers
2
dan Tes Stres - semua sesi yang mungkin menguji topeng yang sama dalam waktu yang sama dan skenario pengujian yang
berkesinambungan
1
Apakah Anda tidak kehilangan cakupan / pengujian cakupan cabang? Juga, berjalan di bawah semacam sistem pengawasan memori, seperti malloc "Pagar Listrik", atau Valgrind?
Bruce Ediger
1
@ Bruce Ediger: cakupan adalah statistik untuk pengujian kotak putih, bukan metode pengujian itu sendiri dan alat yang Anda gambarkan adalah untuk pengujian perf.
Steven Evers
Saya harus berbeda pada "alat ... untuk pengujian perf". Dalam beberapa bahasa (C atau C ++) menjalankan banyak unit test di valgrind akan menemukan bug yang tidak ditemukan oleh jenis pengujian lain yang disebutkan di atas. Valgrind tentu merupakan alat debugging, tetapi menjalankan tes dalam program valgrinded sangat diperlukan.
Bruce Ediger
4

Pengujian regresi dilakukan untuk memastikan bahwa perubahan baru pada sistem tidak merusak fungsionalitas yang ada yang seharusnya tidak terpengaruh oleh perubahan tersebut.

Pengujian penerimaan biasanya dilakukan oleh pelanggan / klien / pengguna bisnis, seringkali lebih tinggi daripada bentuk pengujian lainnya dan dilakukan agar orang-orang yang meminta perubahan puas dengan mereka dan akan memungkinkan Anda untuk mempromosikan perubahan ke dalam sistem produksi.

FrustratedWithFormsDesigner
sumber
1
Dan yang paling penting agar mereka setuju bahwa mereka mendapatkan apa yang mereka inginkan dan dapat membayar Anda sekarang.
Mchl