Slide 1

Slide 1 text

JORGE MARTÍNEZ & FILIPE FREIRE– JUNE 2019 ADIDAS TECH SUMMIT FINDING TRANQUILITY

Slide 2

Slide 2 text

ABOUT US JUN-19 FINDING TRANQUILITY 2 DevOps lover. Developer. Learner. True cinephile. Open-source software lover and contributor. People tell me I’m good playing Mario Kart. Currently working as a DevOps for Hype 2.0 in adidas. Tester. Developer. Husband. Learner. Open-source software lover and contributor. Don’t play Mario Kart with Jorge. Currently working as a Software Tester for Hype 2.0 in adidas. Filipe Jorge

Slide 3

Slide 3 text

INSPIRATION JUN-19 FINDING TRANQUILITY 3 1) Investing our free time in something better than playing (and finding bugs) in Red Dead Redemption 2

Slide 4

Slide 4 text

INSPIRATION JUN-19 FINDING TRANQUILITY 4 2) “Beat the Americans” Example: Mike Duskis’s “Beautiful Automation” Also interesting: https://github.com/CyberGRX/twin-sister

Slide 5

Slide 5 text

INSPIRATION JUN-19 FINDING TRANQUILITY 5 3) We needed something to quickly prototype HTTP automated checks without much structure clutter, but maintainable. 4) time wasted in “dependencies setup” on pipelines for API automated checks

Slide 6

Slide 6 text

DISCOURAGEMENT JUN-19 FINDING TRANQUILITY 6 Serenity Not bad but… - Clutter (>170 dependencies) - Slow to prototype tests - Forced code structure (Ex.: @Steps -> @Step -> @Given/@When/...) Postman Fast but… - Clutter (848 dependencies) - Maintainability = Zero - Json as Code…

Slide 7

Slide 7 text

WHAT WAS “NICE TO HAVE“ JUN-19 FINDING TRANQUILITY 7 Minimal Integration Minimal Structure Minimal Business orientation Minimal Reporting

Slide 8

Slide 8 text

WHAT WE NEEDED JUN-19 FINDING TRANQUILITY 8 Maintainable Featherweight Flexible

Slide 9

Slide 9 text

PLAYING WITH LEGOS? JUN-19 FINDING TRANQUILITY 9 Request Pre-request Test

Slide 10

Slide 10 text

WHITEBOARD TIME JUN-19 FINDING TRANQUILITY 10 a) Mimic Serenity? - “Overkill” internal structure - To many dependencies (plus weird ones: OpenCV? AspectJ?...) b) Mimic Postman’s “feeling”? - Simplicity with a harsh price - Ok… we ramp up the maintainability

Slide 11

Slide 11 text

STRUCTURE PLAN JUN-19 FINDING TRANQUILITY 11 Action Action Pre Action Test Environment In Environment: global config “key”:”value” In PreAction: setup work In Action: GET /user/{.key} In Test: assert response

Slide 12

Slide 12 text

NOW WE ONLY NEEDED A NAME…

Slide 13

Slide 13 text

JUN-19 FINDING TRANQUILITY 13

Slide 14

Slide 14 text

BREAKING STUFF DOWN JUN-19 FINDING TRANQUILITY 14 All of tranquility was done on our free time. (We have little of it) Solution: break stuff into micro-tasks!

Slide 15

Slide 15 text

GO NO-GO? JUN-19 FINDING TRANQUILITY 15 Which programming language? We chose Go (aka. Golang) - Lots of “Hype” in the office J - A wonderful standard library. No need to include external dependencies. - We wanted to challenge ourselves!

Slide 16

Slide 16 text

REQUEST JUN-19 FINDING TRANQUILITY 16

Slide 17

Slide 17 text

PRE-ACTION AND TEST JUN-19 FINDING TRANQUILITY 17

Slide 18

Slide 18 text

ACTION JUN-19 FINDING TRANQUILITY 18

Slide 19

Slide 19 text

ENV JUN-19 FINDING TRANQUILITY 19 Importing Postman environment files also possible ✅

Slide 20

Slide 20 text

TRANQUILITY + CUCUMBER JUN-19 FINDING TRANQUILITY 20 ✅ https://github.com/tranquility-bdd/tranquility-cucumber-example/

Slide 21

Slide 21 text

BEYOND JUN-19 FINDING TRANQUILITY 21 - Broaden type of checks (not just REST) - Export/import to/from tranquility - Create integration plugins for typical tools we use & create more examples Find us at: https://github.com/tranquility-bdd https://tranquility-bdd.com

Slide 22

Slide 22 text

LEARNINGS JUN-19 FINDING TRANQUILITY 22 - Most ideas and needs are already there, but we just need to pay attention - Bootstrapping an OSS project is easy - Maintaining an OSS project is hard - Free-time management, there is time for everything but tradeoff is needed - Harsh reality: there is no “silver bullet tool” - Jorge is still better in Mario Kart and Smash Bros

Slide 23

Slide 23 text

THANK YOU! QUESTIONS?