QQ 浏览器测试左移实践

作者:macklu

团队:腾讯移动品质中心TMQ

一、概念篇

测试左移: 通俗的说即将测试行为放入软件开发周期的较早阶段进行,不局限于软件提测后再介入测试。我们理解的测试左移思想有两个层面:

1、测试流程上左移,即软件开发周期较早阶段介入测试 ,比如在需求阶段,设计阶段等;

2、测试早于或者同步于开发活动,即是在软件开发各个阶段提供软件质量保证,比如单元测试,准入测试等。我们理解的测试左移的思想贯穿整个软件开发周期。

图1 测试左移

测试左移的目的是尽可能的将大部分软件缺陷发现在软件开发周期早期,这样除了可以保证软件质量,也能够控制和减短软件开发周期。测试左移要做到:尽早的测试接入,尽早的发现测试问题,可以从产品流程规范和测试效率的提升保证测试左移的效果。

二、方法篇

这里主要介绍QQ浏览器在版本迭代流程中使用的测试左移方法,概括起来主要包括:产品开发流程规范化和测试方法-自动化测试。

图2 QQ浏览器测试左移方法

产品开发流程的规范主要包括:

1、需求评审: 测试人员参与需求评审,需求确定,避免由于后续测试变更引入的新问题。

2、测前质量把控:严格控制版本bug量,测试提供checklist给开发,加强开发自测,提升提测质量。

3、合流准入规范: 控制代码合入质量标准,执行0 bug合入规范等。 测试方法:

1、单元测试:与开发代码同步,问题发现在编码阶段;

2、BVT测试: 跟随版本编译,保证每个版本主要功能正常;

3、其他自动化测试: 准入测试,接口测试等。

相应的自动化准备成熟稳定后,持续集成管理,保证测试质量和效率。

三、实践篇

这里主要介绍QQ浏览器自动化测试相关实践,所列的内容基本都处于建设阶段。

1、单元测试(UnitTest)

单元测试是测试左移的方法之一,单元测试工作在开发编码阶段, 能够较早的发现代码缺陷。单元测试在一些公共或者核心模块收益比较大,单元测试代码与开发代码在一起,开发开发过程中,可以发现比较隐蔽的问题,保证代码质量稳定性。单元测试一般是开发主导的测试行为,单元测试效果依赖代码耦合度,实现起来难度比较大,所以测试需要引导开发养成编写单元测试的习惯,并且可以提供单元测试用例给开发。

QQ浏览器以小说模块后台作为单元测试试点,使用gtest(Google Test)作为单元测试框架,目前正在调研编写单元测试用例中。

2、接口测试

接口测试主要是保证常用的接口的功能的稳定性,接口测试需要保证接口输入数据的全面性。QQ浏览器目前对wifi模块、小说模块和文件模块进行了接口测试。由于接口自动化测试直接使用浏览器对应的功能接口,自动化实现后非常稳定,不会受到UI等变化的影响,维护成本小,属于低投入高回报类型测试。接口测试基本上可以用于软件开发的各个阶段,老的接口自动化测试可以保证接口原先功能的稳定性,可以通过需求和设计,通过CodeReview等手段,补充新功能的接口自动化用例,保证新功能的正确性,提升测试效率。

目前小说接口建设情况如下表所示:

图3 小说接口测试

QQ浏览器文件模块支持了文档,图片,音乐,压缩包等四大接口,覆盖37种文件格式,文件持续集成后的接口测试结果如下图:

图4 文件支持格式测试结果

3、准入测试自动化

所谓的准入测试自动化,既是将功能模块的常规功能做成自动化,开发在对这个模块进行修改提测后,需要执行对应模块的自动化测试,自动化测试通过后方可提测新功能。准入测试的宗旨在于保证老功能的正确性,保证修改不会造成老功能有问题,提升提测质量,缩短测试时间。

QQ浏览器文件能力支持了office系里doc,docx,ppt,pptx,xls,xlsx格式,每种格式支持很多种属性,浏览器对属性的支持是逐步完善的。 每次完善或者添加新的属性,必须要保证老的属性的正确性,保证排版的稳定性。浏览器文件针对每种格式文件,搭建了准入测试自动化库,目前包括用例318条。自动化触发入口搭建在utp平台,测试将自动化自动化触发入口交给开发,开发在提测新的功能时,触发对应的自动化用例即可执行准入自动化测试。

