移动应用质量标准
作者:端木花花牛 2016-02-25 {{allComments.length}} 7063 干货分享移动应用质量标准
产品评测和风险防控组
目录
1. 概要
移动应用质量标准成熟度主要是针对移动应用测试能力、应用自身质量的衡量标准模型。其中针对测试能力的模型已在百度内部使用了较长时间,用于衡量各产品线移动应用测试能力情况。针对应用自身质量的标准在MTC上运行了一年多, 当应用测试完成后通过量化的分值,衡量产品自身质量情况。
移动应用质量标准涵盖了保证应用质量所需进行的几乎所有测试指标,通过一套衡量维度和打分标准,对测试能力和应用质量进行量化,并反映其中存在的详细问题点,从而为提高移动应用测试及产品质量提供指导。
2. 整体框架
质量标准成熟度包含七个测试维度、三十五个测试指标,及对应的衡量维度和打分标准。
3. 测试指标
移动应用质量标准包含三十五个测试指标,涵盖了移动应用测试的几乎所有维度,通过对这些指标的测试,能够很好的覆盖应用的各方面质量,这里根据不同的测试角度,将测试指标分为了七大维度:
3.1基础功能测试指标
基础功能测试 | 描述 |
基本功能 | 移动应用包含的基本功能是否正常 |
异常测试 | 所有异常操作和复杂用户场景的测试。包括客户端操作异常、客户端与服务器端交互异常、网络异常、交互打断等 |
帐户登录 | 检查和帐户相关的功能是否正常。如支持不同帐户登录(QQ、微博等)的功能是否正常;多个帐户同时登录的功能是否正常;多端登录的功能是否正常 |
包名、版本号、签名 | 包名、版本号、签名是否正确 |
静态代码扫描 | 通过扫描工具检查代码中的错误,并逐项进行处理和说明 |
3.2 性能稳定性测试指标
性能稳定性测试 | 描述 |
电量消耗 | 典型用户场景下及待机状态下的耗电量 |
流量消耗 | 典型用户场景下及待机时的流量消耗 |
CPU占用率 | 典型用户场景下及待机时的CPU占用率 |
内存消耗 | 典型用户场景下及在不活动时的内存消耗 |
启动时长 | 各种启动方式下,启动的时间(冷启动(开机后第一次启动)、热启动、第一次启动时间、从最近浏览启动) |
内容加载时长 | 产品主要页面或功能加载时长 |
退出时长 | 在产品内退出或进入后台操作的时长(back键退出、home键退出) |
帧率 | 主要界面滑动的流畅程度 |
安装包大小 | 安装前、安装后、第一次启动后应用的大小 |
Monkey测试 | 每次迭代需通过至少8h无间断的Monkey测试 |
3.3 兼容性测试指标
兼容性测试 | 描述 |
ROM兼容 | 对不同ROM版本的兼容性(原生ROM(4.0、4.1、4.2等);第三方ROM(小米等)) |
芯片兼容 | 对不同芯片的兼容性(MTK平台、高通平台、Intel X86平台等) |
屏幕兼容 | 对不同屏幕分辨率的兼容(HVGA、VGA、WVGA、FWVGA、720p、1080p等) |
手机品牌兼容 | 对不同手机品牌机型的兼容(三星、LG、小米、华为等) |
安全软件兼容 | 对安全类软件的兼容性,安装之后安全软件不会报应用的错误(如百度手机管家、QQ手机管家等) |
版本兼容 | 新版本需要兼容之前的旧版本 |
SDK兼容 | 对应用内集成的SDK兼容 |
3.4 安全测试指标
安全测试 | 描述 |
配置安全 | 特定场景下检查配置安全性,包括发布状态检查、权限申请、自定义权限、签名有效性校验 |
数据安全 | 特定场景下检查数据安全性,包括存储安全、传输安全、日志信息泄露、intent信息泄露、密钥管理 |
组件安全 | 特定场景下检查组件安全性,包括activities组件安全、services组件安全、content providers组件安全、broadcast receivers组件安全、动态注册receivers组件安全 |
输入检验 | 特定场景下检查输入的安全性,包括SQL注入、路径遍历、IPC空引用异常DOS、intent注入 |
webview组件安全 | 特定场景下检查webview组件安全,包括:addJavaScriptInterface命令执行、JS本地文件窃取漏洞 |
crash隐患 | 检查APP中是否存在crash隐患,包括输入检验,特定场景下检查输入的安全性,比如SQL注入、路径遍历、IPC空引用异常DOS、intent注入;接口检查等 |
3.5 遍历测试指标
遍历测试 | 描述 |
遍历测试 | 模拟用户对应用的实际操作,自动对应用中每个界面上可操作的元素进行点击,记录下操作过程中的路径和问题(截图、日志) |
3.6 场景测试指标
场景测试 | 描述 |
低电量测试 | 不同低电量情况下,检查功能是否正常 |
地域测试 | 不同地域,检查定位相关功能、网络是否正常 |
网络测试 | 不同网络环境下(2G、3G、Wi_Fi),网络功能是否正常 |
3.7 线上质量监控指标
线上质量监控 | 描述 |
用户反馈 | 收集不同渠道用户反馈问题,并进行处理,提升产品质量 |
数据统计 | 核心用户指标,在用户允许的情况下,了解用户使用产品情况,帮助改善产品质量 |
crash监控 | 监控用户在使用过程中的crash情况 |
上架监控 | 需及时检查并监控第三方商店的上架情况,包括但不限于版本号、渠道对应情况等 |
4. 评价模型
移动应用质量标准通过对测试流程中的各个环节进行不同维度的考量,并对这些维度进行重要性分级,分配不同的权重,来计算各测试指标质量标准和整体测试质量标准水平,量化出测试能力和应用质量所处水平。
4.1 移动应用质量标准等级
根据最终的质量标准水平量化,将移动质量标准分为5个等级:
4.2详细的评分模型
4.2.1衡量维度
按照移动应用测试生命周期:测试设计阶段、测试执行阶段、测试结果处理阶段,考虑各阶段主要关注点,确定衡量维度如下:
衡量维度 | 描述 | |
测试设计阶段 | 终端覆盖度 | 终端覆盖度是指测试时要在对结果产生影响的多种终端类型上进行测试 |
功能覆盖度 | 功能覆盖度主要是对应用本身功能的测试广度和深度。设计测试用例时首先从用户场景出发,根据不同的用户场景设计对应的测试用例进行测试 | |
测试执行阶段 | 规范性 | 测试用例在执行过程中的规范性,直接影响测试结果的准确性。比如测试工具的选择、人工执行时有严格的测试标准指导,使得测试结果的准确性不依赖单个人的测试能力等 |
效率 | 测试效率是指测试执行所花费的人力、时间等成本是否最优。比如自动化实现测试提交、自动执行测试用例、自动收集测试结果等 | |
测试结果处理 | 结果展示 | 通过可视化的界面直观展示测试结果,方便查看测试数据,并且具有分析统计功能。比如展示内容包括历史数据、本次测试结果详细信息、不同版本对比、问题定位与分析等,通过统计图形图表、数据趋势图等方式展现出来,让人很直观的能得到想要的信息,且可以方便了解产品质量变化 |
实际结果 | 实际结果是指测试完成后的实际测试结果,通过、未通过、通过率等,直观反映在既定测试范围内的应用质量 | |
结果分析 | 对测试中发现的问题进行定位分析,处理解决,优化产品质量 |
4.2.2 衡量维度得分
对于单个测试指标的不同维度进行评分时,评分思路主要按照从无到有、从低等级到高等级的进阶过程来评判,根据当前产品所处的不同阶段,进阶程度,给出不同的分值,分值可以是5分制、100分制等不同分值维度。
衡量维度 | 进阶 | |
测试设计阶段 | 终端覆盖度 | 无或针对此指标要求,覆盖终端类型非常少,完全不能满足质量要求----》进阶到,针对此指标要求,覆盖所有需要测试终端类型 |
功能覆盖度 | 无或覆盖场景和用例非常少,无法满足质量要求----》进阶到,针对此产品和指标特点覆盖所有需要覆盖用户场景和用例 | |
测试执行阶段 | 规范性 | 无或非常混乱,无法保证结果的准确性----》进阶到,测试工具精准,测试流程非常正规 |
效率 | 纯手动测试----》进阶到,一键提交测试、自动执行、自动收集结果等全流程自动化 | |
测试结果处理 | 结果展示 | 无展示或展示混乱----》进阶到,展示数据全面、分析统计功能完善、界面展示易读美观 |
实际结果 | 结果通过率非常低----》进阶到,通过率接近100% | |
结果分析 | 无分析----》进阶到,自动定位问题,快速解决 |
4.2.3 重要性定义规则
由于产品特点不同,测试指标关注点不同,根据不同指标项及指标衡量维度制定了不同的重要性级别:A、B、C、D,不同的重要性分配不同的计算权重。
单个指标重要性定义规则 | |
A | 衡量产品质量的重要指标,影响产品发布,或如果此项指标质量较差,将严重影响用户使用或让用户产生强烈的抱怨 |
B | 对于衡量产品质量起到一定作用,或如果此项指标质量较差,会引起用户使用的不满 |
C | 对于衡量产品质量意义较小,或测试结果好坏对用户使用产品影响较小 |
D | 对于衡量产品质量无太大意义,或测试结果好坏对用户使用产品基本没有影响 |
单个指标不同衡量维度重要性定义规则 | |
A | 强依赖,对衡量单个指标测试能力或质量起到决定性作用 |
B | 中依赖,对衡量单个指标测试能力或质量起到影响较大 |
C | 弱依赖,对衡量单个指标测试能力或质量有一定影响,但是影响较小 |
D | 基本无依赖,对衡量单个指标测试能力或质量影响非常小 |
4.2.4计算公式:
(1)整体质量标准成熟度分值 = (基础功能测试分值 + 性能稳定性测试分值 + 兼容性测试分值 + 安全测试分值 + 遍历测试分值 + 场景测试 + 线上质量监控)/ 7
(2)单个测试维度分值 = 指标1分值 * 指标1对应的权重 + 指标2分值 * 指标2对应的权重 + ………… + 指标n分值 * 指标n对应的权重
(3)单个指标分值 = 衡量维度1分值 * 衡量维度1对应的权重 + 衡量维度2分值 * 衡量维度2对应的权重 + ………… + 衡量维度n分值 * 衡量维度n对应的权重