SlideShare a Scribd company logo
1 of 104
Test Design and Automation
for REST API
Ivan Katunou
About myself
• Software Testing Team Leader and
Resource Manager at Epam Systems
• 11 years of experience in IT, 8 years in
automated testing
• Organizer of “Morning Coffee with
Automation engineers” meetups
• Past projects:
• Epam Systems – Hyperion-Oracle
• CompatibL – Sberbank, RMB
• Viber Media
Agenda
1. What is special about RESTful API applications?
2. Test design and coverage
3. Automation
Out of scope
• Web services basics
• Unit, performance, security testing
• How to use tools for REST API testing
Agenda
1. What is special about RESTful API applications?
2. Test design and coverage
3. Automation
Client - Server
No UI
• Requires additional tools to interact with
Message Format
• XML
• JSON
• Others
Resources
Requirements Except Business Ones
• XSD
• JSON Schema
• WADL (rarely used)
Stateless
In RESTful applications, each request must contain all of the information
necessary to be understood by the server, rather than be dependent on the
server remembering prior requests.
Storing session state on the server violates the stateless constraint of the REST
architecture. So the session state must be handled entirely by the client.
Transfer Protocol
• Transfer protocol for RESTful API applications in majority of the cases
is HTTP(S).
• However it can also use SNMP, SMTP and others
Implementations Differ
REST is an architectural style, implementations might differ
• Roy Fielding - Representational State Transfer (REST)
• Richardson Maturity Model
• What is the Richardson Maturity Model?
Agenda
1. What is special about RESTful API applications?
2. Test design and coverage
3. Automation
Test Design and Coverage
What to test?
How to test?
What coverage is
good enough?
RESTful Services by Functionality
1. Provides data
2. Provides data based on some manipulation with data provided to the
service
3. Complex operations
Business Requirements
A forecast service
Business Requirements
A forecast service
• Provide weather (temperature, precipitation, wind speed) forecast for next 24
hours at different locations
• Provide weather forecast for tomorrow, 3 days, 6 days
• Provide weather forecast at different locations
• etc.
Business Requirements
A calculation service
Business Requirements
A calculation service
• Support math operations such as +, -, /, * with integer and float numbers
• Support converting numbers from decimal to hex and binary
• etc.
Business Requirements
An Internet shop
Business Requirements
An Internet shop
• User registration
• Searching and filtering products
• Adding products to cart
• Buying products
• etc.
Business Requirements – Summary
• It is crucial to verify business requirements for RESTful applications.
• Use common test design approaches (divide into submodules,
boundary value analysis, equivalence partitioning, state transition
testing, etc.)
Components
Requests, Responses
Endpoints
Endpoints
Examples:
http://example.com/api/devices
http://example.com/api/devices/sonyz3
http://example.com/api/users
http://example.com/api/products
http://example.com/api/products/12345
http://example.com/api/products/search?q=name:Keyboard
Endpoints
• Find out which endpoints your web service provides
• Each collection endpoint needs to be tested
• At least one single resource endpoint needs to be tested for each
resource type
• Negative tests:
• Try to request endpoint that does not exist
• Try to request search/filtering/sorting with wrong parameter/value
Search, Filtering, Sorting
Endpoints that support search, filtering, sorting, etc. need to be
verified with supported parameters separately and in combinations.
Use boundary values, equality partitioning, pairwise testing, check
special characters, max length parameters, etc.
http://example.com/api/products?q=name:Keyboard&maxPrice:200
http://example.com/api/products?year:2018
http://example.com/api/products?sort:name,asc
Pagination, Cursors
• Endpoints that support pagination, cursors need to be verified with
supported parameters separately and in combinations. Use boundary
values, equality partitioning, pairwise testing.
• For negative tests try to use limit more than max one, offset out of
bounds, incorrect values
• http://example.com/api/products?limit=20&offset=100
Versioning
Request Methods
Request Methods
• GET
• POST
• PUT
• DELETE
• OPTIONS
• HEAD
• PATCH
• TRACE
• CONNECT
Request Methods
• Positive tests
• For each collection endpoint and at least one single resource endpoint for
each resource type verify supported request methods
• Verify concurrent access to resources (DELETE and GET for example)
• Negative tests
• For each collection endpoint and at least one single resource endpoint for
each resource type try to verify behavior for not supported request methods
Request Headers
Request Headers
Headers carry information for:
• Request body (charset, content type)
• Request authorization
• etc.
Request Headers
• Positive
• For each collection endpoint and at least one single resource endpoint verify
all supported request methods with correct header values - with required
headers only first, then with verifying optional ones one at a time and
combinations.
• Use boundary values, equivalence partitioning, pairwise testing. Verify special
characters, Unicode text for headers, max length values.
• Negative
• Verify behavior in case of missing required header, one at a time
• Verify behavior in case of wrong/unsupported/empty header value
• Verify behavior in case of not supported header
Request Body
Request Body
Adding user by sending POST request
to http://example.com/api/users
Request Body
• Test for endpoints and methods that support sending request body
(e. g. POST, PUT)
• Verify referenced objects
Request Body
Possible negative tests for POST/PUT requests:
• Field contains invalid value (not equals allowed value, out of bounds, etc)
• Field of wrong data type
• Field value is empty object/string
• Field value is null
• Required field is absent
• Redundant field (“Add to customFields” example)
• Empty object {}
• Invalid XML/JSON
• No data
• Post already existing resource
Request Body
Possible negative tests for DELETE requests:
• Delete non-existing resource
Response Codes
Response codes
Response codes
• Find out which response codes might be returned by your service in
which cases
• Make sure they are logically related with events (404 for resource not
found, 200-201 for resource created)
• Try to reproduce such events and verify response codes are correct
• Verifying server configuration errors usually out of scope
Response Headers
Response Headers
Find out which headers might be returned by your service. Test those
ones that are related to your service
Response Body
Response Body
Receive information on particular user
using GET request to
http://example.com/api/users/1
Response Body
Verify
• Structure of a response
• Fields
• Values
• Data types
Minimal Positive Test
For adding a new user
Minimal Positive Test
• Verify the response code
• Send POST request
• Add only required fields in the request
with some correct values
• Verify the body of the response
• Verify service-specific headers
• Add only required request headers
• *In case response body is not
returned on POST, send GET
request for the new item or
get from DB
Other Positive Tests
• Required fields only in request body
• Test values for each of the fields in
separate tests. Verify full response body
Other Positive Tests
• Required fields plus one optional
• Test values for the optional field. Verify
full response body!
Complex Request Body
• Makes sense to add at least one test with all possible fields
• For testing combinations of fields pairwise testing might be leveraged
Boundary Values for Field Values
Find out boundary values - might depend on XML/JSON restrictions,
DB, other components
Transformations
State Transition Testing
Caching and Rate Limits
Rate Limits and Caching
• Verify that cached responses received faster
• Verify cache expiration time (right before and after)
• Find out rate limits for different methods/endpoints
• Try to reproduce max allowed rate limit
• Try to reproduce more than max allowed rate limit
Integration with Third Party
Stubs can be used to make testing easier and faster, not dependent on
actual services
Coverage
Project Management Triangle
Third-Party Components
No need to test third-party components. Test you application only!
Risks
Risks
• 1. No testing at all
• 2. No requests headers testing
• 3. No separate fields of request body testing
• 5. No status code testing
• 6. No response body testing
• 8. No response headers testing
• 4. No field values, types, number of
occurrence in request body testing
• 7. Testing only specific fields in the response body
Trusted Boundaries
Trusted Boundaries
• Find out boundary values. “Trust CMS” example
• Add notes for trusted boundaries
• Verify that those boundaries are still relevant
Using XSD, JSON Schema
• In case web service uses XSD/JSON Schema validation itself additional
verification might be minimized
• You still need to make sure that application actually does it (check
logs for example)
Difficult to Verify Values
• E. g. hash values, current time, random generated values
Test Automation
Including parallel tests
Test Pyramid
Test Coverage - Summary
• Main challenge - great variety of combinations parameters and values
• Depends on time/resources you have and quality you need
• No need to test third-party components. Test you application only!
• Depends on risks you and the PO are agreed on. How service is used
• Depends on trusted boundaries
• Depends on additional verification using XSD, JSON Schema by the
service
• Depends on automated testing, parallel tests execution
• Depends on unit, UI tests coverage
Test Strategy
Agenda
1. What is special about RESTful API applications?
2. Test design and coverage
3. Automation
Postman
• Use standalone version
• Functionality to reduce routine:
1. Pre-request scripts
2. Test scripts
3. Variables, environments, globals
4. Sharing collections
5. Collection runs
6. Mock server
7. Generate code for cUrl, Java, Python, C#, etc.
8. Newman
Java Libraries
• JUnit/TestNG
• RestAssured, Apache HTTP Client, other tools and libraries
• Gson/Jackson (choose the one that is not used by your team’s
developers
• JsonAssert
RestAssured
• Usage
• Not thread safe (there is a PR that might fix it)
Test Data
Where should it be located?
In which format?
Text
• Can be saved as regular text/JSON files at resources folder of your test
project or in DB
• Hard to change
• Can be used for a limited number of tests with all fields and values
pre-defined
• Maintenance might become a pain in the neck
Text + Templates
Apache FreeMarker
Values can be stored in
CSV file
Still requires much
effort for maintenance
Object Mapping
Deserialize
JSON
POJO
Object Mapping
Serialize
Object Mapping
Object Mapping
jsonschema2pojo
Object Mapping
Object Mapping + Builder
Object Mapping + Builder
Object Mapping + Builder
• The most convenient approach to work with test data
• Working with business objects in tests. Technical details are
encapsulated
• Saving test data in files/DB is no longer needed
• Builder pattern allows chaining adding details for business objects
Object Mapping + Builder
Cannot be (easily) used in the following cases:
• Custom fields
• Adding null values for specific fields (but not all)
• Wrong data type
Gson/Jackson Objects
Gson/Jackson Objects
Gson/Jackson Objects + Builder
Gson/Jackson Objects
• The most flexible approach for working with JSON/XML in Java
• Can be used where Object Mapping cannot be (easily) applied
• Requires more effort on developing business objects comparing to
Object Mapping
• Business object cannot be used for serialization/deserialization. Use
wrapped JsonObject instead with its setter and getter
JSON Schema Validation
RestAssured JSON Schema Validation
Stubs
WireMock
Using DB
• Update data and make verifications in DB
• Disadvantages: too coupled with DB schemas that might change often
and significantly
Using Java 8 Features
Lambdas and Stream API are rather useful for working with collections
of data
Independent Tests
Bad Examples:
• POST object in one test, GET and verify in another one
• Add embedded object in one test, verify it in another one
• Shared data with not thread safe access (test data, configs, connection to DB,
etc)
Kotlin
Kotlin and API tests presentation by Roman Marinsky
Automation – Tools to Investigate
• SoapUI – REST and SOAP testing tool
• RAML/Swagger - for documentation and contract testing
• Epam JDI HTTP - Web services functional testing, RestAssured
wrapper
• Karate - Web services functional testing using BDD style, based on
Cucumber - JVM
• AWS Lambda - might be used to run API tests in parallel
Useful links
• Presentation samples
• Подходы к проектированию RESTful API
• Testing RESTful Services in Java: Best Practices
• REST CookBook
• Status codes
• The JavaScript Object Notation (JSON) Data Interchange Format
• Introducing JSON
• OData
• Тестирование API используя TypeScript. Пример технологического стека
и архитектуры
Thank You! Any Questions?
Contacts
• Ivan Katunou, Software Testing Team Leader / Resource Manager at
Epam Systems (Coconut Palm test automation team)
• ivan.katunou@gmail.com
• @IvanKatunou (Telegram)
• +375 29 259 56 42 (Viber, GSM)

More Related Content

What's hot

Neotys PAC 2018 - Tingting Zong
Neotys PAC 2018 - Tingting ZongNeotys PAC 2018 - Tingting Zong
Neotys PAC 2018 - Tingting ZongNeotys_Partner
 
Buildinig a business case for test SAP PI/PO interfaces
Buildinig a business case for test SAP PI/PO interfacesBuildinig a business case for test SAP PI/PO interfaces
Buildinig a business case for test SAP PI/PO interfacesDaniel Graversen
 
Neotys PAC 2018 - Gayatree Nalwadad
Neotys PAC 2018 - Gayatree NalwadadNeotys PAC 2018 - Gayatree Nalwadad
Neotys PAC 2018 - Gayatree NalwadadNeotys_Partner
 
Quality automation at walmart scale
Quality automation at walmart scaleQuality automation at walmart scale
Quality automation at walmart scaleTest Armada
 
Automated Low Level Requirements Testing for DO-178C
Automated Low Level Requirements Testing for DO-178CAutomated Low Level Requirements Testing for DO-178C
Automated Low Level Requirements Testing for DO-178CQA Systems
 
Test Armada Sauce Labs
Test Armada Sauce LabsTest Armada Sauce Labs
Test Armada Sauce LabsTest Armada
 
Building a culture of quality at scale
Building a culture of quality at scaleBuilding a culture of quality at scale
Building a culture of quality at scaleTest Armada
 
Conway Case Study - Optimizing Application Integration SDLC
Conway Case Study -  Optimizing Application Integration SDLCConway Case Study -  Optimizing Application Integration SDLC
Conway Case Study - Optimizing Application Integration SDLCRam Vittal
 
Self service automation portal
Self service automation portalSelf service automation portal
Self service automation portalTest Armada
 
Siddharth more resume_obj_c
Siddharth more resume_obj_cSiddharth more resume_obj_c
Siddharth more resume_obj_cSiddharth More
 
Scs14 optimal presentation leveraging test data - apr 2014
Scs14 optimal presentation   leveraging test data - apr 2014Scs14 optimal presentation   leveraging test data - apr 2014
Scs14 optimal presentation leveraging test data - apr 2014OptimalPlus
 
Measuring the Quality of Your Perl Code
Measuring the Quality of Your Perl CodeMeasuring the Quality of Your Perl Code
Measuring the Quality of Your Perl CodeDave Cross
 
GNAT Pro User Day: AdaCore Insights
GNAT Pro User Day: AdaCore InsightsGNAT Pro User Day: AdaCore Insights
GNAT Pro User Day: AdaCore InsightsAdaCore
 
Automated requirements based testing for ISO 26262
Automated requirements based testing for ISO 26262 Automated requirements based testing for ISO 26262
Automated requirements based testing for ISO 26262 QA Systems
 
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)Sogeti Nederland B.V.
 
