测试数据工厂-信贷场景下的实践(代码片段)

爱吃香菜 爱吃香菜     2023-04-13     722

关键词:

中台测试在日常工作中往往需要对一些特定的逻辑进行功能的验证及回归,正常的流程难以产生符合特定条件的数据,通常需要人工配合来构造数据,同时在日常工作中还要配合上下游团队来构造符合业务预期的数据,但数据构造过度依赖测试对系统的了解程度,如果该业务不在自己日常测试范围内就很难构造出正确的场景数据,并且通过人工配合造数据方式极大的增加了日常的沟通成本、延长了测试周期,为了解决上面的问题,我们将一些特定的数据构造以服务的形式做沉淀,自主研发了满足基础和定制化的可视化数据构造测试服务平台。

二、 中台测试服务平台介绍

2.1 中台测试服务平台功能介绍

我司主营信贷业务,在信贷业务中最基本的流程包含用户创建、借款申请、放款处理、还款处理这4大模块,中台测试服务平台通过沉淀相关的数据构造服务,以可视化配置的方式提供快速构造数据的能力。

2.2 业务中台测试服务平台支持的能力

2.2.1 快速构造&自定义构造

由于构造用户&借款流程数据较为类似,以下示例均以构造用户数据为例

快速构造:当我们对用户或者发标属性没有特定要求的时候,平台默认支持构造具备默认属性的造用户&借款能力,用户只需要选定流程编排的节点点击快速构造即可构建一条用户或者标的数据。

自定义构造:当我们对用户或者借款有特定需求,有特定属性要求的时候,平台支持一些通用用户属性和标的属性的自由配置,来满足带有自定义属性的造用户&借款能力,用户需要选定流程编排的节点并且点击自定义构造去自定义属性后支持单次构造一条数据或者批量构造多条数据。

1.选构造节点

2.选构造数据的自定义用户属性

3.选单次构造或者选批量构造

单次数据构造,当我们需要测试某一功能只需造一条数据并且对用户或者借款有特定需求时,可以选择单次数据构造。

批量数据构造,当我们需要测试某一功能但需要造多条数据并且对用户或者借款有特定需求时,可以选择多次数据构造,条数可自定义设置。

4.批量构造后需要打开批量构造策略

5.我的数据池

当快速构造&自定义构造(包括单次和批量构造数据)完成后,数据最终会汇集到我的数据页面,可汇总查看。

当我的数据池不存在想要的数据时,可以从公共数据池分配数据给个人,公共数据池是指以管理员账户创建的可以共享的数据。

2.2.2 数据构造策略管理

由于数据批量管理可能存在数据池过多,占用资源等问题,目前设计的数据池支持自定义开启关闭功能和定时销毁功能,到期过期销毁和关闭的数据池均不会继续造数据,以免造成资源浪费。

三、 中台测试服务平台实现方案

中台测试服务平台旨在为研发、测试构建界面化便捷的数据构造管理平台,主要架构分为前端页面、后端服务、外部服务依赖调用。

3.1 实现流程编排

数据池实现设计原理:

步骤1:用户页面操作批量构造后会生成一个数据池策略配置

步骤2:可修改池子支持的最大个数,默认最大个数为5

步骤3:Job定时根据池子是否开启,池子是否在有效期,池子可用数量是否少于最大数量等条件扫描需要构建的数据池,批量发起数据构造,最终写入个人数据池

步骤4:数据池分为个人和公共数据池

(1)公共数据池的数据是管理员构建的通用性数据,可以分配给个人

(2)个人数据池的数据是个人构建的数据,包括快速构造&单次构造&批量构造的所有数据

步骤5:个人数据池可以管理数据使用,分配给他人&废弃数据&标记为已使用等

四、 中台测试服务平台实践

4.1 平台实践

基于中台测试服务平台已经可以构建用户创建、借款申请、放款处理、还款处理等各种数据,这些数据均可以被利用到各个场景,比如日常页面操作功能测试、非页面的自动化构建全链路测试、APP等其他前端手机平台可以直接使用这些数据,以下将从构建全链路测试和APP前端页面来说明下平台实践。

4.2 平台实践之自动化

自动化包含4个节点:造用户——借款——放款——还款

