Pendekatan saya terhadap pengujian GUI terus berkembang, seperti halnya konsensus industri. Tapi saya pikir beberapa teknik utama mulai muncul.
Saya menggunakan satu atau lebih dari teknik-teknik ini, tergantung pada situasinya (misalnya GUI seperti apa, seberapa cepat perlu dibangun, siapa pengguna akhir, dll.).
Pengujian manual. Anda selalu menjalankan GUI saat mengerjakan kode, dan memastikannya sinkron dengan kode. Anda secara manual menguji dan menguji ulang bagian yang Anda kerjakan saat Anda mengerjakannya, beralih antara kode dan aplikasi yang sedang berjalan. Setiap kali Anda menyelesaikan beberapa pekerjaan penting, Anda memberikan seluruh layar atau area aplikasi tes keseluruhan, untuk memastikan tidak ada regresi.
Pengujian unit. Anda menulis tes untuk fungsi atau unit kecil perilaku GUI. Misalnya, grafik Anda mungkin perlu menghitung berbagai nuansa warna berdasarkan warna 'dasar'. Anda dapat mengekstrak perhitungan ini ke suatu fungsi dan menulis unit test untuknya. Anda dapat mencari logika seperti ini di GUI (terutama logika yang dapat digunakan kembali) dan mengekstraknya menjadi fungsi-fungsi rahasia, yang dapat lebih mudah diuji unit. Bahkan perilaku kompleks dapat diekstraksi dan diuji dengan cara ini - misalnya, urutan langkah-langkah dalam wizard dapat diekstraksi ke suatu fungsi dan unit-tes dapat memverifikasi bahwa, diberi input, langkah yang benar dikembalikan.
Penjelajah komponen. Anda membuat layar 'penjelajah' yang perannya hanya untuk menampilkan setiap komponen yang dapat digunakan kembali yang membentuk GUI Anda. Layar ini memberi Anda cara cepat dan mudah untuk memverifikasi secara visual bahwa setiap komponen memiliki tampilan & rasa yang benar. Penjelajah komponen lebih efisien daripada secara manual menelusuri seluruh aplikasi Anda, karena A) Anda hanya perlu memverifikasi setiap komponen sekali, dan B) Anda tidak perlu menavigasi jauh ke dalam aplikasi untuk melihat komponen, Anda hanya dapat melihat dan segera verifikasi itu.
Pengujian otomasi. Anda menulis tes yang berinteraksi dengan layar atau komponen, mensimulasikan klik mouse, entri data, dll., Menyatakan bahwa fungsi aplikasi dengan benar diberikan manipulasi ini. Ini dapat berguna sebagai tes cadangan tambahan, untuk menangkap bug potensial yang mungkin terlewatkan oleh tes Anda yang lain. Saya cenderung memesan pengujian otomasi untuk bagian-bagian GUI yang paling rentan rusak dan / atau sangat kritis. Bagian yang ingin saya ketahui sedini mungkin jika ada sesuatu yang rusak. Ini dapat mencakup komponen interaktif yang sangat kompleks yang rentan terhadap kerusakan atau layar utama yang penting.
Pengujian dif / snapshot. Anda menulis tes yang hanya menangkap output sebagai tangkapan layar atau sebagai kode HTML dan membandingkannya dengan output sebelumnya. Dengan begitu, Anda memberi tahu Anda setiap kali output berubah. Tes diff mungkin berguna jika aspek visual GUI Anda kompleks dan / atau dapat berubah, dalam hal ini, Anda ingin umpan balik cepat dan visual tentang apa dampak perubahan yang diberikan pada GUI secara keseluruhan.
Daripada menggunakan semua jenis tes yang mungkin, saya lebih memilih untuk memilih dan memilih teknik pengujian berdasarkan pada jenis hal yang saya kerjakan. Jadi dalam satu kasus saya akan mengekstrak fungsi sederhana dan mengujinya, tetapi dalam kasus lain saya akan menambahkan komponen ke komponen explorer, dll. Itu tergantung pada situasinya.
Saya belum menemukan cakupan kode menjadi metrik yang sangat berguna, tetapi orang lain mungkin menemukan manfaatnya.
Saya pikir langkah pertama adalah jumlah dan tingkat keparahan bug. Prioritas pertama Anda mungkin memiliki aplikasi yang berfungsi dengan benar. Jika aplikasi berfungsi dengan benar, seharusnya ada sedikit atau tidak ada bug. Jika ada banyak atau bug yang parah, maka mungkin, Anda tidak sedang menguji atau tes Anda tidak efektif.
Selain mengurangi bug, ada langkah-langkah lain seperti kinerja, kegunaan, aksesibilitas, pemeliharaan, ekstensibilitas, dll. Ini akan berbeda, tergantung pada jenis aplikasi yang Anda bangun, bisnis, pengguna akhir, dll.
Ini semua berdasarkan pengalaman pribadi dan penelitian saya serta tulisan yang bagus tentang Tes UI oleh Ham Vocke .