《腾讯iOS测试实践》一一1.6 数据反推

1.6 数据反推

1.6.1 测试过程中的数据
测试数据反推—充分利用各类测试数据的优化流程,进一步保障产品的质量。在各阶段的测试过程中会产生大量数据,例如Bug数据、测试通过率、回归通过率等。那么如何充分利用这些数据呢?前面已对已知Bug以及未知Bug进行了讨论。现在换个角度,从Bug产生的阶段来分析,图1-12是不同阶段Bug修复成本曲线。

图1-12 不同阶段Bug的修复成本[3]
针对Bug各阶段的分析,根据图1-12中Bug越早发现解决成本越低的结论,需要尽可能在最早引入的阶段发现Bug。针对某些阶段漏过的Bug分析,要尽可能完善测试设计覆盖,避免Bug都留到集成阶段发现,降低版本延期发布风险,从而开发出更高效的发布版本。
例如某个项目,集成测试发现的Bug占比只有整个版本(所有各分支版本)发现Bug的3%~6%,这些Bug大多是分支合流跟主干耦合的问题,还有一些是机型覆盖或者运营配置问题。大多数Bug都已经在各FT(Feature Team,特性模块)分支上发现了,这样集成后的发布风险就会大大降低,加快了发布速度。图1-13是FT分支的合流模型,各个分支FT都能充分保证质量,这样合流后集成测试问题就很少了。

图1-13 分支合流研发模式
也许有人会说3%~6%并不算少,确实,不同项目有不同要求。这里介绍的思路就是充分利用这些数据去思考与分析,推动团队采取动作,逐步降低该比例,逐步降低发布风险,提升发布效率。 分支合流模型的测试如何开展是另外一个话题,不过大体思路都差不多,除了基本持续集成外,还需要自动化测试(BVT、接口测试、终端性能测试等)的支持,才能快速支持分支合流的快速研发模型。
再举一个例子,Bug各模块分布,有些模块Bug问题比较多,可能需要特别关注测试,因为根据测试的二八法则—80%的缺陷出现在20%的代码中,所以对这些模块需要多分析多做测试,这样可以更大可能发现潜在问题。一般来说,不同模块会对应不同的开发团队或者FT,也可以通过Bug来评估开发团队(或者FT)的成熟度,根据不同的开发团队(FT)制定相应的改善措施,用数据说话,这样更好地推动团队的正向优化。
表1-1所示的是另外一个项目团队某个版本的各个FT存在的缺陷占比,从表中可以看出模块A是缺陷高发区,出现这种情况需要和对应模块的负责人进行沟通,细查原因,以利于改进。
以上仅仅是从Bug模块分布来分析Bug数据,其实还可以从很多维度(从开发人员的维度、用户行为的维度等)去挖掘Bug数据,充分利用Bug数据来优化测试设计,提升测试效率。
1.6.2 线上数据
以上介绍的大多是与研发过程品质相关的,其实还有一个很重要的方向就是线上品质,通过线上海量用户上报的数据来度量产品品质。大多数情况下,研发过程品质始终无法保证线上品质。比如用户反馈的重现问题,就是线上用户反馈的问题我们怎么也重现不了,即使严格按照用户的步骤、机型、网络等场景也重现不了。研发过程中测试的数据跟线上用户的数据对应不上,例如某个产品的启动速度,研发过程中测试的启动时间是2.3秒(测试20次取平均值),而线上用户上报的数据是3.2秒(20万个用户上报的平均值)。
业界也有相关测试方法,例如微软公司提出的TiP(Testing in Production),就是通过版本上线后海量用户上报各类数据来发现潜在的问题。测试人员需要关注各类性能数据,例如启动速度、内存、流畅度、响应时间、Crash率等。因为用户的机型、网络、地域、数据环境不同,所以不同用户上报的数据差异很大,这里需要做一些数据统计的分析处理,才能更好地展现出来。由于线上环境的复杂性,线上数据反映的结果会比测试数据差一些。
那么如何通过线上数据来分析定位问题呢?主要的方法就是对某些指标进行详细埋点上报,这样才能获得更详细数据并进行分析,最后找到问题所在。还是以某个产品的启动速度为例来说明(启动速度是指用户点击应用图标开始到拉取完数据展示给用户的这个时间段)。
App启动后就会到后台服务器拉取数据,从大的方向来看,需要区分后台服务器耗时以及App处理的耗时,这样可以方便前端或者后台解决问题。
如图1-14所展示的,“等待响应”就是后台服务器耗时(其中也包含网络传输的耗时)。一般可以通过抓取网络包分析得出相关耗时。
图1-14中的RTT(Round-Trip Time)是客户端到服务器往返所花的时间。
当然,只区分客户端跟后台服务器各自的耗时是远远不够的,还需要细分到每个主要函数的耗时,这样才能更好地定位具体是哪部分耗时。图1-15所示的是某个App对关键函数(节点)的日志统计。