Continuous Testing at Scale the Walmart Way with Test Armada
Continuous Testing at Scale the Walmart Way with Test ArmadaContinuous Testing at Scale the Walmart Way with Test Armada
Continuous Testing at Scale the Walmart Way with Test ArmadaSauce Labs
 
The state of Continuous Testing in 2019 - Antoine Aymer
The state of Continuous Testing in 2019 - Antoine AymerThe state of Continuous Testing in 2019 - Antoine Aymer
The state of Continuous Testing in 2019 - Antoine AymerSogeti Nederland B.V.
 
SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)Inflectra
 
Integration with saucelabs over private network
Integration with saucelabs over private networkIntegration with saucelabs over private network
Integration with saucelabs over private networkTest Armada
 

What's hot (20)

Neotys PAC 2018 - Tingting Zong
Neotys PAC 2018 - Tingting ZongNeotys PAC 2018 - Tingting Zong
Neotys PAC 2018 - Tingting Zong
 
Buildinig a business case for test SAP PI/PO interfaces
Buildinig a business case for test SAP PI/PO interfacesBuildinig a business case for test SAP PI/PO interfaces
Buildinig a business case for test SAP PI/PO interfaces
 
Neotys PAC 2018 - Gayatree Nalwadad
Neotys PAC 2018 - Gayatree NalwadadNeotys PAC 2018 - Gayatree Nalwadad
Neotys PAC 2018 - Gayatree Nalwadad
 
