SlideShare a Scribd company logo
Stop coding start testing
Pascal Dufour & Valerio Barrila
Valerio Barrila
Tech guy
@ninjatux2k
Pascal Dufour
Test guy
@pascal_dufour
Agenda
• Why and how Minosse is developed
• How to create automated checks in Minosse (CucumberJS)
• Thoughts behind writing great feature files
Stop coding start testing
Test tool stack
Tools we used
The new tester
Program languages
• Groovy
• JAVA
• NodeJS
• Ruby
https://www.flickr.com/photos/jdhancock/
Easy to switch for testers between projects
• One language for test automation across projects
• Test written in a uniform style across projects
Problems we solved
Easy to adapt for new testers
• Tests written in a readable language for a techie person
• No scripting skills required to write automated tests
Easy life for developers
• Test implementation code is written once
• Bugs and fixes in one place
Agenda
• Why and how Minosse is developed
• How to create automated checks in Minosse (CucumberJS)
• Thoughts behind writing great feature files
Stop coding start testing
Minosse
Generic set of common steps for testingAPI
github.com/icemobilelab/minosse
Generic set of common steps for testingAPI
(ab)-use CucumberJS
• Property steps
• HTTP steps
• Debug steps
Minosse
Load testdata
• Given I set property foo to testdata foo
Setting a property
• Given I set property foo of request body to number 4
Remove a property
• Given I remove property foo
Property setting steps
Set the request body
• Given I set the request body to property foo
Set a request header
• Given I set the request header bar with value foo
Set the request content type
• Given I set the request header Content-Type with value multipart/formdata
Save the response body
• Given I set property foo to the response body
Http steps Set requests and save response body
Send a request
• Given I send a POST request to /foo
Sending an HTTPS request
• Given I secure the connection with certificate certificate.crt and with key
keyFile.key
Check the response code
• Given the response status code is 200
Http steps sending a request and check
Checking if property does not exist
• Given I check property foo of response body does not exist
Checking the value of a property
• Given I check property foo of response body equals number 4
Checking the type of a property
• Given I check property foo of response body has type number
Checking the format of a property
• Given I check property bar has format email
Property checking steps
Print a property
• Given DEBUG I print property foo
Debug steps
API we test
http://restcountries.eu/
Install time!
Setup your own environment
Install instructions
1. Install NodeJS
2. Clone the api repository `git clone git@github.com:aredo/restcountries.git`
3. Checkout the release 0.1.0 `git checkout tags/0.1.0`
4. cd restcountries && npm install minosse cucumber
Or we made an environment for you
Install instructions
1. Ask Pascal or Valerio the USB
2. Copy the content somewhere in your machine
3. Import the machine in VirtualBox
You can also download the machine here:
https://goo.gl/WKXOFk
It works
Folder structure
Steps loader (steps.js)
Assignments
Scenario: Calling Get should return a 200 status code
Given I send a GET request to /
When the response status code is 200
Assignments 1 add a debug step
Then DEBUG I print property response body
For handouts see https://goo.gl/OyJuZD
Scenario: Calling Get should return a 200 status code
Given I send a GET request to /
When the response status code is 200
Then DEBUG I print property response body
And I check
Assignments 2 add a check on the response
property message of response body equals string Welcome buddy!
Scenario: Calling Get on endpoint /incorrect should return a 404 status code and
the message Sorry, that page does not exist
Given I send a GET request to /incorrect
When the response status code is 404
And I check
Assignments 3 check a specific status
property message of response body equals string Sorry, that page does not exis
Scenario: Calling Get on endpoint api/v1 should return a 200 status code and I
check multiple properties.
Given I send a GET request to /api/v1
When the response status code is 200
And I check
Assignments 4 check a specific value
property res.body[0].name equals stringAfghanistan
Scenario: I want to show my custom steps

Given I want to create a custom step
Assignments 5 create a custom step
Agenda
• Why and how Minosse is developed
• How to create automated checks in Minosse (CucumberJS)
• Thoughts behind writing great feature files
What the testers do in the project
Create test ideas
Review documentation
Review tests
Create automated
testsMaintain tests
Exploratory testing
Review reports
HipChat integration
• Developers and Testers in the chat
Failure notifications for the team
•Created by the team.
•Self verifying data for files en test….
•1 test should test 1 thing (single responsibility pattern). 
•Exploratory testing is mandatory for a good check
•What is implemented is tested. => Test should always reflect implementation.
•We use Coverage Report to measure the test coverage. To train ourselves in
creating better test.
•Everything is reviewed by the someone in the team or by an other team
Writing a good feature file
@collect-active

