HarmonyOS Developer使用指南-兼容性/稳定性测试

丶龙八夷
发布于 2023-4-4 14:25
浏览
0收藏

兼容性测试

1 范围

1.1 背景及目的

软件的兼容性,一般是指某个软件能稳定地工作在若干个操作系统之上,而不会出现意外退出等问题。

对应用而言,是指其能够稳定工作在其安装的不同OS版本上,且由于应用版本更新周期较为频繁,应用也需要保证在安装运行的OS版本不变的情况下,应用自身升级后可以稳定地工作。

应用的兼容性主要有两个维度:

  • 应用运行交互的依赖发生变化:不同的OS版本、不同的设备类型、不同的交互应用;
  • 应用自身发生变化,而应用的运行依赖无变化:应用升级版本。

1.1 适用范围/测试范围

本标准规定了HarmonyOS应用的兼容性测试标准,适用于HarmonyOS应用软件的兼容性场景设计、开发及测试。

2 术语、定义和缩略语

2.1 术语、定义
2.1.1 崩溃

在用户正常操作的情况下,某个应用突然出现闪退、异常停止运行等完全不可用的情况。

2.1.2 无响应

整个软件系统是正常的,某个应用出现屏幕卡住不动或一段时间内操作未及时响应的故障,即用户俗称的应用死机、卡死、卡屏问题。

2.1.3 非 SDK 接口

非 SDK 接口指的是系统没有对外开放的接口;对非 SDK 接口的处理是API 抽象化的实现细节,接口可能会随时发生变更,所以应用如果通过反射或者 JNI 的方式间接使用非 SDK 接口会导致应用在新的系统版本上出现不兼容的问题。

2.1.4 原子化服务

参见​​原子化服务基础信息​​。

2.1.5 跨端迁移

参见​​跨端迁移场景定义​​。

2.1.6 服务卡片

参见​​服务卡片介绍​​。

2.1.7 设备类型

参见​​支持设备类型定义​​。

2.2 缩略语

3 测试环境准备

应用运行的设备不仅包括手机,还包括平板、大屏、手表等不同设备,仅考虑应用在手机设备上的兼容性远远不够,还需考虑其在所支持的不同类型设备上的兼容性处理。

开发者需准备其应用支持运行的不同类型的设备,并在其上验证应用的兼容性。

图1 测试环境

HarmonyOS Developer使用指南-兼容性/稳定性测试-鸿蒙开发者社区

4 兼容性测试标准

继续细分上文提到的兼容性分析维度,得到下列分类:

  • 应用与OS平台的兼容性处理:应用与运行的系统软件,在双方各自出现版本变化后,应用在系统软件版本上的兼容性处理表现,如应用需兼容处理系统废弃特性等;
  • 应用升级的兼容性处理:应用升级后应用自身特性的兼容性处理表现,主要是应用用户数据和应用权限的兼容处理;
  • 应用与其他交互应用的兼容性处理:应用与其交互的应用,在交互双方各自出现版本变化后,其交互场景的兼容性处理表现,如设备内应用交互、分布式应用跨设备交互等场景的兼容处理;

图2 兼容性分析视图

HarmonyOS Developer使用指南-兼容性/稳定性测试-鸿蒙开发者社区

4 .1 应用与OS版本兼容
4.1.1 应用需配置其支持运行的系统软件版本对应的SDK版本号

标准编号

4.1.1

应用需配置其支持运行的系统版本信息

标准描述

应用需配置支持其运行的最小系统SDK版本和目标版本SDK信息

预置条件

  

测试用例

1、解析应用软件包中配置文件,检查其中对应字段值(compatible/minAPIVersion和target API);

判定标准

应用在其配置文件中配置支持其运行的系统SDK版本信息

需考虑的特殊事项

  

4.1.2 应用安装卸载

标准编号

4.1.2

应用安装卸载

标准描述

应用在其配置支持运行的对应软件版本上安装卸载无问题

预置条件

  

测试用例

1、安装应用

2、卸载应用

判定标准

应用在其配置支持运行的对应软件版本上成功安装、卸载,卸载无残留(包括文件、数据和进程)。

需考虑的特殊事项

需遍历应用支持的设备类型

需单独验证支持免安装的原子化服务

