1、OpenHarmony开发者测试工程黄国辉OpenHarmony兼容性工作组SIG成员黄国辉主要负责OpenHarmony各子系统开发自测试相关工作,了解开发者测试设计方法、测试框架以及覆盖率构建相关工具。OpenHarmony兼容性工作组SIG成员目录CONTENTS背景简介01 OpenHarmony开发者测试活动02 OpenHarmony开发者测试框架03 OpenHarmony一站式代码覆盖率工具04 未来展望与规划05 01背景简介背景简介l后端问题解决的成本远大于前端,尽可能在前端全面高效维护代码质量。OpenHarmony包含60+子系统,累计代码量超1亿行。Unit Test
2、sIntergration TestsSystemTestsUITests发现问题的难易程度困难容易解决问题的速度慢快需求质量设计质量谷歌的测试金字塔模型02OpenHarmony开发者测试活动开发者测试活动全景自测试流水线自测试框架TDD测试分布式测试功能测试性能测试专项测试内存测试benchmark静态api安全测试漏洞补丁静态扫描开源漏洞扫描安全编译选项fuzz测试稳定性测试代码覆盖率黑盒测试白盒测试判定表法等价类划分边界值分析法路径覆盖法单模块随机压测整机随机压测MTBF功能测试TDD测试Test Driven Development测试设计模块设计用例/编码从测试的角度来推导设计,验
3、证设计测试先行,用例约束代码实现敏捷开发,小步快跑通过用例的反馈,确保目标的达成促进设计更好地理解需求功能测试分布式测试OpenHarmony分布式数据OpenHarmony分布式数据分布式设备分布式文件分布式调度分布式调度分布式设备分布式软总线分布式软总线分布式组网、协议间兼容分布式设备上线下远程启动、迁移能力分布式数据存储、同步、一致性分布式硬件分布式硬件分布式硬件虚拟化能力分布式文件内核传输分布式文件专项测试性能测试通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。benchmark内存测试基本概念:1:常驻内存
4、:指业务运行结束退至后台,静置5分钟后,进程的内存使用情况。2:动态内存:业务在后台运行时,进程的内存总量峰值。u看护进程范围与基线值:专项测试安全测试Syzkaller:是一种针对kernel的fuzzing测试工具。Fuzzing测试是一种软件测试方法,通过产生随机输入,从而验证被测软件可靠性与安全性的一种方法。Syzkaller通过覆盖制导,更容易探索新路径并发现代码中存在的问题。Syzkaller与kasan和ubasn一起使用,更容易发现问题。libfuzz介绍:模糊测试(fuzzing test)是一种软件测试技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程
5、序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏,访问越界等。Libfuzz主要关注的风险接口:1、解析处理远程发送来的TCP/UDP或者蓝牙等协议数据。2、通过复杂的文件解码处理等,包括音视频、图片解码、解压缩等。3、IPC跨进程的数据输入处理。Libfuzz测试流程:Libfuzz执行要求:1、达到基本稳定:同时满足,不生成新的bug,不生成新的样本。2、达到充分测试:使用libfuzzer,1个小时稳定测试或者1000万次稳定测试。能力提升黑盒测试常用的用例设计方法l 判定表法:采用表格的形式,列出所有条件和对应结果,能够将复杂问题简化并避免遗漏。判定表
6、很适合于处理条件项各自独立,互不影响的问题。判定表的格式:1、条件桩:列出问题的所有条件。2、动作桩:列出问题规定可能采取的操作。l 等价类划分:针对测试对象的所有可能的输入,按照等价类原则划分为不同的输入域子集,在每个子集中选取少数具有代表性的数据作为测试用例,合理覆盖。l 边界值分析:输入或输出的边界值的分析方法,是对等价类划分法的补充。有效等价类:合理的、有意义的输入数据构成的集合。无效等价类:不合理或无意义的输入数据所构成的集合。对范围为1到8的整数输入参数进行验证,按照开区间和闭区间,半开半闭区间进行说明,其中的边界值如上图所示。能力提升白盒测试语句覆盖:每条语句至少执行一次判定覆盖