Functional Testing Strategies and Tools Overview

 
Mock Objects
in
Functional Testing
 
Sven Rosvall
 
Dimension Data
Cloud Business Unit
 
 
Testing Lifecycle
 
Unit
 Testing
 
Functional Testing
 
System Testing
 
Production
 
 
Test Responsibilities
 
Test Environments
Test Environment
 
Test Environments
Test in Production
 
Test in Production
 
Test Environments
 
Functional Testing
 
Mocking Dependent Services
 
Goals:
Mimic required functionality for testing
Easy to maintain and to deploy
Verify requests
Control expected responses
Remove indirect dependencies
 
Modes of communication
 
Synchronous Requests
Asynchronous Messages
Files
Shared memory
Database updates and triggers
Mocking an HTTP service
Simple mock HTTP service
 
 
Embedded HTTP service within test program
 
WireMock
String responsePayload = fromFile(
"GetDeviceResponse_ok.json"
);
stubFor
(
get
(
urlEqualTo
(
"/api/device?limit=100"
        
+ 
"&filter.component_unique_id=" 
+ vmRefId
        + 
"&filter.component_root_device=" 
+ vcenterDID))
    .withHeader(
"Authorization"
, 
equalTo
(
"Basic "
        
+ 
new 
String(
basicAuth
, Charset.
forName
(
"UTF-8"
))))
    .willReturn(
aResponse
()
        .withHeader(
"Content-Type"
, 
"application/json"
)
        .withStatus(HttpStatus.
SC_OK
)
        .withBody(responsePayload)));
@Rule
public 
WireMockRule 
wireMockRule 
= 
new 
WireMockRule(
PORT
);
Asynchronous Communication
 
Proprietary Communication
 
Protocol is hidden in a client library.
Protocol is verbose and complex.
 
Solution: Mock Client Library
 
Mock Client Library
 
Use a back door connection for:
Response data
Inspecting request data
Control exceptions
Backdoor runs in its own thread.
May require care when serializing data.
Use same technology as is used for the service’s
inputs.
 
Application state
 
Database Usage
 
Database stores state.
Database as part of the application?
Resetting content between tests.
Mocking Database Access Layer
 
Database and Application
 
Database Preparation
 
Use a golden image of database for quick start.
May contain lots of static data.
Recreate schema and data
Recreate data only
Roll-back data changed during test
 
Prepare test specific data
Tests that don’t update database
 
Inputs and outputs
 
For a stateless service
Identify input stimuli and the side effects they
cause.
Split each scenario to include one stimulus only.
 
Input Stimuli
 
HTTP requests
Messages
Database triggers
File creation
Minimize test scenario scopes
 
 
Questions
 
Slide Note

Some slides are animated. They look quite messy unless viewed in slideshow mode.

Embed
Share

Explore functional testing concepts, strategies, and tools through a collection of detailed images covering topics such as mock objects, unit testing, test environments, and testing in production. Learn about mocking dependent services, modes of communication, and strategies for testing in various environments.


Uploaded on Sep 07, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Mock Objects in Functional Testing Sven Rosvall

  2. Dimension Data Cloud Business Unit

  3. Testing Lifecycle

  4. Unit Testing

  5. Functional Testing

  6. System Testing

  7. Production

  8. Test Responsibilities

  9. Test Environments

  10. Test Environment

  11. Test Environments

  12. Test in Production

  13. Test in Production

  14. Test Environments

  15. Functional Testing Test Frame- work

  16. Mocking Dependent Services Goals: Mimic required functionality for testing Easy to maintain and to deploy Verify requests Control expected responses Remove indirect dependencies

  17. Modes of communication Synchronous Requests Asynchronous Messages Files Shared memory Database updates and triggers

  18. Mocking an HTTP service Simple mock HTTP service Mock Service Test Harness Embedded HTTP service within test program Test Harness Mock Service

  19. WireMock @Rule public WireMockRule wireMockRule = new WireMockRule(PORT); String responsePayload = fromFile("GetDeviceResponse_ok.json"); stubFor(get(urlEqualTo("/api/device?limit=100" + "&filter.component_unique_id=" + vmRefId + "&filter.component_root_device=" + vcenterDID)) .withHeader("Authorization", equalTo("Basic " + new String(basicAuth, Charset.forName("UTF-8")))) .willReturn(aResponse() .withHeader("Content-Type", "application/json") .withStatus(HttpStatus.SC_OK) .withBody(responsePayload)));

  20. Asynchronous Communication Test Harness

  21. Proprietary Communication Protocol is hidden in a client library. Protocol is verbose and complex.

  22. Solution: Mock Client Library Test Harness Mock Client

  23. Mock Client Library Use a back door connection for: Response data Inspecting request data Control exceptions Backdoor runs in its own thread. May require care when serializing data. Use same technology as is used for the service s inputs.

  24. Application state Stateless Stateful State kept in some dependent service. State kept in application. No need to set up state before each test case. Run application functionality to set state correctly for each test. Run test cases in any order. or ... Run tests in specific order to use state set in previous tests.

  25. Database Usage Database stores state. Database as part of the application? Resetting content between tests. Mocking Database Access Layer

  26. Database and Application Database is a part of the application Database is a dependent service ORM make database schema tightly coupled to the application. Database developed independently of application internal structures. Don t let schema bleed into the test code. Test code is allowed full access to database

  27. Database Preparation Use a golden image of database for quick start. May contain lots of static data. Recreate schema and data Recreate data only Roll-back data changed during test Prepare test specific data Tests that don t update database

  28. Inputs and outputs For a stateless service Identify input stimuli and the side effects they cause. Split each scenario to include one stimulus only.

  29. Input Stimuli HTTP requests Messages Database triggers File creation

  30. Minimize test scenario scopes

  31. Questions

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#