Bagaimana cara menjalankan tes fungsional terhadap game Unity3D saya?

25

Konteks

Saya melanjutkan beberapa kode lawas untuk permainan di Unity3d, dan saya ingin menulis beberapa tes fungsional yang dimaksudkan untuk regresi, untuk memastikan saya tidak memecahkan hal-hal ketika menerapkan hal-hal baru atau ketika melakukan refactoring.

Saya sudah tahu ada suite 'Alat Uji Unit' untuk Unity3d yang tersedia sebagai aset. Saya telah menggunakannya sebagai unit-test suite, jadi saya menguji model saya (kelas).

Contoh tes seperti apa yang saya pikirkan

Untuk "tes fungsional" maksud saya hal-hal seperti ini:

  • Jalankan programnya
  • Ketika di adegan menu, nyatakan ada tombol yang mengatakan "mulai"
  • Klik itu
  • Kemudian tegaskan adegan baru yang dimuat
  • Menegaskan piksel XXX berwarna merah
  • Klik dalam koordinat XXX
  • Tegaskan sekarang bahwa piksel berubah menjadi hijau
  • dll.

Pertanyaan

T1: Bagaimana cara saya menulis dan menjalankan tes fungsional untuk game saya? Apakah ini juga biasanya dilakukan di UnityTestTools (UTT)?

T2: Jika UTT lebih untuk Pengujian Unit, apakah ada rangkaian terpisah untuk pengujian fungsional? Yang mana?

Catatan:

Saya menargetkan Android, dan berjalan Unity5.3.1f1

Xavi Montero
sumber
Sejauh yang saya tahu, built in UTT hanya untuk pengujian unit. Mungkin ada alat pengujian yang sesuai dengan kebutuhan Anda di toko aset
user3797758
3
Sebenarnya tidak. Unity Test Tools berisi toolset untuk pengujian integrasi dan banyak pernyataan sejak versi pertama. Jika Anda tidak melihat yang seperti ini di UTT bawaan, maka unduh UTT lengkap dari Asset Store.
Maxim Kamalov
Lihatlah dokumentasi Uji Coba, Unity Test Runner Doc. Ini memungkinkan mode putar ulang dan tes mode edit.
Racksay

Jawaban:

1

Seperti yang saya pahami, Anda ingin memahami pengujian otomasi di Unity.

Alat Uji Kesatuan

Ini seharusnya menjadi metode goto Anda, tetapi sebelum menggali bagaimana caranya, saya akan memeriksa alasannya.

Cara yang disukai untuk melakukan segala bentuk pengujian otomatisasi adalah dengan melakukan ini di lingkungan sedekat mungkin dengan produksi. Menggunakan sesuatu seperti Unity Test Tools (tinggal di dalam Unity Editor) terdengar seperti ide yang buruk bagi siapa saja yang menulis tes integrasi konvensional.

Mengapa? Karena dengan pengujian integrasi apa pun, Anda menginginkan jumlah barang ekstra paling sedikit yang menghalangi aplikasi Anda yang tidak ada ketika pengguna membukanya. Unity Editor mungkin memiliki kinerja atau perilaku yang berbeda dibandingkan dengan versi iOS (misalnya).

Jadi, mengapa menggunakan Unity Test Tools (UTT)?

Alasan utamanya adalah kenyamanan. Baik Unity Editor dan UTT dibangun agar mudah dan visual untuk digunakan. Anda akan memiliki waktu yang mudah menulis tes, mengaitkannya dengan permainan spesifik Anda, dan memahami ketika itu gagal.

Bagaimana dengan perbedaan perilaku antara Editor Persatuan dan produksi?

Bagaimanapun, Editor Persatuan adalah pembungkus aplikasi Anda. Itu artinya, akan ada beberapa perbedaan antara Editor dan produksi. Namun, pengujian integrasi samping, Editor Persatuan telah menjadi pembungkus untuk waktu yang sangat lama sekarang. Ini adalah platform yang matang dengan ribuan game dibangun di atasnya. Hasil yang Anda dapatkan dari menjalankan tes integrasi di dalam Editor akan sangat akurat.

Dalam skenario contoh yang Anda berikan, semuanya kecuali item pertama dapat dengan mudah dinyatakan menggunakan Unity Test Tools. Anda dapat membuka adegan dan memvalidasi perilaku seperti halnya tes integrasi lainnya.

Saya sarankan untuk menulis sebagian besar (jika tidak semua) tes Anda menggunakan UTT. Untuk menambahkan kompatibilitas dengan alat integrasi berkelanjutan (mis. Jenkins), Anda mungkin ingin menjalankannya dari konsol menggunakan argumen baris perintah .

Mulai aplikasi dan pengujian manual

Memulai aplikasi bukanlah sesuatu yang Anda miliki kontrol yang tepat saat berada di Unity Editor. Untuk memvalidasi aspek permainan Anda dan lainnya, Anda dapat menggunakan beberapa tes manual dasar.

Inilah cara untuk mendekati itu:

  1. Pastikan gim Anda memancarkan semacam sinyal saat mencapai tonggak tertentu yang Anda pedulikan (atau mungkin peduli). Masuk ke file adalah pendekatan yang paling umum (menggunakan logging bawaan otomatis atau versi pihak ke - 3 ).
  2. Baca dan analisis log secara berkala. Ini dapat terjadi secara manual atau ditulis menggunakan bahasa skrip favorit kedua Anda.

Alternatif

Tidak mengherankan, karena segala sesuatu terkait dengan Persatuan, kami memiliki lebih dari beberapa alternatif. Berikut beberapa yang mungkin ingin Anda pertimbangkan:

Bergantung pada skala dan ruang lingkup proyek Anda, Anda mungkin ingin menggunakan satu atau banyak opsi yang saya uraikan di atas.

Jordan Georgiev
sumber