节点1:造用户 (构建用户—— 活体认证(异常) —— 绑卡 —— 戳额)

节点2:借款(发优惠券——发标——预审(异常)——放款信息拉取)

节点3:放款(放款(异常))

节点4:还款

现状:当以上4个节点任何一个子步骤异常后自动化都无法正常执行完成,对于每个步骤的依赖非常强,每个步骤对于环境稳定性要求也非常高才可以被正常执行成功。

解决方法:当节点异常后我们可以从平台输出用户或者标的数据

当节点1异常时:

自动化流程:造用户(异常)——借款——放款——还款

自动化流程:从数据池捞取用户数据——借款——放款——还款

当节点2异常时:

自动化流程:造用户——借款(异常)——放款——还款

自动化流程:从数据池捞取用户数据——放款——还款

当节点3异常时:

自动化流程:造用户——借款——放款(异常)——还款

自动化流程:从数据池捞取用户数据——还款

效果:

1.支持构造好的数据输出,减少因实时环境问题带来的影响,提高执行成功率,由原来57%上升至 85%。

2.提高执行效率,平均执行由原来的46min下降至 7min,可应用在日常、自动化测试中。

4.3 平台实践之App数据输出

背景:研发自测、产品验收数据时,都集中依赖于测试同学造数据后,再口头同步到登录账户信息,才能手机登录App操作借款流程,为了解决重复沟通&数据可自助化使用,测试服务平台研发了App手机端的数据输出功能,具备如下能力:

平台化生成不同场景测试数据,完成研发自助提测,提升冒烟测试效率;

平台化留存、管理需求测试数据,提升测试回归效率;

提升产品验收体验,实现产品自助验收;

App上登录域账号后,展示测试账号,一键完成登录。

解决方法:App需要登录的用户数据集中在测试服务平台批量构造后,通过定制化接口输出数据给到APP端操作使用数据,耗时效果可由原来180s下降至 10s 。

现状流程:App登录手机需要构造用户——查询用户对应手机号登录界面——操作借款&戳额&还款,耗时3min+

解决后流程:APP登录手机——操作借款,耗时10s

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

测试沉思录9.数据工厂低代码平台探索与实践(代码片段)

...代中最频繁也是最耗时的工作。我们在20年8月对部门内的测试同学做了一次统计调研,日常工作中各项事务的耗时占比。如下所示:可见造数据所花的时间占了相当大的比重。其实,造数据的需求不仅是测试人员有&#x... 查看详情

设计模式工厂方法模式(简介|适用场景|优缺点|代码示例)(代码片段)

...实现类24、抽象工厂类5、实现工厂类16、实现工厂类27、测试类五、扩展上述工厂方法模式1、扩展的产品实现类2、扩展的工厂实现类3、测试类一、工厂方法模式简介工厂方法模式:定义一个创建对象的接口,让实现这个接口的子类... 查看详情

设计模式简单工厂模式(简介|适用场景|优缺点|代码示例)(代码片段)

...码示例1、抽象类2、子类对象13、子类对象24、工厂类5、测试类一、简单工厂模式简介简单工厂模式:由一个工厂对象决定创建出哪一种产品类的实例;简单工厂模式类型:创建型;二、简单工厂模式适用场景简单工厂模式适用场景:创... 查看详情

复杂场景下的权限系统该怎么玩?abac权限模型帮你搞定它!(代码片段)

...言SpEL性能ABAC实践crud代码security上下文数据库设计java程序测试类SpringSecurity和ApacheShiro整合最近有点无聊,以至于我很已经很久没有写出高质量的博客,为了挽回自己的这种无聊感打算手撕一下ABAC模型,毕竟 查看详情

3-大数据场景下volcano高效调度能力实践(代码片段)

3-大数据场景下Volcano高效调度能力实践本文的主题是大数据场景下Volcano高效调度的实践,我大概会从主要从三个方面来介绍今天内容。首先会介绍一下SparkonKubernetes发展历程以及工作原理,第二部分大概介绍一下SparkwithVo... 查看详情

数据仓库统计开发最佳实践(代码片段)

...(1)直接连表查询后展示(无需建表,直接查询单据的数据进行展示)优点:a.实现简单缺点:a.不适合大量数据的场景,不适合复杂查询的场景,不适合对性能要求较高的场景b.满足不了统计需求改变,或者未来的统计需求,... 查看详情

