Nya versioner av Cucumber och Gherkin, varför då?

Nya versioner av
Cucumber och
Gherkin, varför då?
Björn Rasmusson
[email protected]
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