毕业设计--金融系统自动化测试方案

背景介绍

保险系统核保模块项目。

业务介绍

核保平台包括核保处理,规则引擎,核保管理,核保查询几大功能模块,其中核保处理核保模块关联其上上下游系统(如出单理赔等),并调用自身的规则引擎,管理,查询等自身功能模块,完成核保的整体流程,是核保业务的核心处理模块。

规则引擎设置了一些规则条件

管理及查询模块为一些增删改查服务,为下游系统提供数据。

架构介绍

使用springboot搭建微服务,zookeeper作为服务发现以及配置文件管理,微服务之间的通信用到了自研的rpc组价。任务流是使用rabbitmq和kafka来保证消息可靠性投递,使用redis作为缓存中间件,jenkins持续集成被测系统与自动化测试用例。

测试方案

被测系统可测性处理:
系统整体分为暴露的可调用接口,及需要任务流MQ推送的不可调用接口,针对不可条用接口,架构配合使这部分接口暴露出来,测试用例设计为虚拟生成供MQ使用的任务编号,推动整体业务流程。使用orange重新定向转发,调用相应mock接口。

针对核保管理,核保查询模块,进行单接口测试。(1. 关于这块麻烦的事情:咱们设计用例时,那么多不同的入参,写成不同的用例,这种事就很麻烦,要是能有工具,自动生成就好了,其实每个接口的用例模式都该是相似的,无非是多几个入参,限制条件有变化,或者有什么更好的办法,如果没有的话,要做一个这样的工具,是什么思路呢,2.然后问题2,针对一个接口这么多出参值,正常的公司测试,都会校验什么呢,每个值么,那也太费劲了,要是有几十个,要每个手动写一遍么)

针对核保处理模块,进行多接口流程串联的场景测试。

数据层:设计全局参数(包含静态参数,及脚本生成动态参数),接口本身静态参数,有依赖的数据从数据库中查取所需数据,实现数据与接口的分离。接口执行完成后,对于有必要的进行数据清理。
逻辑层(应用于场景):提取公用依赖接口,组合前置公用场景,供后续串联起来的场景共同调用,以降低由于依赖系统接口变更导致的维护需求。
环境层:多套被测环境
执行层:分布式执行,调用多个执行机
持续集成:通过deep查询抽取相应项目id的单测用例集及场景用例集,两种执行触发模式,1,定时执行,2,当deep查询到被测系统代码提交时。(这是怎么实现的呢?deep集成了jenkins,监控app部署,那么deep是怎么监控的jenkins呢,是deep主动定时去查,还是jenkis有更新了告诉它呢)

测试工具:

环境部署:docker+Jenkins+deep

接口管理:yapi

自动化测试:阿里云校自动化测试平台,实现单接口测试,场景串联测试,mock接口,多环境配置,分布式执行。

接口转发及mock调度:orange+zk

测试痛点1

痛点

核保作为保险业务链中间核心模块,上下游系统依赖过多且流程复杂,导致自动化测试滞后,且测试数据变动频繁,接口文档缺少维护,上游系统跨部门沟通困难

解决方案

讲上游系统相关接口使用mock替代,针对于跨部门沟通困难及缺少接口文档的情况,通过先进行手动功能测试,抓取日志中接口相关数据,入参出参等,获取接口的相关信息,再进行相应mock。

效果

通过mock可减少接口间相关依赖,减少接口串联复杂度,减少系统中测试数据间的依赖带来的测试数据的频繁变更,提高自动化用例稳定性。

测试痛点2

自动化测试与手动功能测试共同相同测试环境,mock接口影响正常手动功能测试的接口回调

解决方案:

引入orange工具分流重定向,测试用例中相关接口加入特定头信息透传,区分手工数据和自动化数据的不同地址回调。

测试痛点3

任务处理过程,有延时性,导致数据未处理完成状态未更新时,场景已经流转到查询接口

解决方案:

增加mock接口,实现对任务处理结果的轮询查询,但此时貌似并发执行时,对性能的要求有点高。未找到更好的解决方案。

测试痛点4

测试场景间的数据依赖,例如需要针对同一数据进行一系列操作,操作完成前要清理掉其他场景对这个数据的更改,但同时执行这些场景时,因为行进速度不一致,导致场景1未执行完成时,数据已经被场景2清理掉,导致失败。

解决方案:

未找到,暂时采取多少个场景就先创造出多少条数据,非常麻烦,后续维护成本也很高。

后续思考:

1.所谓的能够搭建测试架构,是说不同的项目需要做出不同的自动化测试架构么,这些架构里都包含些什么呢,为什么感觉其实好像一套架构,比如封装好了requests,配置好了conftest,util,封装好了yaml,json,及一些常用的方法,好像所有的项目就都能用了呢,
2. 分布式执行时,比如如果用x-disk插件执行,执行速度是怎么计算呢,比如调起一台8核的机器,那么它的执行速度大概是多少
3.pytest官方文档
4jenkins 对外提供的可消费的接口的文档,该怎么看呢,总觉得看不懂
5,那种说为了提高测试效率写了个什么小工具什么的,有没有例子呀,没有想出来能做点什么

1 个赞