ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
628
628
EMPFEHLEN
-
Hallo,
bei den ganzen automatischen xUnit-Tools (junit, nunit, ...) fällt mir eines auf: es sind im Grunde alles nur Mikrotests, die einzelne Methoden in jeweils einer neuen Instanz testen.
Ich habe eigentlich kaum die Möglichkeit, einen komplizierteren Test über mehrere Objekte/Methoden zu fahren, die verkettet sind.
method1 (wenn OK, dann) method2 -> (wenn OK, dann) method3 -> etc...
Frage 1: Wie testet man eigentlich automatisiert komplizierte Vorgänge, die verkettet sind, also ein erfolgreicher Methodenaufruf bewirkt den nächsten Aufruf in der Kette (z.B. Webshop: Seite aufrufen, Waren aussuchen, Checkout, Kundendaten eingeben, Abschicken).
Frage 2 : Wie testet (simuliert?) man am besten nebenläufige Vorgänge (2 oder mehrere Benutzer bearbeiten gleichzeitig mehrere Datensätze)?
Eigentlich wäre das dann ja schon module testing statt unit testing (wenn unit == method als kleinste Einheit einer Klasse). Kennt jemand brauchbare Tools? (Insbesondere Java und .NET)
-
18.01.08 15:43 #2
Prinzipiell sind Unittests genau dazu gedacht: die kleinstmögliche Unit (Klasse) zu testen. Nichtsdestotrotz kannst du mit den xUnit Frameworks auch Integrationstests über mehrere Layer hinweg fahren.
Was du scheinbar vorhast sind funktionale Tests bzw. Oberflächentests. Dabei kommt es stark auf den Typ der Anwendung an. Webanwendungen kann man zum Beispiel mit Selenium testen.
Load bzw. Stresstests werden in Java vorallem mit Tools wie JMeter gefahren.
Ergo: es ist wichtig jeder Form des Testings genügend Zeit zu widmen, da jede Art verschiedene Fehler aufdeckt. Gerade Unittests sollte man nicht unterschätzen, da sie zum einen Fehler sehr früh erkennen lassen und zum anderen man durch das Testen auch erst zu nem guten (testbaren) Klassendesign kommt.
Gruß
Ollie
-
18.01.08 19:08 #3
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
Natürlich kannst du das machen...Ich habe eigentlich kaum die Möglichkeit, einen komplizierteren Test über mehrere Objekte/Methoden zu fahren, die verkettet sind.
Hängt alles von der Art und Weise ab wie du den Unit test spezifizierst... hier sind JUnit / TestNG / NUnitCode java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/** * */ package de.tutorials; import org.junit.Test; import de.tutorials.RetryExample.IBusinessService; import static org.junit.Assert.*; /** * @author Thomas.Darimont * */ public class UnitTestingExample { @Test public void businessService(){ IBusinessService businessService = new BusinessService(); BusinessObject businessObject = new BusinessObject(); //... populate businessObject AnotherBusinessObject anotherBusinessObject = businessService.businessOperation(businessObject); Assert.someCondition(expectedState,anotherBusinessObject); YetAnotherBusinessObject yetAnotherBusinessObject = businessService.anotherBusinessOperation(businessObject); Assert.someCondition(yetAnotherExpectedState,yetAnotherBusinessObject); //... } }
ausreichend mächtig.
Falls du noch JUnit 3.x verwendest solltest du dir mal JUnit 4.x und TestNG anschauen die bieten
einige sehr hilfreiche Neuerungen.
http://testng.org/doc/
http://www-128.ibm.com/developerwork.../j-junit4.html
http://www.devx.com/Java/Article/31983
Neben Unit tests gibts u.a. noch Akzeptanztests. Das sind Tests welche die Systemfunktionalität
aus Sicht der Anwender überprüfen. Diese sind mehr Highlevel als einfache Unit tests und können
mit entsprechenden Frameworks (z.Bsp. Fitnesse) relativ einfach (auch vom Anwender) spezifiziert werden.
Akzeptanztest Framework Fitnesse:
http://www.fitnesse.org/
http://fitnesse.org/FitNesse.DotNet
http://entwickler.com/itr/online_art...nodeid,11.html
http://typo3.it-agile.com/fileadmin/...ztests-FIT.pdf
Webapplications kann man sehr gut mit webtest / Selenium testen:
http://webtest.canoo.com/webtest/man...bTestHome.html
http://www.openqa.org/selenium/
Auch für dieses (IMHO SEHR schwierige Thema) gibts mittlerweile Unterstützung:Frage 2 : Wie testet (simuliert?) man am besten nebenläufige Vorgänge (2 oder mehrere Benutzer bearbeiten gleichzeitig mehrere Datensätze)?
Z.Bsp. via ConTest:
http://www.ibm.com/developerworks/ja...j-contest.html
..oder: osherove
http://weblogs.asp.net/rosherove/arc...eadtester.aspx
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
PHPUnit 3 - Unit Testing
Von kela_root im Forum PHPAntworten: 0Letzter Beitrag: 04.12.07, 17:45 -
Beispiel zu Unit Testing mit NUnit, Spring.Net und ADO .Net
Von Konstantin Denerz im Forum .NET CaféAntworten: 1Letzter Beitrag: 12.07.07, 16:31 -
Interessanter IBM Artikel zum Thema Unit Testing in PHP
Von Thomas Darimont im Forum PHPAntworten: 0Letzter Beitrag: 17.08.06, 22:22 -
GUI Unit Testing in C#
Von dreadread im Forum .NET ArchivAntworten: 0Letzter Beitrag: 25.02.04, 09:15





Zitieren

Login





