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

1.2 工程效率

总体来说,工程效率就是研发效率(包含测试效率)。这里我们会把测试效率单独提出来进行说明,因为这是与测试工程师相关度最大的工作。研发效率,其实就是让产品上线的时间更快(在品质有保障的前提下),大多数时候是说与研发流程相关的(不局限于敏捷流程,Feature Team研发模型),例如包含但不局限于以下活动。
需求评审:需求评审机制以及更新通知,避免需求有改动而没有及时同步到相关角色。
代码质量:静态代码扫描,千行代码缺陷率等。
架构评审:代码架构的讨论以及评审。
Bug流程:Bug生命周期,避免随便修改Bug状态以及备注缺失。
Code Review:代码评审,如果有代码评审委员会就更好了。
Dogfood:自己做的产品自己(项目各成员)先体验。
Showcase:完成某个特性,可以通过会议针对某个特性进行展示,一般由产品经理主持。
上面提到的活动,只有通过整个项目团队(各个角色)的通力配合,才能更加高效。
再提一下测试效率,这大多数由测试工程师主导,也是测试工程师最主要的工作内容。测试效率包含但不局限于以下这些活动。
测试周期:测试与研发周期是密切关联的,包括迭代测试、集成测试、回归测试、上线测试等,每个阶段都要把握好测试效率和测试资源分配。
测试设计:包括需求覆盖度、用例覆盖度、用例执行效率等。
自动化测试:使用自动化执行的方式进行测试,可以快速得出测试结果,节省人力成本。
静态代码分析:使用一定的工具来对代码进行静态扫描,提前发现代码隐藏的问题。
测试技术创新:通过对测试技术的创新,例如精准测试、机器学习等方式,来变更测试方式,大幅度提升测试质量和效率。
接下来举两个例子具体看下。
1.2.1 自动化测试
自动化测试于20世纪90年代才开始逐渐成熟,特别是敏捷研发的流行以及推崇的TDD模式,自动化测试也逐渐流行起来。对于自动化测试,我们还是得多关注其投入产出比(ROI),特别是对于UI自动化测试。业界自动化测试金字塔模型建议做单元测试或者接口测试多于UI自动化测试。关于自动化测试投入产出比,请参阅第6章介绍的内容。
对于iOS平台上的自动化测试实践,我们也有在不同方向上的尝试(参见第5章),并都有不错的收获。相关自动化测试的开展还需要有一些自动化测试框架的支持(详细自动化测试框架的内容会在第7章介绍),QQ浏览器(iPhone)测试团队主要移植Google开源的EarlGrey框架来作为自动化测试的基础框架。本节先简单介绍几种主流自动化测试类型。

  1. BVT(Build Verification Test)
    业界现在流行持续交付的模式。那么每次持续集成编译出包后,自动化会运行一些基础功能测试用例,保证版本基础功能可用,而不会因为新代码合入影响基础功能。这部分主要介绍UI自动化测试,当然,随着版本需求的变更,维护成本也会增加。但对于QQ浏览器的UI变更还不是很频繁,维护成本还相对可控,整体的投入产出也不错,具体可参考第6章的内容。

2.监控类
根据产品的业务特点,我们会对产品进行一些监控,例如手机QQ浏览器(iPhone)项目实现了三种类型的监控测试,即终端视频嗅探监控、终端feeds流短视频可播性监控、终端资讯类监控。这部分监控的基础框架和BVT实现是一致的,只是基于业务形态做了调整,采用的也是EarlGrey框架并进行了二次开发。可参考第6章关于测试框架的二次开发。
3.性能自动化测试
性能测试涉及各种数据的采集和分析,而数据采集往往很复杂并且非常耗时,性能自动化测试也都集中在数据采集这一块。目前我们针对页面速度、产品稳定性、电量、流量、内存等各个方面进行性能自动化测试的尝试,详细内容请参见第4章。
1.2.2 静态代码分析
静态代码分析就是在不执行代码的情况下,通过一定的算法规则(词法分析、语法分析、单函数分析、代码段分析、数据流分析、资源分析、依赖链分析、更高级的智能逻辑分析)对整个工程的代码进行分析,以此来找出代码中的缺陷。这样就可以提早发现问题,大大降低研发成本。美国软件工程专家Capers Jones提出的软件测试缺陷价值图如图1-1所示。

图1-1 软件测试缺陷价值图
图1-1中的三条曲线分别代表引入的缺陷、发现缺陷、缺陷修复成本。越是在前期发现的缺陷,修复缺陷的成本越低,越是到后期,修复缺陷的成本越高。通常来说,发现缺陷主要在功能测试、集成测试阶段。
如果能够在Coding阶段发现大部分缺陷,就能大大降低修复缺陷的成本。静态代码分析技术恰恰能够很好地在Coding阶段发现部分代码问题,这样就能够大大节约软件开发成本。
经过实践论证,iOS平台比较好用的两款工具如下。
Clang的Scan-Build工具(下载地址:http://clang-analyzer.llvm.org/scan-build.html)。
FaceBook的Infer工具(下载地址:https://github.com/facebook/infer)。
目前这两款工具都是开源的,除了能够使用其基本的功能外,如果还有其他的业务需求,可以对这两款工具进行二次开发:添加自己的静态分析规则和分析算法。
QQ浏览器(iPhone)项目采用Scan-Build工具发现代码缺陷,如图1-2所示。

图1-2 Scan-Build工具发现代码缺陷统计图
采用Infer工具发现代码缺陷统计图如图1-3所示,共发现1275处缺陷。

图1-3 Infer工具发现代码缺陷统计图
每日构建版本时,配置工程会自动采用这两款工具对工程代码进行静态代码分析,这样在测试任务前就能发现代码缺陷,大大降低软件缺陷修复成本。

时间: 2024-08-22 15:03:54

《腾讯iOS测试实践》一一1.2 工程效率的相关文章

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

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

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

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

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

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

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

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

《腾讯iOS测试实践》一一1.3 品质管理

1.3 品质管理 品质管理分为两大类,即研发品质和线上品质.研发品质:包括品质体系(性能指标+用户评测).测试过程数据(Bug.通过率).线上品质:包括线上数据.用户反馈.漏测率.品质体系,除产品本身的特性功能外,还包含流畅度.内存.耗电量.启动速度.弱网络等功能,是用户体验能感知或者影响用户口碑的.同时需要思考各个指标的比重(主要考虑对用户的影响程度),这样可以更好地优化核心指标.线上品质,研发品质的指标都可以通过预设在被测App里的埋点上报上来,这样就有了线上数据.用户反馈主要是通过各反馈渠

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

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

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

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

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

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

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

1.6 数据反推 1.6.1 测试过程中的数据测试数据反推-充分利用各类测试数据的优化流程,进一步保障产品的质量.在各阶段的测试过程中会产生大量数据,例如Bug数据.测试通过率.回归通过率等.那么如何充分利用这些数据呢?前面已对已知Bug以及未知Bug进行了讨论.现在换个角度,从Bug产生的阶段来分析,图1-12是不同阶段Bug修复成本曲线. 图1-12 不同阶段Bug的修复成本[3]针对Bug各阶段的分析,根据图1-12中Bug越早发现解决成本越低的结论,需要尽可能在最早引入的阶段发现Bug.