(1)准入测试适用utp平台管理,可以将接口直接交给开发,触发运行。

准入测试结果通过后,开发才能够提测相应功能。

(2)收益:

1)提升开发提测质量,缩短测试时间,提升测试效率;

2)插件半年提测10+次,准入通过后版平均每轮可以减少5小时/人。

4、BVT测试

概念:

BVT(Build Verification Test)版本验证测试,是在所有的开发工程师都已经提交自己代码后,编译生成版本之后进行的测试,主要目的是验证最新生成的软件版本在功能上是否完善。BVT测试用例只需要覆盖主要的软件能力,能够在版本构建成功后,快速运行得到整体测试结果。

QQ浏览器BVT测试:

QQ浏览器BVT测试一般需要在集成测试后进行(功能均已提交), QQ浏览器功能比较复杂,BVT测试用例 按照FT形式建设,这样可以保证功能之间的独立和运行时间的控制,目前QQ浏览器BVT建设情况如(QB7.5时数据,多数FT名用FTxx代替):

图5 QQ浏览器BVT建设情况

1、测试用例:按照各个FT进行BVT测试用例准备,保证用例之间的独立性,目前各个FT都在加紧用例的准备补充和完善中。

2、代码覆盖率: 衡量自动化测试的指标之一,目前在wifi模块和文件模块两个FT接入了代码覆盖率统计,目前单个FT覆盖率30%左右。

3、执行情况:BVT 采用构建触发的形式进行集成后的版本测试,会统一接入utp平台运行,当前可以构建运行的FT是文件,QB7.5构建运行17次,平均每次节省人力0.5h,后续会陆续接入其他FT BVT测试。

图6 浏览器BVT任务

总结:QQ浏览器自动化相关时间正处于建设阶段,在测试左移的使用效果会在后续版本给出进一步数据。

获取更多测试干货,关注腾讯移动品质中心TMQ公众号。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

棋牌游戏服务器架构: 总体设计

首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTE...

3986
来自专栏织云平台团队的专栏

拿什么解救你我的脚本?

1723
来自专栏李成熙heyli

性能优化三部曲之一——构建篇

背景: 接手新项目,发现项目最基本的文件压缩没有,离线包有多余文件,md5也并没有做好, 构建是用coffeescript写的,维护成本及交接成本大,关键的是,...

2237
来自专栏杨建荣的学习笔记

多系统交互中DBA该确认的一些事情(r6笔记第89天)

最近碰到这样一个问题,类似下面的架构形式。 目前应用1是一个另外一个网段的系统,负责一块业务,而应用2是目前我所负责的数据库所在的环境里。 ? 现在因为业务需要...

2716
来自专栏小俊博客

【区块链】BonusCloud正式开放注册

BonusCloud 是一个分布式边缘计算网络,可以允许大家使用 ARM v7/v8 架构的路由器设备,刷 Merlin (梅林)软件中心版,离线安装路由器插件...

4762
来自专栏程序你好

为什么应该使用RESTful Web服务设计

你可能负责一个API。也许你正准备投入制作一个,并且很期待开始。但是要小心,因为好的API设计可能很难。

1173
来自专栏Golang语言社区

棋牌游戏服务器架构: 总体设计

首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTE...

4796
来自专栏移动开发试验田

【移动开发】市面上主流「移动推送服务」的体验比较

推送服务基本上是每个 App 的刚需,自己也用过许多家推送服务,最近腾讯云上线了一个类似于 firebase 的移动开发平台,上面集成了很多的移动服务,包括推送...

2957
来自专栏编程微刊

2018前端越来越流行的的技术

1365
来自专栏开源项目

走过微软20年,埋头并发编程15年,如何减少代码的认知负荷?| 码云周刊

每周为您推送最有价值的开源技术内参! 技术干货 从Visual Studio看微软20年技术变迁 spring cloud netflix 微服务使用实例 20...

43113

扫码关注云+社区