Nya versioner av Cucumber och Gherkin, varför då?
Transcription
Nya versioner av Cucumber och Gherkin, varför då?
Nya versioner av Cucumber och Gherkin, varför då? Björn Rasmusson Bjorn.Rasmusson@combitech.se Combitech Utvecklingen av Cucumber-verktygen Specflow Gáspár Nagy Cucumber Ltd Cucumber Pro Julien Biezemans Cucumber-JS Matt Wynne Relish-App Aslak Hellesøy Cucumber-Ruby v2 Cucumber-Ruby Gherkin Gherkin2 Gherkin3 RSpec’s story-runner RBehave JBehave Aslak Hellesøy Dan North Cucumber-JVM ”Given-When-Then” 2000 2004 2008 2010 2012 2014 2.0 Cucumber School 2.1 3.0 3.1 2015 ”Världens mest missförstådda samarbetsverktyg” Aslak Hellesøy: https://cucumber.io/blog/2014/03/03/the-worlds-most-misunderstood-collaboration-tool Problem Gherkin1: § Implementerat med Treetop § Låångsamt Gherkin2: § Implementerat med Ragel (i C) § Snabbt § Svårt att bygga § Kräver C-kompilator vid installation Cucumber-Ruby: § Centrerat runt fetature-filens AST (Abstract Syntax Tree) § Exekvering och rapportgenerering tätt kopplade § Fanns buggar som bara inte gick att lösa § För stort fokus på ”end-to-end” testning av Cucumber självt § Förkompilerade för Windows per Ruby-version § En parser per i18n-språk § Gör för mycket (och inte tillräckligt) Cucumber-Ruby v2 Filter Filter Filter Filter cucumber Gherkin AST cucumber-core Kompilator Exekutor Kompilera testfall Egenskap: Bakgrund: Givet Och Scenario: När Så Scenariomall: När Så Exampel: | | | | | | | | | Testfall 1 Testfall 2 Testfall 1 Givet Och När Så Givet Och När Så Givet Och När Så Gränssnitt till formaterare Cucumber-Ruby v1.x: before_features before_feature before_tags after_tags feature_name before_background background_name before_steps before_step before_step_result step_name after_step_result after_step after_steps after_background before_feature_element scenario_name before_examples_array before_examples examples_name before_outline_table before_table_row before_table_cell table_cell_value after_table_cell after_table_row after_outline_table after_examples after_examples_array after_feature_element after_feature_element after_feature after_features Cucumber-Ruby v2.0: Cucumber-Ruby v2.1: before_test_case before_test_step after_test_step after_test_case done before_test_case before_test_step after_test_step after_test_case done step_match Nyheter i Cucumber-Ruby v2 (urval) 2.0: § ”Buggar som inte gick att rätta” är fixade. § Testfall i slumpmässig ordning (kompilera testfall) § Samma json format som Cucumber-JVM (nytt formaterar-API) § Användardefinierade filter (filter). § Olika exit-koder för testfall som hittar fel och interna fel. 2.1: § Fungerar på nyare Ruby-versioner på Windows (Gherkin3) § Nya i18n-språk för feature-filer (Gherkin3) § Event-buss § ”fail-fast”-option (filter) Gherkin3 gherkin.berp berp parser.<lang> token_scanner.<lang> gherkin-<lang>.razor token_matcher.<lang> dialect.<lang> ast_builder.<lang> Säkerställa konsistenta implementationer PythonParser Go- Parser RubyParser JavascriptParser JavaParser .NETParser .feature .feature .feature .ast.json .ast.json .ast.json .ast.json diff I framtiden: nya indataformat Idag I framtiden .feature Parser AST Kompilator .md Parser AST Kompilator .html Parser AST Kompilator Testfall (pickles) I framtiden: delade rapportgeneratorer Idag Cucumber-X .feature I framtiden .feature formaterare formaterare .json formaterare .html Cucumber-X Parser Kompilator Exekutor Bas .json .json .html