Gurkensalat statt Spaghetticode. Stuttgarter Testtage 2013

Similar documents
SPICE auf der Überholspur. Vergleich von ISO (TR) und Automotive SPICE

Mit einem Auge auf den mathema/schen Horizont: Was der Lehrer braucht für die Zukun= seiner Schüler

J2EE-Application Server

Most of the security testers I know do not have

Microsoft Nano Server «Tuva» Rinon Belegu

Information Systems 2

DV4 - Citrix CloudGateway: Access and control Windows, SaaS and web applications. Systems Engineer, Citrix Systems GmbH

Kapitel 2 Unternehmensarchitektur III

Wolkige Versprechungen - Freiraum mit Tuecken

Berufsakademie Mannheim University of Co-operative Education Department of Information Technology (International)

How To Get A Job At Ecm

Designing and Deploying Messaging Solutions with Microsoft Exchange Server 2010 MOC 10233

BP1 Mobile App Management: Solutions for ios and Android. Gary Barton Mobility Architect Citrix Receivers and Gateways Group

Building an Architecture Model Entwerfen Sie mit AxiomSys ein Kontextdiagramm, das folgendermaßen aussieht:

How To Teach A Software Engineer

BP9 - Citrix Receiver Optimierung: So verbessern Sie Management und Benutzerkomfort. Systems Engineer, Citrix Systems GmbH

Digicomp Microsoft Evolution Day MIM 2016 Oliver Ryf. Partner:

Bei Fragen zu dieser Änderung wenden Sie sich bitte an Ihren Kundenbetreuer, der Ihnen gerne weiterhilft.

IAC-BOX Network Integration. IAC-BOX Network Integration IACBOX.COM. Version English

Digitale Transformation ist in vollem Gange?

Open Text Social Media. Actual Status, Strategy and Roadmap

Embedded Software Development and Test in 2011 using a mini- HIL approach

How To Manage Build And Release With Tfs 2013

GCE EXAMINERS' REPORTS

AnyWeb AG

CommVault Simpana 7.0 Software Suite. und ORACLE Momentaufnahme. Robert Romanski Channel SE

Central Release and Build Management with TFS. Christian Schlag

ida.com excellence in dependable automation

BP8 Citrix Integrations with System Center Configuration Manager 2012

Designing and Implementing a Server Infrastructure MOC 20413

WHAT ARE PACKAGES? A package is a collection of related classes. This is similar to the notion that a class is a collection of related methods.

About Me. Triona Workshop Mainz, September Thomas Wehrspann. Consultant. Wilhelm-Theodor-Römheld-Str Mainz.

windream Failover Cluster Installation

Integrating Jalopy code formatting in CVS repositories

Thomas Rümmler AIT GmbH & Co. KG Christian Schlag AIT GmbH & Co. KG. Central Build and Release Management with TFS

Die Versant-DB ist ein wesentlicher Bestandteil von CADISON.

Die SharePoint-Welt für den erfahrenen.net- Entwickler. Fabian Moritz MVP Office SharePoint Server

MUK-IT 63. Roundtable. Herzlich Willkommen bei der Software AG. Anton Hofmeier VP Sales Terracotta DACH / MdGL

Linux & Docker auf Azure

First Environmental Comparison of Rail Transport

1001ICT Introduction To Programming Lecture Notes

Cloud Performance Group 1. Event. 14. Januar 2016 / Matthias Gessenay (matthias.gessenay@corporatesoftware.ch)

How To Write A Validator In Java 1.1.1

Entwicklung von Integrationslösungen aus einem Guss mit AIA Foundation Pack 11g

Overview WebServices Web Services Choreography Languages. WebServices. Jan Krüger

Exchange Synchronization AX 2012

Exemplar for Internal Achievement Standard. German Level 1

QAS DEBUG - User und Computer