4.1.3 应用启动

标准编号

4.1.3

应用启动

标准描述

测试应用可正常启动

预置条件

已安装应用

测试用例

1、启动应用主界面

判定标准

应用正常启动,进入应用首界面

需考虑的特殊事项

需遍历应用支持的设备类型

需单独验证支持免安装的原子化服务

4.1.4 运行崩溃

标准编号

4.1.4

运行崩溃

标准描述

测试应用在其配置支持运行的对应软件版本上运行过程中不会崩溃

预置条件

1、应用已安装

测试用例

1、遍历启动应用的各个界面

判定标准

应用在运行过程中不会崩溃

需考虑的特殊事项

需遍历应用支持的设备类型

4.1.5 运行无响应

标准编号

4.1.5

运行无响应

标准描述

测试应用在其配置支持运行的对应软件版本上运行过程中不会出现无响应提示错误

预置条件

1、应用已安装

测试用例

1、遍历启动应用的各个界面

判定标准

应用在运行过程中不会出现无响应提示错误

需考虑的特殊事项

需遍历应用支持的设备类型

4.1.6 使用非SDK接口

标准编号

4.1.6

使用非SDK接口

标准描述

测试应用是否使用非SDK接口

预置条件

  

测试用例

检查应用代码中无通过反射等方式非法调用系统禁止使用的非SDK接口

判定标准

应用没有使用系统禁止使用的非SDK接口,

需考虑的特殊事项

开发者自检

4.1.7 控件异常

标准编号

4.1.7

控件异常

标准描述

测量应用中的控件发生变形、错位、缺失或冗余

预置条件

  

测试用例

1、遍历启动应用的各个界面,检查界面显示

判定标准

应用中的控件没有发生变形、错位、缺失或冗余

需考虑的特殊事项

需遍历应用支持的设备类型

4.1.8 界面布局自适应显示

标准编号

4.1.8

界面布局自适应显示

标准描述

应用可以在不同尺寸及类型的屏幕上自适应显示,不会出现黑白边、布局显示错乱现象

预置条件

  

测试用例

1、遍历启动应用的各个界面,检查界面显示

判定标准

界面无黑白边、布局显示错乱等现象

需考虑的特殊事项

  

4.1.9 支持64位

标准编号

4.1.9

支持64位

标准描述

测试应用软件包中是否提供了64位版本so

预置条件

应用软件包中包含so文件

测试用例

查找应用是否有有64位版本的so文件

判定标准

应用软件包提供对应的64位版本so

需考虑的特殊事项

  

4.1.10 应用需兼容处理由于OS系统提供API能力差异导致的异常

标准编号

4.1.10

应用需兼容处理由于OS系统提供API能力差异导致的异常

标准描述

测试应用是否兼容处理由于OS系统提供API能力差异导致的异常,例如系统提供API A,但在不同类型设备上API A的功能逻辑导致其对外体现能力如返回值等存在差异,应用如使用该API,则需在不同类型设备上验证,保证应用整体功能整体可用,不会因API功能差异导致应用整体不可用

预置条件

存在OS系统提供API能力差异的不同类型设备

测试用例

1、在不同类型设备上安装应用,并运行应用功能

判定标准

应用整体功能可用,无异常退出等异常

需考虑的特殊事项

开发者自检

4.2 应用升级兼容
4.2.1 应用升级安装

标准编号

4.2.1

应用升级安装

标准描述

测试应用升级版本可以成功安装

预置条件

1、系统中已安装应用上一个正式发布版本

测试用例

1、安装应用升级版本软件包

判定标准

应用升级安装成功

需考虑的特殊事项

仅针对应用升级版本

需遍历应用支持的不同类型设备

4.2.2 应用升级版本启动

标准编号

4.2.2

应用升级版本启动

标准描述

测试新版本应用安装后,可以正常启动

预置条件

1、已升级安装新版本应用

测试用例

1、启动升级版本后的应用

判定标准

升级版本应用安装后可以正常启动

需考虑的特殊事项

仅针对升级版本

需遍历应用支持的不同类型设备

4.2.3 应用升级版本用户数据继承

标准编号

4.2.3

应用升级版本用户数据继承

标准描述

测量应用升级版本后其自身数据(账号数据、应用配置数据)继承

