Sept 11, 2019 PRESENTED BY Testing, Automation & Reporting with Postman Trent McCann - Engineering Manager, Quality Danny Dainton - Senior Quality Engineer
Speakers Danny Dainton Senior Quality Engineer Trent McCann Engineering Manager, Quality
Housekeeping • Wifi - PostmanWIFI p/POSTCON! • Washrooms / Beverages • Facilitators • Breaks
● Testing Module Part I ● Testing: Practical Exercises ● Break ● Testing Module Part II ● Testing: Practical Exercise ● Break ● Automation ● Reporting ● Workshop Wrap-up Agenda
Prerequisites
Import Collections 1. Navigate to bit.ly/POSTCON2019WORKSHOP 2. Copy the first Collection link and open up the Postman app 3. Select the Import button at the top of the app. 4. Select Import From Link tab 5. Paste the URL into the field 6. Click Import 7. Repeat for the second link
Assumptions This session assumes that attendees: ● Are comfortable making Requests in Postman ● Possess basic working knowledge of JavaScript ● Have the Latest Postman Desktop App Installed for your OS
Testing Concepts
Overview
What the Hell is API Testing? ● People generally think that API testing is a form of software testing that you need to know about before getting started ● It is testing but in a different context ● You are still: ○ Using the same test skills and techniques but applying them differently ○ Focused on mitigating risk ○ Providing information about the software under test
Why Write API Tests? ● Determine if the application under test meets expectations for functionality, reliability, performance, and security ● Ensure consistent high quality as your application grows ● Critical component for automating testing – APIs are the primary interface to application logic ● Tests at the API layer are less brittle and easier to maintain ● Most stable interface - GUI tests are not sufficient to validate all functional paths of a multi-tier architecture
Scripts • Postman contains a powerful runtime based on Node.js that allows you to add dynamic behavior to requests and collections • Allows you to write test suites, build requests that can contain dynamic parameters, pass data between requests and more • You can add JavaScript code to execute during 2 events in the flow: • Before a request is sent to the server, under the Pre-request Script tab • After a response is received, as a test script under the Tests tab
Execution Order of Scripts • A Pre-request Script associated with a request will execute before the request is sent • A Test script associated with a request will execute after the request is sent REQUEST Pre-request script REQUEST RESPONSE REQUEST test script
Collection and Folder Scripts
Pre-Request Scripts • Snippets of code associated with a collection request that are executed before the request is sent • Example use cases: • Including the timestamp in the request headers or • Sending a random alphanumeric string in the URL parameters • Can be added to a collection, a folder, or a single request within a collection • Runs prior to each request in the respective collection or folder, allowing for commonly used code to be executed prior to every request
Pre-Request Script Execution For every request in a collection, scripts will execute in the following order: • A pre-request script associated with a collection or folder will run prior to every request in the respective collection or folder REQUEST Pre-request script REQUEST FOLDER Pre-request script COLLECTION Pre-request script
Practical Exercise: Pre-Request Scripts
1. Click on the New button 2. Select Request 3. Enter a Request Name 4. Create Collection and enter name Steps 5. Enter URL https://postman-echo.com/get and hit Send 6. Click on Gear Icon 7. Click on the Add button 8. Enter a name and click Add 9. Select Environment from Dropdown
10. Select the Pre-request Script tab 11. Type: pm.environment.set("dateTime", new Date()); 12. Select the Params tab 13. Enter “date” for the key and “{{dateTime}}” for the value. Steps 14. Hit Send
Test Scripts ● JavaScript code executed after the request is sent, allowing access to the pm.response object. ● Tests run in a sandboxed environment, which is separate from the execution environment of the app ● Commonly used snippets are listed next to the editor and are a great way to build test cases ○ Select the snippet you want to add and the appropriate code will populate in the test editor
For every request in a collection, scripts will execute in the following order: • A test script associated with a collection or folder will run after every request in the respective collection or folder RESPONSE COLLECTION test script FOLDER test script REQUEST test script Test Script Execution
Practical Exercise: Test Scripts
1. Select the Tests tab 2. Select Status Code: Code is 200 Snippet 3. Select Response Time is less than 200ms Snippet 4. Edit 200ms to 100ms Steps 6. Select Test Results tab 5. Hit Send
7. Highlight and Cut the Tests from Request 8. Save Changes to the Request 9. Edit the Collection 10. Select Tests tab Steps 12. Hit Send 11. Paste Tests and click Update
Break Time
Level Up Your Testing In Postman
What do we mean by advanced techniques?
Dynamic Variables ● Postman has dynamic variables that can be used in requests ● Values are randomly generated during the request/collection run ● Established variables {{$randomInt}}, {{$timestamp}} and {{$guid}} have been included for many versions ● Random fake data can be generated using a subset of the FakerJS functions ● Can used in the URL, Headers, Request Body and also within Mock Server Examples
Chai Assertions • Using the popular and well known Chai.js library • Chai provides natural language assertions in an expressive and readable style • Chained together by a series of getters • be / been / is / and / has / have / not • Works with the pm.expect() function • The assertion always starts with the .to getter
Built-In Libraries • Lodash: JS utility library • Moment: Parse, validate, manipulate, and display dates and times in JavaScript. • Cheerio: A fast, lean implementation of the core jQuery API • Ajv: JSON schema validator. • CryptoJS: Standard and secure cryptographic algorithms. • xml2Json: Simple XML to JSON Convertor.
Postman Console • Debugging scripts can be written under either the Pre-request Script tab or the Tests tab, with helpful messages logged in the Postman Console. • The Postman Console is analogous to a browser’s version of Developer console, except that it’s tuned for API development. • If an API or API test is not behaving as you expect, this would be the place where you will go to deep dive while debugging the same. ● The Postman Console can be compared to a browser’s Developer console, but tuned for API development ● When debug scripts are written under the Pre-request Script or Test tabs, helpful messages will be logged in the Postman Console ● If an API or API test is not behaving as expected, the console will assist with debugging
What Does it Do? • Logs the request that was sent, including all the underlying request headers, status code etc. • Logs the exact response sent by the server • Displays what proxy and certificates were used for the request • Shows error logs from Test or Pre-request Scripts • Allows the console.log() statement to be used from inside sandbox
Console.log(); Your New Best Friend • JS method used to write messages to the debug console • Can be used for debugging your test scripts and capturing key information from the test runs
Practical Exercise: Advanced Techniques
Module Review
Break Time
Automation Made Easy
Overview
Collection Runner • Collections are groups of requests that can be run together as a series of requests, against a corresponding environment. • Running a collection is useful when you want to automate API testing. When you run a collection, you send all requests in your collection one after another. • When you use scripts, you can build integration test suites, pass data between API requests, and build workflows that mirror your actual use case of APIs. ● Collections are groups of requests that can be run together as a series, against a corresponding environment ● Enables automation of API test collections ● When a collection is run, all requests in the collection will be sent one after another ● Using scripts allows you to: ○ Build integration test suites ○ Pass data between API requests ○ Build workflows that mirror API use cases
Practical Exercise: Collection Runner
Steps 1. Navigate to the Collections tab 2. Click on the Navigation arrow and hit Run 3. Click on the Run “collection name” button 4. Run Results 5. Click on request name
Meet Newman
What is Newman? ● A globally installed NPM package ● A Collection Runner for Postman that runs directly from the command line ● Easily integrates with continuous integration servers and build systems ● Maintains feature parity with the Postman App ● Allows Collections to be run the way they are executed in the Postman app collection runner ● Built as a library - can be extended and used flexibly ● Collection run reports can be generated using different custom reporters
newman run -h
Newman In Action
CI/CD • Newman can run on popular CI/CD frameworks such as Jenkins, Travis, CircleCI and even Azure (via VSTS). • Provides a streamlined way to run Newman in a Docker container without operating system dependencies or environment setup
Newman + Jenkins Demo
Module Review
Break Time
Reporting: “And that’s the way it is.”
Overview
Why Do We Create Reports? Reports are generally created to communicate information to some person, The type of report and the details about what it should contain, will differ from person to person. Things to consider when creating reports: ● The report's intended audience ● The report's purpose ● The type of information to be communicated
Reporters Created By Postman
Standard Newman Reporters CLI This is the default reporter that comes with Newman and is the standard output that you will see. There are a number of different configurable options/cli arguments available to present that out in specific ways. JUNIT This reporter will create an XML file containing the all high level test result data, this can be picked by CI tools like Jenkins to display a graphical representation of the overall test coverage
PROGRESS [=======]
EMOJITRAIN 😀😀😀😍
Reporters Created By The Postman Community
NPM Packages
StatsD
Slack
A new take on a modern classic... HTMLEXTRA Report bit.ly/newmanhtmlextra Postman HTML Report bit.ly/newmanhtml
Module Review
Review ● Testing within Postman can be an effective way to give you confidence that your API endpoints are returning the correct information without having to manually confirm this on each request ● Postman is packed full of different helpers, libraries and utilities that can enable you to create more complex test suites ● Automating a Collection within the App is super simple using the Built In Runner ● You can use Newman to run your Collections from either the Command Line or easily integrate into your CI systems
Recommended Resources ● Postman Community - https://community.getpostman.com ● Learning Centre - https://learning.getpostman.com ● GitHub Repo - https://github.com/postmanlabs/postman-app-support ● Support Portal - https://support.getpostman.com/hc Trent ca/linkedin.com/in/trentmccann @Postman_Trent Danny uk/linkedin.com/in/dannydainton @DannyDainton Keep In Touch!
Workshop Resources bit.ly/POSTCON2019WORKSHOP
Thank You and Goodbye

POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with Postman

  • 1.
    Sept 11, 2019 PRESENTEDBY Testing, Automation & Reporting with Postman Trent McCann - Engineering Manager, Quality Danny Dainton - Senior Quality Engineer
  • 2.
    Speakers Danny Dainton Senior QualityEngineer Trent McCann Engineering Manager, Quality
  • 3.
    Housekeeping • Wifi -PostmanWIFI p/POSTCON! • Washrooms / Beverages • Facilitators • Breaks
  • 4.
    ● Testing ModulePart I ● Testing: Practical Exercises ● Break ● Testing Module Part II ● Testing: Practical Exercise ● Break ● Automation ● Reporting ● Workshop Wrap-up Agenda
  • 5.
  • 6.
    Import Collections 1. Navigateto bit.ly/POSTCON2019WORKSHOP 2. Copy the first Collection link and open up the Postman app 3. Select the Import button at the top of the app. 4. Select Import From Link tab 5. Paste the URL into the field 6. Click Import 7. Repeat for the second link
  • 7.
    Assumptions This session assumesthat attendees: ● Are comfortable making Requests in Postman ● Possess basic working knowledge of JavaScript ● Have the Latest Postman Desktop App Installed for your OS
  • 8.
  • 9.
  • 10.
    What the Hellis API Testing? ● People generally think that API testing is a form of software testing that you need to know about before getting started ● It is testing but in a different context ● You are still: ○ Using the same test skills and techniques but applying them differently ○ Focused on mitigating risk ○ Providing information about the software under test
  • 11.
    Why Write APITests? ● Determine if the application under test meets expectations for functionality, reliability, performance, and security ● Ensure consistent high quality as your application grows ● Critical component for automating testing – APIs are the primary interface to application logic ● Tests at the API layer are less brittle and easier to maintain ● Most stable interface - GUI tests are not sufficient to validate all functional paths of a multi-tier architecture
  • 12.
    Scripts • Postman containsa powerful runtime based on Node.js that allows you to add dynamic behavior to requests and collections • Allows you to write test suites, build requests that can contain dynamic parameters, pass data between requests and more • You can add JavaScript code to execute during 2 events in the flow: • Before a request is sent to the server, under the Pre-request Script tab • After a response is received, as a test script under the Tests tab
  • 13.
    Execution Order ofScripts • A Pre-request Script associated with a request will execute before the request is sent • A Test script associated with a request will execute after the request is sent REQUEST Pre-request script REQUEST RESPONSE REQUEST test script
  • 14.
  • 15.
    Pre-Request Scripts • Snippetsof code associated with a collection request that are executed before the request is sent • Example use cases: • Including the timestamp in the request headers or • Sending a random alphanumeric string in the URL parameters • Can be added to a collection, a folder, or a single request within a collection • Runs prior to each request in the respective collection or folder, allowing for commonly used code to be executed prior to every request
  • 16.
    Pre-Request Script Execution Forevery request in a collection, scripts will execute in the following order: • A pre-request script associated with a collection or folder will run prior to every request in the respective collection or folder REQUEST Pre-request script REQUEST FOLDER Pre-request script COLLECTION Pre-request script
  • 17.
  • 18.
    1. Click onthe New button 2. Select Request 3. Enter a Request Name 4. Create Collection and enter name Steps 5. Enter URL https://postman-echo.com/get and hit Send 6. Click on Gear Icon 7. Click on the Add button 8. Enter a name and click Add 9. Select Environment from Dropdown
  • 19.
    10. Select thePre-request Script tab 11. Type: pm.environment.set("dateTime", new Date()); 12. Select the Params tab 13. Enter “date” for the key and “{{dateTime}}” for the value. Steps 14. Hit Send
  • 20.
    Test Scripts ● JavaScriptcode executed after the request is sent, allowing access to the pm.response object. ● Tests run in a sandboxed environment, which is separate from the execution environment of the app ● Commonly used snippets are listed next to the editor and are a great way to build test cases ○ Select the snippet you want to add and the appropriate code will populate in the test editor
  • 21.
    For every requestin a collection, scripts will execute in the following order: • A test script associated with a collection or folder will run after every request in the respective collection or folder RESPONSE COLLECTION test script FOLDER test script REQUEST test script Test Script Execution
  • 22.
  • 23.
    1. Select theTests tab 2. Select Status Code: Code is 200 Snippet 3. Select Response Time is less than 200ms Snippet 4. Edit 200ms to 100ms Steps 6. Select Test Results tab 5. Hit Send
  • 24.
    7. Highlight andCut the Tests from Request 8. Save Changes to the Request 9. Edit the Collection 10. Select Tests tab Steps 12. Hit Send 11. Paste Tests and click Update
  • 25.
  • 26.
    Level Up YourTesting In Postman
  • 27.
    What do wemean by advanced techniques?
  • 28.
    Dynamic Variables ● Postmanhas dynamic variables that can be used in requests ● Values are randomly generated during the request/collection run ● Established variables {{$randomInt}}, {{$timestamp}} and {{$guid}} have been included for many versions ● Random fake data can be generated using a subset of the FakerJS functions ● Can used in the URL, Headers, Request Body and also within Mock Server Examples
  • 29.
    Chai Assertions • Usingthe popular and well known Chai.js library • Chai provides natural language assertions in an expressive and readable style • Chained together by a series of getters • be / been / is / and / has / have / not • Works with the pm.expect() function • The assertion always starts with the .to getter
  • 30.
    Built-In Libraries • Lodash:JS utility library • Moment: Parse, validate, manipulate, and display dates and times in JavaScript. • Cheerio: A fast, lean implementation of the core jQuery API • Ajv: JSON schema validator. • CryptoJS: Standard and secure cryptographic algorithms. • xml2Json: Simple XML to JSON Convertor.
  • 31.
    Postman Console • Debuggingscripts can be written under either the Pre-request Script tab or the Tests tab, with helpful messages logged in the Postman Console. • The Postman Console is analogous to a browser’s version of Developer console, except that it’s tuned for API development. • If an API or API test is not behaving as you expect, this would be the place where you will go to deep dive while debugging the same. ● The Postman Console can be compared to a browser’s Developer console, but tuned for API development ● When debug scripts are written under the Pre-request Script or Test tabs, helpful messages will be logged in the Postman Console ● If an API or API test is not behaving as expected, the console will assist with debugging
  • 32.
    What Does itDo? • Logs the request that was sent, including all the underlying request headers, status code etc. • Logs the exact response sent by the server • Displays what proxy and certificates were used for the request • Shows error logs from Test or Pre-request Scripts • Allows the console.log() statement to be used from inside sandbox
  • 33.
    Console.log(); Your New Best Friend •JS method used to write messages to the debug console • Can be used for debugging your test scripts and capturing key information from the test runs
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
    Collection Runner • Collectionsare groups of requests that can be run together as a series of requests, against a corresponding environment. • Running a collection is useful when you want to automate API testing. When you run a collection, you send all requests in your collection one after another. • When you use scripts, you can build integration test suites, pass data between API requests, and build workflows that mirror your actual use case of APIs. ● Collections are groups of requests that can be run together as a series, against a corresponding environment ● Enables automation of API test collections ● When a collection is run, all requests in the collection will be sent one after another ● Using scripts allows you to: ○ Build integration test suites ○ Pass data between API requests ○ Build workflows that mirror API use cases
  • 40.
  • 41.
    Steps 1. Navigate tothe Collections tab 2. Click on the Navigation arrow and hit Run 3. Click on the Run “collection name” button 4. Run Results 5. Click on request name
  • 42.
  • 43.
    What is Newman? ●A globally installed NPM package ● A Collection Runner for Postman that runs directly from the command line ● Easily integrates with continuous integration servers and build systems ● Maintains feature parity with the Postman App ● Allows Collections to be run the way they are executed in the Postman app collection runner ● Built as a library - can be extended and used flexibly ● Collection run reports can be generated using different custom reporters
  • 44.
  • 45.
  • 49.
    CI/CD • Newmancan run on popular CI/CD frameworks such as Jenkins, Travis, CircleCI and even Azure (via VSTS). • Provides a streamlined way to run Newman in a Docker container without operating system dependencies or environment setup
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
    Why Do WeCreate Reports? Reports are generally created to communicate information to some person, The type of report and the details about what it should contain, will differ from person to person. Things to consider when creating reports: ● The report's intended audience ● The report's purpose ● The type of information to be communicated
  • 56.
  • 57.
    Standard Newman Reporters CLI Thisis the default reporter that comes with Newman and is the standard output that you will see. There are a number of different configurable options/cli arguments available to present that out in specific ways. JUNIT This reporter will create an XML file containing the all high level test result data, this can be picked by CI tools like Jenkins to display a graphical representation of the overall test coverage
  • 58.
  • 59.
  • 60.
    Reporters Created ByThe Postman Community
  • 61.
  • 62.
  • 63.
  • 64.
    A new takeon a modern classic... HTMLEXTRA Report bit.ly/newmanhtmlextra Postman HTML Report bit.ly/newmanhtml
  • 65.
  • 66.
    Review ● Testing withinPostman can be an effective way to give you confidence that your API endpoints are returning the correct information without having to manually confirm this on each request ● Postman is packed full of different helpers, libraries and utilities that can enable you to create more complex test suites ● Automating a Collection within the App is super simple using the Built In Runner ● You can use Newman to run your Collections from either the Command Line or easily integrate into your CI systems
  • 67.
    Recommended Resources ● PostmanCommunity - https://community.getpostman.com ● Learning Centre - https://learning.getpostman.com ● GitHub Repo - https://github.com/postmanlabs/postman-app-support ● Support Portal - https://support.getpostman.com/hc Trent ca/linkedin.com/in/trentmccann @Postman_Trent Danny uk/linkedin.com/in/dannydainton @DannyDainton Keep In Touch!
  • 68.
  • 69.