tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
628
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sepan sepan ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    14
    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)
     

  2. #2
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    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
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    Ich habe eigentlich kaum die Möglichkeit, einen komplizierteren Test über mehrere Objekte/Methoden zu fahren, die verkettet sind.
    Natürlich kannst du das machen...

    Code 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);
            
            //...
        }
    }
    Hängt alles von der Art und Weise ab wie du den Unit test spezifizierst... hier sind JUnit / TestNG / NUnit
    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/

    Frage 2 : Wie testet (simuliert?) man am besten nebenläufige Vorgänge (2 oder mehrere Benutzer bearbeiten gleichzeitig mehrere Datensätze)?
    Auch für dieses (IMHO SEHR schwierige Thema) gibts mittlerweile Unterstützung:
    Z.Bsp. via ConTest:
    http://www.ibm.com/developerworks/ja...j-contest.html
    ..oder: osherove
    http://weblogs.asp.net/rosherove/arc...eadtester.aspx

    Gruß Tom
     
    Java 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

  1. PHPUnit 3 - Unit Testing
    Von kela_root im Forum PHP
    Antworten: 0
    Letzter Beitrag: 04.12.07, 17:45
  2. Beispiel zu Unit Testing mit NUnit, Spring.Net und ADO .Net
    Von Konstantin Denerz im Forum .NET Café
    Antworten: 1
    Letzter Beitrag: 12.07.07, 16:31
  3. Antworten: 0
    Letzter Beitrag: 17.08.06, 22:22
  4. GUI Unit Testing in C#
    Von dreadread im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 25.02.04, 09:15