1 简介
Yocto 项目是一个开源协作项目,它提供模板、工具和方法,帮助您为嵌入式产品创建基于Linux的定制系统,而无需考虑硬件架构。QA团队负责验证一些可用的工具和组件,以及支持的不同平台的image完整性和功能性。
2 目标和任务
测试过程主要侧重于跟踪和审查Yocto项目及其参考系统和内部项目的质量和性能。该计划还包括识别和跟踪需要改进的领域、回归、验证增强功能和错误、开发测试方法(重点是自动测试)。除非另有说明,例如作为验证新功能过程的一部分,否则文档和许可状态不包括在测试过程的范围内。
2.1 测试目标
Yocto 项目 X.X 周期的整体测试计划旨在验证当前开发中的整体增强功能,并检测可能出现的回归。
- Bug和功能验证
- 运行回归测试
- 对所需领域(如 Toaster)进行探索性测试
- 改进和扩展整体自动化
2.2 任务
下面列出了本测试计划确定的所有任务。
- 一般组件测试
- 错误和功能报告
- 错误和功能验证
- 测试自动化
- 探索性测试
- 为所需领域创建测试计划
- 与开发人员一起审查测试方法
- 为主要功能指派QA负责人
3 测试范围
概述了测试流程,如测试领域、类型、周期和报告,以及每项验证活动的摘要和目标。各部分可链接到包含更多细节或相关信息的其他文章。请注意,本文或此处链接的文章中提供的信息可能会根据需要进行修改,以反映当前版本的Yocto项目所开展的实际活动。
4 测试策略
4.1 测试内容
Yocto项目下的每个内部项目都是需要测试的领域。测试区域按其功能性质分组如下:
- 构建系统
- 运行时测试
- 开发工具
- Distro 测试
4.1.1 构建系统
构建引擎及其周边组件,为构建映像或烘焙软件提供手段。在这一区域将执行构建时测试。目前oe-selftest涵盖所有Bitbake、oe-core和Metadata自动测试。
- BitBake
对BitBake进行功能测试,BitBake是一个构建引擎,它的所有功能和组件都能在各种配置和场景下运行。
- Toaster
Toaster是Bitbake构建系统和Yocto项目内Poky发行版的网络接口。该项目原名为Web Hob/Webhob/webhob,你可能仍会在文档中找到对旧名的引用。Toaster测试计划维基涵盖了针对Toaster的所有验证。测试过程主要集中在验证从构建过程中收集到的数据,以及验证Toaster GUI的正确功能,例如
-
用户界面
-
与bitbake进行的后台交互
-
后台与数据库的交互,用于存储和访问构建信息
-
测试目标只涉及Toaster现有功能的正面测试。
-
执行探索性测试,重点关注更新的功能;这有时会产生新的测试用例。
-
元数据(Metadata)
对Yocto项目核心元数据的测试主要是通过上述BitBake和Toaster 等其他测进行的。我们还在meta-yocto测试运行模板中设置了涵盖元数据的特定测试,并定期在Full Pass上运行。
- 发行版测试
发行版测试旨在使用yocto-autobuilder捕捉发行版特有的bug。所有测试都在相同的硬件上运行,并更新了所有操作系统。使用的发行版包括Fedora、Ubuntu、CentOS、OpenSuse及其最新更新版本。如果发行版在发布期间有测试版,则 n+1(测试版)也将进行验证。
更多详情,请参阅 “发行版测试计划”。
4.1.2 运行时测试
主要针对目标操作系统或其附带的应用程序,作为构建过程的输出。
我们使用映像测试来运行自动测试。
- 冒烟测试
冒烟测试由公共AutoBuilder 执行,所有BSP构件均在此构建,并检查构建是否正确。在公共AutoBuilder中,还对QEMU映像运行映像测试。
- 每周测试
包括运行所有自动BSP测试,这些测试的目标是每周针对每周构建运行一次。镜像测试维基页面介绍了测试的启用和运行。测试适用于QEMU BSP和安装在真实硬件上的BSP。
- 全量测试
全量测试旨在运行非自动化的BSP测试用例。它们扩展了每周测试的覆盖范围,包含更复杂的场景,如更改运行级别或音频测试。
- 压力测试
压力测试在Beagleboard和genericx86-64 BSP上运行。详情如下:
-
Beaglebone core-image-sato-sdk映像使用LTP和Crashme压力测试进行测试
-
genericx86-64 core-image-lsb-sdk映像使用Helltest和Crashme压力测试进行测试
-
系统性能(未实施)
目标:跟踪目标系统的运行时性能;跟踪带有gcc安全标记的目标系统的运行时性能;
指标:systemd 和 sysvinit 的启动时间;从Buildhistory跟踪回归的image大小;Piglit测试套件结果;可集成的其他基准,如openbenchmarking网站上列出的基准。
4.1.3 开发人员工具
-
应用程序开发工具包(Application Development Toolkit):ADT测试包括meta-toolchain-sdk和用户构建sd 测试。它将在每周测试和全量测试中涉及。
- 交叉工具链安装和编译测试
- 可重置SDK
- 可扩展 SDK (eSDK)
- 工具链压缩包
- yocto 构建树
-
Eclipse IDE插件:Eclipse 插件测试将涵盖基本功能。这包括安装、配置Yocto项目ADT设置、Yocto BSP、Bitbake 项目以及项目编译和部署到目标。根据将要实现的功能,将添加新的测试用例,以支持Windows和Mac。这将在”功能”部分详细介绍。
- 无头构建
- 创建 C/C++工程
- 调试/部署
- 用户空间工具
- Bitbake工程
根据SDK的新功能(如 MacOS 和 Windows 支持),将运行其他测试以验证新功能。
有关eclipse测试自动化,请参阅Eclipse测试框架部分。
- 构建设备
将测试构建设备的基本功能。测试包括成功构建构建设备镜像。
4.1.4 测试周期
以下是最常用的通用测试周期,但每个Yocto项目的测试版本都可能发生变化。
-
冒烟测试:简短快速的自动测试,执行时间不超过 10 分钟。
- 测试范围:在AutoBuilder上触发。
- 目标:
- 无错误完成构建;
- 检查QEMU映像的基本功能,如启动、网络、软件包管理器等;
- 根据构建类型确定测试周期是否可以继续。
- 在AB上运行的测试是映像测试。根据目标镜像类型,其配置存储在AB配置文件”yocto-autobuilder/buildset-config”中。
-
每周测试
- 测试范围:每周构建并通过发行团队发布的镜像。
- 目标:
- 用最少的测试集对大部分区域进行功能测试;
- 回归测试:极有可能发现错误。
-
全量测试
- 范围:作为里程碑或最终版本候选的image;
- 目标:确保所有Yocto项目组件的功能。
-
发布测试
- 测试范围:发布通过全量测试的候选版本
- 目标
- 涵盖或重新安排所有预定功能;
- 修复并验证所有相关错误。
- 增加覆盖范围
- 压力测试
- 合规性测试
- 分发测试
4.1.4 测试执行
测试执行将按照https://wiki.yoctoproject.org/wiki/QA#QA_Process的QA维基页面中定义的QA流程进行。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
- https://wiki.yoctoproject.org/wiki/QA/Master_Test_Plan#Test_Plans
5 测试工具
5.1 AutoBuilder
参见:https://wiki.yoctoproject.org/wiki/The_Yocto_Autobuilder
5.2 oe-selftest
Oe-selftest是用于测试OpenEmbedded构建系统的测试框架。以下是介绍oe-selftest的一些要点:
- 基于Python unittest
- 旨在模拟正常使用模式
- 不包括image运行时测试
- 实现了一个新层,其中包含仅由测试使用的通用/特定元数据
更多参考:Oe-selftest wiki。
5.3 image测试
5.4 合规性测试
用于genericx86-64的合规性测试套件/框架:
- LSB(Linux Standard Base)测试
- POSIX(Portable Operating System Interface for UNIX)测试
- LTP(Linux Test Project)测试
安装步骤
- 从autobuilder下载lsb映像(与genericx86-64-lsb bsp LSB 每周测试中的映像相同),我们使用 genericx86-64-lsb、core-image-lsb-sdk 在NUC上测试合规性
2.在DUT上安装镜像
3.配置网络,使其能联网工作:编辑/etc/resolv.conf并添加网关IP地址;使用”ifconfig”命令添加IP和掩码;使用 “route add default gw “添加路由;使用”export http_proxy=”命令添加代理
- 在DUT上复制 “compliance_test.py”脚本
5.确保网络连接正常
6.像这样运行脚本:”chmod a+x compliance_local.py” ; “./compliance_test.py “。等待 “配置完成。必须从机器启动LSB 脚本。”(约 8-12 小时)
7.通过ssh或手动运行”LSB_test.sh “并等待其完成(约一天)
8.从DUT获取日志:result–data.fulllog;result–data.log;result–data.fail;posix.log(可在以下位置找到:/opt/ltp/testcases/open_posix_testsuite),其他三个日志在 /opt/ltp目录下的 output、temp、result文件夹中。日志需要发送到yi.zhao@windriver.com,并指定版本和映像类型
;在/var/opt/lsb/test/manager/results/x86…/x86….tar.gz(您可以使用自动完成(选项卡)轻松找到它),它大约有 18 兆字节,将此文件上传到硬盘,并将链接发送到 hongxu.jia@windriver.com和mark.hatle@windriver.com,我还会发送电子邮件。
9.将Testopia – Runtime测试运行中的测试放在已通过的测试中。
脚本可在此处找到: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=cagurida/compliance
5.5 pTest
ptest(软件包测试 package test)是一个概念,用于构建、安装和运行软件包本身包含的测试套件,同时产生一致的测试执行输出格式。有关启用和安装的更多详情,请访问Ptest。
安装和运行步骤
- 从autobuilder下载pTest映像(可在pTest目录中找到core-image-sato-sdk映像)
- 将映像安装到DUT上(使用传统启动方式)
- 启动映像并在DUT上复制”ptest-runner.sh”脚本
- 在命令行中运行”ptest-runner.sh > ptest.log”并等待完成(约 5 小时)
5.6 Eclipse测试框架
Eclipse测试框架使用Dogtail实现测试自动化。有关安装和框架的详细信息,请参阅 contrib 上的 eclipse-framework README。Dogtail是用Python编写的图形用户界面测试工具和自动化框架。Dogtail脚本用Python编写,并像其他Python程序一样执行。
5.7 构建性能测试
在多个常用配置中,根据通过构建流程所花费的时间,对构建系统的性能进行跟踪。
使用的工具:http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts/contrib/build-perf-test.sh
更多详情,请参阅性能测试wiki。
目前,可在此处以图表形式查看构建性能结果(从 YP 1.6 开始),点击此处
5.7 补丁自动测试
[待定] – 未实现
6 测试自动化
- 目标
- 通过自动化当前测试,减少手动测试的工作量;
- 改进运行时测试。
- 改进构建时测试。
- 工具
- Distro 测试
- AutoBuilder
- 在AutoBuilder上运行映像测试。
- 可以使用Oe-selftest。目前oe-selftest 也在公共AutoBuilder上运行。
6.1 测试自动化贡献库
- Oe-selftest
- Image tests
- Ptest
- Toaster
- Eclipse测试框架
7 测试时间表
有关项目的总体日程安排,请访问被测版本测试计划中的”日程安排”部分
8 进入和退出标准
本节定义了开始和结束测试周期的标准:
8.1 进入标准
- 发布候选版本并发送”开始QA活动”邮件。
- 自动生成image可用
- 候选版测试运行模板已准备就绪
- 已发送包含使用日期和构建说明的邮件
8.2 退出标准
- 计划的所有组件均已 100% 完成
- 所有失败/受阻的测试用例都与有效的错误相关联(未解决也未验证)
- 重大问题导致组件/构建受阻
还定义了一般标准,请参阅”通过/失败标准”部分
9 假设和限制
TBD
10 验证
- 目标
验证当前版本的Yocto项目中引入的新变更功能是否正确。
-
输入标准
- 通过填写 “QA Owner “字段来跟踪中+/高增强的变更
- 变更在Bugzilla中被列为优先
- Bugzilla 条目在当前版本中有目标里程碑
- 更改已记录在案,或在无需记录时已指出(相应地设置doc标志)
- 错误状态设置为”已解决”。
-
退出标准
- 变更已为编写测试用例(如适用)做好文档记录
- 计划测试用例已通过
- 错误状态设置为已验证
11 测试报告
- 目标
- 在最新版本中显示当前测试运行的实时状态;
- 在测试周期结束时向Yocto项目邮件列表发送报告电子邮件;
- 归档报告;
- 使用QA状态模板进行报告;
- 在最终版本发布后更新版本维基
关于具体的可交付成果,请查看当前测试版本的”测试可交付成果”部分。
12 测试计划
本节分为两种类型的测试计划:发行版和组件。
13 测试执行
有关Yocto项目各版本测试执行的历史信息,请访问Releases。
有关当前测试版本的测试执行的具体信息,请访问最新Test Plans中的”执行历史”部分