Guava ma automatycznie wygenerowane przypadki testowe :
Guawa ma zdumiewającą liczbę testów jednostkowych: od lipca 2012 r. Pakiet testów guawa obejmuje ponad 286 000 indywidualnych przypadków testowych. Większość z nich jest generowana automatycznie , a nie ręcznie, ale zakres testów Guava jest wyjątkowo dokładny, szczególnie w przypadku com.google.common.collect.
Jak zostały wygenerowane? Jakie techniki i technologie zostały użyte do ich zaprojektowania i wygenerowania?
java
unit-testing
test-automation
dzieciou
źródło
źródło
Odpowiedzi:
Duża część tej masy testów dotyczy implementacji kolekcji Guava. Napisali ogólne testy, które wyczerpująco testują interfejsy kolekcji, a to generuje pakiet na implementację. Patrz, na przykład, zwanych klasach
CollectionAddAllTester
,ListIndexOfTester
.Wszystko to jest wspierane przez bibliotekę o nazwie testlib, która jest dostarczana jako część Guava. To jest dość ogólne. Obsługuje pisanie ogólnych testów dla dowolnego interfejsu (nie tylko kolekcji). Możesz określić
Feature
s możliwych implementacji i przetestować je (np. Jeśli twój zestaw jest niezmodyfikowany, oczekujesz innego wynikuset.add()
), a po uruchomieniu testów określasz, które funkcje obsługuje twoja implementacja.Opiera się na JUnit 3, a nie 4. Zwykle masz klasę rozszerzającą się
TestCase
o nazwane metodytestSomething()
, a JUnit uruchamia je refleksyjnie. Biblioteka testlib łączy się z uruchomieniem tych testów, dzięki czemu cykl życia wygląda następująco:TestCase
instancjęTestSubjectGenerator
- jest to interfejs testlib, który rozszerzasz w miejscu, w którym faktycznie tworzysz obiekt testowygetSubjectGenerator()
daje dostęp do przedmiotu testuKluczem jest dodatkowy etap inicjalizacji, który umożliwia im wstrzyknięcie określonego obiektu testowego do ogólnego przypadku testowego.
I wypowiedział się o tym, jak napisać testlib apartamentów generujących dla własnych interfejsów.
(Wysłano również na to samo pytanie na stronie sqa .)
źródło
Istnieją generatory testów jednostkowych. Na przykład w świecie .NET może to zrobić coś takiego jak Microsoft Pex.
Na przykład Microsoft Pex próbuje w oparciu o analizę kodu wszystkie możliwe wartości jako argumenty dla metody. Oczekuje się, że niektóre argumenty pozwolą metodzie zgłosić wyjątek. Takie rzeczy mogą automatycznie testować utworzone dla. Wartości statyczne, takie jak pusty ciąg zwracany w niektórych przypadkach, mogą być również automatycznie testowane.
źródło