Guave hat Unit-Testfälle automatisch generiert :
Guave hat eine erstaunliche Anzahl von Einzeltests: Ab Juli 2012 umfasst das Paket für Guaventests über 286.000 einzelne Testfälle. Die meisten davon werden automatisch generiert und nicht von Hand geschrieben. Guavas Testberichterstattung ist jedoch äußerst gründlich, insbesondere für com.google.common.collect.
Wie sind sie entstanden? Mit welchen Techniken und Technologien wurden sie entworfen und generiert?
java
unit-testing
test-automation
dzieciou
quelle
quelle
Antworten:
Ein großer Teil dieser Testmenge ist für die Implementierung der Guava-Sammlung bestimmt. Sie haben generische Tests geschrieben, mit denen die Erfassungsschnittstellen eingehend getestet werden. Auf diese Weise wird eine Suite pro Implementierung erstellt. Siehe zum Beispiel Klassen genannt
CollectionAddAllTester
,ListIndexOfTester
.Dies alles wird durch eine Bibliothek namens testlib unterstützt, die als Teil von Guava ausgeliefert wird. Das ist ziemlich allgemein. Es unterstützt das Schreiben generischer Tests für jede Schnittstelle (nicht nur für Sammlungen). Sie können
Feature
eine Reihe möglicher Implementierungen angeben und diese testen (z. B. wenn Ihr Satz nicht modifizierbar ist, erwarten Sie ein anderes Ergebnisset.add()
). Wenn Sie die Tests ausführen, geben Sie an, welche Funktionen Ihre Implementierung unterstützt.Es basiert auf JUnit 3 und nicht auf 4. Normalerweise verfügen Sie über eine Klasse mit zahlreichen
TestCase
MethodentestSomething()
, die von JUnit reflektiert ausgeführt werden. Die Testlib-Bibliothek greift in die Ausführung dieser Tests ein, sodass der Lebenszyklus folgendermaßen aussieht:TestCase
InstanzTestSubjectGenerator
- Dies ist die Testlib-Schnittstelle, die Sie erweitern, um die Sie das Testobjekt tatsächlich erstellengetSubjectGenerator()
den Zugriff auf die TestpersonDas Schlüsselbit ist der zusätzliche Initialisierungsschritt, mit dem ein bestimmtes Testobjekt in den generischen Testfall eingefügt werden kann.
Ich habe einen Beitrag darüber geschrieben, wie man Testlib-Generierungs-Suites für eigene Interfaces schreibt.
(Wird auch auf derselben Frage auf der sqa- Site gepostet .)
quelle
Es gibt Unit-Test-Generatoren. In der .NET-Welt könnte dies beispielsweise durch Microsoft Pex geschehen.
Beispielsweise versucht Microsoft Pex auf Basis der Codeanalyse alle möglichen Werte als Argumente für eine Methode. Bei einigen Argumenten wird erwartet, dass die Methode eine Ausnahme auslöst. Solche Sachen können automatisch für Tests erstellt werden. Statische Werte wie eine leere Zeichenfolge, die in bestimmten Fällen zurückgegeben wird, können ebenfalls automatisch getestet werden.
quelle