乐趣区

关于openharmony:30分钟成为Contributor|共建测试子系统赋能提升项目代码质量

如何优雅地参加开源奉献,向顶级开源我的项目提交 PR(Pull Request),跟着大咖 30 分钟成为 OpenAtom OpenHarmony(以下简称“OpenHarmony”)Contributor。战“码”先锋直播间第 6 期,邀请领有 10 年终端产品软件和零碎框架测试教训的华为 OpenHarmony 高级测试测试工程师 Andy 为大家分享《共建测试子系统 赋能开发者进步代码品质》。他在分享中介绍了:测试子系统、测试根底框架、稳定性测试工具设计、兼容性测试套示例和疾速参加共建。
参加战“码”先锋,PR 征集令!你能够在 Gitee 的 OpenHarmony 代码仓提交 PR 参加流动,和寰球开发者同台竞技,比拼技能,为 OpenHarmony 贡献力量。

测试子系统简介

OpenHarmony 零碎构建初期,各子系统提供零碎的根底能力。要进行子系统残缺看护,通过手工测试验证工作量微小,基于此呈现了自动化测试的诉求。测试子系统蕴含测试根底框架、OS 测试规范与工具、利用测试规范与工具和兼容性测试几个局部。OpenHarmony 测试工具集后续官网对立宣传名称为 OpenHarmony Arsenal(OHA)。
测试根底框架中,单元测试框架作为测试根底框架的基座,撑持自动化测试的运行;UI 测试框架基于单元测试框架构建了 UI 界面操作自动化测试的能力;分布式测试组件和专项测试组件作为扩大能力逐渐进行演进;测试调度框架(xdevice)负责整个测试脚本的执行调度。
OS 测试规范与工具:次要进行零碎的稳定性、性能、平安等 DFX 测试验证,发现零碎的异样重启和帧率不达标等关键问题。利用测试规范与工具:提供给开发者测试工具进行利用的 DFX 测试验证。兼容性测试:提供兼容性测试套进行南北向的框架兼容性看护。

单元测试框架:

单元测试框架提供根底的测试脚本编写、治理、调度执行和报告生成能力。单元测试框架依赖 AbilityDelegator(测试框架入口)和 TestRunner(重写进行测试筹备和执行操作)。
外围性能包含:
● 测试套 & 测试用例治理:测试套蕴含测试用例,基于测试套编写实现测试用例
● 预置清理办法:每个测试用例之间能够通过预置和清理办法进行解耦
● 配置管理:用例级别和类型的配置管理,用于后续筛选测试执行用例
● 日志解决能力:用于测试用例执结束的后果日志统计
● 根底断言能力:测试用例的预期后果和理论执行后果判断
扩大能力:
● 定义执行程序:用于后续进行测试用例执行程序的配置管理
● 自定义断言:基于根底断言的扩大比拟能力
● 异步测试 & 断言:测试脚本间接进行异步执行和断言,以后是通过同步期待形式执行
加强能力:
● 数据驱动:通过配置参数形式进行接口的压力测试
● Mock:模仿依赖内部接口的实现,返回预期内容
● Fake:间接返回依赖内部接口的冀望返回值,接口失常执行
● SPY:接口探测能力,验证接口是否有被调用执行
大家能够参考具体的代码仓,理解单元测试框架的代码逻辑。

一个残缺的测试套执行过程,通过 AA 命令行启动测试框架,AMS 框架拉起测试过程,启动 TestRunner 解析参数,接下来启动 TestAbility 加载和执行测试用例,测试用例执行实现后输入打印执行后果,并敞开测试过程和 AA 过程,测试套执行实现。

UI 测试框架:

UI 测试框架提供 UI 界面测试能力,包含 UI 操作、UI 控件查看等根底能力。UI 测试框架对外会提供 JS API 给开发者应用,UI Test 提供框架的根底能力,测试框架依赖无障碍服务获取界面的控件 dump 信息,多模输出服务提供控件操作的能力。UI Test JS API 蕴含
● 根底操作 API:点击、滑动等操作的根底能力
● 控件获取 API:查找控件等根底能力
● 加强操作 API:控件拖拽、滑动查找控件等能力
● 自定义属性 API:滑动速率和按键时长等参数配置能力
UI Test:UI Test 独立过程,提供测试过程和 UI Test 过程传递数据序列化能力,过程保活能力和事件注入能力。目前提供单窗口的 UI 自动化测试,后续提供多窗口的控件操作能力,被动辨认 UI 界面变动和多指触控等简单手势操作能力。
大家能够参考具体代码仓,理解 UI 测试框架的代码逻辑。

