bagaimana cara mengotomatiskan pengujian game?


13

Saya baru dalam bidang pengujian ini. Saya baru saja mengembangkan game dasar menggunakan mesin unity tetapi saya ingin mengujinya.

Saya telah memeriksa dengan selenium tetapi saya tidak tahu bagaimana mendapatkan nilai yang dikembalikan yang memiliki informasi tentang tindakan yang sedang dilakukan dalam permainan. Jika saya bisa mendapatkan nilai maka saya akan dapat mengambil tindakan yang diperlukan.


4
Ini pertanyaan yang cukup menarik. Saya pribadi berpikir bahwa pengujian unit sangat kurang dihargai dalam pengembangan game. Namun, sepertinya Anda lebih tertarik pada pengujian integrasi otomatis, yang seringkali sangat sulit untuk diterapkan dalam pengembangan game. Apalagi saat game ini menggunakan keacakan.
Philipp

Alat peraga untuk menganggap serius pengujian & mencari alat untuk pekerjaan itu. Anda mungkin ingin bertanya pada SO sebagai gantinya - mereka memiliki banyak T&J di selenium. Seperti @Philipp sebutkan, beberapa jenis pengujian game jelas sulit untuk diotomatisasi; yaitu saya belum melihat tes tanpa pengawasan untuk memeriksa efek visual.
Pikalek

1
Tidak jelas apa yang ingin Anda uji, tetapi tampaknya Anda mencari nilai yang dapat diuji secara independen dari permainan - nilai yang dikembalikan oleh suatu fungsi. Dan jika demikian, Anda dapat menguji unit fungsi ini dan tidak masalah apakah itu sedang digunakan dalam game atau tidak. Jika tidak jelas bagi Anda bagaimana melakukannya, beri tahu kami dan saya akan mencoba menulis jawaban yang melibatkan pengujian unit.
MVCDS

Jawaban:


1

Ada beberapa cara untuk menguji permainan, dua yang paling sering digunakan adalah: pengujian unit dan integrasi.

Untuk pengujian unitAnda sedang menguji cara kerja dalam game, tanpa benar-benar menjalankannya. Anda dapat melakukan ini untuk modul tertentu yang memiliki dependensi yang disarikan (mis., Logika yang menghitung Quest XP yang Anda peroleh, berdasarkan serangkaian faktor tertentu; apakah suara yang diberikan dimainkan). Bergantung pada seberapa banyak Anda mengabstraksi logika Anda, Anda bisa menguji lebih banyak, tetapi untuk persatuan secara khusus, mungkin akan lebih sulit mengingat cara arsitektur game dilakukan (misalnya, mewarisi dari monobehaviour). Namun demikian, menerapkan pola OOP seperti komposisi, Anda dapat mengekstrak bit logika yang dapat diuji dengan cara deterministik (misalnya, fisika), bahkan jika kadang-kadang dapat dilihat sebagai agak ekstrim. Itu semua tergantung pada berapa banyak waktu yang Anda miliki, apakah Anda memulai dari awal dengan proyek atau tidak, berapa banyak pengalaman yang Anda miliki, dll. Secara umum, saya belum Saya tidak melihat banyak pengujian unit dalam game dibandingkan dengan proyek perangkat lunak non-game lainnya. Pengujian semacam ini cukup mudah untuk diotomatisasi karena Anda memberikan perilaku mengejek yang Anda tiru.

Untuk pengujian integrasi , Anda berinteraksi dengan game "keseluruhan" pada waktu tertentu, ketika semua bagian berjalan. Tergantung pada kedalaman hal yang ingin Anda uji, saya melihat mungkin sangat mudah untuk langsung mustahil.

Satu ide adalah membangun "tes integrasi", yang mencatat setiap (sebagian besar) tindakan yang dilakukannya (mis., Spawning monster, memainkan suara, efek awal, spawning particle). Setelah berjalan selama waktu tertentu, Anda dapat memeriksa log untuk melihat apakah itu cocok dengan pola yang diberikan (ini juga tergantung pada seberapa acak gim ini, berdasarkan input). Sekarang, ini terdengar sederhana, tetapi pertanyaannya adalah: bagaimana Anda memberi tahu permainan untuk melakukan tindakan yang diinginkan? Yang membawa saya ke ide kedua.

Gagasan lain adalah memiliki jenis server dalam permainan, sekali lagi, untuk tujuan pengujian, yang dapat memproses permintaan (misalnya, melalui API REST), dan yang bertindak atas entitas. Permintaan dapat berupa hal-hal seperti: bergerak ke kiri, melompat, memutar derajat X, mengubah viewport, dll. Dengan pendekatan ini Anda juga dapat melakukan "pemeriksaan" bahwa permainan bertindak seperti yang diharapkan, baik dengan memeriksa keadaan secara langsung, atau memverifikasi virtual log peristiwa yang terjadi. Pendekatan ini digunakan oleh alat pengujian UI lainnya untuk ponsel (mis., Xamarin Test Cloud)

Untuk bagian pengontrol, jika game Anda berbasis sentuhan / browser, Anda bisa mensimulasikan tindakan melalui perangkat sentuh / input virtual, tetapi ini sedikit lebih sulit, tergantung pada kerumitan tindakan.

Gagasan lain, berkenaan dengan aspek visual, adalah untuk mengambil beberapa tangkapan layar referensi, gambar selama fase awal, dan membandingkannya setelah urutan tindakan yang sama terjadi pada versi yang lebih baru. Perbandingan dapat memiliki tunjangan penyimpangan tertentu, untuk menjaga terhadap perubahan kecil. Selama pengujian, Anda dapat mencatat layar yang tidak cocok dan melihat perbedaannya. Mungkin saja layar referensi perlu diperbarui karena perubahan yang berbeda. Dalam hal ini permainan dapat dijalankan kembali dengan tindakan yang telah ditetapkan, dan gambar referensi diperbarui. Ini mungkin tidak akan bekerja dengan baik dengan sistem partikel, atau adegan yang dibuat secara acak, kecuali jika Anda menggunakan ide sebelumnya untuk mengatur semacam benih, yang digunakan untuk menghasilkan partikel.

Untuk suara, mungkin sedikit lebih sulit, karena akan melibatkan "mendengarkan" ke perangkat OUT (yang tidak selalu mungkin IIRC, karena itu tergantung pada perangkat keras sistem). Tetapi jika memungkinkan Anda dapat melakukan perbandingan berbasis referensi yang sama seperti yang Anda lakukan dengan gambar.

Saya harap ini menjelaskan bagaimana Anda bisa mengotomatiskan pengujian game.

Sunting Kemudian: Saya baru saja melihat bahwa ada pertanyaan terkait lainnya yang mungkin memberi Anda beberapa petunjuk tentang bagaimana Anda akan melakukan bagian-bagian tertentu: Pengujian permainan secara otomatis

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.