Feature:As a user I want to collect and receive stamps with bonus stamp offers

@BSO

Scenario Outline:As a user I want to collect and receive stamps with bso

Given testdata collect_active is stored as collect
........

When I send a POST request to /…/………………/active

Then the response status code is 200

And check property transactionId of response body is property transactionIdentifier

And check property newBalance of response body is number <newBalance>

And check property mutation of response body is number <mutation>
Examples:

|amountSpent |bso |value |newBalance |mutation |

|10 |Bso1Stamps |1 |2 |2 |

|10 |Bso100Stamps |1 |101 |101 |

|20 |Bso1Stamps |7 |9 |9 |

|10          |BsoLimitedLife |1     |2           |2         |
Reports
Reports
Body text
• Bullet
Slide title
Body text
• Bullet
Code coverage to change the test
special thanks to Jasper Woudenberg
Desmond Delissen
Ice mobile
Questions?
Stop coding start testing

More Related Content

PDF
BDD API Tests with Gherkin and Behat
PDF
Acceptance Test-driven Development with Cucumber-jvm
PPTX
Automate right start from API
PPTX
Test automation with cucumber jvm
KEY
Attributes, reflection, and dynamic programming
PPTX
REST API testing with SpecFlow
PPTX
Руслан Плахута - Внедрение BDD в распределенные команды
PPTX
Angular Unit Test
BDD API Tests with Gherkin and Behat
Acceptance Test-driven Development with Cucumber-jvm
Automate right start from API
Test automation with cucumber jvm
Attributes, reflection, and dynamic programming
REST API testing with SpecFlow
Руслан Плахута - Внедрение BDD в распределенные команды
Angular Unit Test

What's hot (20)

