Im Umfeld der agilen Softwareentwicklung sind Behavior Driven Development und Ausführbare Spezifikationen verbreitet. Die Anforderungsanalyse und -dokumentation sowie die Definition von Akzeptanzkriterien für die Anforderungen wird verbunden mit der Erstellung von maschinell ausführbaren Testfällen zur Prüfung der Akzeptanzkriterien, um eine Suite automatischer Testszenarien zu erhalten und den manuellen Aufwand auf das explorative Testen beschränken zu können.
Häufig kommen dabei dieselben Programmiersprachen zum Einsatz, mit denen auch die Lösung erstellt wird. Die Syntax dieser Sprachen schränkt jedoch die Darstellungsmöglichkeiten erheblich ein. In der Notation der Fachanwender kann man die Tests nur aufschreiben, wenn man Sprachen mit Ausdrucksmöglichkeiten der Domäne verwendet. Im Vortrag werden einige Beispiele dafür vorgestellt.
3. Agile Softwareentwicklung
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Quelle: http://agilemanifesto.org
4. Agile Softwareentwicklung
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Quelle: http://agilemanifesto.org
9. Customer Collaboration
public class cucumberJava {
WebDriver driver = null;
@Given("^I have open the browser$")
public void openBrowser() {
driver = new FirefoxDriver();
}
@When("^I open Facebook website$")
public void goToFacebook() {
driver.navigate().to("https://www.facebook.com/");
}
@Then("^Login button should exits$")
public void loginButton() {
if(driver.findElement(By.id("u_0_v")).isEnabled()) {
System.out.println("Test 1 Pass");
} else {
System.out.println("Test 1 Fail");
}
driver.close();
} }
Quelle: https://www.tutorialspoint.com/cucumber/cucumber_java_testing.htm
10.
11. through early
and continuous delivery
Deliver Value Continuously
Our highest priority is to satisfy the customer
of valuable software.
Quelle: http://agilemanifesto.org/principles.html
12. System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Deliver Value Continuously
Test Pyramide
13. System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Softwareentwickler
Fachabteilung
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Programmiersprachen
Domänensprachen
14. System,
MicroService Lieferung durchgeführtAkzeptanztest
Java, Cucumber
Module,
Komponenten,
Bausteine
Integrationstest
Java, JUnit
System integriert
Softwareentwickler
Fachabteilung
Klassen,
kleine Klassenverbunde
Unit Test
Java, JUnit
Systemelemente
realisiert
Programmiersprachen
Domänensprachen
15. Interne DSL mit Java, Cucumber –
Interactions, Customer Collaboration!?
Syntaxhighlighting
Codevervollständigungen
VCS-Unterstützung, insb.
Mergen
Starten, Debuggen
Freiheiten bei der
Gestaltung: Syntax der
Host-Sprache
Bilder, Tabellen,
Aufzählungen, Formeln
Verwaltung: Tagging, Arbeitstandgefilterte Anzeigen,
Statistiken (8 fertig, 3 WIP, 23 Backlog)
27. Zusammenfassung
Automatische Tests auf Abstraktionslevel und in der
Sprache der Domäne schreiben
Von Interne auf Externe DSLs wechseln
Language Workbenches sind Werkzeuge für Erstellung
Externer DSLs und benötigter Tools
28. Quellen
Workshops: Twitter, diverse Accounts und RTs
Smilies: Wikimedia
Kunde: http://classicprogrammerpaintings.com/
Language Workbench Logos: deren Homepages
Petclinic Bild: Screenshot spring-petclinic
User Story Notation inspiriert von Kevlin Henney