Skip to main content

Test modeling sheet structure

The input excel should be structured as following worksheets,

  • Base_Config: Contains global configs that are required for the test.
  • Test_Suites: Logical grouping of similar test scenarios.
  • Test_Scenarios: Contains the actual scenarios to be tested. This could make use of one or more APIs defined in the TestApi_Definitions.
  • Test_Api_Wrappers: Contains the list of test wrappers for available API definitions. This allows customizing an API definition by passing Restel Variables.
  • Test_Api_Definitions: Contains the list of Services API definitions for the Rest Application which needs to test.

Base_Config:

Base_config sheet, should contain the basic necessary information on the Rest Application which needs to be tested . In the sheets the headers are sectioned in Rows . Each Row first Cell will be a header.

Below Table shows the list of headers, description, format and examples for better understanding.

Header NameDescriptionFormatMandatoryExamples
app_nameName to the Rest Application which needs to be Tested.StringOptionalPetStore Test Application
base_urlThe URL of the Rest Application which needs to test, should be in the format <protocol>://<host>:<port>/<base_path>StringMandatory<https://petstore.swagger.io/v2>
default_headersDefault headers which will be added to each of the RestAPI request headers which need to be tested. Should be Json format .JsonOptional{"Content-Type":"application/json","Accept":"application/json"}

Test_Suite:

Represents the list of suites that are part of the test.

Header NameDescriptionFormatMandatoryExamples
suite_unique_nameName of the Test Suite should be unique. Duplicate names should not exist.StringMandatoryuser_service_suite
suite_descriptionDescription about the Test suiteStringOptionalSuite to evaluate a positive flow of user_service.
depends_onSometimes other Test Suite needs to execute first before the current Test Suite. Name of the Test Suite from suite_unique_name which it depends on.Comma Separated StringOptionaluser_registration_suite,user_validation_suite
suite_paramsParameters thats need to be passed into the Test Suite APIsJsonOptional{"user":"John"}
suite_enableTo enable or disable invocations of APIs for the current suite. Default : TRUE.BooleanOptionalTRUE

Test_Scenarios:

This represents the logical grouping of similar scenarios.

Header NameDescriptionFormatMandatoryExamples
scenario_unique_nameName of the Test Suite Execution. Should be unique. Duplicate names should not exist.StringMandatoryget_user_exec
scenario_descriptionThe "description" of the test scenario to communicate the details to the users and to be logged in the report.StringOptionalScenario to test if the user fetch fails after deletion.
test_suiteThe "suite_unique_name" field value read from the Test_Suite sheets. Need to define that the test execution belongs to which test suite. Eg: user_service_suite. This test suite execution belongs to a test suite with suite_unique_name as ‘user_service_suite’.StringMandatoryuser_service_suite
test_apisComma seperated values of the wrapper/APIs to be executed, in order. "case_unique_name" field value from test_definition sheet or "test_api_wrapper_name" field from Test_Api_Wrappers sheet.StringMandatoryget_user
depends_onSometimes other Test Scenario Execution should be invoked before current Test Suite Execution. Name of the case_unique_name which should execute first before executing the current Test Suite Execution.Comma separated StringOptionalcreate_user_exec
test_execution_paramsParameters to be included to the current Test suite executionJsonOptional{"user_name" : "vivek"}
test_execution_enableTo enable or disable invocations of test suite execution . Default : TRUE.BooleanOptionalTRUE

Test_Api_Wrappers :

Optional sheet. This represents test wrappers for APIs that can utilise Restel variables when being called and tested. Intended to pass API specific parameters and avoid duplicating APIs. The columns and the meaning of the columns in the sheet is as below,

Header NameDescriptionformatMandatoryExample
test_api_wrapper_nameName of the Test Wrapper. Should be unique, duplicates should not exist.StringMandatoryread_entry_500
test_api_wrapper_descriptionDescription about the test wrapper.StringOptionalUser retrieval failed
test_api_wrapper_parametersTest specific parameters that can be used within the wrapped test.StringOptional{ "expected_read_status_code": "500", "read_expected_response":{"message":"Cannot read properties of null (reading '_id')"} }
test_api_nameName of the test being wrapped. Must match exactly one test name (api_unique_name) defined in Test_Api_Definitions sheet.StringMandatoryread_entry

Test_Api_Definitions :

This represents rudimentary APIs that will be called and tested. The columns and the meaning of the columns in the sheet is as below,

Header NameDescriptionformatMandatoryExample
api_unique_nameName of the Test Case Definition. Should be unique, duplicate names should not exist.StringMandatorycreate_user
depends_onSometimes other Test_definitions need to be executed before executing the current Test_definition. Includes another case_unique_name which needs to be executed first.Comma separated stringsoptionalget_user,login_user
api_descriptionDescription about the Test_definitionStringoptionalAPI for fetching the information of all users.
request_urlEndpoint of the Rest API. Supports Restel variables.StringMandatory/user
request_methodEndpoint Http Method. Should be one of HTTP MethodsStringMandatoryPOST
request_headersEndpoint Http Request HeadersJsonOptional{"Content-Type":"application/json","Accept":"application/json"}
request_query_paramsQuery parameters for this endpointJsonOptional{"user:"Tom","index":2}
request_body_paramsEndpoint Body parameters. Format can be json or String. Provide the appropriate Content-Type in the request_headers. Supports Restel variables.Json / StringOptional{"id": 1,"email": "noreply@gmail.com","phone": "99999999999"}
request_pre_call_hookMiddlewares on request before api call like authentications, etc.Jsonoptional{}
request_post_call_hookMiddlewares on request after api call like writing response to file,etcJsonoptional{}
expected_responseThe API call response body to be expected, Will evaluate expected response body with the actual api call response body. Should provide the appropriate response content-type in the response headers. Supports Restel variables.Json/StringOptional{ "id": 1,"email": "noreply@gmail.com","phone": "99999999999"}
expected_response_matcherEvaluation technique names. Will evaluate the api response body with expected_response body. Should be one of the enums [NOOP_MATCHER,EXACT_MATCHER,PARTIAL_MATCHER]Enum of [NOOP_MATCHER,EXACT_MATCHER,PARTIAL_MATCHER]MandatoryEXACT_MATCHER
expected_headerThe API call response headers to be expected.Will evaluate expected response header with the actual api call response header.JsonOptional{"Content-Type":"application/json","Server":"Jetty"}
expected_header_matcherEvaluation technique names. Will evaluate the api response header with expected_response header. should be one of the enums [NOOP_MATCHER,EXACT_MATCHER,PARTIAL_MATCHER]Enum of [NOOP_MATCHER,EXACT_MATCHER,PARTIAL_MATCHER]MandatoryNOOP_MATCHER
accepted_status_codeTo validate/check if the api call status code is within the one of the accepted_status_code. Should be one or list of status codes. Supports Restel variables.Comma separated valuesMandatory201
TagsCan give tags to Test_Definition.Comma separated StringOptionalUserService