PPTX
Test automation with Cucumber-JVM
PDF
Selenium Best Practices with Jason Huggins
PDF
Rspec and Capybara Intro Tutorial at RailsConf 2013
PDF
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
PPTX
Automated tests to a REST API
PDF
How To Use Selenium Successfully
PDF
Ruby onrails cucumber-rspec-capybara
PPT
Behavior Driven Development (BDD) and Agile Testing
PPTX
Angular Unit Testing
PDF
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
PDF
TDD with PhpSpec - Lone Star PHP 2016
PDF
Implementing Testing for Behavior-Driven Development Using Cucumber
PPTX
Angular Unit Testing
PDF
How to Use Selenium, Successfully
PDF
Behavior Driven Development with Cucumber
PDF
Serverless in production, an experience report (LNUG)
PDF
Serverless in Production, an experience report (cloudXchange)
PPTX
Rest API Testing
PDF
Devopstalks 2017-gwen
PPTX
Bdd – with cucumber and gherkin
Test automation with Cucumber-JVM
Selenium Best Practices with Jason Huggins
Rspec and Capybara Intro Tutorial at RailsConf 2013
Shift Remote: Mobile - Efficiently Building Native Frameworks for Multiple Pl...
Automated tests to a REST API
How To Use Selenium Successfully
Ruby onrails cucumber-rspec-capybara
Behavior Driven Development (BDD) and Agile Testing
Angular Unit Testing
Mastering UI automation at Scale: Key Lessons and Best Practices (By Fernando...
TDD with PhpSpec - Lone Star PHP 2016
Implementing Testing for Behavior-Driven Development Using Cucumber
Angular Unit Testing
How to Use Selenium, Successfully
Behavior Driven Development with Cucumber
Serverless in production, an experience report (LNUG)
Serverless in Production, an experience report (cloudXchange)
Rest API Testing
Devopstalks 2017-gwen
Bdd – with cucumber and gherkin
Ad

Viewers also liked (20)

PPTX
Agile Progress Tracking and Code Complete Date Estimation
PDF
In-depth calendar
PPT
The story of j3 (4)
PPTX
PDF
Parle-G campaign- The future genius
PDF
36448696 alege-jucariile-potrivite-bebelusului-tau
PDF
Testing 5
PPTX
Yammer Social Data Mining
PPTX
Slow Living Summit 2011 presentation by Christine Bushway
PPTX
Day1presentation
PPTX
MobileDiagnosis Onlus 5 x 1000 2016
PPTX
Ex louisville 2011
DOC
Oaklanders undiagnosed post tramatic stress
PDF
長野市内の災害時における孤立可能性集落資料
PPTX
Livia's journey india and nepal
PPT
Twitter for local business
PPS
Sturgis
PPT
Module 3 Part 1 Review
PPTX
MobileDiagnosis:an appropriate technology
PPTX
Aroma lid
Agile Progress Tracking and Code Complete Date Estimation
In-depth calendar
The story of j3 (4)
Parle-G campaign- The future genius
36448696 alege-jucariile-potrivite-bebelusului-tau
Testing 5
Yammer Social Data Mining
Slow Living Summit 2011 presentation by Christine Bushway
Day1presentation
MobileDiagnosis Onlus 5 x 1000 2016
Ex louisville 2011
Oaklanders undiagnosed post tramatic stress
長野市内の災害時における孤立可能性集落資料
Livia's journey india and nepal
Twitter for local business
Sturgis
Module 3 Part 1 Review
MobileDiagnosis:an appropriate technology
Aroma lid
Ad

Similar to Stop coding start testing (20)

PPTX
Test Design and Automation for REST API
PPTX
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
PDF
Automated acceptance test
PDF
Next-Level API Automation Testing Techniques – Part 1
PDF
Intro to JavaScript Testing
PPTX
Belajar Postman test runner
DOCX
Api testing bible using postman
PPTX
API Testing with Open Source Code and Cucumber
PDF
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
PDF
Test driven development with behat and silex
PDF
Intro To JavaScript Unit Testing - Ran Mizrahi
PPTX
Test execution
PDF
Postman: An Introduction for Testers
PDF
Tests Your Pipeline Might Be Missing
PDF
Behaviour driven infrastructure
PDF
5 levels of api test automation
PDF
Acceptance Testing of Web UI
PDF
JavaScript development methodology
PDF
Release with confidence
Test Design and Automation for REST API
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
Automated acceptance test
Next-Level API Automation Testing Techniques – Part 1
Intro to JavaScript Testing
Belajar Postman test runner
Api testing bible using postman
API Testing with Open Source Code and Cucumber
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
Test driven development with behat and silex
Intro To JavaScript Unit Testing - Ran Mizrahi
Test execution
Postman: An Introduction for Testers
Tests Your Pipeline Might Be Missing
Behaviour driven infrastructure
5 levels of api test automation
Acceptance Testing of Web UI
JavaScript development methodology
Release with confidence

More from Pascal Dufour (9)

PDF
Contract testing TestCon 2019
PDF
Meetup How we became Software testing world champion
PPTX
Road 2 devops at Stater
PDF
Agile testing organizational mindshift
PDF
A-TDD workshop Testnet
PDF
Happier teams by cesario ramos and pascal dufour
PDF
Think different visualization tools for testers StarEast 2013 pascaldufour
PDF
Successful testing continuous delivery (Testnet 2013)
KEY
Visibility najaarsevent testnet
Contract testing TestCon 2019
Meetup How we became Software testing world champion
Road 2 devops at Stater
Agile testing organizational mindshift
A-TDD workshop Testnet
Happier teams by cesario ramos and pascal dufour
Think different visualization tools for testers StarEast 2013 pascaldufour
Successful testing continuous delivery (Testnet 2013)
Visibility najaarsevent testnet

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
Teaching material agriculture food technology
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Electronic commerce courselecture one. Pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Machine learning based COVID-19 study performance prediction
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Spectroscopy.pptx food analysis technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Big Data Technologies - Introduction.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Spectral efficient network and resource selection model in 5G networks
Electronic commerce courselecture one. Pdf
Digital-Transformation-Roadmap-for-Companies.pptx
A comparative analysis of optical character recognition models for extracting...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
NewMind AI Weekly Chronicles - August'25-Week II
gpt5_lecture_notes_comprehensive_20250812015547.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Assigned Numbers - 2025 - Bluetooth® Document
“AI and Expert System Decision Support & Business Intelligence Systems”
The Rise and Fall of 3GPP – Time for a Sabbatical?
Machine learning based COVID-19 study performance prediction
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectroscopy.pptx food analysis technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Big Data Technologies - Introduction.pptx

Stop coding start testing

  • 1. Stop coding start testing Pascal Dufour & Valerio Barrila
  • 2. Valerio Barrila Tech guy @ninjatux2k Pascal Dufour Test guy @pascal_dufour
  • 3. Agenda • Why and how Minosse is developed • How to create automated checks in Minosse (CucumberJS) • Thoughts behind writing great feature files
  • 6. The new tester Program languages • Groovy • JAVA • NodeJS • Ruby https://www.flickr.com/photos/jdhancock/
  • 7. Easy to switch for testers between projects • One language for test automation across projects • Test written in a uniform style across projects Problems we solved Easy to adapt for new testers • Tests written in a readable language for a techie person • No scripting skills required to write automated tests Easy life for developers • Test implementation code is written once • Bugs and fixes in one place
  • 8. Agenda • Why and how Minosse is developed • How to create automated checks in Minosse (CucumberJS) • Thoughts behind writing great feature files
  • 10. Minosse Generic set of common steps for testingAPI github.com/icemobilelab/minosse
  • 11. Generic set of common steps for testingAPI (ab)-use CucumberJS • Property steps • HTTP steps • Debug steps Minosse
  • 12. Load testdata • Given I set property foo to testdata foo Setting a property • Given I set property foo of request body to number 4 Remove a property • Given I remove property foo Property setting steps
  • 13. Set the request body • Given I set the request body to property foo Set a request header • Given I set the request header bar with value foo Set the request content type • Given I set the request header Content-Type with value multipart/formdata Save the response body • Given I set property foo to the response body Http steps Set requests and save response body
  • 14. Send a request • Given I send a POST request to /foo Sending an HTTPS request • Given I secure the connection with certificate certificate.crt and with key keyFile.key Check the response code • Given the response status code is 200 Http steps sending a request and check
  • 15. Checking if property does not exist • Given I check property foo of response body does not exist Checking the value of a property • Given I check property foo of response body equals number 4 Checking the type of a property • Given I check property foo of response body has type number Checking the format of a property • Given I check property bar has format email Property checking steps
  • 16. Print a property • Given DEBUG I print property foo Debug steps
  • 19. Setup your own environment Install instructions 1. Install NodeJS 2. Clone the api repository `git clone git@github.com:aredo/restcountries.git` 3. Checkout the release 0.1.0 `git checkout tags/0.1.0` 4. cd restcountries && npm install minosse cucumber
  • 20. Or we made an environment for you Install instructions 1. Ask Pascal or Valerio the USB 2. Copy the content somewhere in your machine 3. Import the machine in VirtualBox You can also download the machine here: https://goo.gl/WKXOFk
  • 25. Scenario: Calling Get should return a 200 status code Given I send a GET request to / When the response status code is 200 Assignments 1 add a debug step Then DEBUG I print property response body For handouts see https://goo.gl/OyJuZD
  • 26. Scenario: Calling Get should return a 200 status code Given I send a GET request to / When the response status code is 200 Then DEBUG I print property response body And I check Assignments 2 add a check on the response property message of response body equals string Welcome buddy!
  • 27. Scenario: Calling Get on endpoint /incorrect should return a 404 status code and the message Sorry, that page does not exist Given I send a GET request to /incorrect When the response status code is 404 And I check Assignments 3 check a specific status property message of response body equals string Sorry, that page does not exis
  • 28. Scenario: Calling Get on endpoint api/v1 should return a 200 status code and I check multiple properties. Given I send a GET request to /api/v1 When the response status code is 200 And I check Assignments 4 check a specific value property res.body[0].name equals stringAfghanistan
  • 29. Scenario: I want to show my custom steps
 Given I want to create a custom step Assignments 5 create a custom step
  • 30. Agenda • Why and how Minosse is developed • How to create automated checks in Minosse (CucumberJS) • Thoughts behind writing great feature files
  • 31. What the testers do in the project Create test ideas Review documentation Review tests Create automated testsMaintain tests Exploratory testing Review reports
  • 32. HipChat integration • Developers and Testers in the chat Failure notifications for the team
  • 33. •Created by the team. •Self verifying data for files en test…. •1 test should test 1 thing (single responsibility pattern).  •Exploratory testing is mandatory for a good check •What is implemented is tested. => Test should always reflect implementation. •We use Coverage Report to measure the test coverage. To train ourselves in creating better test. •Everything is reviewed by the someone in the team or by an other team Writing a good feature file
  • 34. @collect-active
 Feature:As a user I want to collect and receive stamps with bonus stamp offers
 @BSO
 Scenario Outline:As a user I want to collect and receive stamps with bso
 Given testdata collect_active is stored as collect ........
 When I send a POST request to /…/………………/active
 Then the response status code is 200
 And check property transactionId of response body is property transactionIdentifier
 And check property newBalance of response body is number <newBalance>
 And check property mutation of response body is number <mutation> Examples:
 |amountSpent |bso |value |newBalance |mutation |
 |10 |Bso1Stamps |1 |2 |2 |
 |10 |Bso100Stamps |1 |101 |101 |
 |20 |Bso1Stamps |7 |9 |9 |
 |10          |BsoLimitedLife |1     |2           |2         |
  • 38. Body text • Bullet Code coverage to change the test
  • 39. special thanks to Jasper Woudenberg Desmond Delissen Ice mobile