deqp 测试模块可通过多种方式集成到自动化测试系统中。最佳方式取决于现有的测试架构和目标环境。
测试运行的主要输出始终是测试日志文件,即带 .qpa
后缀的文件。可以从测试日志中解析得到完整的测试结果。控制台输出仅包含调试信息,并且可能并非在所有平台上都可获得。
测试二进制文件可以直接从测试自动化系统调用。可以针对特定用例、某个测试集或所有可用测试启动测试二进制文件。如果执行期间发生致命错误(如某些 API 错误或系统崩溃),测试执行过程将会中止。对于回归测试,最佳方式是为单个用例或小型测试集单独调用测试二进制文件,以便在发生严重故障时也可获得部分结果。
deqp 附带命令行测试执行工具,这些工具可与执行服务结合使用,以实现更强大的集成。执行器检测测试过程的终止,然后会在下一个可用用例上恢复测试执行过程。由完整测试会话生成单个日志文件。对于不提供崩溃恢复机制的轻量级测试系统而言,该设置是一个理想之选。
命令行测试执行工具
当前的命令行工具集包含以下组件:远程测试执行工具、用于执行回归分析的测试日志比较生成器、测试日志转 CSV 文件的转换器、测试日志转 XML 文件的转换器和测试日志转 JUnit 的转换器。
这些工具的源代码位于 executor
目录中,相关的二进制文件内置于 <builddir>/executor
目录中。
命令行测试执行器
命令行测试执行器是一种便携式 C++ 工具,用于在设备上启动测试运行,并基于 TCP/IP 协议从设备收集生成的日志。该执行器与目标设备上的执行服务 (execserver) 进行通信。二者共同协作,提供从测试过程崩溃恢复等功能。以下示例演示了如何使用命令行测试执行器(使用 --help
可查看更多详细信息):
示例 1:在 Android 设备上运行 GLES2 功能测试:
executor --connect=127.0.0.1 --port=50016 --binaryname= com.drawelements.deqp/android.app.NativeActivity --caselistdir=caselists --testset=dEQP-GLES2.* --out=BatchResult.qpa --cmdline="--deqp-crashhandler=enable --deqp-watchdog=enable --deqp-gl-config-name=rgba8888d24s8"
示例 2:在本地继续执行部分 OpenGL ES 2 测试:
executor --start-server=execserver/execserver --port=50016 --binaryname=deqp-gles2 --workdir=modules/opengl --caselistdir=caselists --testset=dEQP-GLES2.* --exclude=dEQP-GLES2.performance.* --in=BatchResult.qpa --out=BatchResult.qpa
以 CSV 格式导出测试日志并进行比较
deqp 具有将测试日志(.qpa
文件)转换为 CSV 文件的工具。CSV 输出中包含一系列测试用例及其结果。该工具还可以比较两个或多个批处理结果,并仅列出在输入批处理结果中具有不同状态代码的测试用例。该比较还会列出匹配用例的数量。
CSV 格式的输出内容非常实用,可用于通过标准命令行实用程序或电子表格编辑器进行进一步处理。使用命令行参数 --format=text
还可以选择其他人类可读的纯文本格式。
示例 1:以 CSV 格式导出测试日志
testlog-to-csv --value=code BatchResult.qpa > Result_statuscodes.csv
testlog-to-csv --value=details BatchResult.qpa > Result_statusdetails.csv
示例 2:列出两个测试日志中测试结果之间的差异
testlog-to-csv --mode=diff --format=text Device_v1.qpa Device_v2.qpa
注意:参数 --value=code
会输出测试结果代码,如“Pass”或“Fail”。参数 --value=details
可选择对性能、功能或精度测试产生的结果或数值做进一步说明。
以 XML 格式导出测试日志
测试日志文件可以使用 testlog-to-xml
实用程序转换为有效的 XML 文档。日志支持两种输出模式:
- 独立文档模式,其中每个测试用例和
caselist.xml
汇总文档都会写入目标目录 - 单个文件模式,其中
.qpa
文件中的所有结果都将写入单个 XML 文档。
可使用 XML 样式表在浏览器中查看导出的测试日志文件。示例样式表文档(testlog.xsl
和 testlog.css
)位于 doc/testlog-stylesheet
目录中。若要在浏览器中查看日志文件,可将两个样式表文件复制到导出的 XML 文档所在的同一目录。
如果您使用的是 Google Chrome,则必须通过 HTTP 访问这些文件,因为 Chrome 出于安全考虑,会限制对本地文件的访问。标准的 Python 安装包括一个基本的 HTTP 服务器,该服务器可通过 python –m SimpleHTTPServer 8000
命令启动,以作为当前目录。启动服务器后,只需将 Chrome 浏览器指向 http://localhost:8000
即可查看测试日志。
转换为 JUnit 测试日志
很多测试自动化系统都可以从 JUnit 输出生成测试运行结果报告。可使用 testlog-to-junit 工具将 deqp 测试日志文件转换为 JUnit 输出格式。
该工具目前仅支持转换测试用例判定表。由于 JUnit 仅支持“pass”和“fail”结果,deqp 的通过结果会映射到“JUnit pass”,其他结果则会被视为失败。原始的 deqp 结果代码可从 JUnit 输出中获得。转换时将不会保留日志消息或结果图片等其他数据。