设计模式抽象工厂模式(简介|适用场景|优缺点|产品等级结构和产品族|代码示例)(代码片段)

...点)8、美的工厂实现类(重点)9、格力工厂实现类(重点)10、测试类一、抽象工厂模式简介抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口;创建目标对象 查看详情

搞懂分布式技术6:zookeeper典型应用场景及实践(代码片段)

....ZooKeeper典型应用场景实践ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应... 查看详情

elasticsearchelasticsearch日志场景最佳实践(代码片段)

...障Elasticsearch可广泛应用于日志分析、全文检索、结构化数据分析等多种场景,大幅度降低维护多套专用系统的成本,在开源社区非常受欢迎。然而Elasticsearch为满足多种 查看详情

重学springboot系列之整合数据库开发框架---中(代码片段)

...作数据整合Mybatis安装Mybatisgenerator插件增删改查实现代码测试一下附录:自动生产代码使用说明整合mybatisPlus操作数据库SpringBoot集成MybatisPlusMapper继承实现MybatisPlus与MybatisXMLMybatis开发最佳实践总结面对场景的最佳实践场景一&#... 查看详情

接口测试|接口测试入门与实践(代码片段)

接口测试讲义1.接口测试的类型主要包含三种测试:Web接口测试,应用程序接口(API,applicationprogramminginterface)测试,数据库测试。实际上意义就是UI界面到数据库之间,数据流经过的所有过程。LAMP(LinuxApacheMySQLPHP)/LNMP(LinuxNgi... 查看详情

工程实践之路:c++接口设计中的工厂模型(代码片段)

工程实践之路:C++接口设计中的工厂模型设计模式之工厂模式为什么使用工厂模式1.工厂设计模式是为了将对象的创建与使用进行分离2.其他好处简单工厂模式工厂方法模式抽象工厂模式参考资料上一篇文章写了《工程... 查看详情

设计模式-简单工厂模式(go实现)(代码片段)

...厂模式需求修改前错误设计代码修改后正确设计代码实现测试测试代码测试结果总结适用场景优点缺点简单工厂模式简单工厂模式并不属于GoF的23个经典设计模式,但通常将它作为学习其他工厂模式的基础,它的设计思想... 查看详情

swingbench字符模式压测最佳实践(代码片段)

之前写过《使用SwingBench对OracleRACDB性能压力测试》,使用的是最基础直观的图形模式,已经可以满足大多数需求。但是在有些场景下,图形模式可能本身消耗资源过大,尤其在生成大量测试数据时,很可能会由于图形本身的不稳... 查看详情

设计模式-工厂方法模式(go实现)(代码片段)

...式需求修改前简单工厂设计代码修改后工厂方法设计代码测试测试代码结果总结适用场景优点缺点参考工厂方法模式定义一个用于创建对象的接口,让子类决定将哪一个类实例化。不再提供一个统一的工厂类来创建所有的产... 查看详情

串的模式之kmp算法实践题(代码片段)

...输出。如果找不到,则输出“NotFound”。本题旨在测试各种不同的匹配算法在各种数据情况下的表现。各组测试数据特点如下:数据0:小规模字符串,测试基本正确性;数据1:随机数据,String长度为10510^510?5??,Pattern长度... 查看详情

greenplum实时数据仓库实践——实时数据装载(代码片段)

...设计6.1.2建立数据库表1.在MySQL主库中创建源库对象并生成测试数据2.在Greenplum中创建目标库对象6.1.3生成日期维度数据6.2初始装载6.2.1数据源映射6.2.2确定SCD处理方法6.2.3实现代理键6.2.4执行初始装载1.装载RDS模式的表2.装载TDS模式... 查看详情

策略模式与工厂模式实践(代码片段)

...策略枚举3.2策略接口增加serviceCode3.3策略接口实现3.4策略工厂3.5使用方式4.策略模式和工厂模式组合4.1一个提供serviceCode方法的接口4.2策略接口的工厂4.3抽象的工厂方法4.4使用方式4.4.1计费策略工厂4.4.2资金支付工厂4.4.3客户端使用... 查看详情