Google-Softwareentwicklung beim Testen sichtbar und Google Testing Blog Laut (http://testing.googleblog.com/2010/12/test-sizes.html) vereinheitlicht Google die Testkategorien der Entwickler (bis dahin Systemtest, EtoE-Test, UI-Test, Selentest usw.). Da es Ausdrücke gibt und keiner von ihnen klar definiert, um welche Art von Test es sich handelt, haben wir das Konzept von TestSize eingeführt und jeweils wie folgt definiert.
S(Small)Prüfung | M(Medium)Prüfung | L(Large)Prüfung | E(Enormous)Prüfung | |
---|---|---|---|---|
Zeitliches Ziel (für jede Methode) | Laufen Sie in weniger als 100 ms | Laufen Sie in weniger als 1s | Lauf so schnell wie möglich | Lauf so schnell wie möglich |
Maximale Ausführungszeit | Erzwungene Beendigung des S-Testziels 1 Minute nach dem Start | Erzwungene Beendigung des M-Testziels 5 Minuten nach dem Start | Erzwungene Beendigung des L-Testziels 15 Minuten nach dem Start | Beenden Sie das E-Testziel 1 Stunde nach dem Start zwangsweise |
S Test | M Test | L Test | E Test | |
---|---|---|---|---|
Netzwerkdienst (Socket offen) | spotten | nur localhost | ○ | ○ |
Datenbank | spotten | ○ | ○ | ○ |
Dateisystemzugriff | spotten | ○ | ○ | ○ |
Zugriff auf das System für den Benutzer | spotten | Nicht empfohlen | ○ | ○ |
Ausführung von Systemaufrufen | × | Nicht empfohlen | ○ | ○ |
Multi Thread | Nicht empfohlen | ○ | ○ | ○ |
Schlafaussage | × | ○ | ○ | ○ |
Systemeigenschaften | × | ○ | ○ | ○ |
Durch Definieren des Testausführungszeitpunkts für jede Testgröße kann die erforderliche Anzahl von Tests in der erforderlichen Phase ausgeführt werden, und dem Benutzer kann eine schnelle Rückmeldung gegeben werden.
Nach dem Cookpad-Artikel kann der Ausführungszeitpunkt beispielsweise wie folgt unterteilt werden. Auf diese Weise kann Cookpad den Test per Pull-Anfrage innerhalb von 5 Minuten ausführen und dem Benutzer frühzeitig Feedback geben.
S Test | M Test | L Test | E Test | |
---|---|---|---|---|
Ausführungszeitpunkt | Für jede Pull-Anfrage | Jede Pull-Anfrage oder jedes Mal, wenn sie mit dem Master zusammengeführt wird | Optional oder pro Version | Optional oder pro Version |
Wie teilen Sie TestSize und dessen Ausführungszeitpunkt auf? Hier erklären wir den Fall der Verwendung von Java und Maven.
Ab JUnit 4.8 wurde JUnit, einem typischen Java-Testframework, eine Anmerkung namens Category hinzugefügt. Durch Markieren der zu testenden Methode oder Klasse mit "@ Category" können Sie genau steuern, was in der Testsuite ausgeführt wird.
Weitere Informationen finden Sie in diesem Artikel.
Definieren Sie für jede Testgröße eine Schnittstelle Sie können das Testausführungsziel steuern, indem Sie die definierte Schnittstelle an das Argument "@ Category" übergeben.
package hogehoge;
public interface Small {}
package hogehoge;
public interface Medium {}
public class hoge {
@Category(Small.class)
@Test
public void a() {
fail();
}
@Category(Medium.class)
@Test
public void b() {
fail();
}
}
Wenn TestSize bei der Ausführung von Maven als Parameter übergeben werden kann, kann der Ausführungszeitpunkt durch TestSize geteilt werden.
Wenn möglich, wäre es schön, dies tun zu können. Wenn TestSize nicht angegeben ist, können alle Tests ausgeführt und eine oder mehrere TestSizes angegeben werden. In diesem Fall wird der angegebene TestSize-Test ausgeführt.
mvn test // All tests run.
mvn test -P Small // Small tests run.
mvn test -P Small,Medium // Small and medium tests run.
Mavens Einstellungen, um das oben genannte zu erreichen, sind wie folgt. Geben Sie TestSize in "Gruppen" des "Maven-Surefire-Plugins" an. Standardmäßig wird leer angegeben, damit alle Tests ausgeführt werden, wenn kein Argument angegeben wird.
<project ...>
<properties>
<testcase.groups></testcase.groups>
</properties>
<profiles>
<profile>
<id>Small</id>
<properties>
<testcase.groups>hogehoge.Small</testcase.groups>
</properties>
</profile>
<profile>
<id>Medium</id>
<properties>
<testcase.groups>hogehoge.Medium</testcase.groups>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Dfile.encoding=UTF-8</argLine>
<groups>${testcase.groups}</groups>
</configuration>
</plugin>
</plugins>
</build>
</project>
Google, Cookpad hat oft über TestSize geschrieben, aber ich hatte keinen Artikel darüber, wie es geht, also habe ich es geschrieben. Es ist mir eine Ehre, Ihnen behilflich zu sein.
Recommended Posts