Quality automation at walmart scale
Quality automation at walmart scaleQuality automation at walmart scale
Quality automation at walmart scale
 
Automated Low Level Requirements Testing for DO-178C
Automated Low Level Requirements Testing for DO-178CAutomated Low Level Requirements Testing for DO-178C
Automated Low Level Requirements Testing for DO-178C
 
Test Armada Sauce Labs
Test Armada Sauce LabsTest Armada Sauce Labs
Test Armada Sauce Labs
 
Building a culture of quality at scale
Building a culture of quality at scaleBuilding a culture of quality at scale
Building a culture of quality at scale
 
Conway Case Study - Optimizing Application Integration SDLC
Conway Case Study -  Optimizing Application Integration SDLCConway Case Study -  Optimizing Application Integration SDLC
Conway Case Study - Optimizing Application Integration SDLC
 
Self service automation portal
Self service automation portalSelf service automation portal
Self service automation portal
 
Siddharth more resume_obj_c
Siddharth more resume_obj_cSiddharth more resume_obj_c
Siddharth more resume_obj_c
 
Scs14 optimal presentation leveraging test data - apr 2014
Scs14 optimal presentation   leveraging test data - apr 2014Scs14 optimal presentation   leveraging test data - apr 2014
Scs14 optimal presentation leveraging test data - apr 2014
 
