Unity3D oyunuma karşı fonksiyonel testleri nasıl yaparım?


25

bağlam

Unity3d'deki bir oyun için bazı eski kodları sürdürüyorum ve yeni şeyler uygularken ya da yeniden düzenleme yaparken bir şeyleri kırmadığımdan emin olmak için regresyon için bazı fonksiyonel testler yazmak istiyorum.

Varlık olarak kullanılabilen Unity3d için 'Birim Test Araçları' paketi olduğunu zaten biliyorum. Birim test paketi olarak kullandım, bu yüzden modellerimi (sınıfları) test ediyorum.

Ne tür bir test hakkında düşünüyorum

"Fonksiyonel test" için şunu kastediyorum:

  • Programı çalıştır
  • Menü sahnesindeyken, "başla" yazan bir düğme olduğunu iddia edin.
  • Tıkla
  • Sonra yeni bir sahne yüklendiğini iddia
  • Assert piksel XXX kırmızıdır
  • XXX koordinatına tıklayın
  • Şimdi pikselin yeşile döndüğünü iddia edin
  • vb.

Sorular

S1: Oyunum için işlevsel testleri nasıl yazıp çalıştırırım ? Bu, genellikle UnityTestTools'da (UTT) de mi yapılır?

S2: UTT, Ünite Testi için daha fazlaysa, fonksiyonel test için ayrı bir süit var mı? Hangisi?

Notlar:

Android'i hedefliyorum ve yayınlanıyorum Unity5.3.1f1


UTT'nin dahili olarak söyleyebileceğim kadarıyla sadece birim testi içindir. Varlık deposundaki gereksinimlerinize uyan bir test aracı olabilir
user3797758

3
Aslında hayır. Unity Test Tools, entegrasyon testi için araç seti ve ilk sürümden beri birçok iddia içermektedir. Dahili UTT'de böyle bir şey göremiyorsanız, Varlık Mağazasından tam UTT'yi indirin.
Maxim Kamalov

Test Çalışması belgelerine, Unity Test Runner Doc'a bakın. Hem oynatma moduna hem de düzenleme modu testlerine izin verir.
Racksay,

Yanıtlar:


1

Anladığım kadarıyla Unity'deki otomasyon testlerini anlamalısınız.

Birlik Test Araçları

Bu senin yöntemin olmalı, ama nasıl kazılmadan önce nedenini inceleyeceğim.

Herhangi bir otomasyon testi formunu yapmanın tercih edilen yolu, bunu mümkün olduğu kadar üretime yakın bir ortamda yapmaktır. Unity Test Araçları gibi bir şey kullanmak (Unity Editor içinde yaşamak), geleneksel entegrasyon testleri yazan herkes için kötü bir fikir gibi geliyor.

Niye ya? Zira herhangi bir entegrasyon testinde, kullanıcı açtığında uygulamanızda bulunmayan en az miktarda ekstra malzemeyi istersiniz. Birlik Düzenleyicisi, iOS sürümüne kıyasla (örneğin) farklı performans veya davranış gösterebilir.

Öyleyse neden Unity Test Tools (UTT) kullanıyorsunuz?

Ana sebep kolaylıktır. Hem Unity Editor hem de UTT, kullanımı kolay ve görsel olmak üzere oluşturulmuştur. Testler yazmak, onları kendi oyununuzla bağlamak ve başarısız olduklarını anlamak için kolay bir zaman geçireceksiniz.

Unity Editor ve prodüksiyon arasındaki davranış farkına ne demeli?

Sonuçta, Birlik Düzenleyici, uygulamanızın etrafındaki bir sarmalayıcıdır. Bu , Editör ve prodüksiyon arasında bazı farklılıklar olacağı anlamına gelir . Ancak, entegrasyon testi bir yana, Birlik Düzenleyicisi, çok uzun zamandır bir sarıcı olmuştur. Bu bir olan olgun bir platform üzerine inşa oyunun binlerce. Editör içindeki entegrasyon testlerini uygulamanızdan aldığınız sonuçlar çok doğru olacaktır.

Sağladığınız örnek senaryoda, Unity Test Araçları kullanılarak ilk öğenin dışındaki her şey kolayca iddia edilebilir. Sahneleri açabilir ve diğer tüm entegrasyon testlerinde olduğu gibi davranışları doğrulayabilirsiniz.

UTT kullanarak testlerinizin çoğunu (hepsi değilse) yazmanızı öneririm. Sürekli entegrasyon araçlarıyla (örneğin Jenkins) uyumluluk eklemek için, komut satırındaki değişkenleri kullanarak konsoldan çalıştırmak isteyebilirsiniz .

Uygulamayı başlatmak ve manuel test

Uygulamayı başlatmak, Birlik Düzenleyicideyken tam kontrolünüz olan bir şey değildir. Oyununuzun bu yönünü ve daha fazlasını doğrulamak için bazı temel manuel testleri kullanabilirsiniz.

İşte buna nasıl yaklaşılacağı:

  1. Oyununun, umursadığınız (veya umursamanız) belirli kilometre taşlarına ulaştığında bir tür sinyal yaydığından emin olun. Bir dosyaya giriş yapmak en yaygın yaklaşımdır ( otomatik yerleşik günlük kaydı veya bir üçüncü taraf sürümü kullanarak ).
  2. Günlükleri periyodik olarak okuyun ve analiz edin. Bu, manuel olarak gerçekleşebilir veya ikinci favori komut dili kullanarak komut dosyası yazılabilir.

Alternatifler

Beklendiği gibi, Birlik ile ilgili her şey gibi, birkaç alternatifimiz var. İşte göz önünde bulundurmanız gereken bazı şeyler:

Projenizin ölçeğine ve kapsamına bağlı olarak, yukarıda belirtilen seçeneklerden birini veya daha fazlasını kullanmak isteyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.