图1-15 关键函数(节点)的日志统计
图1-15只是启动速度这个指标需要记录的数据,可能发现需要记录的数据非常多,对这些记录的日志也会进行分级,线上发布版本的日志会尽量少一些,不过关键的地方还是需要记录的。当然,版本加了日志会对性能有所损耗,不过在可接受的范围内,还是有必要的;通过线上版本的数据上报,可以得到用户真实的数据,发现潜在问题并逐步优化,给用户更好的体验,提升产品口碑。
如果品质体系的各个指标都有数据上报,那么数据量将非常大,对数据分析挖掘要求就会更高,当然可能产生的价值也会更大,这样更要重视数据的测试。这也是我们强调线上数据测试的原因。
测试数据还可以预测即将发布版本的质量,不管是研发过程还是灰度阶段,都将会产生很多测试数据。那么是否可以充分利用这些数据来预测上线版本的质量趋势呢?这确实是一个方向,但是需要大量的测试数据才可能有机会预测靠谱。因为线上用户的各种机型系统、网络状况、用户环境数据,这些都很难在上线前的环境覆盖到,所以就很难预测线上版本的质量。如果灰度群体足够,那么还是有机会的。腾讯内部的很多项目,产品稳定性问题(Crash率)都是通过灰度来发现问题的,Crash率达到一定程度,就可以进一步扩大灰度规模,逐步迭代放大灰度数量,直至上线。

时间: 2024-11-15 20:07:37

《腾讯iOS测试实践》一一1.6 数据反推的相关文章

《腾讯iOS测试实践》一一导读

Foreword 前 言 为何编写本书 随着移动互联网的兴起,移动终端的测试也进入火热的时代.两大主流操作系统Android和iOS占据了移动端的主要市场份额,其中iOS系统只能在苹果系列的移动终端使用,也就是说,在苹果系列的移动终端产品上,操作系统都是清一色的iOS系统,这就形成了硬件和系统同属于一家公司的独特现象.每年苹果公司发布新机型或者新操作系统时,都会引起全球果粉的疯狂.如此火热的平台,如何保证其App的质量就显得尤为重要. 长久以来,市面上单独讲解iOS平台测试相关知识的书籍比较少见

《腾讯iOS测试实践》一一1.4 测试分析

1.4 测试分析 1.4.1 黑盒测试分析"黑盒测试是软件测试的主要方法之一,也可以称为功能测试.数据驱动测试或基于规格说明的测试.测试者无须了解程序的内部情况,无须掌握应用程序的代码.内部结构和编程语言的知识,只要知道程序的输入.输出和系统的功能即可.这是从用户的角度针对软件界面.功能及外部结构进行测试,而不考虑程序内部逻辑结构."这段关于黑盒测试的定义参考自维基百科. 黑盒测试也是应用最广的方法之一,不少公司都是以黑盒测试为主.那么黑盒测试有什么不足呢?我们先看看<微软的软件

《腾讯iOS测试实践》一一1.8 小结

1.8 小结 通过本章的内容,先和读者建立了一个测试基础共识,便于接下来的章节理解.总体来说,我们认为测试=工程效率+品质管理,如何提升工程效率和品质管理是测试提升的核心内容.在测试的不同阶段,测试分析.测试设计.数据反推都能发挥一定的作用,未来的空间很大,需要我们一起去探索.

