Jak przeprowadzić testy funkcjonalne w mojej grze Unity3D?

25

Kontekst

Kontynuuję trochę starszego kodu dla gry w Unity3d i chcę napisać kilka testów funkcjonalnych przeznaczonych do regresji, aby upewnić się, że nie psuję się przy wdrażaniu nowych rzeczy lub przy refaktoryzacji.

Wiem już, że istnieje pakiet narzędzi testowych dla Unity3d dostępny jako zasób. Użyłem go jako pakietu testów jednostkowych, więc testuję swoje modele (klasy).

Przykład jakiego rodzaju testu mam na myśli

Dla „testu funkcjonalnego” mam na myśli takie rzeczy:

  • Uruchom program
  • Na scenie menu sprawdź, czy jest przycisk „start”
  • Kliknij to
  • Następnie sprawdź, czy nowa scena została załadowana
  • Potwierdź, że piksel XXX jest czerwony
  • Kliknij współrzędną XXX
  • Potwierdź teraz, że piksel zmienił się na zielony
  • itp.

pytania

P1: Jak napisać i uruchomić testy funkcjonalne dla mojej gry? Czy zwykle odbywa się to również w UnityTestTools (UTT)?

Q2: Jeśli UTT służy bardziej do testowania jednostkowego, to czy istnieje osobny zestaw do testowania funkcjonalnego? Który?

Uwagi:

Celuję w Androida i działam Unity5.3.1f1

Xavi Montero
źródło
O ile mogę stwierdzić, wbudowany UTT służy tylko do testów jednostkowych. W magazynie zasobów może znajdować się narzędzie do testowania, które odpowiada Twoim potrzebom
użytkownik3797758
3
Właściwie nie. Narzędzia testowe Unity zawierają zestaw narzędzi do testowania integracji i wiele stwierdzeń od pierwszej wersji. Jeśli nie widzisz czegoś takiego we wbudowanym UTT, pobierz pełną wersję UTT ze sklepu Asset Store.
Maxim Kamalov
Zapoznaj się z dokumentacją Test Running, Unity Test Runner Doc Umożliwia testy zarówno w trybie odtwarzania, jak i edycji.
Racksay,

Odpowiedzi:

1

Jak rozumiem, chcesz zrozumieć testy automatyzacji w Unity.

Narzędzia do testowania jedności

To powinna być twoja metoda goto, ale zanim przejdę do tego, zbadam dlaczego.

Preferowanym sposobem przeprowadzenia dowolnej formy testów automatyzacji jest wykonanie tego w środowisku możliwie najbliższym produkcji. Korzystanie z narzędzi testowych Unity (życie w edytorze Unity Editor) wydaje się złym pomysłem dla każdego, kto napisał konwencjonalne testy integracyjne.

Czemu? Ponieważ przy każdym testowaniu integracyjnym potrzebujesz najmniejszej ilości dodatkowych rzeczy, które mogłyby ugrzęznąć w Twojej aplikacji, której nie ma, gdy użytkownik ją otworzy. Edytor Unity może mieć inną wydajność lub zachowanie w porównaniu do wersji iOS (na przykład).

Dlaczego więc korzystać z Unity Test Tools (UTT)?

Głównym powodem jest wygoda. Zarówno edytor Unity, jak i UTT są łatwe w obsłudze i wizualne. Łatwo będziesz pisać testy, podpinać je do konkretnej gry i rozumieć, kiedy się nie uda.

Co z różnicą w zachowaniu między edytorem Unity a produkcją?

W końcu Unity Editor jest opakowaniem Twojej aplikacji. Oznacza to, że będą pewne różnice między edytorem a produkcją. Ale pomijając testy integracyjne, Unity Editor jest już bardzo długi czas. To dojrzała platforma z tysiącami gier. Wyniki uzyskane podczas przeprowadzania testów integracyjnych w edytorze będą bardzo dokładne.

W podanym przez Ciebie scenariuszu przykładowym wszystko, oprócz pierwszego elementu, można łatwo potwierdzić za pomocą narzędzi testowych Unity. Możesz otwierać sceny i sprawdzać zachowania, tak jak inne testy integracyjne.

Sugeruję napisanie większości (jeśli nie wszystkich) testów za pomocą UTT. Aby dodać zgodność z narzędziami do ciągłej integracji (np. Jenkins), możesz chcieć uruchomić je z konsoli za pomocą argumentów wiersza poleceń .

Uruchamianie aplikacji i testowanie ręczne

Uruchamianie aplikacji nie jest czymś, co dokładnie kontrolujesz w edytorze Unity. Aby zweryfikować ten aspekt gry i nie tylko, możesz użyć podstawowych testów ręcznych.

Oto jak podejść do tego:

  1. Upewnij się, że gra emituje jakiś sygnał, gdy osiągnie określone kamienie milowe, na których Ci zależy (lub które mogą Cię zainteresować). Logowanie do pliku jest najczęstszym podejściem (przy użyciu automatycznego wbudowanego logowania lub wersji innej firmy ).
  2. Okresowo czytaj i analizuj dzienniki. Może się to zdarzyć ręcznie lub zostać skryptowane za pomocą drugiego ulubionego języka skryptowego.

Alternatywy

Nic dziwnego, że ponieważ wszystko związane z Jednością mamy więcej niż kilka alternatyw. Oto niektóre, które warto rozważyć:

W zależności od skali i zakresu projektu możesz chcieć zastosować jedną lub wiele opcji opisanych powyżej.

Jordan Georgiev
źródło