Measuring the Quality of Your Perl Code
Measuring the Quality of Your Perl CodeMeasuring the Quality of Your Perl Code
Measuring the Quality of Your Perl Code
 
GNAT Pro User Day: AdaCore Insights
GNAT Pro User Day: AdaCore InsightsGNAT Pro User Day: AdaCore Insights
GNAT Pro User Day: AdaCore Insights
 
Automated requirements based testing for ISO 26262
Automated requirements based testing for ISO 26262 Automated requirements based testing for ISO 26262
Automated requirements based testing for ISO 26262
 
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)
Imagine Digital Safety Assured - Arno van de Velde (Micro Focus)
 
Continuous Testing at Scale the Walmart Way with Test Armada
Continuous Testing at Scale the Walmart Way with Test ArmadaContinuous Testing at Scale the Walmart Way with Test Armada
Continuous Testing at Scale the Walmart Way with Test Armada
 
Bhargava Banda
Bhargava BandaBhargava Banda
Bhargava Banda
 
The state of Continuous Testing in 2019 - Antoine Aymer
The state of Continuous Testing in 2019 - Antoine AymerThe state of Continuous Testing in 2019 - Antoine Aymer
The state of Continuous Testing in 2019 - Antoine Aymer
 
SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)SpiraTest Overview Presentation (2019)
SpiraTest Overview Presentation (2019)
 
Integration with saucelabs over private network
Integration with saucelabs over private networkIntegration with saucelabs over private network
Integration with saucelabs over private network
 

Similar to Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.

Test Design and Automation for REST API
Test Design and Automation for REST APITest Design and Automation for REST API
Test Design and Automation for REST APIIvan Katunou
 
restapitest-anil-200517181251.pdf
restapitest-anil-200517181251.pdfrestapitest-anil-200517181251.pdf
restapitest-anil-200517181251.pdfmrle7
 
Rest API Testing
Rest API TestingRest API Testing
Rest API Testingupadhyay_25
 