How To Run A Hello World On Android (Jdk) On A Microsoft Ds.Io (Windows) Or Android Or Android On A Pc Or Android 4 (

LINGUISTIC SUPPORT IN "THESIS WRITER": CORPUS-BASED ACADEMIC PHRASEOLOGY IN ENGLISH AND GERMAN

XML-Wirtschaftsforum 2006 Portale. Enterprise Content Management mit IBM Mitarbeiterportalen. Matthias Zastrow

Rainer Stropek software architects gmbh. Entwicklung modularer Anwendungen mit C# und dem Managed Extensibility Framework (MEF)

A: Ein ganz normaler Prozess B: Best Practices in BPMN 1.x. ITAB / IT Architekturbüro Rüdiger Molle März 2009

Developments in the Austrian Surveying Education

Moderne Sicherheit. Fokussiert auf Business Continuity, Mobilität & Application Control. Marc Mathys Country Manager Switzerland

AD2 - The future of mobile enterprise applications: Live from the Citrix Labs

Microsoft SQL Server 2008 R2 Reporting Services - Das Praxisbuch [ebook Kindle] PDF,

JD Edwards EnterpriseOne

Tobias Flohre codecentric AG. Ein Standard für die Batch- Entwicklung JSR-352

Open Data Open Government

Zielgruppe Dieses Training eignet sich für IT-Professionals.

Quality by Design Konzepte in der Pharmaindustrie. Christian Wölbeling, Werum AG

Vergleich der Versionen von Kapitel 7 des EU-GMP-Leitfadens (September 2012)

Behavioral Driven Development with Behat

WHO-Referenzkurven für das Wachstum von Mädchen (Perzentile)

Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios

Dokumentation über die Übernahme von. "GS-R-3" (The Management System for Facilities and Activities) "Sicherheitskriterien für Kernkraftwerke"

WESTERNACHER OUTLOOK -MANAGER OPERATING MANUAL

Raiffeisenlandesbank Oberösterreich Aktiengesellschaft

Elena Chiocchetti & Natascia Ralli (EURAC) Tanja Wissik & Vesna Lušicky (University of Vienna)

Cisco ASA und FirePOWER Services

Stefan Engelberg (IDS Mannheim), Workshop Corpora in Lexical Research, Bucharest, Nov [Folie 1]

Evening Lectures: Aggression in Health Care Settings

Update to V10. Automic Support: Best Practices Josef Scharl. Please ask your questions here Event code 6262

BACKUP EAGLE. Release Notes. Version: Date: 11/25/2011

Rainer Stropek time cockpit. NuGet

FDT for Mobile Devices

Vorlesung Netzmanagement Übung MIB und ASN.1 Seite 1 von 8. Übung MIB und ASN.1

CLOUDFORMS Open Hybrid Cloud

Betreibt viele der größten Rechenzentren, ermöglicht kleine Unternehmen auf der ganzen Welt, und bietet Unternehmen

Satzgliedstellung. Regel #4: Adverbien: Die Satzgliedstellung verändert sich nicht, wenn eine adverbiale Bestimmung vorausgeht.

Continuous Delivery at SAP: From dinosaur to spaceship. Darren Hague / SAP Global IT November 1st, 2013 Public

OpenVMS Security Update

Elektronische Einreichung Wo steht die AGES PharmMed?

Transcription:

Gurkensalat statt Spaghetticode Stuttgarter Testtage 2013

1.Motivation für BDD 2.Einführung in BDD 3.Cucumber für Java 4.Lessons Learned

Motivation für BDD 3

Requirements 4

... ein wenig Excel 5

dazu noch Word 6

auch im Wiki steht was 7

Noch Fragen? 8

People who speak different languages perceive and think about the world quite differently. Sapir Whorf Hypothesis 9

Behaviour Driven Development A way to describe the requirement such that everyone the business folks, the developer, the tester and others has a common understanding of the scope of work. A description of a requirement and its business benefit, and a set of criteria by which we all agree that it is done.

Einführung in BDD 11

Workflow Developer and stakeholder collaborate to write automated tests. Software is accepted if automated tests pass. Automated acceptance tests as ubiquitious language for everybody a means of collaboration and discussion living documentation

Gherkin Language Feature Requirements werden als Features beschrieben Ein Feature enthält mehrere Scenarios Scenario Beschreibung des gewünschten Verhaltens als Scenario. All scenarios follow the same pattern: 1. Get the system into a particular state. 2. Poke it (or tickle it, or...). 3. Examine the new state.

Grundgerüst Feature Feature: [Title] As a [Role] I want to [Some action] (feature)

Grundgerüst Scenario Scenario: [Title] Given [Context] When I do [Action] Then I should see [Outcome]

Szenario Beispiel Scenario: Successful withdrawal from an account in credit Given I have $100 in my account // the context When I request $20 // the event(s) Then $20 should be dispensed // the outcome(s)

Cucumber Testing Stack

Step And the regulations install directory contains 'corrupt_1.0.0.regulation'. Step Definition @And("^the regulations archive directory contains '([^']*)'.$") public void checkregulationsarchivedirectory(string filename) { File archivedregulation = new File(getArchiveDir(), filename); asserttrue(archivedregulation.exists()); }

Cucumber für Java

Cucumber JVM Projektstruktur -- src -- main `-- java `-- cucumber `-- helloworld `-- Hello.java `-- test -- java `-- cucumber `-- helloworld -- HelloStepdefs.java `-- RunCukesTest.java `-- resources `-- cucumber `-- helloworld `-- helloworld.feature

Cucumber JVM Hello World Feature: Hello World Scenario: Say hello Given I have a hello app with "Howdy" When I ask it to say hi Then it should answer with "Howdy World"

Cucumber JVM Glue Code package cucumber.examples.java.helloworld; import cucumber.junit.cucumber; import org.junit.runner.runwith; @RunWith(Cucumber.class) @Cucumber.Options(format = {"pretty", "html:target/cucumber"}) public class RunCukesTest { }

Step Definitions public class HelloStepdefs { private Hello hello; private String hi; @Given("^I have a hello app with \"([^\"]*)\"$") public void I_have_a_hello_app_with(String greeting) { hello = new Hello(greeting); } @When("^I ask it to say hi$") public void I_ask_it_to_say_hi() { hi = hello.sayhi(); } } @Then("^it should answer with \"([^\"]*)\"$") public void it_should_answer_with(string expectedhi) { assertequals(expectedhi, hi); }

BDD in the Wild

BDD in CPM

Feature: Check Health of CPM Server Scenario: Health check is successful if the server is available. Given The server is <available>. When I run the admin console with arguments `-c` Then the output contains "up and running". Scenario: Health check fails if the server is not available. Given The server is <not available>. When I run the admin console with arguments `-c` Then the output contains "not available". Scenario: Health check uses default url if the server is not specified. Given The server is <not specified>. When I run the admin console with arguments `-c` Then the output contains "not available". And the output contains "http://localhost:8080/cpm".

Example CPM Admin Console Features definieren Each Features is defined in its own file e.h. argumentvalidation.feature Feature files are under source control (in Github).

Features beim Entwicklen

Features beim Bauen

Dokumentation der Features

Lessons Learned

BDD Lessons Learned Business Case für BDD gut kommunizierbar Motivation und Schulung aller Stakeholder notwendig Scenarien schreiben ist harte Arbeit Fachbereich muss näher an die Entwicklung heranwachsen wer Angst vor einem Texteditor hat tut sich schwer mit BDD Fachbereich freut sich Fortschritte zu tracken

Jan Stamer Senior Software Engineer j.stamer@pe-international.com 33