blob: db569f375fa130ce7d013e640f92747614c2513a [file] [log] [blame]
Test Executables
================
The Trusted Services project maintains a number of deployments concerned with
test. Although there may be some coverage overlap between different deployments,
in general, the built test executables corresponding to different deployments
serve different purposes. Most test executables may be run either on target
hardware or a development PC as a native application. For more information, see:
:ref:`Running Tests`.
The following test deployments are currently supported:
component-test
--------------
The component-test deployment combines a large set of tests and components into
a monolithic image that may be run as a userspace application. The CppUtest test
framework is used for running tests and capturing results. The component-test
executable may be built and run very quickly to obtain a first pass check for
build failures or regressions.
.. list-table::
:widths: 1 2
:header-rows: 0
* - Supported Environments
- * | *linux-pc*
* | *arm-linux*
* - Used for
- * | Build testing
* | Development support and debug
* | Regression testing
ts-service-test
---------------
The ts-service-test deployment combines test suites that exercise service providers
via their standard service interfaces where test cases perform the role of service client.
Service discovery and RPC messaging is handled by the *libts* shared library. On real targets,
the *libts* library uses a dynamic discovery mechanism to locate and communicate with real
service deployments. For native PC builds, service providers are embedded into the *libts*
library itself, allowing service level testing within a native PC environment.
.. list-table::
:widths: 1 2
:header-rows: 0
* - Supported Environments
- * | *linux-pc* - tests against service providers integrated into *libts*
* | *arm-linux* - tests against real service deployments
* - Used for
- * | End-to-end service testing
* | Security testing
* | Development support and debug
* | Regression testing
uefi-test
---------
The uefi-test deployment includes service level tests for UEFI SMM services.
.. list-table::
:widths: 1 2
:header-rows: 0
* - Supported Environments
- * | *linux-pc* - tests against service providers integrated into *libts*
* | *arm-linux* - tests against real service deployments using MM_COMMUNICATE
* - Used for
- * | UEFI service level testing
* | Regression testing
psa-api-test
------------
Used for PSA API conformance testing using test suites from: `PSA Arch Test project`_.
Tests are integrated with service clients to enable end-to-end testing against deployed
service providers. Separate executables are built for each API under test. As with
ts-service-test and uefi-test, service discovery and messaging is handled by *libts*,
allowing API tests to be run on real targets or within a native PC environment.
.. list-table::
:widths: 1 2
:header-rows: 0
* - Supported Environments
- * | *linux-pc* - tests against service providers integrated into *libts*
* | *arm-linux* - tests against real service deployments
* - Used for
- * | PSA API conformance testing
* | Regression testing
ts-remote-test
--------------
The ts-remote-test deployment builds a userspace application that allows a remote
test runner to be discovered and controlled. It implements a subset of the the
CppUtest command line interface but instead of running tests directly, it
communicates with the remote test runner to run tests and collect results. Can
be used, for example, to control the running of tests included in the env-test
deployment.
.. list-table::
:widths: 1 2
:header-rows: 0
* - Supported Environments
- * | *linux-pc* - tests against test runner service provider integrated into *libts*
* | *arm-linux* - tests against real test runner deployment e.g. env-test
* - Used for
- * | Running environment tests
--------------
.. _`PSA Arch Test project`: https://github.com/ARM-software/psa-arch-tests.git
*Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.*
SPDX-License-Identifier: BSD-3-Clause