招银兵器谱 自动化测试

招银兵器谱

自动化测试

研究背景

随着敏捷开发在我行热度不断提升,持续集成、持续交付作为敏捷的核心实践之一,越来越受到重视。外部经验及内部实践都告诉我们,自动化测试是持续集成、持续交付的灵魂,没有有效的自动化测试保证,持续集成和持续交付就仅仅是一个无用的躯壳了。

我行产品业务场景相对复杂,往往一个业务产品涵盖多个系统产品,各系统产品的对接使得完整测试一个业务难度加大。同时,同一功能多渠道、流程节点多、业务要素多的情况也屡见不鲜,这些都对自动化测试提出了迫切的需求。

为了应对上述情况,测试中心多年来努力提升自动化测试的水平。现在已形成中心内部各团队自动化测试技术与水平统一向前又百家争鸣的局面,使得测试效率与产品交付效率得到了切实的提高。

1

兵器档案

器名:测试进阶之道-自动化测试

锻造者:测试中心某不知名小团队

特点:解放部分手工执行生产力,提高回归效率,优化测试资源的配置

2

适用场景

类型及常用工具

目前市面上自动化工具较多,以下列举了部分主流工具的特点:

由于Selenium具备良好的可扩展性、支持关键字驱动、支持多平台等优点,我们将Selenium + Robot Framework+ Python作为项目实践的首选。

适用场景

一、软件需求变动不频繁

测试脚本的稳定性与自动化测试维护的成本密切相关。项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。

二、检查点重复性强

对于重复性很强,检查点相似的模块,适合用自动化进行封装,提高执行效率。

三、覆盖与回归

对于优化类和回归类项目,自动化具有很强的优势。能够对大量未改动的关联模块进行覆盖,提高回归效率。

四、接口类测试

对于接口测试类的项目,可以利用自动化脚本模拟发送请求报文,从而获取对应的返回结果进行检查。提高测试效率,且能减少手工测试带来的误差。

通常情况,可从产品成熟度、需求变更频率等多个角度去评估自动化的可行性。如下是一个打分评估示例:

一般来说,产品的成熟度越高,功能模块较为完善,自动化的价值(优化、回归等)相应的也越大,因子可以从高到低给出评估分数。需求变更频率越高,自动化脚本维护成本越高,因此得分相应较低。脚本可复用率是从自动化脚本后期产生价值的角度去评估的,越高越好。项目类型,是从不同项目类型出发考虑。基于此,可以得到一个实际的产品得分:

各团队可根据实际情况,对于评估得分(比如30分)以上的,考虑作为自动化的重点产品。

3

兵器构造

基于Robot Framework + Python的自动化测试架构模型

自动化测试平台的总体架构一共分为四层,自上而下为自动化脚本执行层,基于Robot Framework自动化框架实现的自动化测试案例、案例集、测试数据、案例标签和测试日志和报告管理层,Python应用程序层、以及自动化测试结果数据管理层。

平台采用Jenkins管理多个测试执行机,各个执行机可以7*24小时无间断执行测试脚本,自动生成测试报告和日志,根据我行每个系统的业务特征、定制化的完成测试报告和日志分析,并将有价值的测试数据落地到数据库,同时自动发送测试结果通知邮件。完美解决了传统自动化测试存在的测试时间长、过度依赖人工管理、测试案例和测试数据管理混乱、测试报告实际参考价值低、脚本维护成本过高、高价值的测试结果无法被挖掘的问题。

本平台采用高可扩展性的测试框架Robot Framework来管理测试案例,它使用文本形式保存测试用例、并支持使用EXCEL编辑测试案例,同时它支持关键字驱动,各个测试案例的执行步骤可以描述成通俗易懂的文字表述形式。正因为其极低使用门槛、各个层次的测试人员均能快速掌握并编写出高效的自动化测试案例。由于Robot Framework是基于Python语言编写的开源框架,因此Python所有核心的功能和各种强大的Library都能够应用于整个自动化测试平台,为平台提供了无穷的自动化测试应用潜力。此外Robot Framework提供了丰富的Jenkins API、借助Jenkins优秀的持续集成特性、真正实现了无人值守的自动化测试。

无人值守测试的实现

1、测试人员使用Robot Framework和Python脚本编写并调试自动化脚本

2、测试人员将调试好的脚本上传至测试平台主机的SVN版本控制器

3、产品代码完成构建后、自动将测试脚本发送至测试平台主机的SVN版本控制器

4、测试平台主机中Jenkins启动定时任务、定时将最新的脚本发送至执行机、并调度执行机进行脚本运行

5、测试执行机运行自动化脚本、并将最终的测试报告发送至测试平台主机

6、测试人员在线或者下载测试报告、进行测试结果分析

测试报告自动分析的实现

1、自动化测试平台定时获取自动化脚本的测试报告、并获取对应项目的测试执行数据。

2、平台比对测试报告和实际项目中测试案例的测试数据、得出各个项目的自动化脚本跑批成功率和自动化率、实际测试项目的自动化率、案例实际执行方式与自动化执行记录的差异结果,产品维度的自动化测试率统计数据等一系列有价值的测试结果数据。

3、平台将测试结果通过邮件形式发送给测试负责人、同时在系统生成统计图表,测试负责人可以登录平台查看统计数据。

4

锻造者说

自动化测试or手工测试

许多人在接触自动化测试之前都以为有了自动化测试,就不需要手工测试了,然而事实并非如此。自动化测试当然要发现Bug,但是自动化测试更重要的作用在于让测试人员从繁琐重复的测试流程中解脱出来,把更多的时间和精力放在更有价值的测试中;相应的,手工测试的目的在于测试工程师利用自己丰富的经验以及细致的跟踪发现Bug。总的来说,自动化测试是对手工测试的辅助和补充,它永远也不可能完全取代手工测试。

UI or 接口

上图是UI自动化脚本执行的场景,从单元到接口再到UI测试,成本变高的同时,速度也在降低。那我们为什么还需要UI测试呢?原因在于无论是单元还是接口测试都只是验证代码或接口的逻辑,UI自动化测试则主要关注页面展示逻辑及界面前端与服务器集成验证。对多数产品来说,接口自动化测试加覆盖主要功能的UI自动化测试是较为合理的选择。

独立 or 协作

现如今产品迭代越来越频繁,“从功能开发完成直到成功部署”这一阶段被称为软件开发“最后一公里”。而要想解决这“最后一公里”问题,自动化测试和持续部署缺一不可。将自动化测试包含到构建过程中,谨慎周全的自动化测试可以进一步保证持续部署的稳定与安全,提高持续部署的成功率。因此,摒弃闷头独自搞,开发和测试形成良好的协作,对项目团队提高迭代效率和质量是明智的选择。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180920G1C3GF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券