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

NewCrafts: Let's Do a Thing and Call it Foo

NewCrafts: Let's Do a Thing and Call it Foo

Updated version for newcrafts conference in Paris, France.

Maaret Pyhäjärvi

May 26, 2023
Tweet

More Decks by Maaret Pyhäjärvi

Other Decks in Programming

Transcript

  1. @maaretp
    @[email protected]
    by Maaret Pyhäjärvi
    Let’s Do A Thing
    and Call it Foo

    View Slide

  2. @maaretp
    @[email protected]
    The terms foobar (/ˈfuːbɑːr/), foo, bar, baz, and others are
    used as metasyntactic variables and placeholder
    names in computer programming or computer-related
    documentation.[1] They have been used to name entities
    such as variables, functions, and commands whose
    exact identity is unimportant and serve
    only to demonstrate a concept.
    https://en.wikipedia.org/wiki/Foobar

    View Slide

  3. @maaretp
    @[email protected]
    TESTING not TESTERS.
    Developers are brilliant
    explorers.
    Testing is too important to be
    left for testers.Testing is too
    important to be left without
    testers.

    View Slide

  4. @maaretp
    @[email protected]
    Stakeholders happy,
    even delighted
    –Quality Information
    Good Team’s Output
    –Quality Information
    Less than Good
    Team’s Output
    –Quality Information
    Results Gap
    Surprise!
    Results Gap
    on a Team that thinks
    Testers == Testing
    Pick up the pizza boxes…
    ”Find (some of) What Others May Have Missed”

    View Slide

  5. @maaretp
    @[email protected]
    Guessing with power to accept
    For Mood:
    https://aboutmonica.com/blog/how-to-make-your-vs-code-sparkle/

    View Slide

  6. @maaretp
    @[email protected]
    Who Am I?
    Guessing with power to accept
    Fooing my program or the tool?

    View Slide

  7. @maaretp
    @[email protected]
    Note:
    …pillaging digital content
    without consent, compensation
    and attribution
    Even if legal not ethical.

    View Slide

  8. @maaretp
    @[email protected]
    Computer Assisted
    Software Authorship https://github.com/features/copilot/

    View Slide

  9. @maaretp
    @[email protected]
    CTRL+enter for alternatives

    View Slide

  10. @maaretp
    @[email protected]
    CTRL+enter for alternatives

    View Slide

  11. @maaretp
    @[email protected]
    WE are
    accountable
    1. Intent / Implementation
    2. Domain for the Layman
    3. Domain for the Expert
    4. Reference Implementation
    5. People Filtering

    View Slide

  12. @maaretp
    @[email protected]
    Say We Have This…
    Done?

    View Slide

  13. @maaretp
    @[email protected]
    Some Tests
    Done?

    View Slide

  14. @maaretp
    @[email protected]
    Shapes of Approaches
    Asserts
    Approvals

    View Slide

  15. @maaretp
    @[email protected]
    From One to Many
    Asserts
    Approvals

    View Slide

  16. @maaretp
    @[email protected]
    Hypothesis

    View Slide

  17. @maaretp
    @[email protected]
    Note:
    …developer intent. It might
    not do what you wanted it to
    do.

    View Slide

  18. @maaretp
    @[email protected]
    Part 1. Review for correctness and conciseness
    Part II. Input -> Output
    Part III. Rules of behavior boundaries
    Part IIII. Coverage
    Part IIIII. Sampling vs wide nets (approvals)
    PartVI. Properties
    Developer intent

    View Slide

  19. @maaretp
    @[email protected]
    https://en.wikipedia.org/wiki/Roman_numerals

    View Slide

  20. View Slide

  21. @maaretp
    @[email protected]
    Upper Boundary?

    View Slide

  22. View Slide

  23. @maaretp
    @[email protected]
    References…
    References…

    View Slide

  24. @maaretp
    @[email protected]
    References…

    View Slide

  25. @maaretp
    @[email protected]
    References…

    View Slide

  26. @maaretp
    @[email protected]
    ApprovalTests
    Done?

    View Slide

  27. @maaretp
    @[email protected]
    Domain rules: 1V à IIII in clock design as
    per orders of King Louis XIV of France
    https://www.amalgamsab.com/iiii-or-is-it-iv.html

    View Slide

  28. @maaretp
    @[email protected]
    Note:
    …business rules. You think you
    know them and yet you don’t.

    View Slide

  29. @maaretp
    @[email protected]
    Part 1. Be the resident expert. Ask around.
    Part II. Rules. More rules.
    Part III. Find better experts.
    Part IIII. Disagreeing with boundaries.
    Part IIIII. Oracles.
    PartVI. Find better oracles.
    Part VII. No user would do what users would do.
    Domain

    View Slide

  30. @maaretp
    @[email protected]
    Part 1. Dependencies.
    Part II. Interruptions. Both software and hardware.
    Part III. People.
    Environment
    “People are not pure functions; they have all sorts of
    interesting side effects.” - Engineering Management for the
    Rest of Us, Sarah Drasner
    … nor are pure functions if you grow the boundary of what might fail.

    View Slide

  31. @maaretp
    @[email protected]
    WE are
    accountable
    1. Intent / Implementation
    2. Domain for the Layman
    3. Domain for the Expert
    4. Reference Implementation
    5. People Filtering
    6. Interesting side effects

    View Slide

  32. @maaretp
    @[email protected]
    Answer Key to Some of the Bugs
    • Values over 4k don’t work (without extending to line-on-top notation)
    – Zeros, fractions, large numbers later in scope
    • Decimal values truncated vs. rounded
    • *some of the implementations*
    – Boundary values miscalculated
    – Infinite loop
    • Implementing Classic when expecting Simplified
    • Someone’s code without license text!

    View Slide

  33. @maaretp
    @[email protected]
    Foo
    Contemporary
    Exploratory Testing

    View Slide

  34. @maaretp
    @[email protected]
    A majority of the
    production failures (77%)
    can be reproduced by a
    unit test.
    https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf
    Through https://www.slideshare.net/Kevlin/the-error-of-our-ways

    View Slide

  35. View Slide

  36. @maaretp
    @[email protected]
    Everything that does not
    need to be automated gets
    done while automating.
    * Programming with thinking – quality of thinking matters

    View Slide

  37. @maaretp
    @[email protected]
    Find (some of) what
    others may have missed!
    Testing
    … and never be bored.

    View Slide

  38. @maaretp
    @[email protected]
    For pair / ensemble testing this with me <3
    Thank You
    Alex, Elisabeth, Bertold, Thomas,
    Mirja, Karen, Moroni, Isidro,
    Benjamin & Testing Dozen #1
    https://github.com/exploratory-testing-academy/do-a-thing-and-call-it-foo-solution

    View Slide

  39. @maaretp
    @[email protected]
    2020 2016
    MIATPP
    Most Influential Agile Testing
    Professional Person
    #PayToSpeak #TechVoices
    #EnsembleTesting #EnsembleProgramming #StrongStylePairing
    #ExploratoryTesting #TestAutomation
    #ModernAgile
    #AwesomeTesters
    Maaret Pyhäjärvi
    (from Finland)
    Email: [email protected]
    Twitter: @maaretp
    Web: maaretp.com
    Blog: visible-quality.blogspot.fi
    (please connect with me through
    Twitter or LinkedIn)
    2019 - 2022
    https://exploratorytestingacademy.com
    Ohjelmistotestaus ry
    https://techvoices.org

    View Slide