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

相关文章

来自专栏Java架构沉思录

亿级用户下的新浪微博平台架构

  新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可...

1252
来自专栏Java编程技术

高性能 RPC 框架 Dubbo 从入门到深入(详细原理介绍限时9.99)

课程简介 整体来说,一个公司业务系统的演进流程基本都是从单体应用到多应用。在单体应用时,不同业务模块相互调用直接在本地 JVM 进程内就可以完成,而变为多个应...

612
来自专栏程序你好

微服务:如何拆分共享数据库?

在分解单体应用程序到微服务体系架构时,重点考虑独立数据库拆分是很重要的。您需要想出一个可靠的策略,将您的数据库分割为多个与应用程序对齐的小型数据库。简而言之,您...

661
来自专栏逸鹏说道

.Net 分布式云平台基础服务建设说明概要

.Net 分布式云平台基础服务建设说明概要 1) 背景 建设云平台的基础框架,用于支持各类云服务的业务的构建及发展。 2) 基础服务 根据目前对业务的理解和...

3118
来自专栏IT进修之路

原 Dubbo与Spring Cloud共

2705
来自专栏java一日一条

『文末送书』Spring Cloud 微服务的那点事

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

622
来自专栏云计算D1net

微服务和云应用程序性能如何融合

在云应用开发时,微服务可能是开发人员最好的朋友,但他们也可能是有害的。行业专家汤姆·诺勒为此分析了人们所关注的重点。 ? 很少有技术工具是如此的优秀,以至于它们...

3304
来自专栏JAVA高级架构

亿级用户下的新浪微博平台架构

762
来自专栏顾宇的研习笔记

Serverless 微服务架构案例无服务器架构 (Serverless Architectures) 简介 AWS Lambda 的编程模型Amazon API Gateway + AWS Lamb

Serverless 架构最早可以追溯到 Ken Fromm 发表的文章《Why The Future Of Software And Apps Is Serv...

661
来自专栏云计算D1net

从公有云无服务器应用中获得最大收益

无服务器计算可以降低公有云中的应用成本,但企业需要正确的技能才能获得这些,且收获其他收益。 无服务器计算允许组织在更细的颗粒度上构建和部署云应用。与使用单体代码...

32710

扫码关注云+社区