Load testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerLoad testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerAndrew Siemer
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspecjeffrey1ross
 
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015Craig Salvalaggio
 
How to Do a Performance Audit of Your .NET Website
How to Do a Performance Audit of Your .NET WebsiteHow to Do a Performance Audit of Your .NET Website
How to Do a Performance Audit of Your .NET WebsiteDNN
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!Richard Robinson
 
MFG4 2016 - Is Automation Right for Your Company - 4-2016
MFG4 2016 -  Is Automation Right for Your Company - 4-2016MFG4 2016 -  Is Automation Right for Your Company - 4-2016
MFG4 2016 - Is Automation Right for Your Company - 4-2016Craig Salvalaggio
 
API Check Overview - Rigor Monitoring
API Check Overview - Rigor MonitoringAPI Check Overview - Rigor Monitoring
API Check Overview - Rigor MonitoringAnthony Ferrari
 
Unit Testing and role of Test doubles
Unit Testing and role of Test doublesUnit Testing and role of Test doubles
Unit Testing and role of Test doublesRitesh Mehrotra
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service BIOVIA
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API RecommendationsJeelani Shaik
 
API Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNGAPI Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNGSiddharth Sharma
 
Testing Tools Online Training.pdf
Testing Tools Online Training.pdfTesting Tools Online Training.pdf
Testing Tools Online Training.pdfSpiritsoftsTraining
 
Small is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignSmall is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignGeorgina Tilby
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testingrdekleijn
 
Performance Testing
Performance TestingPerformance Testing
Performance TestingAnu Shaji
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIsamesar0
 

Similar to Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API. (20)

Test Design and Automation for REST API
Test Design and Automation for REST APITest Design and Automation for REST API
Test Design and Automation for REST API
 
restapitest-anil-200517181251.pdf
restapitest-anil-200517181251.pdfrestapitest-anil-200517181251.pdf
restapitest-anil-200517181251.pdf
 
Rest API Testing
Rest API TestingRest API Testing
Rest API Testing
 
Load testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew SiemerLoad testing with Visual Studio and Azure - Andrew Siemer
Load testing with Visual Studio and Azure - Andrew Siemer
 
Beginners overview of automated testing with Rspec
Beginners overview of automated testing with RspecBeginners overview of automated testing with Rspec
Beginners overview of automated testing with Rspec
 
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015
AUTOMATE 2015 - Is Automation Right for Your Company - Craig Salvalaggio 3-2015
 
How to Do a Performance Audit of Your .NET Website
How to Do a Performance Audit of Your .NET WebsiteHow to Do a Performance Audit of Your .NET Website
How to Do a Performance Audit of Your .NET Website
 
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
SCRIMPS-STD: Test Automation Design Principles - and asking the right questions!
 
MFG4 2016 - Is Automation Right for Your Company - 4-2016
MFG4 2016 -  Is Automation Right for Your Company - 4-2016MFG4 2016 -  Is Automation Right for Your Company - 4-2016
MFG4 2016 - Is Automation Right for Your Company - 4-2016
 
API Check Overview - Rigor Monitoring
API Check Overview - Rigor MonitoringAPI Check Overview - Rigor Monitoring
API Check Overview - Rigor Monitoring
 
Unit Testing and role of Test doubles
Unit Testing and role of Test doublesUnit Testing and role of Test doubles
Unit Testing and role of Test doubles
 
(ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service (ATS6-PLAT04) Query service
(ATS6-PLAT04) Query service
 
REST API Recommendations
REST API RecommendationsREST API Recommendations
REST API Recommendations
 
API Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNGAPI Testing Using REST Assured with TestNG
API Testing Using REST Assured with TestNG
 
Testing Tools Online Training.pdf
Testing Tools Online Training.pdfTesting Tools Online Training.pdf
Testing Tools Online Training.pdf
 
Small is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignSmall is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case Design
 
Api security-testing
Api security-testingApi security-testing
Api security-testing
 
Structured Functional Automated Web Service Testing
Structured Functional Automated Web Service TestingStructured Functional Automated Web Service Testing
Structured Functional Automated Web Service Testing
 
Performance Testing
Performance TestingPerformance Testing
Performance Testing
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIs
 

More from COMAQA.BY

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...COMAQA.BY
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...COMAQA.BY
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...COMAQA.BY
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьCOMAQA.BY
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...COMAQA.BY
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликтеCOMAQA.BY
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковCOMAQA.BY
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смертьCOMAQA.BY
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиCOMAQA.BY
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьоромCOMAQA.BY
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSourceCOMAQA.BY
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingCOMAQA.BY
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, javaCOMAQA.BY
 
Static and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesStatic and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesCOMAQA.BY
 
Design Patterns for QA Automation
Design Patterns for QA AutomationDesign Patterns for QA Automation
Design Patterns for QA AutomationCOMAQA.BY
 
Battle: BDD vs notBDD
Battle: BDD vs notBDDBattle: BDD vs notBDD
Battle: BDD vs notBDDCOMAQA.BY
 

More from COMAQA.BY (20)

Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
Тестирование аналогов инсталлируемых приложений (Android Instant Apps, Progre...
 
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...
 
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...
 
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьRoman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важность
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
 
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...
 
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...
 
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.
 
Моя роль в конфликте
Моя роль в конфликтеМоя роль в конфликте
Моя роль в конфликте
 
Организация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиковОрганизация приемочного тестирования силами матерых тестировщиков
Организация приемочного тестирования силами матерых тестировщиков
 
Развитие или смерть
Развитие или смертьРазвитие или смерть
Развитие или смерть
 
Системный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестовСистемный взгляд на параллельный запуск Selenium тестов
Системный взгляд на параллельный запуск Selenium тестов
 
Эффективная работа с рутинными задачами
Эффективная работа с рутинными задачамиЭффективная работа с рутинными задачами
Эффективная работа с рутинными задачами
 
Как стать синьором
Как стать синьоромКак стать синьором
Как стать синьором
 
Open your mind for OpenSource
Open your mind for OpenSourceOpen your mind for OpenSource
Open your mind for OpenSource
 
JDI 2.0. Not only UI testing
JDI 2.0. Not only UI testingJDI 2.0. Not only UI testing
JDI 2.0. Not only UI testing
 
Out of box page object design pattern, java
Out of box page object design pattern, javaOut of box page object design pattern, java
Out of box page object design pattern, java
 
Static and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examplesStatic and dynamic Page Objects with Java \ .Net examples
Static and dynamic Page Objects with Java \ .Net examples
 
Design Patterns for QA Automation
Design Patterns for QA AutomationDesign Patterns for QA Automation
Design Patterns for QA Automation
 
Battle: BDD vs notBDD
Battle: BDD vs notBDDBattle: BDD vs notBDD
Battle: BDD vs notBDD
 

Recently uploaded

Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...akbard9823
 
Denver Web Design brochure for public viewing
Denver Web Design brochure for public viewingDenver Web Design brochure for public viewing
Denver Web Design brochure for public viewingbigorange77
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Deliverybabeytanya
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一z xss
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Personfurqan222004
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作ys8omjxb
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMartaLoveguard
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 

Recently uploaded (20)

Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
Sushant Golf City / best call girls in Lucknow | Service-oriented sexy call g...
 
Denver Web Design brochure for public viewing
Denver Web Design brochure for public viewingDenver Web Design brochure for public viewing
Denver Web Design brochure for public viewing
 
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in  Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Jamuna Vihar Delhi reach out to us at 🔝9953056974🔝
 
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Samaira 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Samaira 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on DeliveryCall Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
Call Girls In Mumbai Central Mumbai ❤️ 9920874524 👈 Cash on Delivery
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
young call girls in Uttam Nagar🔝 9953056974 🔝 Delhi escort Service
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
办理(UofR毕业证书)罗切斯特大学毕业证成绩单原版一比一
 
Complet Documnetation for Smart Assistant Application for Disabled Person
Complet Documnetation   for Smart Assistant Application for Disabled PersonComplet Documnetation   for Smart Assistant Application for Disabled Person
Complet Documnetation for Smart Assistant Application for Disabled Person
 
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
Potsdam FH学位证,波茨坦应用技术大学毕业证书1:1制作
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Magic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptxMagic exist by Marta Loveguard - presentation.pptx
Magic exist by Marta Loveguard - presentation.pptx
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 

Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.

  • 1. Test Design and Automation for REST API Ivan Katunou
  • 2. About myself • Software Testing Team Leader and Resource Manager at Epam Systems • 11 years of experience in IT, 8 years in automated testing • Organizer of “Morning Coffee with Automation engineers” meetups • Past projects: • Epam Systems – Hyperion-Oracle • CompatibL – Sberbank, RMB • Viber Media
  • 3. Agenda 1. What is special about RESTful API applications? 2. Test design and coverage 3. Automation
  • 4. Out of scope • Web services basics • Unit, performance, security testing • How to use tools for REST API testing
  • 5. Agenda 1. What is special about RESTful API applications? 2. Test design and coverage 3. Automation
  • 7. No UI • Requires additional tools to interact with
  • 8. Message Format • XML • JSON • Others
  • 10. Requirements Except Business Ones • XSD • JSON Schema • WADL (rarely used)
  • 11. Stateless In RESTful applications, each request must contain all of the information necessary to be understood by the server, rather than be dependent on the server remembering prior requests. Storing session state on the server violates the stateless constraint of the REST architecture. So the session state must be handled entirely by the client.
  • 12. Transfer Protocol • Transfer protocol for RESTful API applications in majority of the cases is HTTP(S). • However it can also use SNMP, SMTP and others
  • 13. Implementations Differ REST is an architectural style, implementations might differ • Roy Fielding - Representational State Transfer (REST) • Richardson Maturity Model • What is the Richardson Maturity Model?
  • 14. Agenda 1. What is special about RESTful API applications? 2. Test design and coverage 3. Automation
  • 15. Test Design and Coverage What to test? How to test? What coverage is good enough?
  • 16. RESTful Services by Functionality 1. Provides data 2. Provides data based on some manipulation with data provided to the service 3. Complex operations
  • 18. Business Requirements A forecast service • Provide weather (temperature, precipitation, wind speed) forecast for next 24 hours at different locations • Provide weather forecast for tomorrow, 3 days, 6 days • Provide weather forecast at different locations • etc.
  • 20. Business Requirements A calculation service • Support math operations such as +, -, /, * with integer and float numbers • Support converting numbers from decimal to hex and binary • etc.
  • 22. Business Requirements An Internet shop • User registration • Searching and filtering products • Adding products to cart • Buying products • etc.
  • 23. Business Requirements – Summary • It is crucial to verify business requirements for RESTful applications. • Use common test design approaches (divide into submodules, boundary value analysis, equivalence partitioning, state transition testing, etc.)
  • 28. Endpoints • Find out which endpoints your web service provides • Each collection endpoint needs to be tested • At least one single resource endpoint needs to be tested for each resource type • Negative tests: • Try to request endpoint that does not exist • Try to request search/filtering/sorting with wrong parameter/value
  • 29. Search, Filtering, Sorting Endpoints that support search, filtering, sorting, etc. need to be verified with supported parameters separately and in combinations. Use boundary values, equality partitioning, pairwise testing, check special characters, max length parameters, etc. http://example.com/api/products?q=name:Keyboard&maxPrice:200 http://example.com/api/products?year:2018 http://example.com/api/products?sort:name,asc
  • 30. Pagination, Cursors • Endpoints that support pagination, cursors need to be verified with supported parameters separately and in combinations. Use boundary values, equality partitioning, pairwise testing. • For negative tests try to use limit more than max one, offset out of bounds, incorrect values • http://example.com/api/products?limit=20&offset=100
  • 33. Request Methods • GET • POST • PUT • DELETE • OPTIONS • HEAD • PATCH • TRACE • CONNECT
  • 34. Request Methods • Positive tests • For each collection endpoint and at least one single resource endpoint for each resource type verify supported request methods • Verify concurrent access to resources (DELETE and GET for example) • Negative tests • For each collection endpoint and at least one single resource endpoint for each resource type try to verify behavior for not supported request methods
  • 36. Request Headers Headers carry information for: • Request body (charset, content type) • Request authorization • etc.
  • 37. Request Headers • Positive • For each collection endpoint and at least one single resource endpoint verify all supported request methods with correct header values - with required headers only first, then with verifying optional ones one at a time and combinations. • Use boundary values, equivalence partitioning, pairwise testing. Verify special characters, Unicode text for headers, max length values. • Negative • Verify behavior in case of missing required header, one at a time • Verify behavior in case of wrong/unsupported/empty header value • Verify behavior in case of not supported header
  • 39. Request Body Adding user by sending POST request to http://example.com/api/users
  • 40. Request Body • Test for endpoints and methods that support sending request body (e. g. POST, PUT) • Verify referenced objects
  • 41. Request Body Possible negative tests for POST/PUT requests: • Field contains invalid value (not equals allowed value, out of bounds, etc) • Field of wrong data type • Field value is empty object/string • Field value is null • Required field is absent • Redundant field (“Add to customFields” example) • Empty object {} • Invalid XML/JSON • No data • Post already existing resource
  • 42. Request Body Possible negative tests for DELETE requests: • Delete non-existing resource
  • 45. Response codes • Find out which response codes might be returned by your service in which cases • Make sure they are logically related with events (404 for resource not found, 200-201 for resource created) • Try to reproduce such events and verify response codes are correct • Verifying server configuration errors usually out of scope
  • 47. Response Headers Find out which headers might be returned by your service. Test those ones that are related to your service
  • 49. Response Body Receive information on particular user using GET request to http://example.com/api/users/1
  • 50. Response Body Verify • Structure of a response • Fields • Values • Data types
  • 51. Minimal Positive Test For adding a new user
  • 52. Minimal Positive Test • Verify the response code • Send POST request • Add only required fields in the request with some correct values • Verify the body of the response • Verify service-specific headers • Add only required request headers • *In case response body is not returned on POST, send GET request for the new item or get from DB
  • 53. Other Positive Tests • Required fields only in request body • Test values for each of the fields in separate tests. Verify full response body
  • 54. Other Positive Tests • Required fields plus one optional • Test values for the optional field. Verify full response body!
  • 55. Complex Request Body • Makes sense to add at least one test with all possible fields • For testing combinations of fields pairwise testing might be leveraged
  • 56. Boundary Values for Field Values Find out boundary values - might depend on XML/JSON restrictions, DB, other components
  • 60. Rate Limits and Caching • Verify that cached responses received faster • Verify cache expiration time (right before and after) • Find out rate limits for different methods/endpoints • Try to reproduce max allowed rate limit • Try to reproduce more than max allowed rate limit
  • 61. Integration with Third Party Stubs can be used to make testing easier and faster, not dependent on actual services
  • 64. Third-Party Components No need to test third-party components. Test you application only!
  • 65. Risks
  • 66. Risks • 1. No testing at all • 2. No requests headers testing • 3. No separate fields of request body testing • 5. No status code testing • 6. No response body testing • 8. No response headers testing • 4. No field values, types, number of occurrence in request body testing • 7. Testing only specific fields in the response body
  • 68. Trusted Boundaries • Find out boundary values. “Trust CMS” example • Add notes for trusted boundaries • Verify that those boundaries are still relevant
  • 69. Using XSD, JSON Schema • In case web service uses XSD/JSON Schema validation itself additional verification might be minimized • You still need to make sure that application actually does it (check logs for example)
  • 70. Difficult to Verify Values • E. g. hash values, current time, random generated values
  • 73. Test Coverage - Summary • Main challenge - great variety of combinations parameters and values • Depends on time/resources you have and quality you need • No need to test third-party components. Test you application only! • Depends on risks you and the PO are agreed on. How service is used • Depends on trusted boundaries • Depends on additional verification using XSD, JSON Schema by the service • Depends on automated testing, parallel tests execution • Depends on unit, UI tests coverage
  • 75. Agenda 1. What is special about RESTful API applications? 2. Test design and coverage 3. Automation
  • 76. Postman • Use standalone version • Functionality to reduce routine: 1. Pre-request scripts 2. Test scripts 3. Variables, environments, globals 4. Sharing collections 5. Collection runs 6. Mock server 7. Generate code for cUrl, Java, Python, C#, etc. 8. Newman
  • 77. Java Libraries • JUnit/TestNG • RestAssured, Apache HTTP Client, other tools and libraries • Gson/Jackson (choose the one that is not used by your team’s developers • JsonAssert
  • 78. RestAssured • Usage • Not thread safe (there is a PR that might fix it)
  • 79. Test Data Where should it be located? In which format?
  • 80. Text • Can be saved as regular text/JSON files at resources folder of your test project or in DB • Hard to change • Can be used for a limited number of tests with all fields and values pre-defined • Maintenance might become a pain in the neck
  • 81. Text + Templates Apache FreeMarker Values can be stored in CSV file Still requires much effort for maintenance
  • 87. Object Mapping + Builder
  • 88. Object Mapping + Builder
  • 89. Object Mapping + Builder • The most convenient approach to work with test data • Working with business objects in tests. Technical details are encapsulated • Saving test data in files/DB is no longer needed • Builder pattern allows chaining adding details for business objects
  • 90. Object Mapping + Builder Cannot be (easily) used in the following cases: • Custom fields • Adding null values for specific fields (but not all) • Wrong data type
  • 94. Gson/Jackson Objects • The most flexible approach for working with JSON/XML in Java • Can be used where Object Mapping cannot be (easily) applied • Requires more effort on developing business objects comparing to Object Mapping • Business object cannot be used for serialization/deserialization. Use wrapped JsonObject instead with its setter and getter
  • 95. JSON Schema Validation RestAssured JSON Schema Validation
  • 97. Using DB • Update data and make verifications in DB • Disadvantages: too coupled with DB schemas that might change often and significantly
  • 98. Using Java 8 Features Lambdas and Stream API are rather useful for working with collections of data
  • 99. Independent Tests Bad Examples: • POST object in one test, GET and verify in another one • Add embedded object in one test, verify it in another one • Shared data with not thread safe access (test data, configs, connection to DB, etc)
  • 100. Kotlin Kotlin and API tests presentation by Roman Marinsky
  • 101. Automation – Tools to Investigate • SoapUI – REST and SOAP testing tool • RAML/Swagger - for documentation and contract testing • Epam JDI HTTP - Web services functional testing, RestAssured wrapper • Karate - Web services functional testing using BDD style, based on Cucumber - JVM • AWS Lambda - might be used to run API tests in parallel
  • 102. Useful links • Presentation samples • Подходы к проектированию RESTful API • Testing RESTful Services in Java: Best Practices • REST CookBook • Status codes • The JavaScript Object Notation (JSON) Data Interchange Format • Introducing JSON • OData • Тестирование API используя TypeScript. Пример технологического стека и архитектуры
  • 103. Thank You! Any Questions?
  • 104. Contacts • Ivan Katunou, Software Testing Team Leader / Resource Manager at Epam Systems (Coconut Palm test automation team) • ivan.katunou@gmail.com • @IvanKatunou (Telegram) • +375 29 259 56 42 (Viber, GSM)