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 dockhub and snap.
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. |
- Unit test
- Unit test
- Image build validation: snap image/ docker image
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 to test its efficiency and -test manually on x86_64 and arm64 machines to update the reports for each release in here.
Info | ||
---|---|---|
| ||
Smoke-test
- Purpose: Validate the most vital functions of EdgeXDevelopers will select tests that validate key EdgeX features to run smoke-test.
- Jenkins scheduleFrequency: Only when edgex-compose PR is opened will smoke-test start running.
Info | |||
---|---|---|---|
| |||
First, where is smoke-test? |
Reference
In this example, only does ProfileGET001 - Query all device profiles have the SmokeTest tag so it will run on this testcase only. Second, how to run smoke-test on local? Example |
: https://github.com/edgexfoundry/edgex-taf-pipelines/blob/5cb7fa71727f8b6c6470626ed0394a449b223b2c/runSmokeTestScripts.groovy#L32-L51 |
Reference
- Jenkins-edgexfoundry
- GitHub - edgexfoundry/edgex-taf
- GitHub - go
- Edgex-taf: https://github.com/edgexfoundry/edgex-taf
- Edgex-compose: https://github.com/edgexfoundry/edgex-compose
- Edgex-taf-piplines: https://github.com/ edgexfoundry/edgex-taf-pipelines