如何优雅地参加开源奉献,向顶级开源我的项目提交 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...