Developer guide for making Integration Tests
Jump to navigation
Jump to search
Overview
- How to create folder and file in S3 bucket for prepare integrationTest
- Integration Test Config for config of property in file resources.json, events.json and tests.json
Setup integrationtest
Create folder
- Create your folder in bucket integrationtest-config-us-east-2/test_config/{your folder name} in S3 bucket
- {your folder name} maybe is your nickname eg. jamesDev, nicoleDev
- Can create a subfolder in your folder for each test case or service that you want to test
- eg. - integrationtest-config-us-east-2/test_config/jamesDev/SellOfferManager
- - integrationtest-config-us-east-2/test_config/jamesDev/ProcessLogical
- - integrationtest-config-us-east-2/test_config/jamesDev/SellOfferManager/ProcessLogical
Create file
- Create a file in a folder that is used for testing
- resources.json / events.json / tests.json
- resources.json and events.json is json object
- tests.json is json array of objects
- Can create these files in a SharedResource folder and share it with another test for collaborative usage
- eg. integrationtest-config-us-east-2/test_config/jamesDev/SellOfferManager/SharedResource/resources.json
- In the main prefix for testing, you don’t need to upload every file. If you have a file in SharedResource, you can skip uploading it
- resources.json
- Syntax; resources Syntax
- events.json
- Syntax; events Syntax
- Not use
. UseisObjectproperties
instead, if is an object will look for child properties - Not use
isStringSet - If have many stage, Set
initialStage
is true only initial stage. Next stage not set this setting - If
snsSqsTrigger
is true but not set snsServiceName or snsTopic --> direct invoke - If
DirectSqs
andBatchSqsMessages
is true --> direct invoke - If
snsSqsTrigger
andDirectSqs
is false or not set --> direct invoke forStageMatching
Use in test important parametertestValueMatches
For random parameter eg. timeStamp or uuid- If value in array or number or string is random. Use testValueMatches: true not set forStageMatching: true
- Multiple eventTags can be added to a single file
- Have 6 types of events; Dynamodb, Sns/Sqs, Dsq, Invoke, API and NoRetryError
- tests.json
- Syntax; tests Syntax
- Not use
. UsedynamoDbOutputdynamodbOutputEventIdentifiers
instead
- Upload file to S3 bucket by batchscript or upload to S3 bucket directly
#!/bin/bash set -u localPath="/home/dogsrcute/Programming mint/Fixed_Integrationtest/PluemDev/paginate/2stages" bucketName=s3://integrationtest-config-us-east-2/test_config/mintDev/fixed/PluemDev/2stages/ aws s3 cp "$localPath" "$bucketName" --recursive
- localPath is part to files for upload
- bucketName is your bucket
Type of parameter
- Parameter type for create property in events.json
object: {
forStageMatching: true,
properties: {}
},
array: {
forStageMatching: true,
eventValue: []
},
number: {
forStageMatching: true,
value: 1111
},
string: {
forStageMatching: true,
value: "hi"
},
boolean: {
forStageMatching: true,
value: true
}
// Case empty
EmptyString:{
value: ""
},
EmptyArray:{
forStageMatching: true,
eventValue: []
},
EmptyObject:{
forStageMatching: true,
value: {}
}
Test
- create params for invoke IntTestingTestInitiateIntegrationTestHdrInv function
{ "serviceName": "ComplexFilter", "resourceType": "Lambda", "resourceName": "ProcessComplexFilterHdrSqs", "integrationTestTags": [ "test_S3_ByDev" ], "bucketName": "integrationtest-config-us-east-2", "bucketPrefix":[ "test_config/mintDev/basicCase/", "test_config/mintDev/SharedResource/" ] }
- Find results in IntTestingTestTestRecord table
Working documents
Working_documents - Developer guide for making Integration Tests