Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 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 PRsPRs on EdgeX, they have to go through unit test to check a different validation process depending on the type of repository.

  • Go modules
    • Unit test
Info
titleWhere is go module?

https://github.com/edgexfoundry

Type "go-mod" in the search field. All repositories whose titles contain "go-mod" are go-modules.
Once developers open PRs in a go-mod repository, a unit test is triggered to check if it is available.

  • Service
    • Unit test
    • Image build validation
Info
titleWhere is service?

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.
Once developers open PRs in the edgex-go, it will trigger unit test to check if it's fit to use

.The service will

and build dev images on nexus3.edgexfoundry.org to validate its usage.

  • Go modules
    • Unit test
  • Service
    • edgex-compose
      • smoke test by TAF
    Info
    titleWhere is edgex-compose?

    https://github.com/edgexfoundry/edgex-compose

    Smoke-test will be introduced later.
    Once developers open PRs in the edgex-compose, a smoke-test will be triggered to check its availability.

    edgex-composesmoke test by TAF


    Functional-test

    • Purpose: Test each feature of EdgeX by providing the appropriate input and validating the output against the requirements.
    • FrequencyJenkins schedule: Daily scheduled Daily run on edgex-taf-pipeline
    Info
    titleHow to run functional-test on local?

    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
    titleHow to run integration-test on local?

    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 EdgeX
    • FrequencyJenkins schedule: Weekly scheduled run on  run on edgex-taf-pipelines
    • Note: When a new version of EdgeX is released, we will run performance tests -test manually on x86_64 and arm64 machine machines to update the reports in here.
    Info
    titleHow to run performance-test on local?

    https://github.com/edgexfoundry/edgex-taf/blob/main/docs/run-performance-metrics-collection-on-local.md


    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.
    • key EdgeX features to run smoke-test.
    • Jenkins schedule
    Frequency
    • : Only when edgex-compose PR is opened will smoke-test start running.
    Info
    titleHow to run smoke-test on local?

    First, where is smoke-test?

    Examplehttps://github.com/edgexfoundry/edgex-taf/blob/f7c5ac7bf88c2cca21e5cb485ee655b14a2023d7/TAF/testScenarios/functionalTest/V2-API/core-metadata/deviceprofile/GET-Positive.robot#L15
    In this example, only does ProfileGET001 - Query all device profiles have the SmokeTest tag so smoke-test it will run on this testcase only. 


    Second, how to run tests smoke-test on local?

    Examplehttps://github.com/edgexfoundry/edgex-taf-pipelines/blob/5cb7fa71727f8b6c6470626ed0394a449b223b2c/runSmokeTestScripts.groovy#L32-L51
    When running tests locally with the docker command, remember to specify --include SmokeTest to point to those tests testcases with the SmokeTest tag.


    ...