实战丨广发证券迈向自动化测试新时代
欢迎金融科技工作者积极投稿!
各抒己见!
投稿邮箱:
newmedia@fcmag.com.cn
——金融电子化
文 / 广发证券股份有限公司信息技术部 黄丛珊 秦瑶 李娴
近年来,随着互联网的飞速发展,许多券商提出“金融+科技”的发展战略,坚持“以客户为中心”,通过以增强自身金融科技应用和快速适应能力,在信息系统建设方面加快了产品的迭代开发频率,尽快满足客户各类个性化需求。基于以上,越来越多的券商IT开发团队采用敏捷开发模式,作为产品质量测试人员,应对各种复杂的业务场景、繁重的测试任务,纯功能测试已无法满足快速迭代需求,自动化测试是敏捷开发模式下的必然选择,因此,一个能兼容多种测试类别和业务场景、易学易用、功能齐全的自动化测试平台是测试人员的共同需求。
基于此背景,结合金融+科技的发展趋势,广发证券质量团队弘扬工匠精神,坚持自主研发,打造从自动化用例录入、测试计划建立、任务调度执行、测试报告输出等全流程一站式执行,并将测试过程全方位数字化展示;兼容接口测试、数据库比对测试等多种类型业务测试、多场景交叉业务测试,以及测试环境管理、测试数据构造、配置信息统一管理的一站式自动化测试平台服务,为建设“质量广发”添砖加瓦!
本文以接口自动化测试作为一站式自动化测试平台的突破口,纵向打通全链路业务测试闭环链路,分享一下平台的设计思路和实践经验。
一站式自动化测试平台建设背景
通过分析市场上主流的自动化测试工具Postman、RobotFramework、Jmeter、Unittest以及广发证券信息系统现有的自动化测试平台,我们发现以下几个痛点。
一是用例维护成本高、学习成本较高。部分测试框架无界面化操作,需要人工编写代码,有一定学习成本,人工编写的自动化测试用例由于无较好的手段强制规范,容易将测试环境、前置操作、业务执行逻辑、测试数据等,均结合在一个用例里,形成一个高耦合的用例,随着业务发展,用例数增多,后期会产生巨大的用例维护成本。
二是无标准规范、无数字化输出。手动调用自动化测试框架编写测试用例,以及现有自动化测试平台均无法从用例开始编写到最后执行结束的全流程的自动化过程数据采集,人工采集数据由于无统一标准,存在不可靠性且无法进行不同业务之间的横向考量,从而导致一些重要的自动化衡量指标的缺失,例如:用例编写效率、接口覆盖率、用例执行效率、发现缺陷数等。
三是无法兼容多样的测试手段及复杂的业务场景。由于证券业务系统的多样化,测试手段和测试方法也呈现多样化。其中,接口测试涉及的协议有HTTP协议、T2SDK协议、FIX协议等,不同协议测试需要使用不同的测试工具;测试手段除了接口测试外还包括数据库比对测试、UI测试等,在实际业务测试中,会存在需要同时把上述不同类型的测试方法交叉结合的场景,当不同手段交叉测试时,需要解决数据类型不兼容的问题。
一站式自动化测试平台的功能介绍
为了解决上述痛点,一站式自动化测试平台在以下几个方面做了改进。
1.自动化测试全流程线上化、标准化
平台提供用例录入到结果输出、告警、监控等功能使得自动化测试全流程线上化。并且通过划分:全局变量区、前置区、执行区、后置区、校验区五大区域来规范线上化的用例,大大降低了用例阅读成本。
全局变量区:集中管理测试用例中使用到的测试数据,以key-value方式存储,测试数据来源分多种类型,静态数据,随机数据,数据池数据,函数,或环境变量,或者其他操作组件执行结果暂存的临时变量,全局变量区的数据在整个用例工作区的任何组件中内均可使用,便于不同组件之间数据传递。
前置区:即初始化操作,即在执行测试用例之前的一系列数据或操作准备工作,通过在组件区中选择对应的操作组件形成前置区,测试用例执行前实施的准备工作。
执行区:测试用例执行的关键步骤,根据业务逻辑路径从操作组件区组合组件,串连形成业务测试链路。
后置区:即测试用例执行后的操作;比如执行业务后,查询数据库记录等。
校验区:测试执行结束后,定义校验方式,用于判断测试用例是否通过。
平台统一管理用例中涉及到的基础数据,如:接口信息、测试环境信息,并且将开发中的标准接口数据与自动化平台打通,自动导入自动化测试平台,测试人员在录入用例时只需要下拉选择所需要的基础数据信息,从而避免测试人员在用例中修改基础数据。此方法不但降低了用例编写成本,同时也实现了测试用例与测试基础数据隔离管理,规避了由于基础数据不准确导致的用例问题。
2.兼容多种测试方法与复杂测试场景
自动化测试线上化、标准化后还需要灵活兼容各种复杂测试场景及测试手段是我们在调研行业内其他自动化测试平台时发现的共同性问题,也是目前自动化测试平台均面临的一大难点问题。针对此问题,一站式自动化测试平台基于五大区域规范下创新增加组件化管理功能,将不同测试手段划分为不同测试组件,测试组件可以通过调整顺序灵活构造不同复杂业务测试场景,且组件方便开发维护,组件内容越丰富,越可以支持更多复杂的业务测试场景。
并且通过Python方法组件加Jsonpath自动生成方法,来解决不同测试手段之间数据兼容性问题,从而使得不同种组件能结合在一起形成任何复杂业务场景。
操作组件区的组件可拖拽至对应功能区域,并分配本用例的组件id,测试用例根据组件的顺序先后执行。操作组件拖拽至功能区后,配置测试数据,测试框架后台根据组件类型和数据,解析组件功能,并将解析结果(以json形式)返回至前端,测试人员根据前端展示的json数据,选择需要校验或者缓存的变量key,解析变量key的jsonpath,通过组件id+jsonpath唯一标识这个变量,放入全局变量区缓存,执行过程的结果值赋给这个变量,操作组件之间的数据引用关联,以及校验区数据校验,均全局变量区的缓存变量进行调用。
平台目前实现了11个组件,可以支持HTTP协议接口测试、T2SDK协议接口测试、数据库比对测试、接口比对测试等测试手段。
3.自动化测试数字化运营
自动化测试流程全流程线上化标准化之后,单次执行过程的结果数据可以自动生成测试报告,将结果清晰的展现出来。通过统计过程数据、结果数据,可以统计得出标准的、准确的自动化衡量指标,输出自动化测试报表及数字化大盘。通过报表,测试人员可以更清楚的了解到所在业务线及其他业务线自动化情况,有助于编写更高效的测试用例,更好的提高自动化测试覆盖率。
一站式自动化测试平台技术架构
本平台建设系统根据目前所熟悉的框架和语言,选择了Django+Layui+APScheduler+MySQL,采用B/S结构,架构模型从逻辑上分成四个层面,分别为业务层、架构层、数据层、统计层。系统功能架构图如图1所示。
图1 一站式自动化测试平台结构
业务层:基于Web的应用服务,主要包括权限管理、自动化测试相关模块、数据可视化等三大部分。权限管理模块主要对平台的用户进行人员鉴权控制;自动化模块主要是用户在平台设计自动化用例,执行自动化任务;通知和数据可视化模块主要是对测试结果的图形化展示以及对结果进行统计分析,测试任务的微信或者邮件的通知和报警信息。
架构层:主要是对业务逻辑实现大规模数据的分类存储、快速查询及规则存储更新。
数据层:主要是针对用例的参数数据、测试脚本、接口数据等业务层面的数据。
统计层:主要对平台的执行数据进行数据统计,实现一站式平台的数字化输出。
未来展望
自动化测试实现了测试人员手工测试到工具测试的飞跃,一站式自动化测试平台的落地,实现了测试人员自动化测试的一站式管理,为提高业务测试人员赋能增效,业务测试人员可以专注于如何设计用例更好的覆盖业务场景,从而提高产品的质量。后续,我们将数字化运营,用例健康度,覆盖率统计等不断优化实现,继续积极探索和实践数字化、智能化,微服务化架构等创新应用,为建设“质量广发”奠定扎实的基础。
(点击查看精彩内容)
● 实战丨数字征信赋能,普惠小微三农——鞍山市银行业金融机构服务小微企业和三农发展的实践
关于仿冒我刊收费的声明
我刊自创刊以来,从未向投稿人收取过任何费用。任何以刊发文章为名向投稿人收取费用的行为,均属于对投稿人的欺诈行为。
我刊官网地址为 www.fcmag.com.cn。
我刊投稿邮箱为 fcmag@fcmag.com.cn。
对于仿冒我刊网站、网页的违法行为,我社将追究其侵权责任,以维护我社和投稿人的合法权益。仿冒网站、网页举报电话:010-88232443
《金融电子化》新媒体部:主任 / 邝源 编辑 / 潘婧 傅甜甜