TestNG By Cédric Beust Studie Version: 0.1 Stand vom: 14.04.2015 17:42:00 Status: Entwurf Klassifikation: Intern Software Quality Lab. Alle Rechte vorbehalten. Druckdatum: 14.04.2015
Inhalt DOKUMENTENINFORMATION... II Allgemeines... II Historie... II Qualitätssicherung... II Zweck und Inhalt dieses Dokuments... II 1. ALLGEMEIN... 1 1.1. Hersteller... 1 1.2. Alternative... 1 2. SEMANTIK... 3 2.1. Grundlegendes... 3 2.2. Annotations... 3 2.3. Assertions... 4 2.4. Getestetes Programm... 5 2.5. Testfall Klasse... 6 2.6. Testfall XML... 7 2.7. Testlauf Resultat... 10 2.8. Logs... 11 3. TESTNG UND ECLIPSE IDE... 12 3.1. Installation... 12 3.2. Ausführung... 14 3.3. Resultat... 14 4. TESTNG UND SELENIUM... 16 5. TESTNG ODER JUNIT?... 17 5.1. Test Gruppen... 17 5.2. Testabhängigkeiten... 18 6. FAZIT... 19 7. ABBILDUNGSVERZEICHNIS... 20 I / II
Dokumenteninformation Allgemeines Zusammenhang mit anderen Dokumenten: Diese Analyse ist Bestandteil der Studien über Unit Tests von Software Quality Lab. Verteiler: Historie Version Status Datum Verantwortlicher Änderungsgrund / Anmerkungen 0.1 Erstellt 17.12.12 Arian Simon Qualitätssicherung Rolle Name Erreichbarkeit (Org.+Tel.+E-Mail) Tätigkeit Datum Autor Arian Simon Arian.simon@software-quality-lab.com erstellt 17.12.2012 Prüfer Alexsander Ofner Alexsander.ofner@ software-qualitylab.com geprüft 21.01.2013 Freigabe <> Autor! freigegeben Zweck und Inhalt dieses Dokuments Ziel dieses Dokuments ist es, Interessierten eine objektive Analyse von TestNG zu bieten, welche als Entscheidungshilfe herangezogen werden kann. Grundlagen in der Java Programmierung werden empfohlen. II / II
Allgemein Hersteller 1. Allgemein 1.1. Hersteller TestNG 1 ist ein von Cédric Beust entwickeltes Java Framework und erlaubt das Erstellen von automatisiert ausführbaren Testfällen. Es wurde als Antwort auf Unzulänglichkeiten von JUnit 2 3 erdacht und stellt heute eine probate Alternative zu JUnit dar. Letzteres übernahm viele Ideen von TestNG in seine neueste Version. Um die Ähnlichkeit zu verdeutlichen werden die zwei Testwerkzeuge in Kapitel 1.2 gegenübergestellt. Kapitel 5 bietet eine Entscheidungshilfe. Eine detaillierte Dokumentation über die Beweggründe der TestNG Entwicklung findet man im Buch Next Generation Java Testing von Cédric Beust und Hani Suleiman. Zum Zeitpunkt der Erstellung dieses Dokuments ist Version 6.8 aktuell. 1.2. Alternative Die prominenteste Java Alternative zu TestNG stellt JUnit dar. In ihren neuesten Versionen ähneln sich die Tools stark. Der Vergleich erfolgt zwischen Quelltext 1 und Quelltext 2. Die einzelnen Befehle und Funktionen werden in Kapitel 2 erklärt. package itest; import org.testng.assert; import org.testng.annotations.test; import prog.mainprogram; public class TestNGOne { @Test public void firsttest() { MainProgram proggy = new MainProgram(); int iresultcheck = proggy.calc(1, 2); Assert.assertEquals(iResultCheck, 3); @Test(enabled = false) public void ignoredtest() { Quelltext 1: TestNG Beispiel 1 http://testng.org (Stand 23.12.2012) 2 http://www.junit.org/ (Stand 23.12.2012) 1 / 20
Allgemein Alternative Im Vergleich dazu folgt nun das JUnit 4 Equivalent. package itest; import static org.junit.assert.*; import org.junit.ignore; import org.junit.test; import org.junit.runner.runwith; import org.junit.runners.junit4; import prog.mainprogram; @RunWith(JUnit4.class) public class JunitOne { @Test public void firsttest() { MainProgram proggy = new MainProgram(); int iresultcheck = proggy.calc(1, 2); assertequals(iresultcheck, 3); @Test @Ignore public void ignoredtest() { Quelltext 2: JUnit 4 Beispiel Auffällig bei beiden Beispiele sind die Annotationen beginnend mit einem @. Diese wurden bei TestNG erstmals verwendet und sind dank großer Beliebtheit, ab Version 4, ebenfalls in JUnit vorhanden. 2 / 20
Semantik Grundlegendes 2. Semantik In diesem Kapitel wird auf die Bedeutung der am häufigsten verwendeten TestNG Begriffe eingegangen und ein Beispiel demonstriert. 2.1. Grundlegendes Die TestNG Semantik besteht in der Java Klasse grundsätzlich aus Annotationen, Methoden (den Testfällen) und Assertionen. Während Erstere Optionen für den Testablauf bereitstellen, vergleichen Letztere das Resultat mit dem Sollzustand. 2.2. Annotationen Annotationen in TestNG ermöglichen unter anderem das Zuweisen von bestimmten Funktionen an bestimmte Klassen. Folgende können verwendet werden: @BeforeSuite @AfterSuite @BeforeTest @AfterTest @BeforeGroups @AfterGroups @BeforeClass @AfterClass @BeforeMethod @AfterMethod @DataProvider @Factory @Listeners @Parameters Deklariert eine Methode, sodass sie vor allen Suite-Testfällen gestartet wird. Deklariert eine Methode, sodass sie nach allen Suite-Testfällen gestartet wird. Deklariert eine Methode, sodass sie vor jedem Testfällen gestartet wird. Deklariert eine Methode, sodass sie nach jedem Testfällen gestartet wird. Deklariert eine Methode, sodass sie vor jeder Gruppe von Testfällen gestartet wird. Deklariert eine Methode, sodass sie nach jeder Gruppe von Testfällen gestartet wird. Deklariert eine Methode, sodass sie vor der ersten Testmethode einer Klasse gestartet wird. Deklariert eine Methode, sodass sie nach der letzten Testmethode einer Klasse gestartet wird. Deklariert eine Methode, sodass sie vor jeder Testmethode gestartet wird. Deklariert eine Methode, sodass sie nach jeder Testmethode gestartet wird. Deklariert eine Methode, sodass sie Datenpool für eine Testmethode gilt. Deklariert eine Methode, sodass sie eine Klasse für TestNG bereitstellt. Deklariert eine Methode, sodass sie als Listener für eine Testklasse bereitsteht. Ermöglicht das Auslesen von Werten in einer Config Datei. @Test Deklariert eine Methode als Testfall. Tabelle 1: Annotationen 3 / 20
Semantik Assertionen 2.3. Assertionen Für den Ergebnisabgleich gibt es folgende Befehle: assertequals asserttrue assertfalse assertsame assertnotsame assertnull Bestätigt die Gleichheit zwischen zwei Objekten. Bestätigt eine Bedingung als wahr. Bestätigt eine Bedingung als falsch. Bestätigt, dass zwei Objekte auf dasselbe Objekt referenzieren. Bestätigt, dass zwei Objekte nicht auf dasselbe Objekt referenzieren. Bestätigt, dass ein Objekt null ist. assertnotnull Bestätigt, dass ein Objekt nicht null ist. Tabelle 2: Assertions Ist ein Abgleich negativ ausgefallen, wird ein Assertion Error ausgelöst. Durch den ebenfalls erstellten Stacktrace 1 kann am Ende des Testlaufs der Fehler rückverfolgt werden. 1 http://de.wikipedia.org/wiki/stacktrace (Stand 10.01.2013) 4 / 20
Semantik Getestetes Programm 2.4. Getestetes Programm Für Demonstrier-Zwecke wird hier ein simples Beispielprogramm dargestellt. package prog; import java.io.bufferedreader; import java.io.file; import java.io.filenotfoundexception; import java.io.filereader; public class MainProgram { int ires = 0; public int calc(int ione, int itwo) { try { ires = ione + itwo; System.out.println("Result = " + ires); catch (Exception e) { e.printstacktrace(); return ires; public BufferedReader readfile(file ftestfile) throws FileNotFoundException { BufferedReader brcheck = null; brcheck = new BufferedReader(new FileReader(fTestFile)); return brcheck; public static void main(string[] args) { try { MainProgram mnew = new MainProgram(); mnew.calc(integer.parseint(args[0]), Integer.parseInt(args[1])); mnew.readfile(new File(args[2])); catch (Exception e) { e.printstacktrace(); Quelltext 3: Beispielprogramm Die Methode calc führt eine Addition der Eingabeparameter durch und gibt das Ergebnis als int zurück. Die Methode readfile weist einem BufferedReader 1 eine vorher definierte Datei zu. Das Ziel der folgenden Testfälle ist nun, diese Methoden auf ihre korrekte Funktionsweise zu überprüfen. 1 http://docs.oracle.com/javase/1.4.2/docs/api/java/io/bufferedreader.html (Stand 10.01.2013) 5 / 20
Thank you very much for downloading a public preview of our well known and highly appreciated tool studies. If you re interested in reading the whole document just apply here and request the document you want to read from our comprehensive set of studies already available. For further information on our tool studies visit our web site. Or, you can always use the following form to request the studies you want to read. Seite 1 von 2
Bestellformular für Tool-Studien/Order form for tool studies An/to Software Quality Lab GmbH Gewerbepark Urfahr 6 4040 Linz AUSTRIA Bitte ausgefüllt per Email an/ Please fill out and send to info@software-quality-lab.com Name/full name: Adresse/address: Firma/company: Email/email: Funktion/role: Telefon/phone: / [bitte füllen Sie die Daten vollständig und korrekt aus/please supply correct and complete data] Bestellliste/Order list [bitte kreuzen Sie die gewünschten Tools an/please select the tool studies] ALM, RM IBM Rational Requirements Composer 4.0.2 Jama Contour 3.61 NEU! Micro Focus Borland Caliber Microsoft Team Foundation Server 2013 Polarion ALM 2014 HP ALM 11 VersioneOne 13.0 Visure Solutions IRQA 4 Test Management Imbus TestBench 1.6.1 Micro Focus SilkCentral 2008 Microsoft VSTS 2010 Mozilla Testopia 2.1 Orcanos QPack 5 Polarion ALM 20121 NEU! Siemens SiTEMPPO 5.8 TestLink 1.9.12 Seapine TestTrack 2012 Static Code Analysis SonarQube 4.5 GUI Test Automation Appium 1.2.2 Bredex GUIdancer 4.2 HP UFT Professional 10 IBM Functional Tester 8.1.0.3 Microsoft VSTS 2010 QF-Test 3.5.1 NEU! Ranorex 3.3 SAP ecatt Selenium 2.0 SmartBear TestComplete 9.3 SmartBear SoapUI 5.1 Weitere Informationen auf unserer Website www.software-quality-lab.com. Embedded Systems LDRA 8.0 Razorcat Tessy 2.6 Load/Performance Apache JMeter 2.8 Grinder 3.4 HP LoadRunner 9.5 Neotys Neoload 3.0.3 SmartBear LoadUI 2.8.0 Unit Tests Google Test 1.5 JUnit 4.11 NUnit 2.5.7 Die Toolnamen und eingetragenen Warenzeichen sind Eigentum der jeweiligen Toolhersteller/Tool names are property of tool vendors. Die Studien sind grundsätzlich auf Anfrage frei erhältlich. Software Quality Lab behält sich jedoch vor, die Aufwände für gewisse Branchen und Privatpersonen in Rechnung zu stellen (z.b. Beratungsfirmen, Toolhersteller usw.) Studenten erhalten die Studie zum halben Preis/All studies are basically free, except for certain branches of industry or private persons, for whom we invoice at cost. Students get a discount of 50%. Seite 2 von 2
Tool Evaluation Center Efficient, goal-oriented and professional tool evaluation Unique in Europe What is TEC? The Tool Evaluation Center (TEC) is a neutral environment for evaluating software tools related to software development, through which you will receive a detailed, vendorindependent overview of the suitability of different tools for your software projects. Your Partner for software quality and testing Consulting Implementation Training Automation Evaluation Software Quality Lab is your competent partner in software quality and testing and one of the leading independent consulting companies in Austria. We specialize ourselves in the improvement of efficiency, quality and security in the fields of software development and system processes. All tools in TEC are up to date, installed and configured, furnished with examples and ready for demonstration. Practical work and getting to know the tools in a handson manner is also possible. Your Benefit EETime-saving: Tool selection in a few days. No time-consuming research and product requests, no installation and testing. EEPreparation of information for different target groups from technicians to the managing board. EESupport provided by specialists, ranging from requirements through to a proof of concept or a pilot project. Our services around the tool selection Tool categories in the TEC EEApplication Life Cycle Management EERequirements Management EETest Management EEGUI Test Automation EETest Data Management EEComprehensible decision criteria: Using special techniques we evaluate the tools together with you, basing on your requirements as a foundation for your investment decision. EELarge selection and direct comparison of products ranging from market leaders through newcomers to open source software and freeware. Linz / Vienna / Graz / Lustenau / Munich Requirements elicitation, Creating a list of criteria Tool review, Pre-selection of tools, Practical getting to know the tools in the TEC Workshop with 3-5 suitable tools, Proof of Concept, Planning and implementing the pilot project Integration with other tools Tools in TEC www.software-quality-lab.com Our TEC includes more then 40 installed tools from reputable manufacturer (e.g. IBM, HP, Micro Focus, Microsoft, Polarion, Siemens) as well as interesting newcomer products and alternatives from the open source area (e.g. JMeter, Selenium). Further details can be found at www.tool-evaluation.com. V. 2011-12 Software Quality Lab GmbH info@software-quality-lab.com www.software-quality-lab.com