一种基于数据库路由的测试账号实现方法与流程

文档序号:29123707发布日期:2022-03-04 23:10阅读:112来源:国知局
一种基于数据库路由的测试账号实现方法与流程

1.本发明涉及互联网项目测试技术领域,提供一种方便、快捷、高效的互联网项目测试技术方案。


背景技术:

2.目前互联网项目开发和更新迭代的过程中,互联网项目的生产环境测试相对比较繁琐,没有比较固定的互联网测试解决方案。目前大部分互联网公司采用除在生产环境部署外,再额外的将项目部署在预发环境用于项目上线前后的测试,新部署项目预发环境与生产环境使用同一数据库;还有部分公司对上述方案进行改进,将预发环境和生产环境共用同一个入口,用户在登录后根据用户信息判断要进入到哪一个环境,之后的流程和上述相同,好处是共用同一用户系统。
3.但是上述两种方式因为和生产环境使用同一数据库,导致测试数据需要及时删除,以减少测试数据对现有业务数据影响,但是如果项目中存在实时数据统计分析等类似的功能,势必会影响到数据的准确性。此外项目后期的功能周期迭代涉及到该功能改动时,由于之前的测试数据已经删除,只能添加一些虚假的数据进行测试,无形中增加测试的复杂度,降低测试人员的测试效率;并且在测试过程中频繁地删除数据库中的测试数据,大大降低了数据的安全性,尤其是随着微服务架构的兴起,每一套环境往往需要占用多台服务器,造成资源浪费。


技术实现要素:

4.本发明的目的在于针对传统互联网项目在测试过程中产生的测试数据影响到生产环境部分功能(实时的数据统计分析等功能),测试完成后需要人工操作生产环境数据库删除测试数据,不利于数据安全性等弊端,提供一种基于数据库路由的测试账号实现方法,通过使用数据库中间件、请求拦截器等,很好的解决了上述问题,降低开发、运维、测试人员的工作量,减少资源不必要的浪费,提高工作效率及数据的安全性、准确性。
5.本发明的目的是通过以下技术方案来实现的:一种基于数据库路由的测试账号实现方法,该方法包括以下步骤:
6.(1)在服务端设有拦截器ⅰ和拦截器ⅱ,并部署数据库中间件,以及与数据库中间件连接的普通数据库和测试数据库;在用户系统的用户信息中添加测试账号标识,用于区分普通用户账号和测试用户账号;
7.(2)当用户发起请求到服务端时,首先通过拦截器ⅰ拦截用户请求,在拦截器ⅰ内向用户系统请求用户信息,获取用户信息中的测试账号标识,从而区分该用户的类型,并将测试账号标识存储在缓存中;
8.(3)服务端处理用户请求逻辑,并根据用户请求发起数据库请求,由拦截器ⅱ拦截数据库请求,并在拦截器ⅱ内从缓存中获取拦截器ⅰ添加的该用户对应的测试账号标识,将测试账号标识添加到数据库请求中,然后将所述数据库请求发送到数据库中间件;
9.(4)由数据库中间件解析出数据库请求中的测试账号标识,根据测试账号标识将数据库请求转发到对应的普通数据库或测试数据库;
10.(5)数据库根据数据库请求操作数据库内的数据,返回结果信息,依次经数据库中间件、服务端,最终返回给用户。
11.进一步地,如果用户在非登录的状态下,默认在拦截器ⅰ的缓存中存储的该用户的测试账号标识为普通用户账号。
12.进一步地,该方法通过java语言实现,在拦截器ⅰ和拦截器ⅱ中将测试账号标识设置在threadlocal中,使用threadlocal充当缓存。
13.进一步地,所述数据库中间件采用mycat,该数据库中间件在大数据量并发请求下可以采用mycat集群,以提高项目的吞吐量,此外mycat在处理数据库事务方面相对比较完善。
14.进一步地,所述缓存采用缓存中间件redis,由于redis中缓存的数据存储在内存中,数据信息添加和删除效率较高,并且在redis缓存的数据可以设置过期时间,从而在请求执行的过程中出现异常时,可以通过过期时间自动删除缓存数据,提高安全性。
15.本发明的优点及有益效果是:
16.1.将生产环境中加入测试账号可由测试人员在生产环境进行测试,因为真实数据和测试数据通过数据库路由分别存储在两个相互独立的数据库中,因此数据的准确性、真实性得到保证。
17.2.在进行测试的过程中,因为测试和线上共用除数据库以外的资源,从而降低了实际测试中因环境差异引发的非程序因素带来的问题。
18.3.在资源方面,引入测试账号减少因为资源环境部署带来的资源浪费,进而节约成本,减少测试及运维人员因需要部署多种环境带来的工作量。
附图说明
19.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本发明实施例之一的项目模型图;
21.图2为本发明实施例之一的基于数据库路由的测试账号实现方法流程图。
具体实施方式
22.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
23.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
24.如图1、2所示,本发明提供一种基于数据库路由的测试账号实现方法,该方法包括如下步骤:
25.(1)在服务端设有拦截器ⅰ和拦截器ⅱ,并部署数据库中间件,以及与数据库中间件连接的普通数据库和测试数据库;在用户系统的用户信息中添加测试账号标识,用于区分普通用户账号和测试用户账号;
26.(2)当用户发起请求到服务端时,首先通过拦截器ⅰ拦截用户请求,在拦截器ⅰ内向用户系统请求用户信息,获取用户信息中的测试账号标识,从而区分该用户的类型,并将测试账号标识存储在缓存中;
27.(3)服务端处理用户请求逻辑,并根据用户请求发起数据库请求,由拦截器ⅱ拦截数据库请求,并在拦截器ⅱ内从缓存中获取拦截器ⅰ添加的该用户对应的测试账号标识,将测试账号标识添加到数据库请求中,然后将所述数据库请求发送到数据库中间件;
28.(4)由数据库中间件解析出数据库请求中的测试账号标识,根据测试账号标识将数据库请求转发到对应的普通数据库或测试数据库;
29.(5)数据库根据数据库请求操作数据库内的数据,返回结果信息,依次经数据库中间件、服务端,最终返回给用户。
30.具体地,如果用户在非登录的状态下,默认在拦截器ⅰ的缓存中存储的该用户的测试账号标识为普通用户账号。
31.具体地,该方法通过java语言实现,在拦截器ⅰ和拦截器ⅱ中将测试账号标识设置在threadlocal中,使用threadlocal充当缓存。
32.具体地,数据库中间件采用mycat,该数据库中间件在大数据量并发请求下可以采用mycat集群,以提高项目的吞吐量,此外mycat在处理数据库事务方面相对比较完善。
33.具体地,采用缓存中间件redis,由于redis中缓存的数据存储在内存中,数据信息添加和删除效率较高,并且在redis缓存的数据可以设置过期时间,从而在请求执行的过程中出现异常时,可以通过过期时间自动删除缓存数据,提高安全性。
34.实施例1
35.本实施例为类电商平台项目。将用户角色分为四种:管理员、商家用户、顾客用户和未登录的游客用户。用户的账号类型分为两类六种分别是普通用户账号:管理员普通用户账号、商家普通用户账号和顾客普通用户账号;测试用户账号:管理员测试用户账号、商家测试用户账号和顾客测试用户账号。平台管理员主要负责平台的用户管理,所有订单和商品信息的管理,以及数据信息分类统计等。商家用户主要负责该商家下的订单及商品信息的管理。顾客用户为消费者,浏览商家出售的商品并根据需求下单。未登录的游客用户为未进行账号登录的消费者,浏览商品并根据自己的需求选择商品,然后在平台登录购买商品。测试用户账号为项目的开发测试内部人员测试使用的账号,通过使用测试用户账号测试项目中存在的问题,以确保项目的稳定性。
36.商家用户分别使用测试用户账号密码和普通用户账号密码登录到系统中,在系统中添加商品信息并上架新增的商品。
37.顾客用户分别使用测试用户账号密码和普通用户账号密码登录到系统中,使用顾客测试用户账号进入系统后,只能查询到商家测试用户账号添加的商品信息,查询不到商家普通用户账号添加的商品信息。使用顾客普通用户账号进入系统后,同样仅能查询和当前用户账号类型相同的商家用户账号添加的商品信息。
38.管理员分别使用测试用户账号密码和普通用户账号密码登录到系统中,查看到的
商品信息和订单信息同样仅为和当前用户账号类型相同的商家用户账号添加的商品信息和用户账号类型相同的消费者用户账号提交的订单信息。在数据信息分类统计中,同样如此。
39.未登录的游客用户,用户在不登录账号的情况下,进入系统查看商品信息,仅能查询用户类型为普通用户账号的商家上架的商品信息。
40.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1