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 条评论
登录 后参与评论

相关文章

来自专栏IT笔记

微服务化的基石——持续集成

在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。

4318
来自专栏云计算D1net

如何处理云端特权用户管理?

很多企业正在试图保护员工使用的各种云应用和服务中的用户账户,这样做是因为:攻击者越来越多地通过钓鱼攻击和路过式下载等方式获取云账户和登录凭证,以试图获取对企业I...

2595
来自专栏Crossin的编程教室

【我问 Crossin】Crossin 这个名字是什么意思?

1 新建 git 项目是用 git init 还是 git clone,git init 和 git clone 都是创建新仓库,两个有什么区别? git in...

3619
来自专栏北京马哥教育

在 Amazon AWS 搭建及部署网站:申请、设置 AWS 服务

野猫阿罗哈 http://www.cnblogs.com/deltacat/p/amazon-aws-web-1.html Linux运维学习的过程中,实战无疑...

8168
来自专栏技术小黑屋

Google Play Services 7.5新增API及多项特性

本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。

1052
来自专栏Rainbond开源「容器云平台」

【微服务干货系列】微服务性能模式

1755
来自专栏Golang语言社区

不只是Web:十大令人振奋的Node.js项目

除了在Web服务器领域大展拳脚之外,Node.js同样也在无处不在的JavaScript应用程序创建当中散发出耀眼的光芒。 ? Node.js:不只是网站 就在...

4675
来自专栏CSDN技术头条

Uber是如何通过Mesos和Cassandra实现跨多个数据中心每秒100万的写入速度的?

每隔三十秒就会有位置数据返回,包括来自于司机和乘客应用的各类数据,需要实时使用的实时数据非常之多,那么Uber是如何存储这些位置数据的呢? Uber的解决方案非...

2059
来自专栏FreeBuf

魔兽世界中招:一条命令行就能劫持你的游戏!

最近出现了一种涉及社工技术的新型游戏攻击骗局,攻击者利用了魔兽世界(World of Warcraft,WoW)游戏插件中一个隐藏的功能。 新型攻击 想象一下这...

3818
来自专栏java一日一条

内存不足:杀死进程还是牺牲子进程

早上6点,我不得不开始处理“叫醒”我的一些问题。因为当这些问题发生的时候,我的手机铃声响了。昏睡中的我非常不情愿地拿起了手机,检查我是否疯狂到将叫醒闹钟设在了早...

831

扫码关注云+社区