EdgeX testing is focused on ensuring that the functional aspects of EdgeX work correctly. This level of testing includes a number of automated test suites for unit, integration, black-box, API testing and validation. Also, Edgex EdgeX has been tested on TAF, which stands for Test Automation Framework. To monitor the stability and efficiency of EdgexEdgeX, a Jenkins pipeline has been built to automatically trigger daily and weekly jobs automatically. The testing processes are listed below.
PR merge validation
When developers make changes to Edgex and open a PRPRs on EdgeX, they have to go through a different validation process depending on the type of repository.
- Go modules
- Unit test
Info | ||
---|---|---|
| ||
https://github.com/edgexfoundry Type "go-mod" in the search field. All repositories whose titles contain "go-mod" are go-modules. |
After merging into the main branch, go modules and Service will build images on dockerhub and snap to validate its usage.
- Unit test
- Image build validation: docker image
- Unit test
- Image build validation: snap image/ docker image
check if it is available. |
- Service
- Unit test
- Image build validation
Info | ||
---|---|---|
| ||
https://github.com/edgexfoundry/edgex-go This repository contains the Go implementation of EdgeX Foundry microservices, such as core-data, core-metadata, support-notifications, etc. |
- edgex-compose
- smoke test by TAF
Info | ||
---|---|---|
| ||
https://github.com/edgexfoundry/edgex-compose Smoke-test will be introduced later. |
Functional-test
- Purpose: Test each feature of Edgex EdgeX by providing the appropriate input and validating the output against the requirements.
- FrequencyJenkins schedule: Daily scheduled Daily run on edgex-taf-pipeline
Info | ||
---|---|---|
| ||
https://github.com/edgexfoundry/edgex-taf/blob/main/docs/run-tests-on-local.md |
Integration-test
- Purpose: Check data communication among different software modules.
- FrequencyJenkins schedule: Daily scheduled run on run on edgex-taf-pipelines
Info | ||
---|---|---|
| ||
https://github.com/edgexfoundry/edgex-taf/blob/main/docs/run-tests-on-local.md |
Performance-test
- Purpose: Monitor memory usage/ startup time/ CPU usage/ response time/ event exported time of EdgexEdgeX
- FrequencyJenkins schedule: Weekly scheduled run on run on edgex-taf-pipelines
- Note: When a new version of Edgex EdgeX is released, we will run performance-tests on real hardware and test manually on x86_64 and arm64 machines to update the reports for each release in in here.
Info | ||
---|---|---|
| ||
Smoke-test
- Purpose: Smoke tests are tests selected by developers. They Developers will select the tests that validate the most important features of EdgeX and run the smoke tests to check if it's good to go.Frequencykey EdgeX features to run smoke-test.
- Jenkins schedule: Only when edgex-compose PR is opened will smoke-test start running.
Info | |||
---|---|---|---|
| |||
First, where is smoke-test? Example: https://github.com/edgexfoundry/edgex-taf/blob/f7c5ac7bf88c2cca21e5cb485ee655b14a2023d7/TAF/testScenarios/functionalTest/V2-API/core-metadata/deviceprofile/GET-Positive.robot#L15 |
Reference
Second, how to run smoke-test on local? Example: https://github.com/edgexfoundry/edgex-taf-pipelines/blob/5cb7fa71727f8b6c6470626ed0394a449b223b2c/runSmokeTestScripts.groovy#L32-L51 |
...