《腾讯iOS测试实践》一一第3章 iOS兼容性测试 3.1 引言

第3章 iOS兼容性测试 3.1 引言 苹果公司每年都有两个引人注意的大动作:一是发布新系统,二是发布新机型.无论是发布新系统还是发布新机型,都会让iPhone平台上的研发团队忙于兼容适配的工作.作为iPhone平台上的测试人员,对苹果公司每年放的大招都要有招架之术.很多不了解情况的人会认为苹果公司的机型比较少.系统发布也不频繁,应该不会有太多涉及适配的问题,而实际情况并非如此.每发布一个系统和机型,都会伴随大量的技术实现或者硬件变革,用户在感受机型与系统更新带来全新体验的同时,背后需要开发人员

《腾讯iOS测试实践》一一2.3 iOS平台的特殊性

2.3 iOS平台的特殊性 iOS平台作为一种独立的操作系统平台,有很多其他平台所没有的特性.2.3.1 证书 我们在找工作时,需要向用人单位出示学校颁发的毕业证书,同理,要想我们开发的应用能够在iOS设备上安装启动,就需要向iOS设备提供由苹果公司颁发的证书,证明我们的应用是经过苹果公司官方认证的.iOS设备在启动App前,会先验证证书是否合法,这个过程被固化在了iOS系统中,除非手机越狱,否则都要经历这个过程. 要想开发iOS应用,首先要成为苹果公司认证的开发者(虽然Xcode 7之后可以用

《腾讯iOS测试实践》一一第1章 测试观概述 1.1 引言

第1章 测试观概述 1.1 引言 在正式介绍iOS测试前,先为读者引入一个思考问题:一千个人有一千种测试观,那么测试人员到底应该持有何种测试观?我们先来看看测试的定义发展史.20世纪60年代:软件开发过程中,将测试等同于"调试".1957年,软件测试区别于调试,成为一种发现软件缺陷的活动.1972年,在北卡罗来纳大学举行了首届软件测试正式会议.1975年,John Good Enough和Susan Gerhart在IEEE上发表了文章<测试数据选择的原理>,从此软件测试被

《腾讯iOS测试实践》一一1.2 工程效率

1.2 工程效率 总体来说,工程效率就是研发效率(包含测试效率).这里我们会把测试效率单独提出来进行说明,因为这是与测试工程师相关度最大的工作.研发效率,其实就是让产品上线的时间更快(在品质有保障的前提下),大多数时候是说与研发流程相关的(不局限于敏捷流程,Feature Team研发模型),例如包含但不局限于以下活动.需求评审:需求评审机制以及更新通知,避免需求有改动而没有及时同步到相关角色.代码质量:静态代码扫描,千行代码缺陷率等.架构评审:代码架构的讨论以及评审.Bug流程:Bug生命周期

《腾讯iOS测试实践》一一1.5 测试设计

1.5 测试设计 测试设计是一个系统性工程,涉及内容比较多,从前期需求分析到用例设计,再到各类数据的分析等.下面我们择取主流的理论来看一下. 1.5.1 探索式测试探索式测试是目前业界比较流行的一种测试风格,是由测试专家Cem Kaner博士于1983年提出的,后来经过James Bach.James Whittaker等人的发展流行起来.国内大多数人是因为James Whittaker撰写了<Exploratory Software Testing>(探索式软件测试)一书才了解探索式测试,并

《腾讯iOS测试实践》一一3.2 系统兼容

3.2 系统兼容 iPhone上的操作系统被称为iOS,每次发布新版本,想体验新特性的用户就需要将自己的手机进行固件刷新,或者购买已经配置最新系统的iPhone.操作系统的差异是手机"软实力"的差异.新系统发布给我们带来了新功能和接口实现的变化.3.2.1 新增功能 什么是系统的新功能?发布每个大系统,除了界面更新外,必然伴随着一些全新的功能,升级了新系统后这些功能可以直观地被用户体验到.例如iOS 8带来的widget,支持第三方输入法,iOS 9带来的spotlight新特性,iO