作者: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浏览器自动化相关时间正处于建设阶段,在测试左移的使用效果会在后续版本给出进一步数据。
原文链接:http://tmq.cs0309.3g.qq.com/2017/06/qq/
获取更多测试干货,关注腾讯移动品质中心TMQ:
版权所属,禁止转载