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
unity
automated-testing
Xavi Montero
źródło
źródło
Odpowiedzi:
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:
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.
źródło