UI 测试框架外围流程:UI 测试用例执行,启动 UITest 过程,绑定无障碍服务和多模服务进行交互操作。开发者能够基于 UIDriver、BY、UIComponent 类配合进行 UI 测试脚本的编写。
大家能够参考具体代码仓,理解 UI 测试框架对外提供的接口能力

新建联系人 UI 测试脚本的代码示例:

  1. 导入依赖的测试包
  2. 启动被测试的界面
  3. 初始化 UIDriver
  4. 基于 UIDriver 的 findComponent 和 BY 能力配合查找联系人控件
  5. 基于 UIComponent 的 click 能力点击联系人控件
  6. 基于 UIDriver 的 assertComponentExist 能力验证存在没有联系人文本

    稳定性测试工具设计:

    稳定性测试工具提供异样捕捉能力,帮忙开发者疾速识别系统异样问题,通过黑白名单指定是否测试对应名单内的利用。提供录制回放能力进行辅助回归测试验证,目前只有控件操作等事件注入能力,后续提供零碎事件的注入能力。目前稳定性工具预置在版本中,后续提供可视化的设施端和 PC 端的测试工具,开发者能够更不便的进行稳定性测试。
    大家能够参考具体代码仓,理解稳定性测试工具框架的代码逻辑。

    稳定性工具执行示例:wukong exec –b ohos.xxxx -a 0.1 -t 0.5 -S 0.4 -s 5
    具体工作流程:稳定性测试工具进行命令行参数解析,测试环境的初始化,启动异样监听。通过随机事件生成和事件注入及捕捉异样的循环解决进行稳定性测试。最终生成日志记录用于查看异样场景。
    要害命令:通过 seed 种子能够指定固定的操作序列,用于回归重现问题。不同的事件反对比例的设置。能够通过 time 和 count 字段进行稳定性测试时长的指定。

    兼容性测试套:

    通过兼容性测试套进行利用南北向和设施东西向的兼容性看护,别离通过 ACTS、DCTS、HATS 测试套进行兼容性验证。大家能够参考文末代码仓,理解兼容性测试套的测试用例实现。

    测试用例要害语法的定义,通过 describe 定义测试套,一个测试用例必须须要有 3 个要害注解字段,tc.number:用例编号,tc.name:用例名称,tc.desc:用例形容,通过 it 进行测试用例定义。

    疾速参加共建:

    最初,Andy 为开发者们介绍了疾速参加共建的形式。大家能够基于开发过程中应用的 API,在兼容性测试代码仓搜寻相应 API 的测试脚本,辨认以后测试用例的齐备性,进行测试脚本补充共建。如下提供了 promise 和 callback 异步接口的两个案例进行接口的失常和异样场景的测试脚本设计。

    欢送感兴趣的开发者敌人们一起共建测试子系统,成为 OpenHarmony Contributor。参加战“码”先锋,PR 征集令!在 Gitee 的 OpenHarmony 代码仓提交 PR 参加流动,和寰球的开发者一起共建 OpenHarmony 的凋敝生态!
    “当初就关上 gitee,提你的第一个 PR,你的一小步,是 OpenHarmony 开源我的项目的一大步”

    文章中波及的链接汇总:

    单元测试框架代码仓 jsunit 目录:
    https://gitee.com/openharmony…
    UI 测试框架代码仓 uitest 目录
    https://gitee.com/openharmony…
    UI 测试框架对外 JS API 接口代码仓
    https://gitee.com/openharmony…
    稳定性测试工具代码仓
    https://gitee.com/openharmony…
    兼容性测试套代码仓
    ACTS:https://gitee.com/openharmony…
    DCTS: https://gitee.com/openharmony…
    HATS: https://gitee.com/openharmony…

退出移动版