Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cucumber / Agile Testing @Munich

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Cucumber / Agile Testing @Munich

Einführung in Cucumber mit Gewicht auf der Unterscheidung zwischen Gherkin Specs und Implementation.

Avatar for Jens Finkhaeuser

Jens Finkhaeuser

June 23, 2015

Other Decks in Programming

Transcript

  1. Copyright © 2015 spriteCloud B.V. All rights reserved. Vorstellung spriteCloud

    - International - Software Testen - Funktional - Load / Performance - Automatisierung - Test Management - Beratung - Test Produkte
  2. Copyright © 2015 spriteCloud B.V. All rights reserved. Inhalt -

    Cucumber Pipeline - Philosophie - Gherkin - Step Definitions - Lapis Lazuli - spriteCloud Calliope
  3. Copyright © 2015 spriteCloud B.V. All rights reserved. Cucumber im

    Vergleich • Keine Aufnahme + Wiedergabe, sondern Skripte (in Ruby). • Komplexer zu Anfang, aber • flexibler. • Trennung zwischen “was” und “wie”.
  4. Copyright © 2015 spriteCloud B.V. All rights reserved. Cucumber Pipeline

    Was: Gherkin Wie: Step Definitions Cucumber Resultate
  5. Copyright © 2015 spriteCloud B.V. All rights reserved. Cucumber Pipeline

    Was: Gherkin Cucumber Resultate Watir Selenium Wie: Step Definitions
  6. Copyright © 2015 spriteCloud B.V. All rights reserved. Watir Selenium

    Lapis Lazuli Calliope Cucumber Pipeline Was: Gherkin Wie: Step Definitions Cucumber Resultate
  7. Copyright © 2015 spriteCloud B.V. All rights reserved. Das “wie”

    Herunterdrücken - Push “how” down - Selenium ist komplex und beschreibt “wie” sehr detailliert. - Watir abstrahiert ein Bisschen. - (LapisLazuli abstrahiert noch mehr). - Gherkin beschreibt nur noch das “was”.
  8. Copyright © 2015 spriteCloud B.V. All rights reserved. “Was” und

    “Wie” Etwas vereinfacht: • “Was” interessiert Produktmanager, Tester. • “Wie” interessiert Entwickler, TA-Ingenieure. • Teamübergreifende Kommunikation einfacher: ◦ “was” ist kleinster gemeinsamer Nenner
  9. Copyright © 2015 spriteCloud B.V. All rights reserved. Was: Gherkin

    Gherkin ist eine für Menschen verständliche Domänenspezifische Sprache mit der man das Verhalten von Software beschreiben kann, ohne darauf einzugehen, wie das Verhalten implementiert ist. Gherkin hat zwei Motivationen: Dokumentation und Test Automatisierung (ausführbare Spezifikationen). Feature: Kurze Beschreibung des Features Scenario: Eine Use-Case Given eine Vorbedingung And eine andere Vorbedingung When Handlung des Benutzers And eine andere Handlung And noch eine andere Handlung Then erwarten wir ein Ergebnis And ein anderes Ergebnis
  10. Copyright © 2015 spriteCloud B.V. All rights reserved. Was: Gherkin

    Für die Feature-Beschreibung eignen sich User Stories: • Um <ein Ziel zu erreichen> • Als <Rolle> • Möchte ich <Aktionsdetails> Schlüsselwörter sind hier Englisch, aber auch in anderen Sprachen möglich. Feature: Klicken auf Link Um dumme Fehler zu vermeiden Als Anfänger der TA Möchte ich einen Link klicken Scenario: Normaler Benutzer Given ich gehe zur sC-Webseite When ich den "blog"-Link klicke Then enthält die URL "/blog"
  11. Copyright © 2015 spriteCloud B.V. All rights reserved. Wie: Browser

    Automatisierung Lapis Lazuli installieren: $ gem install lapis_lazuli Interactive Ruby Shell ausführen $ irb # Bibliothek laden require("lapis_lazuli" ) # LapisLazuli aktivieren include(LapisLazuli) # Browser erstellen browser(:firefox) # Website laden browser.goto("spritecloud.com" ) # Seitentitel ausgeben browser.title()
  12. Copyright © 2015 spriteCloud B.V. All rights reserved. Wie: Step

    Definitions Step Definitions (Schrittdefinitionen) beschreiben jeden Schritt eines Gherkin-Szenarios Given /I start with (\d+)/ do |val| @calc.value(val) # oder eben browser.goto end When /I press (\w+)/ do |button| @calc.press(button) end Then /the result should be (.*)/ do |result| @calc.value() == result.to_f() end
  13. Copyright © 2015 spriteCloud B.V. All rights reserved. Wie: Step

    Definitions Given /I use (.*)/ do |site| browser.goto site end When /I click the " (.*)" link/ do |value| browser.find(:a => { :text => value}) end Then /the url contains " (.*)"/ do |string| browser.url.include? string end Feature: Link Clicking In order to avoid silly mistakes As a test automation idiot I want to click a link Scenario: Regular numbers Given I use spritecloud.com When I click the "blog" link Then the url contains "/blog"
  14. Copyright © 2015 spriteCloud B.V. All rights reserved. Neues Projekt

    LapisLazuli hilft mit einem Beispielprojekt: $ lapis_lazuli create MyTaTraining Das Projekt enthält schon ein Szenario, also können wir es ausführen: $ cd MyTaTraining/ $ cucumber MyTaTraining/ config/ config.yml cucumber.yml features/ example.feature step_definitions/ interaction_steps.rb validation_steps.rb support/ env.rb
  15. Copyright © 2015 spriteCloud B.V. All rights reserved. Cucumber Ausgabe

    So zeigt Cucumber das Resultat an: Scenario: example01 - Google Search # example.feature:8 Given I navigate to Google in english # interaction_steps.rb:6 And I search for "spriteCloud" # interaction_steps.rb:16 Then I see "www.spriteCloud.com" on the page # validation_steps.rb:6 1 scenario (1 passed) 3 steps (3 passed) 0m9.976s
  16. Copyright © 2015 spriteCloud B.V. All rights reserved. Watir und

    LapisLazuli LapisLazuli erweitert Watir um: - Vereinfachte Browsererstellung - Vereinfachtes Warten auf HTML-Elemente (AJAX) - Konfiguration der Tests - Logging - etc.
  17. Copyright © 2015 spriteCloud B.V. All rights reserved. spriteCloud Calliope

    - Automatisierte Ausführung von Tests - Historische Ergebnisse und damit Vergleichspunkte - Cross-Browser Tests (auch mobil)
  18. Copyright © 2015 spriteCloud B.V. All rights reserved. Abschluss -

    http://www.spritecloud.com/2015/04/complete-setup-guide- for-ruby-cucumber-and-watir-on-windows/ - Fragen? - http://calliope.pro - Benutzer: [email protected] - Passwort: demo#071