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

Using Cucumber as a language-agnostic spec

Using Cucumber as a language-agnostic spec

How we used BDD to set a contract for implementations of the same thing in different programming languages

Honza Javorek

October 08, 2019
Tweet

More Decks by Honza Javorek

Other Decks in Technology

Transcript

  1. Using Cucumber as
    a language-agnostic
    spec
    honzajavorek.cz @honzajavorek
    Honza Javorek

    View Slide

  2. U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    U
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    s
    i
    n
    g
    C
    u
    c
    u
    m
    b
    e
    r
    C
    u
    c
    u
    m
    b
    e
    r

    View Slide

  3. Using Cucumber as
    a language-agnostic
    spec
    honzajavorek.cz @honzajavorek
    Honza Javorek
    "

    View Slide

  4. View Slide


  5. ?

    View Slide


  6. OpenAPI,
    API Blueprint
    Dredd
    implementation
    ✅ ❌
    TESTED CONTRACT FOR HTTP APIs

    View Slide


  7. Gherkin
    feature files
    Cucumber
    implementation
    ✅ ❌
    TESTED CONTRACT FOR PRODUCT BEHAVIOR

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. ...
    hooks
    interface

    View Slide

  14. ...
    TESTED
    CONTRACT
    language-agnostic
    open source friendly
    standard
    CI friendly

    View Slide

  15. ...
    TESTED
    CONTRACT
    language-agnostic
    open source friendly
    standard
    CI friendly
    able to describe
    a complex,
    custom behavior

    View Slide

  16. ...
    TESTED
    CONTRACT
    language-agnostic
    open source friendly
    standard
    CI friendly
    able to describe
    a complex,
    custom behavior

    View Slide


  17. Gherkin
    feature files
    Cucumber
    hooks handler
    implementation
    ✅ ❌

    View Slide

  18. View Slide


  19. Contract in
    Gherkin
    feature files
    ✅ ❌
    ...
    Cucumber
    tests

    View Slide


  20. Contract in
    Gherkin
    feature files
    with placeholders
    ...
    ✅ ❌
    Canned
    Cucumber
    tests
    Cross language test suite
    template package

    View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide


  30. imagine we used
    YAML files with custom structure or
    JavaScript code to describe the test
    scenarios

    View Slide


  31. change propagation?

    View Slide

  32. View Slide

  33. TESTED
    CONTRACT
    language-agnostic
    open source friendly
    standard
    CI friendly
    able to describe a complex, custom behavior

    both human & machine -readable

    View Slide