SlideShare a Scribd company logo
REST API testing with 
SpecFlow 
Aistė Stikliūtė @ Visma Lietuva
Agenda 
Why SpecFlow REST API How to 
Details & tips Live demo 
Bonus: 
other uses of 
SpecFlow
Why SpecFlow 
• SoapUI? 
• Fitnesse? 
• Cucumber?
Why not… 
 SoapUI 
 Free version issues 
 Tests less easy to read 
 Thought there was no CI 
 Fitnesse 
 Works poorly with .NET 
 Wiki markup and tables interface is tiring 
 Cucumber 
 Yes – SpecFlow is Cucumber for .NET!
Continuous integration
BDD / Gherkin language 
GIVEN book with ISBN “1-84356-028-3” is in the system 
AND it’s available quantity is 9 
WHEN I add a book with ISBN “1-84356-028-3” 
THEN the book is successfully added to the list 
AND available qty. for book with ISBN “1-84356-028-3” is 10
The environment 
Same tool as 
for GUI tests 
(Visual Studio, 
C#) 
Same solution 
as GUI tests 
and even the 
whole system 
Convenient! 
Developers are 
integrated!
Rest API 
• What it is 
• Examples 
• Why test it
REST API 
 Web architectural style with a set of constraints 
 Web service APIs that adhere to the constraints - RESTful 
Frontend 
REST API 
Backend 
External 
system(s) 
External 
system(s)
Rest API: typically used HTTP methods 
Resource GET PUT POST DELETE 
Collection URI, 
such as 
http://example.com/res 
ources 
List 
collection's 
members 
Replace 
collection with 
another 
collection 
Create new 
entry in the 
collection 
Delete the 
entire 
collection 
Element URI, 
such as 
http://example.com/res 
ources/item17 
Retrieve 
the member 
of the 
collection 
Replace the 
member of the 
collection 
Not generally 
used 
Delete the 
member of the 
collection
Example 1 
Request 
 GET https://eshop.com/books/14765 
Response 
 Status: 200 OK 
{ 
"id": “14765", 
“title": “Game of Thrones", 
“author": “George R. R. Martin", 
“isbn": "1-84356-028-3", 
“availableQty": “4" 
}
Example 2 
Request 
 POST https://eshop.com/books 
{ 
“title": “501 Spanish Verbs", 
“author": “C. Kendris", 
“isbn": "1-84750-018-7", 
“availableQty": “10" 
} 
Response 
 Status: 200 OK 
{ 
“id": “78953“ 
}
Example 3 
Requests 
 DELETE 
https://eshop.com/book/84523 
 GET https://eshop.com/admin 
 PUT https://eshop.com/book/24552 
{ [some wrong data] } 
Responses 
 Status: 200 OK 
 Status: 401 Unauthorized 
 Status: 500 Internal Server Error
Why test Rest API? 
 If used by external applications: this is your UI! 
 As your system layer: 
 Can help find / isolate problems: 
Security 
Performance 
Robustness 
Functionality 
 May be more simple to test / automate than GUI tests
How to… 
…write tests
Step 1: know what your API should do 
 Documentation 
 Talk to developers 
 Browser’s Developer tools 
 REST client (e.g. Postman on Chrome)
Dev tools + REST client
Step 2: write your test scenarios 
 ListBooks.feature 
Scenario: There are no books in the system 
Given there are no books in the system 
When I retrieve list of all books 
Then I get empty list 
Scenario: There are less books than fit into 1 page 
Scenario: There are more books than fit into 1 page 
Scenario: Sort books 
Scenario: Search for a book
Step 3: generate scenario steps 
[Given(@”there are no books in the list”)] 
public void GivenThereAreNoBooksInTheList() 
{ 
ScenarioContext.Current.Pending(); 
}
Step 4: implement scenario steps 
 Here‘s where the Rest API calls go! 
 Plain C# can be used or libraries // I use RestSharp 
 Structure your project
Project structure 
 Features: all features, can have subfolders 
 Steps: bindings of features to actions 
 Actions: where things happen 
 Helpers: among others, RestHelper.cs 
 Model: classes matching our API data format 
 App.config: holds base URI
A quick look into code: Steps & Actions 
Steps 
Actions
A quick look into code: Model
A quick look into code: RestHelper.cs
Step 5: run tests
Step 6: add to Continuous Integration
Details & Tips
Hooks (event bindings) 
 Before / after test run  static 
 Before / after feature  static 
 Before / after scenario 
 Before / after scenario block (given / when / then) 
 Before / after step
Step scope and reusing 
 Steps are global! 
 Naming: “when I update it”  “when I update the book” 
 Scoped bindings: 
[Scope(Tag="my tag", Feature=“my feature", Scenario=“my scenario")] 
 Reusing step in other steps 
[Given(@"(.*) is logged in")] 
public void GivenIsLoggedIn(string name) { 
Given(string.Format("the user {0} exists", name)); 
Given(string.Format("I log in as {0}", name)); 
}
Table and multiline step arguments
Live Demo
Bonus 
Other uses of SpecFlow
Behaviour / 
Business Driven Development 
1. PO / QA writes scenarios 
2. Developer writes unit/integration tests 
3. Developer writes code until tests pass
Driving Selenium tests 
Scenario: Successful login 
Given I am at http://eshop.com/login 
When I login with user “John” and password “Password1” 
Then I am redirected to http://eshop.com/main 
Scenario: Successful login 
Given I am in login page 
When I login with correct credentials 
Then I am redirected to main page
SpecFlow & Selenium 
using scoped bindings 
[When(@"I perform a simple search on '(.*)'", Scope(Tag = “api"))] 
public void WhenIPerformASimpleSearchOn(string searchTerm) { 
var api = new CatalogApi(); 
actionResult = api.Search(searchTerm); 
} 
[When(@"I perform a simple search on '(.*)'"), Scope(Tag = "web")] 
public void PerformSimpleSearch(string title) { 
selenium.GoToThePage("Home"); selenium.Type("searchTerm", title); 
selenium.Click("searchButton"); 
}
Test case management / Test reporting 
 One functional test suite? 
 Manual 
 Automated API 
 Automated GUI 
 One report with test list that can be read by 
 POs and manual QAs 
 management 
 customer
Thank you! 
Time for questions 

More Related Content

What's hot (20)

PDF
API Testing
Bikash Sharma
 
PDF
Behavior Driven Development with SpecFlow
Rachid Kherrazi
 
PPTX
B4USolution_API-Testing
b4usolution .
 
PPTX
RESTful API Testing using Postman, Newman, and Jenkins
QASymphony
 
PPTX
POSTMAN.pptx
RamaKrishna970827
 
PPTX
Api testing
HamzaMajid13
 
PPTX
Test automation
Xavier Yin
 
PPT
Test Automation Best Practices (with SOA test approach)
Leonard Fingerman
 
PPT
Automation testing
Biswajit Pratihari
 
PDF
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
Postman
 
PPTX
Api testing
Keshav Kashyap
 
PPTX
Belajar Postman test runner
Fachrul Choliluddin
 
PDF
API Testing: The heart of functional testing" with Bj Rollison
TEST Huddle
 
PDF
Postman Webinar: “Continuous Testing with Postman”
Postman
 
PPTX
Api Testing
Vishwanath KC
 
PDF
4 Major Advantages of API Testing
QASource
 
PPTX
Testing RESTful web services with REST Assured
Bas Dijkstra
 
PPTX
Unit Tests And Automated Testing
Lee Englestone
 
PPT
Test automation process
Bharathi Krishnamurthi
 
PDF
Getting started with karate dsl
Knoldus Inc.
 
API Testing
Bikash Sharma
 
Behavior Driven Development with SpecFlow
Rachid Kherrazi
 
B4USolution_API-Testing
b4usolution .
 
RESTful API Testing using Postman, Newman, and Jenkins
QASymphony
 
POSTMAN.pptx
RamaKrishna970827
 
Api testing
HamzaMajid13
 
Test automation
Xavier Yin
 
Test Automation Best Practices (with SOA test approach)
Leonard Fingerman
 
Automation testing
Biswajit Pratihari
 
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...
Postman
 
Api testing
Keshav Kashyap
 
Belajar Postman test runner
Fachrul Choliluddin
 
API Testing: The heart of functional testing" with Bj Rollison
TEST Huddle
 
Postman Webinar: “Continuous Testing with Postman”
Postman
 
Api Testing
Vishwanath KC
 
4 Major Advantages of API Testing
QASource
 
Testing RESTful web services with REST Assured
Bas Dijkstra
 
Unit Tests And Automated Testing
Lee Englestone
 
Test automation process
Bharathi Krishnamurthi
 
Getting started with karate dsl
Knoldus Inc.
 

Viewers also liked (12)

PPT
Presentation for soap ui
Anjali Rao
 
PPT
SOAP-UI The Web service Testing
Ganesh Mandala
 
PPT
Soa testing soap ui (2)
Knoldus Inc.
 
PPTX
Getting Started with API Security Testing
SmartBear
 
PPTX
Testing soapui
Shahid Shaik
 
PPTX
Testing Agile Web Services from soapUI
PLM Mechanic .
 
PPTX
An introduction to api testing | David Tzemach
David Tzemach
 
PPT
Ppt of soap ui
pkslide28
 
PPTX
Testing web services
Taras Lytvyn
 
PPTX
Learn SoapUI
David Ionut
 
PDF
Web Services Automated Testing via SoapUI Tool
Sperasoft
 
Presentation for soap ui
Anjali Rao
 
SOAP-UI The Web service Testing
Ganesh Mandala
 
Soa testing soap ui (2)
Knoldus Inc.
 
Getting Started with API Security Testing
SmartBear
 
Testing soapui
Shahid Shaik
 
Testing Agile Web Services from soapUI
PLM Mechanic .
 
An introduction to api testing | David Tzemach
David Tzemach
 
Ppt of soap ui
pkslide28
 
Testing web services
Taras Lytvyn
 
Learn SoapUI
David Ionut
 
Web Services Automated Testing via SoapUI Tool
Sperasoft
 
Ad

Similar to REST API testing with SpecFlow (20)

PDF
PDF_Article
Akhil Mittal
 
PPTX
Soap UI and postman
Tushar Agarwal
 
PPTX
Test Design and Automation for REST API
Ivan Katunou
 
PPTX
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
COMAQA.BY
 
PDF
TEST PPTBCHDBHBHBHVBHJEFVHJVBFHVBFHVBHFVBFHVHFVBFHVBHFVBFHVBFHVBFVBFVBHVBVBFHVB
utsavaggarwal8
 
PDF
Next-Level API Automation Testing Techniques – Part 1
digitaljignect
 
PDF
API Testing Interview Preparation and Methods
VivekanandaSamantra2
 
PPTX
Building Software Backend (Web API)
Alexander Goida
 
PPTX
API testing - Japura.pptx
TharindaLiyanage1
 
PPTX
REST Api Tips and Tricks
Maksym Bruner
 
PDF
RESTful Day 7
Akhil Mittal
 
PPTX
API Design- Best Practices
Prakash Bhandari
 
PPTX
Apitesting.pptx
NamanVerma88
 
PPTX
API tESTUBGDBCJBCJFBCJBFBVJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ...
utsavaggarwal8
 
PPTX
Webservices: The RESTful Approach
Mushfekur Rahman
 
PPTX
Automation_June_2021.pptx
ManikandanBalasubram17
 
PDF
Modern REST API design principles and rules.pdf
Aparna Sharma
 
PDF
Writing RESTful Web Services
Paul Boocock
 
PDF
Next-Level API Automation Testing Techniques – Part 2
digitaljignect
 
PDF
Webservices Testing PPT.pdf
AbhishekDhotre4
 
PDF_Article
Akhil Mittal
 
Soap UI and postman
Tushar Agarwal
 
Test Design and Automation for REST API
Ivan Katunou
 
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.
COMAQA.BY
 
TEST PPTBCHDBHBHBHVBHJEFVHJVBFHVBFHVBHFVBFHVHFVBFHVBHFVBFHVBFHVBFVBFVBHVBVBFHVB
utsavaggarwal8
 
Next-Level API Automation Testing Techniques – Part 1
digitaljignect
 
API Testing Interview Preparation and Methods
VivekanandaSamantra2
 
Building Software Backend (Web API)
Alexander Goida
 
API testing - Japura.pptx
TharindaLiyanage1
 
REST Api Tips and Tricks
Maksym Bruner
 
RESTful Day 7
Akhil Mittal
 
API Design- Best Practices
Prakash Bhandari
 
Apitesting.pptx
NamanVerma88
 
API tESTUBGDBCJBCJFBCJBFBVJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ...
utsavaggarwal8
 
Webservices: The RESTful Approach
Mushfekur Rahman
 
Automation_June_2021.pptx
ManikandanBalasubram17
 
Modern REST API design principles and rules.pdf
Aparna Sharma
 
Writing RESTful Web Services
Paul Boocock
 
Next-Level API Automation Testing Techniques – Part 2
digitaljignect
 
Webservices Testing PPT.pdf
AbhishekDhotre4
 
Ad

Recently uploaded (20)

PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Digital Circuits, important subject in CS
contactparinay1
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 

REST API testing with SpecFlow

  • 1. REST API testing with SpecFlow Aistė Stikliūtė @ Visma Lietuva
  • 2. Agenda Why SpecFlow REST API How to Details & tips Live demo Bonus: other uses of SpecFlow
  • 3. Why SpecFlow • SoapUI? • Fitnesse? • Cucumber?
  • 4. Why not…  SoapUI  Free version issues  Tests less easy to read  Thought there was no CI  Fitnesse  Works poorly with .NET  Wiki markup and tables interface is tiring  Cucumber  Yes – SpecFlow is Cucumber for .NET!
  • 6. BDD / Gherkin language GIVEN book with ISBN “1-84356-028-3” is in the system AND it’s available quantity is 9 WHEN I add a book with ISBN “1-84356-028-3” THEN the book is successfully added to the list AND available qty. for book with ISBN “1-84356-028-3” is 10
  • 7. The environment Same tool as for GUI tests (Visual Studio, C#) Same solution as GUI tests and even the whole system Convenient! Developers are integrated!
  • 8. Rest API • What it is • Examples • Why test it
  • 9. REST API  Web architectural style with a set of constraints  Web service APIs that adhere to the constraints - RESTful Frontend REST API Backend External system(s) External system(s)
  • 10. Rest API: typically used HTTP methods Resource GET PUT POST DELETE Collection URI, such as http://example.com/res ources List collection's members Replace collection with another collection Create new entry in the collection Delete the entire collection Element URI, such as http://example.com/res ources/item17 Retrieve the member of the collection Replace the member of the collection Not generally used Delete the member of the collection
  • 11. Example 1 Request  GET https://eshop.com/books/14765 Response  Status: 200 OK { "id": “14765", “title": “Game of Thrones", “author": “George R. R. Martin", “isbn": "1-84356-028-3", “availableQty": “4" }
  • 12. Example 2 Request  POST https://eshop.com/books { “title": “501 Spanish Verbs", “author": “C. Kendris", “isbn": "1-84750-018-7", “availableQty": “10" } Response  Status: 200 OK { “id": “78953“ }
  • 13. Example 3 Requests  DELETE https://eshop.com/book/84523  GET https://eshop.com/admin  PUT https://eshop.com/book/24552 { [some wrong data] } Responses  Status: 200 OK  Status: 401 Unauthorized  Status: 500 Internal Server Error
  • 14. Why test Rest API?  If used by external applications: this is your UI!  As your system layer:  Can help find / isolate problems: Security Performance Robustness Functionality  May be more simple to test / automate than GUI tests
  • 16. Step 1: know what your API should do  Documentation  Talk to developers  Browser’s Developer tools  REST client (e.g. Postman on Chrome)
  • 17. Dev tools + REST client
  • 18. Step 2: write your test scenarios  ListBooks.feature Scenario: There are no books in the system Given there are no books in the system When I retrieve list of all books Then I get empty list Scenario: There are less books than fit into 1 page Scenario: There are more books than fit into 1 page Scenario: Sort books Scenario: Search for a book
  • 19. Step 3: generate scenario steps [Given(@”there are no books in the list”)] public void GivenThereAreNoBooksInTheList() { ScenarioContext.Current.Pending(); }
  • 20. Step 4: implement scenario steps  Here‘s where the Rest API calls go!  Plain C# can be used or libraries // I use RestSharp  Structure your project
  • 21. Project structure  Features: all features, can have subfolders  Steps: bindings of features to actions  Actions: where things happen  Helpers: among others, RestHelper.cs  Model: classes matching our API data format  App.config: holds base URI
  • 22. A quick look into code: Steps & Actions Steps Actions
  • 23. A quick look into code: Model
  • 24. A quick look into code: RestHelper.cs
  • 25. Step 5: run tests
  • 26. Step 6: add to Continuous Integration
  • 28. Hooks (event bindings)  Before / after test run  static  Before / after feature  static  Before / after scenario  Before / after scenario block (given / when / then)  Before / after step
  • 29. Step scope and reusing  Steps are global!  Naming: “when I update it”  “when I update the book”  Scoped bindings: [Scope(Tag="my tag", Feature=“my feature", Scenario=“my scenario")]  Reusing step in other steps [Given(@"(.*) is logged in")] public void GivenIsLoggedIn(string name) { Given(string.Format("the user {0} exists", name)); Given(string.Format("I log in as {0}", name)); }
  • 30. Table and multiline step arguments
  • 32. Bonus Other uses of SpecFlow
  • 33. Behaviour / Business Driven Development 1. PO / QA writes scenarios 2. Developer writes unit/integration tests 3. Developer writes code until tests pass
  • 34. Driving Selenium tests Scenario: Successful login Given I am at http://eshop.com/login When I login with user “John” and password “Password1” Then I am redirected to http://eshop.com/main Scenario: Successful login Given I am in login page When I login with correct credentials Then I am redirected to main page
  • 35. SpecFlow & Selenium using scoped bindings [When(@"I perform a simple search on '(.*)'", Scope(Tag = “api"))] public void WhenIPerformASimpleSearchOn(string searchTerm) { var api = new CatalogApi(); actionResult = api.Search(searchTerm); } [When(@"I perform a simple search on '(.*)'"), Scope(Tag = "web")] public void PerformSimpleSearch(string title) { selenium.GoToThePage("Home"); selenium.Type("searchTerm", title); selenium.Click("searchButton"); }
  • 36. Test case management / Test reporting  One functional test suite?  Manual  Automated API  Automated GUI  One report with test list that can be read by  POs and manual QAs  management  customer
  • 37. Thank you! Time for questions 

Editor's Notes

  • #10: Client-server, stateless, cacheable, layered system, code on demand (client-side, optional), uniform interface: identification of resources, manipulation of resources, self-descriptive messages, hypermedia as the engine of the application state.
  • #15: If I don’t see it in the UI but can access through API – it’s not secured good enough! Unnecessary API calls made / too much info returned – performance Misuse of the API finds bugs (insert duplicate record  error retrieving list) Fields you don’t see in UI may be wrong, or just looking from another point of view helps find bugs
  • #19: In SpecFlow, test scenarios are grouped by features into dedicated feature files Good example why API needs to be tested. It may be implemented the way that API returns and error if there are no books, but it should be an empty list based on RESTful constraints. GUI might simply display no books if there‘s an error, so you will think all is good. Then you might also wonder if it‘s OK that API returns an error but API doesn‘t show it.
  • #30: Binding to feature is an anti-pattern, but there are other good uses to scoped bindings, like tags for differentiating between API and GUI tests Reusing like in this example is for making our steps shorter. In test console we’ll see inner steps. So far I haven’t used this as I found moving out Rest API calls to separate classes is enough, but I can see where it would make sense to use it.
  • #33: API testing is just one possible use of SpecFlow
  • #35: And in Steps all Webdriver logic can be placed. PageObject pattern can still be used at it’s fullest. For example, just the way we have Model classes, we can have Page classes. The slide shows the style that should not and should be used in scenarios.