预置条件

已安装上一个发布版本的应用,并构造应用数据(登录账号、修改应用配置);

测试用例

  1. 安装升级版本应用
  2. 启动应用后检查构造数据是否继承

判定标准

应用升级后其历史数据被继承

需考虑的特殊事项

仅针对升级版本

4.2.4 应用升级版本运行崩溃

标准编号

4.2.4

应用升级版本运行崩溃

标准描述

测试应用升级安装后,应用运行不会运行崩溃

预置条件

已安装上一个发布版本的应用,并构造应用数据(登录账号、修改应用配置);

测试用例

1.安装升级版本应用

2.遍历启动应用界面

判定标准

应用在运行过程中不会崩溃

需考虑的特殊事项

仅针对升级版本

4.2.5 应用升级版本运行无响应

标准编号

4.2.5

应用升级版本运行无响应

标准描述

测试应用升级安装后应用不会出现运行无响应报错

预置条件

已安装上一个发布版本的应用,并构造应用数据(登录账号、修改应用配置);

测试用例

1.安装升级版本应用

2.遍历启动应用界面

判定标准

应用在运行过程中不会出现无响应提示错误

需考虑的特殊事项

仅针对升级版本

4.2.6 应用类型不得更改

标准编号

4.2.6

应用类型不得修改

标准描述

应用升级版本的应用类型对比上一个发布版本不得更改

预置条件

  

测试用例

1、解析应用软件包的配置文件(installationFree),与应用上一个发布版本对比

判定标准

应用类型与上一发布版本保持一致

需考虑的特殊事项

仅针对升级版本

4.2.7 同名原子化服务类型不得更改

标准编号

4.2.7

同名原子化服务类型不得更改

标准描述

同名原子化服务类型不得更改

预置条件

  

测试用例

1、解析应用升级版本软件包的配置文件(moduleType),与应用上一个发布版本对比

判定标准

原子化服务的类型与上一个发布版本保持一致(entry/feature)

需考虑的特殊事项

仅针对升级版本

仅针对原子化服务

4.2.8 应用中已有服务卡片信息字段不建议修改(推荐项)

标准编号

4.2.8

应用中已有服务卡片信息字段不建议修改

标准描述

应用升级版本中已有服务卡片信息字段不建议修改,修改后可能导致已添加卡片消失

预置条件

  

测试用例

1、解析应用升级版本软件包的配置文件(forms),与应用上一个发布版本对比

判定标准

应用中卡片信息字段与历史版本中保持一致(forms)

需考虑的特殊事项

仅针对升级版本

仅针对有服务卡片应用

4.3 应用交互兼容
4.3.1 应用对外暴露接口需保证兼容

标准编号

4.3.1

应用对外暴露接口需保证兼容

标准描述

应用对外暴露接口不得修改或删除,只允许新增

预置条件

1、应用对外提供接口文件(zidl)

测试用例

1、对比已上架应用提供的接口文件,接口文件内容无修改或删除,仅有新增

判定标准

1、接口文件对比已上架版本无修改或删除

需考虑的特殊事项

仅针对升级版本

开发者自检

4.3.2 分布式业务(跨端迁移)应用需配置分布式兼容字段

标准编号

4.3.2

分布式业务(跨端迁移)应用需配置分布式兼容字段

标准描述

涉及分布式跨端迁移业务的应用必须在配置文件中配置分布式兼容字段

预置条件

  

测试用例

1、解析应用软件包中的配置文件,解析对应字段(minCompatibleVersionCode)

判定标准

应用清单文件中已配置该字段

需考虑的特殊事项

仅涉及分布式跨端迁移业务的应用

4.3.3 与其他应用(同厂商或不同厂商)交互处理必须进行异常处理,如被交互应用不存在时保证自身不会崩溃

标准编号

4.3.3

与其他应用(同厂商或不同厂商)交互处理必须进行异常处理,如不存在时保证自身不会崩溃

标准描述

应用涉及与其他应用交互时,需保证对方应用不存在时自身应用不会崩溃

预置条件

  

测试用例

开发者自检

判定标准

  

需考虑的特殊事项

  

4.3.4 应用对外暴露组件属性不建议修改(推荐项)

标准编号

4.3.4

应用对外暴露组件属性不建议修改

标准描述

应用上一个发布版本清单文件中定义对外暴露的组件相关属性不建议修改

预置条件

  

测试用例

1、解析应用软件包配置文件中组件信息与上一版本对比

判定标准

应用新版本中之前已暴露组件属性与上一个发布版本中保持一致

需考虑的特殊事项

如应用有特殊诉求要求必须修改,可以提出上架审核团队申请后审批后允许通过此项;

仅针对升级版本

5 修订记录

日期

修订内容

2021年7月

第一次发布

2022年6月

补充应用卸载的测试点

2023年3月

修改部分描述

稳定性测试

1 范围

1.1 背景及目的

软件稳定性,指软件在持续操作时间内出错的概率,例如一天时间内会出错1次或几次。应用软件的稳定性严重影响着应用的用户体验,为构筑良好用户体验,须建立一套应用稳定性质量管控体系。

本标准规定了应用稳定性的衡量标准及测试方法与活动,旨在帮助提升应用上架应用市场前的质量,牵引生态内所有应用的稳定性改进,构建稳定和体验良好的应用生态。

1.2 适用范围/测试范围

本标准适用于HarmonyOS应用的稳定性质量评估。

2 规范性引用文件

3 术语、定义和略缩语

3.1 术语、定义
3.1.1 应用崩溃

应用崩溃:指在用户正常操作的情况下,某个应用突然出现闪退、异常停止运行等完全不可用的情况。包含故障:JS Crash、Native Crash等,如下表:

故障大类

故障小类

应用崩溃

JS Crash

Native Crash

3.1.2 应用冻屏

应用冻屏:指整个软件系统是正常的,某个应用出现屏幕卡住不动或一段时间内操作未及时响应的故障,也即用户俗称的应用死机、卡死、卡屏、无响应问题。对应的具体故障为App Freeze。如下表:

故障大类

故障小类

应用冻屏

App Freeze

3.1.3 应用稳定性故障

应用稳定性故障包含两种类型的具体故障,即“应用崩溃”和“应用冻屏”。

3.1.4 故障率

故障率:指单位时间内发生稳定性故障的次数,也称失效率,软件稳定性通常采用故障率来衡量。故障率值通过实验室的稳定性测试活动获得,故障率计算公式:

故障率 = F(对应类型故障总和)/ T(对应类型稳定性专项测试周期(单位:h))

本标准约定应用故障率通过“AI遍历测试”活动获得,因此,本标准中,故障率计算公式可推演为如下:

故障率 = F(应用崩溃故障数 + 应用冻屏故障数)/ T(AI遍历测试时长(单位:h))

综上所述,故障率相关定义总结如下:

定义

计算公式

故障类型

测试活动

单位时间内发生稳定性故障的次数

故障率 = F(应用崩溃故障数 + 应用冻屏故障数)/ T(AI遍历测试时长(单位:h)

应用崩溃

AI遍历测试

应用冻屏

3.1.5 内存泄漏

内存泄漏:指在用户正常操作的情况下,应用对内存使用不当,导致有限的内存资源申请超上限或使用完未被释放。内存泄漏会引起应用崩溃、应用冻屏等稳定性故障。实验室通过“内存泄漏检测测试”活动获得内存泄漏指标。

3.1.6 踩内存

踩内存:指在用户正常操作的情况下,程序指令非法访问内存地址,也称为内存越界。踩内存会造成应用崩溃、应用冻屏等稳定性故障。实验室通过“踩内存检测测试”活动获得踩内存指标。

3.1.7 内存资源异常

内存资源异常包含两种类型的具体故障,即“内存泄漏”和“踩内存”。

内存资源异常指标通过实验室的稳定性测试活动获得,将应用出现内存资源异常的次数作为衡量指标。

定义

计算公式

故障类型

测试活动

内存资源出现异常,包含“内存泄漏”和“踩内存”两种故障

内存资源异常次数 = 内存泄漏次数 + 踩内存次数

内存泄漏

内存泄漏检测测试

踩内存

踩内存检测测试

3.1.8 应用稳定性测试时长

应用稳定性测试时长:应用稳定性各测试活动周期统称为应用测试时长。

3.2 缩略语

4 测试环境准备

测试环境需符合应用本身业务的要求或依赖。

5 稳定性测试标准

5.1 总体框架

本标准由“稳定性衡量标准”和“测试方法与活动”两部分构成:

  • 稳定性衡量标准:软件稳定性通常采用“故障率”来衡量,同时考虑到内存资源异常是导致应用出现软件故障的主要原因,因此将内存资源异常次数也作为应用稳定性衡量的一个维度。故本标准从故障率和内存资源异常两个维度来衡量应用稳定性质量。
  • 测试方法与活动:包含AI遍历测试、内存泄漏检测测试、踩内存检测测试三种测试方法,用于支持本标准测试活动,以完成稳定性标准验收和稳定性质量评估。

框架图示如下:

HarmonyOS Developer使用指南-兼容性/稳定性测试-鸿蒙开发者社区

5.2 稳定性衡量标准
5.2.1 故障率标准

故障率指标:故障率< 1次/h 为达标,否则不达标。

指标名称

达标要求

故障率

故障率< 1次/h

说明

若应用具备跨设备业务能力,在进行上架测试时须包含分布式协同业务场景,且测试结果满足故障率要求。其中同系统版本分布式协同业务场景为必选测试,跨系统版本分布式协同业务场景为可选测试。

5.2.2 内存资源异常标准

应用内存资源异常指标:应用内存资源异常次数等于0为达标,否则不达标。

指标名称

达标要求

内存资源异常

内存资源异常次数 = 0

说明

若应用具备跨设备业务能力,在进行上架测试时须包含分布式协同业务场景,且测试结果满足内存资源异常次数要求。其中同系统版本分布式协同业务场景为必选测试,跨系统版本分布式协同业务场景为可选测试。

5.3 测试方法与活动
5.3.1 总体策略

根据应用是否支持分布式业务场景,定义了应用在各场景下测试方法选取策略:

序号

触发方法

单设备场景

同系统版本跨设备场景

跨系统版本跨设备场景

1

AI遍历测试

必选

必选

可选

2

内存泄漏检测测试

必选

必选

可选

3

踩内存检测测试

必选

必选

可选

说明

“同系统版本跨设备场景”是指应用的分布式业务运行在相同版本的HarmonyOS设备上。

“跨系统版本跨设备场景”是指应用的分布式业务运行在不同版本的HarmonyOS设备上。

5.3.2 应用稳定性测试时长要求

应用稳定性测试时长要求:

本标准约定,应用稳定性测试时长最长为40分钟,若应用的所有控件已全部覆盖10遍,但是时长仍未达到40分钟的,则以所有控件覆盖10遍实际耗时为准。

应用稳定性测试时长推导过程:

应用稳定性测试在实验室中进行,测试时无法像真实用户使用那样长时间运行,因此通过增加应用操作频率来缩短测试时长,使实验室测试在较短时间内达到和真实用户使用等效的效果。

大数据统计显示,当前TOP应用类型中,单应用人均使用时长为12小时/月,单应用每个页面停留平均时间为161秒,实验室测试时将页面停留时间缩短到2秒(平均一个页面有20个控件,对每个控件做1次操作需要100ms),平均每个应用约100个页面,则对一个应用遍历10次,需要40分钟;因此实验室约40分钟就可以完成真实用户1个月的应用操作体验和页面覆盖。为保证测试充分度,在40分钟之内,尽量对应用进行更多次的遍历,若应用的所有控件已全部覆盖10遍,但是时长仍未达到40分钟的,则以所有控件覆盖10遍实际耗时为准。

下表是常用类型应用的“大数据统计使用时长”和“换算到实验室的测试时长”:

应用类型

大数据统计的页面停留时长(单位:秒)

实验室的页面测试时长(单位:秒)

大数据统计的月使用时长(来源大数据统计,单位:分钟)

实验室模拟一月的测试时长(单位:分钟)

影音娱乐

106.03

1.32

974.40

12.10

实用工具

63.60

0.79

276.60

3.44

社交通讯

53.76

0.67

3177.00

39.47

教育

12.05

0.15

38.40

0.48

新闻阅读

108.56

1.35

1040.40

12.92

出行导航

201.47

2.50

233.40

2.90

购物比价

30.14

0.37

329.40

4.09

金融理财

34.56

0.43

391.20

4.86

游戏

846.32

10.51

78.60

0.98

平均值

161.00

2.00

720.00

8.94

说明

应用类型参考自​​华为应用市场​​对应用的分类。

5.3.3 AI遍历测试方法

标准编号

5.3.3

AI遍历测试

标准描述

测量应用稳定性故障率指标

原理描述

AI遍历测试:应用功能页面全控件全路径遍历测试。

  • 基于窗口识别技术(AI或传统命令行dump页面元素方式)获取应用功能页面信息(包括:窗口、页面、控件等)。
  • 全路径全控件随机遍历功能页面。

预置条件

测试用例

a. 在DevEco云测平台创建稳定性测试任务;

b. 待测试任务结束后,查看报告中的故障率指标是否达标。

判定标准

  • 测试充分度:需覆盖应用三层及以上功能页面。
  • 功能页面层级划分原则:应用主页面为一层功能页面,用户操作至页面控件发生变化时,则新页面划分为下一层级功能页面。
  • 测试时长:同应用稳定性测试时长要求。
  • 达标标准:同故障率指标达标要要求,即故障率<1次/h为达标。

需考虑的特殊事项

  • 应用目标用户机型分布中TOP10的机型,保证80%的机型被覆盖到。
  • 测试平台:DevEco云测平台。
5.3.4 内存泄漏检测测试方法

标准编号

5.3.4

内存泄漏检测测试

标准描述

测量应用内存泄漏故障数

原理描述

内存泄漏故障检测实现原理:通过应用内存的增长统计趋势判断是否存在泄漏风险,对内存分配点动态开启插桩,获得内存分配的调用栈和对象信息,并且根据增长趋势对内存分配信息数据进行筛选,过滤出精确的泄漏栈信息。

内存泄漏检测测试:基于具有内存泄漏检测能力的智能终端软件测试版本,在应用功能测试(本标准采用AI遍历测试)过程中系统监控应用是否存在内存泄漏,若发现内存泄漏问题,即刻记录故障日志并生成测试报告。

预置条件

系统软件版本具备内存泄露检测能力。

测试用例

a. 在DevEco云测平台创建稳定性测试任务;

b. 待测试任务结束后,查看报告中的内存泄漏故障数是否达标。

判定标准

  • 测试时长:同应用稳定性测试时长要求。
  • 达标标准:测试完成后,无内存泄漏问题为达标。

需考虑的特殊事项

测试平台:DevEco云测平台。

5.3.5 踩内存检测测试方法

标准编号

5.3.5

踩内存检测测试

标准描述

测量应用踩内存故障数

原理描述

踩内存故障检测实现原理:基于地址消毒技术(AddressSanitizer,简写ASAN),利用额外系统内存(被称为影子内存)逐一使用特殊的magic num标记可用内存区域。在每一次load/store(load/store检查指令由编译器插入)内存时检测对应的影子内存,以确定该操作是否是有效,一旦发现访问无效内存,即刻打印调用栈并生成异常故障日志。

踩内存检测测试:基于ASAN技术编译出智能终端软件测试版本(包含ASAN编译过的被测应用),在应用功能测试(本标准采用AI遍历测试)过程中系统监控应用对内存使用是否合法,若发现内存地址越界(堆栈和全局对象溢出、野指针、超出作用域的内存使用、重复释放等)问题,即刻记录故障日志并生成测试报告。

需特别说明的是:对于未进行源码编译ASAN的应用,无法进行栈越界和全局变量溢出检测。

预置条件

系统软件版本具备ASAN检测能力。

测试用例

a. 在DevEco云测平台创建稳定性测试任务;

b. 待测试任务结束后,查看报告中的踩内存故障数是否达标。

判定标准

  • 测试时长:同应用稳定性测试时长要求。
  • 达标标准:测试完成后,无踩内存问题为达标。

需考虑的特殊事项

测试平台:DevEco云测平台。

6 修订记录

日期

修订内容

2021年7月

第一次发布

2022年4月

更正描述错误




文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/app-stability-testing-0000001136273618-V3​

分类
标签
已于2023-4-4 14:25:52修改
收藏
回复
举报
回复
    相关推荐