CN109324956A - ***测试方法、设备及计算机可读存储介质 - Google Patents
***测试方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109324956A CN109324956A CN201810946965.8A CN201810946965A CN109324956A CN 109324956 A CN109324956 A CN 109324956A CN 201810946965 A CN201810946965 A CN 201810946965A CN 109324956 A CN109324956 A CN 109324956A
- Authority
- CN
- China
- Prior art keywords
- test
- environment
- test set
- measured
- serial number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种***测试方法、设备及计算机可读存储介质,该方法包括步骤:当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果;当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集;若所述第三测试集在所述灰度环境中通过测试,则确定所述待测试***通过测试。本发明实现了通过在与生成环境的流量一致的测试环境中测试待测试***,且通过灰度环境对接真实的生产数据进行测试待测试***,提高了测试基于机器学习***的准确率,以及降低了测试基于机器学习***的测试难度。
Description
技术领域
本发明涉及测试技术领域,尤其涉及一种***测试方法、设备及计算机可读存储介质。
背景技术
目前,很多开发出来的***在投入生产使用时,都需要经过测试。在测试***过程中,存在以下几个问题:①生产过程中的TPS(Transaction Per Second,每秒事务处理量)极高,如在生产环境中,交易量的TPS在2600以上,消息量的TPS在8500以上,而测试环境难以模拟生产环境的流量高并发的情况;②生产环境中机器资源充足,而测试环境中的机器资源较少,因此,当测试环境对应生产环境中的真实数据时,测试环境中的机器资源很快会达到瓶颈,即测试环境中的机器资源不足以支持数据流量大的情况。由于上述问题的存在,导致了对基于机器学习***进行测试的难度大的问题。
发明内容
本发明的主要目的在于提供一种***测试方法、设备及计算机可读存储介质,旨在解决现有的对基于机器学习的***测试难度大的技术问题。
为实现上述目的,本发明提供一种***测试方法,所述***测试方法包括步骤:
当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果;
当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集;
若所述第三测试集在所述灰度环境中通过测试,则确定所述待测试***通过测试。
优选地,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤包括:
当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数,并在调节所述线程并发数后检测所述测试环境的每秒事务处理量TPS是否与生产环境的TPS一致;
若所述测试环境的TPS与所述生产环境的TPS一致,则在所述测试环境中测试所述第一测试集,得到测试结果。
优选地,所述当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数的步骤包括:
当获取到待测试***对应的第一测试集后,计算所述测试环境当前TPS与所述生产环境TPS之间的差值;
获取所述差值与待调整线程数之间的映射关系;
基于所述映射关系,确定所述差值对应的待调整线程数;
根据所确定的所述待调整线程数调整所述测试环境中的线程并发数。
优选地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤包括:
当根据所述测试结果确定所述第一测试集通过测试后,通过所述灰度环境中的所述RMB获取第二测试集,并获取所述第二测试集中各笔交易数据对应的流水号;
计算所述流水号的第一哈希值,将所述第一哈希值除以预设数值;
判断所述第一哈希值是否整除所述预设数值;
若所述第一哈希值整除所述预设数值,则确定所述第一哈希值的目标流水号;
将所述目标流水号对应的交易数据确定为第三测试集。
优选地,所述计算所述流水号的第一哈希值的方式包括:
将所述流水号乘以预设常数,再对乘以预设常数的流水号计算第一哈希值。
优选地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤之前,还包括:
若根据所述测试结果确定所述待测试***的数据处理能力值大于预设能力值,且所述第一测试集的结果正确率大于预设正确率,则确定所述第一测试集通过测试;
若根据所述测试结果确定所述数据处理能力值小于或者等于所述预设能力值,和/或所述结果正确率小于或者等于所述预设正确率,则确定所述第一测试集未通过测试。
优选地,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤之前,还包括:
当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据;
将所述敏感数据替换成预设字符串,得到用于测试所述待测试***的第一测试集。
优选地,所述当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据的步骤之前,还包括:
当获取到交易数据后,获取每一笔交易数据对应的流水号,将所述流水号与所述交易数据对应的消息序列以键值的形式存储到所述待测试***的磁盘文件中。
优选地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤之后,还包括:
若所述第三测试集在所述灰度环境中未通过测试,则确定所述待测试***未通过测试;
获取所述第三测试集在所述灰度环境中的测试日志,并输出所述测试日志。
此外,为实现上述目的,本发明还提供一种***测试设备,所述***测试设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的***测试程序,所述***测试程序被所述处理器执行时实现如上所述的***测试方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有***测试程序,所述***测试程序被处理器执行时实现如上所述的***测试方法的步骤。
本发明公开了一种***测试方法、设备及计算机可读存储介质,当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试第一测试集,得到测试结果;当根据测试结果确定第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对第二测试集中进行抽样,以在第二测试集中提取到第三测试集;若第三测试集在灰度环境中通过测试,则确定待测试***通过测试。实现了通过在与生成环境的流量一致的测试环境中测试待测试***,使在测试环境中测试待测试***时,能模拟生产环境的流量环境,且通过灰度环境对接真实的生产数据进行测试待测试***,以采用真实的生成数据测试待测试***,提高了测试基于机器学习***的准确率,以及降低了测试基于机器学习***的测试难度。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明***测试方法第一实施例的流程示意图;
图3为本发明***测试方法第二实施例的流程示意图;
图4为本发明***测试方法第三实施例的流程示意图;
图5为本发明***测试方法第四实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的结构示意图。
需要说明的是,图1即可为***测试设备的硬件运行环境的结构示意图。本发明实施例***测试设备可以是PC,便携计算机等终端设备。
如图1所示,该***测试设备可以包括:处理器1001,例如CPU,网络接口1004,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的***测试设备结构并不构成对***测试设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及***测试程序。其中,操作***是管理和控制***测试设备硬件和软件资源的程序,支持***测试程序以及其它软件或程序的运行。
在图1所示的***测试设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;而处理器1001可以用于调用存储器1005中存储的***测试程序,并执行以下操作:
当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果;
当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集;
若所述第三测试集在所述灰度环境中通过测试,则确定所述待测试***通过测试。
进一步地,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤包括:
当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数,并在调节所述线程并发数后检测所述测试环境的每秒事务处理量TPS是否与生产环境的TPS一致;
若所述测试环境的TPS与所述生产环境的TPS一致,则在所述测试环境中测试所述第一测试集,得到测试结果。
进一步地,所述当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数的步骤包括:
当获取到待测试***对应的第一测试集后,计算所述测试环境当前TPS与所述生产环境TPS之间的差值;
获取所述差值与待调整线程数之间的映射关系;
基于所述映射关系,确定所述差值对应的待调整线程数;
根据所确定的所述待调整线程数调整所述测试环境中的线程并发数。
进一步地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤包括:
当根据所述测试结果确定所述第一测试集通过测试后,通过所述灰度环境中的所述RMB获取第二测试集,并获取所述第二测试集中各笔交易数据对应的流水号;
计算所述流水号的第一哈希值,将所述第一哈希值除以预设数值;
判断所述第一哈希值是否整除所述预设数值;
若所述第一哈希值整除所述预设数值,则确定所述第一哈希值的目标流水号;
将所述目标流水号对应的交易数据确定为第三测试集。
进一步地,所述计算所述流水号的第一哈希值的方式包括:
将所述流水号乘以预设常数,再对乘以预设常数的流水号计算第一哈希值。
进一步地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤之前,处理器1001还可以用于调用存储器1005中存储的***测试程序,并执行以下步骤:
若根据所述测试结果确定所述待测试***的数据处理能力值大于预设能力值,且所述第一测试集的结果正确率大于预设正确率,则确定所述第一测试集通过测试;
若根据所述测试结果确定所述数据处理能力值小于或者等于所述预设能力值,和/或所述结果正确率小于或者等于所述预设正确率,则确定所述第一测试集未通过测试。
进一步地,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤之前,处理器1001还可以用于调用存储器1005中存储的***测试程序,并执行以下步骤:
当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据;
将所述敏感数据替换成预设字符串,得到用于测试所述待测试***的第一测试集。
进一步地,所述当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据的步骤之前,处理器1001还可以用于调用存储器1005中存储的***测试程序,并执行以下步骤:
当获取到交易数据后,获取每一笔交易数据对应的流水号,将所述流水号与所述交易数据对应的消息序列以键值的形式存储到所述待测试***的磁盘文件中。
进一步地,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤之后,处理器1001还可以用于调用存储器1005中存储的***测试程序,并执行以下步骤:
若所述第三测试集在所述灰度环境中未通过测试,则确定所述待测试***未通过测试;
获取所述第三测试集在所述灰度环境中的测试日志,并输出所述测试日志。
基于上述的结构,提出***测试方法的各个实施例。
参照图2,图2为本发明***测试方法第一实施例的流程示意图。
本发明实施例提供了***测试方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,待测试***包括消息处理模块DC(Data Collector)、KAFKA、数据存储模块Storage、异常检测模块Detector、离线训练模块Trainer和待测试***的客户端Viewer。其中,消息处理模块用于取得实时发生的交易数据对应的RMB(Reliable MessageBus,可信赖消息总线)消息报文,以交易流水号为key,读取该流水号当前的消息调用链,处理(去掉RMB消息报文中的某些字段,比如content,并将RMB消息格式化(将不同格式的RMB消息解析拼接成相同的格式)后发送至KAFKA;KAFKA是公共组件,是一个开源流处理平台,在KAFKA中,将实时发生的交易数据分别送至数据存储模块和异常检测模块;数据存储模块用于将接收的交易数据按一定规则存储至数据库和磁盘文件中;异常检测模块用于使用训练出的模型对发生的交易对应的交易数据进行实时检测,检测后发送至数据库存储;离线训练模块用于从磁盘文件取预设时长内的交易数据使用机器学习算法做训练,生成模型,训练出的模型再发送至磁盘中存储,由磁盘发送至异常检测模块中进行实时检测,其中,预设时长可根据具体需要而设置,如可设置为取前一个小时内的交易数据使用机器学习算法做训练;待测试的客户端用于从数据库中读取数据进行展示。
需要说明的是,在本实施例中,待测试***为基于机器学习的***,如基于机器学习的异常检测***。异常检测***可结合RMB消息、应用日志等数据,通过在生产搭建起基于机器学习的异常检测框架,实现数据闭环,并接入生产全量真实的交易数据做训练和检测,为旁路***给出问题根因和处理建议。RMB是一种通信机制,用于在上下游之间传递消息。环境是一个可用于独立部署应用架构的、网络上隔离的网络环境,本实施例中,网络环境包括但不限于开发环境、集成测试环境、灰度环境和生产环境等。
生产环境中,需要将磁盘存储的交易数据进行脱敏,脱敏的具体操作在下文实施例中详述。
测试环境中,通过新增生产模块,以由生产模块对脱敏的交易数据进行测试。
灰度环境对接生产的真实交易数据,将待测试***发布到生产前,会在灰度环境中做最后一轮验证。一笔交易数据包含一条以上的消息,一笔交易数据对应一个交易流水号,该交易数据对应的每条消息都携带对应的交易流水号。
***测试方法包括:
步骤S10,当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果。
为了与灰度环境中的测试集进行区分,当在测试环境中获取到待测试***对应的测试集后,将该测试集记为第一测试集。当得到第一测试集后,调整测试环境中并发的线程数,使测试环境中的流量与生产环境中的流量一致,并在与生产环境流量一致的测试环境中测试第一测试集,得到测试结果。
需要说明的是,由于测试环境不能直接使用待测试***中的消息处理模块对接该第一测试集,因此,在测试环境中,需要构造一个生产模块,即构造Producer模块模拟待测试***中的消息处理模块对交易数据进行处理。具体地,该生产模块可通过python语言编写,通过python的threading模块实现多线程。可以理解的是,该生产模块也可通过具备与python语言相同功能的其它语言编写,在本实施例中不再赘述。
在测试环境获取第一测试集过程中,是在测试环境中的Producer模块获取第一测试集。在所获取的第一测试集中,包含了预设数量的交易数据,其中,预设数量的大小可根据具体需要而设置,如可设置为100、200或者1000等。
进一步地,步骤S10包括:
步骤a,当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数,并在调节所述线程并发数后检测所述测试环境的每秒事务处理量TPS是否与生产环境的TPS一致。
当在测试环境中获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数,得到调整线程并发数后的测试环境,检测调整线程并发数后的测试环境的TPS与生产环境的TPS是否一致。应当理解的是,测试环境的TPS随着并发线程数的增大而增大。
调整测试环境的线程并发数的过程为:计算测试环境当前TPS与生产环境TPS之间的差值,获取该差值与待调整线程数之间的映射关系,基于该映射关系,确定该差值对应的待调整线程数,根据所确定的待调整线程数调整测试环境的并发线程数。如当前生产环境中的TPS为3000,当前测试环境中的线程数是2,TPS是1500,则确定差值是1500,若该差值与待调整线程数3有映射关系,则可根据该待调整线程数3调整测试环境中的线程数2,从而得到调整后的测试环境线程并发数5。其中,该差值与待调整线程数之间的映射关系是预先设置好的,该差值与待调整线程数之间并非是线性关系,差值和待调整线程数之间的具体的映射关系是根据实验得到的,在本实施例不再赘述。
此外,调整测试环境的线程并发数的过程为:计算测试环境当前TPS与生产环境TPS之间的差值,确定测试环境当前的线程数,根据测试环境当前的线程数和差值,确定待调整线程数,根据所确定的待调整线程数调整测试环境的并发线程数。如当前生产环境中的TPS为3000,当前测试环境中的线程数是2,TPS是1500,则确定差值是1500,由于测试环境中的线程数2对应的TPS是1500,且差值也是1500,则确定待调整线程数是2,最终调整后的测试环境线程并发数4。需要说明的是,采用这种方式时,根据测试环境当前的线程数和差值,确定待调整线程数是一个动态调整的过程,可通过多次调整确定最接近的数值。
步骤b,若所述测试环境的TPS与所述生产环境的TPS一致,则在所述测试环境中测试所述第一测试集,得到测试结果。
若确定测试环境的TPS与生产环境的TPS一致,即测试环境的TPS与生产环境的TPS相等,则在测试环境中测试第一测试集,得到测试结果,并根据该测试结果判断第一测试集在测试环境中是否通过测试。具体地,在测试环境中测试第一测试集的过程中,是在测试环境中,将第一测试集中的交易数据输入待测试***中的异常检测模块,以在异常检测模块中对第一测试集中的交易数据进行检测,得到测试结果。可以理解的是,当测试环境的TPS与生产环境的TPS一致时,表明测试环境中的流量与生产环境中的流量一致。
进一步地,根据测试结果判断第一测试集是否通过测试的步骤包括:
步骤c,若根据所述测试结果确定所述待测试***的数据处理能力值大于预设能力值,且所述第一测试集的结果正确率大于预设正确率,则确定所述第一测试集通过测试。
步骤d,若根据所述测试结果确定所述数据处理能力值小于或者等于所述预设能力值,和/或所述结果正确率小于或者等于所述预设正确率,则确定所述第一测试集未通过测试。
在测试结果中,包括了根据第一测试集得到的待测试***的数据处理能力值以及第一测试集的结果正确率。待测试***的数据处理能力值=a÷b,其中,a表示第一测试集中得到测试结果的交易数据的数量,b表示第一测试集中交易数据的总数量。如若第一测试集中存在500笔交易数据,但只有300笔交易数据得到测试结果,则计算得到待测试***的数据处理能力值为300÷500=0.6。结果正确率=c÷a,其中,c表示所得的测试结果中结果与对应预设结果一致的交易数据的数量。在本实施例中,已经预先存储了第一测试集中各笔交易数据对应的测试结果,在得到测试结果后,将所得测试结果中流水号与预先存储的测试结果流水号一致的两个测试结果进行对比,若两个测试结果一致,则确定该流水号对应的交易数据在测试环境所得的测试结果正确;若两个测试结果不一致,则确定该流水号对应的交易数据在测试环境中所得的测试结果错误。如若在300个结果中,只有150个测试结果是正确的,则结果正确率=150÷300=50%。
当得到待测试***的数据处理能力值和第一测试集的结果正确率后,判断数据处理能力值是否大于预设能力值,以及判断结果正确率是否大于预设正确率。当确定数据处理能力值大于预设能力值,且结果正确率大于预设正确率时,确定第一测试集在测试环境中通过测试;当确定数据处理能力值小于或者等于预设能力值,和/或结果正确率小于或者等于预设正确率时,确定第一测试集在测试环境中未通过测试。其中,预设能力值和预设正确率可根据具体需要而设置,在本实施例中对预设能力值和预设正确率对应的数值不做具体限制。
步骤S20,当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集。
需要说明的是,由于测试环境不能完整的测试整个***,因此,增加了灰度环境进行测试,以提高测试待测试***的准确率。其中,灰度环境相当于一个小型的生产环境,灰度环境只用于测试,为了避免机器资源的浪费,灰度环境中的机器资源少于生产环境中的机器资源,降低了灰度环境中的数据处理压力。
当根据测试结果确定第一测试集通过测试环境的测试后,在灰度环境中通过RMB获取第二测试集。可以理解的是,第二测试集是真实的生产数据。其中,第二测试集对应的交易数据的数量可与第一测试集相同,也可以与第一测试集不相同,第二测试集对应的交易数据可与第一测试集相同,也可与第一测试集不同。当在灰度环境中通过RMB获取到第二测试集后,在灰度环境对第二测试集进行抽样,得到抽样结果,根据该抽样结果在第二测试集中提取到第三测试集。需要说明的是,对第二测试集进行抽样,可以减少灰度环境中所需测试的数据量,以使所得的第三测试集符合灰度环境的数据处理能力。本实施例中的第一测试集、第二测试集和第三测试集只是为了区分不同阶段的测试集。
需要说明的是,在此***中,实时消息通过KAFKA不断发送给Storage和Detector模块,且每条消息到达两个模块的时间是不一定的,每笔交易的消息序列到达两个模块的顺序也是不一定的。故此抽样方法需要在减小流量的同时保持数据的一致性和完整性,即保证两个模块抽取的是相同交易的消息且抽取的每笔交易的消息序列是完整的。因此为了保证数据的一致性和完整性,步骤S20包括:
步骤e,当根据所述测试结果确定所述第一测试集通过测试后,通过所述灰度环境中的所述RMB获取第二测试集,并获取所述第二测试集中各笔交易数据对应的流水号。
步骤f,计算所述流水号的第一哈希值,将所述第一哈希值除以预设数值。
步骤g,判断所述第一哈希值是否整除所述预设数值。
当根据测试结果确定第一测试集通过测试后,通过灰度环境中的RMB获取第二测试集,并获取第二测试集中各笔交易数据对应的流水号,计算各笔交易数据对应流水号的哈希值。为了将该哈希值与后面实施例中的哈希值进行区分,将第二测试集中各笔交易数据对应流水号的哈希值记为第一哈希值,并将该第一哈希值除以预设数值,判断第一哈希值是否能整除该预设数值。其中,该预设数值可根据具体需要而设置,如可设置为100或者200等。需要说明的是,当预设数值为100时,如果对100取模,表明对第二测试集进行抽样的抽样率为0.01;当预设数值为200时,如果对200取模,表明对第二测试集进行抽样的抽样率为0.02。
步骤h,若所述第一哈希值整除所述预设数值,则确定所述第一哈希值的目标流水号。
步骤i,将所述目标流水号对应的交易数据确定为第三测试集。
若确定第一哈希值能整除该预设数值,则确定能整除该预设数值的第一哈希值对应的流水号为目标流水号,将该目标流水号对应的交易数据确定为第三测试集。进一步地,若确定第一哈希值不能整除该预设数值,则确定不能整除该预设数值的第一哈希值对应流水号的交易数据不为第三测试集。
步骤S30,若所述第三测试集在所述灰度环境中通过测试,则确定所述待测试***通过测试。
当得到第三测试集后,在灰度环境中将第三测试集输入待测试***的异常检测模块,以在异常检测模块中测试第三测试集。若第三测试集在灰度环境中通过测试,则确定待测试***通过测试。进一步地,若第三测试集在灰度环境中未通过测试,则确定待测试***未通过测试。需要说明的是,在灰度中测试第三测试集,也会得到一个测试结果,根据所得的测试结果即可确定第三测试集在灰度环境中是否通过测试。根据灰度环境中所得的测试结果确定第三测试集在灰度环境中是否通过测试的过程,与根据测试环境中所得的测试结果确定第一测试集在测试环境中是否通过测试的过程一致,在本实施例中不再赘述。
本实施例通过当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试第一测试集,得到测试结果;当根据测试结果确定第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对第二测试集中进行抽样,以在第二测试集中提取到第三测试集;若第三测试集在灰度环境中通过测试,则确定待测试***通过测试。实现了通过在与生成环境的流量一致的测试环境中测试待测试***,使在测试环境中测试待测试***时,能模拟生产环境的流量环境,且通过灰度环境对接真实的生产数据进行测试待测试***,以采用真实的生成数据测试待测试***,提高了测试基于机器学习***的准确率,以及降低了测试基于机器学习***的测试难度。
进一步地,提出本发明***测试方法第二实施例。
所述***测试方法第二实施例与所述***测试方法第一实施例的区别在于,参照图3,步骤i之后,***测试方法还包括:
步骤S40,获取所述第三测试集对应的流水号,计算所述第三测试集对应流水号的第二哈希值。
步骤S50,在所述灰度环境中根据所述第二哈希值将所述第三测试集分配到所述待测试***的异常检测模块中,以通过所述异常检测模块的各个线程对所述第三测试集进行测试。
当获取到第三测试集后,获取第三测试集中各个交易数据对应的流水号,并计算第三测试集对应交易数据流水号的哈希值,并将第三测试集对应交易数据流水号的哈希值记为第二哈希值。需要说明的是,交易数据对应的每一个消息中都设置有一个字段,用于存储流水号,因此,同一个交易数据对应的消息的第二哈希值是相同。为了与第一哈希值进行区分,提高准确性,可在计算第二哈希值过程中,将第三测试集对应交易数据的流水号乘以固定数值后再进行哈希计算,得到对应的第二哈希值。其中,该固定数值可根据具体需要而设置,如可设置为2,或者5等。
需要说明的是,在本实施例中,也可在计算第一哈希值将对应的交易数据的流水号乘以预设常数后再进行哈希计算,得到对应的第一哈希值,那么此时,在计算第二哈希值过程中,就直接对第三测试集对应交易数据的流水号进行哈希计算,得到对应的第二哈希值。通过对交易数据的流水号乘以预设常数后再进行第一哈希值的计算,可避免抽样后的消息在计算第二哈希值时都被分配到同一个线程worker,造成分配不均和处理速度慢的问题。
当计算得到第二哈希值后,在灰度环境中根据
第二哈希值将第三测试集分配到待测试***的异常检测模块中。当异常检测模块接收到第三测试集后,将同一个第二哈希值对应的消息分配都同一个线程中,即将同一笔交易数据对应的消息分配到同一个线程中,以避免将同一笔交易数据对应的多个消息分配到异常检测模块的不同线程中,提高了在测试过程中交易数据分配的准确率,提高了异常检测模块对交易数据的处理效率,提高了测试待测试***的测试效率。
进一步地,在灰度环境中将第三测试集分配到待测试***的异常检测模块过程中,同时也在灰度环境中将第三测试集分配给待测试***的数据存储模块,以供该数据存储模块存储第三测试集。其中,在灰度环境中,第三测试集是通过KAFKA发送给待测试***的异常检测模块和数据存储模块的。在通过KAFKA将第三测试集中的交易数据发送给异常检测模块和数据存储模块过程中,交易数据中的每条消息达到异常检测模块和数据存储模块的时间是不一定的,即交易数据中的每条消息到达异常检测模块和数据存储模块的时间可能相同,也可能不同,每笔交易数据的消息序列到达异常检测模块和数据存储模块的顺序也是不一定。然而通过计算各笔交易数据对应流水号的哈希值进行抽样,使同一交易数据对应各个消息的哈希值一致,即同一交易数据对应各个消息的长度相等,可在减少灰度环境所需的测试流量的同时通过交易数据的哈希值保持交易数据的一致性和完整性,即保证异常检测模块和数据存储模块在抽取到相同的交易数据对应的消息,且抽取的每笔交易数据对应消息序列是完整的。
进一步地,提出本发明***测试方法第三实施例。
所述***测试方法第三实施例与所述***测试方法第一或第二实施例的区别在于,参照图4,在步骤S10之前,***测试方法还包括:
步骤S60,当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据。
当侦测到测试待测试***的测试指令后,根据该测试指令从待测试***中的磁盘文件中获取交易数据的流水号和消息序列,并确定消息序列中的敏感数据。其中,测试指令可由测试人员根据需要而触发。在交易数据对应的消息序列中,每个字段都存在特定含义,那个字段是敏感数据是预先设置好的,因此,通过交易数据的消息序列中敏感数据对应的字段即可确定交易数据中的敏感数据。敏感数据包括但不限于IP地址、手机号码和身份证号码。
步骤S70,将所述敏感数据替换成预设字符串,得到用于测试所述待测试***的第一测试集。
当得到交易数据中的敏感数据时,将交易数据对应消息序列中的敏感数据替换成预设字符串,得到用于在测试环境中测试待测试***的第一测试集。
本实施例通过将第一测试集中交易数据的敏感数据替换成预设字符串,以对第一测试集中的交易数据进行脱敏,提高了测试待测试***过程中交易数据的安全性。
进一步地,步骤S60之前,***测试方法还包括:
步骤j,当获取到交易数据后,获取每一笔交易数据对应的流水号,将所述流水号与所述交易数据对应的消息序列以键值的形式存储到所述待测试***的磁盘文件中。
当待测试***在生产环境中运行时,数据存储模块会获取到每一笔交易数据,提取每一交易数据对应流水号,以及获取交易数据对应的消息序列,并将流水号与对应消息序列以键值的形式存储到待测试***的磁盘文件中。以便于在需要测试集测试待测试***时,可从待测试***的磁盘文件中获取用于测试的交易数据。
进一步地,提出本发明***测试方法第四实施例。
所述***测试方法第四实施例与所述***测试方法第一、第二或第三实施例的区别在于,参照图5,步骤S20之后,***测试方法还包括:
步骤S80,若所述第三测试集在所述灰度环境中未通过测试,则确定所述待测试***未通过测试。
步骤S90,获取所述第三测试集在所述灰度环境中的测试日志,并输出所述测试日志。
当确定第三测试集在灰度环境中未通过测试时,确定待测试***在灰度环境中未通过测试,此时,获取第三测试集在灰度环境中的测试日志,并通过待测试***的客户端输出该测试日志,以供对应的开发人员根据该测试日志优化待测试***。
进一步地,当确定第一测试集在测试环境中未通过测试后,确定待测试***在测试环境中未通过测试,此时,获取第一测试集在测试环境中的测试日志,并通过待测试***的客户端输出该测试日志,以供对应的开发人员根据该测试日志修改待测试***。
本实施例通过在确定待测试***未通过测试时,输出测试日志以供开发人员根据测试日志优化待测试***。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有***测试程序,所述***测试程序被处理器执行时实现如上所述的奖励发送方法的步骤。
本发明计算机可读存储介质具体实施方式与上述***测试方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种***测试方法,其特征在于,所述***测试方法包括以下步骤:
当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果;
当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集;
若所述第三测试集在所述灰度环境中通过测试,则确定所述待测试***通过测试。
2.如权利要求1所述的***测试方法,其特征在于,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤包括:
当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数,并在调节所述线程并发数后检测所述测试环境的每秒事务处理量TPS是否与生产环境的TPS一致;
若所述测试环境的TPS与所述生产环境的TPS一致,则在所述测试环境中测试所述第一测试集,得到测试结果。
3.如权利要求2所述的***测试方法,其特征在于,所述当获取到待测试***对应的第一测试集后,调整测试环境中的线程并发数的步骤包括:
当获取到待测试***对应的第一测试集后,计算所述测试环境当前TPS与所述生产环境TPS之间的差值;
获取所述差值与待调整线程数之间的映射关系;
基于所述映射关系,确定所述差值对应的待调整线程数;
根据所确定的所述待调整线程数调整所述测试环境中的线程并发数。
4.如权利要求1所述的***测试方法,其特征在于,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过可信赖消息总线RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤包括:
当根据所述测试结果确定所述第一测试集通过测试后,通过所述灰度环境中的所述RMB获取第二测试集,并获取所述第二测试集中各笔交易数据对应的流水号;
计算所述流水号的第一哈希值,将所述第一哈希值除以预设数值;
判断所述第一哈希值是否整除所述预设数值;
若所述第一哈希值整除所述预设数值,则确定所述第一哈希值的目标流水号;
将所述目标流水号对应的交易数据确定为第三测试集。
5.如权利要求4所述的***测试方法,其特征在于,所述计算所述流水号的第一哈希值的方式包括:
将所述流水号乘以预设常数,再对乘以预设常数的流水号计算第一哈希值。
6.如权利要求1所述的***测试方法,其特征在于,所述当根据所述测试结果确定所述第一测试集通过测试后,在灰度环境中通过RMB获取第二测试集,对所述第二测试集进行抽样,以在所述第二测试集中提取到第三测试集的步骤之前,还包括:
若根据所述测试结果确定所述待测试***的数据处理能力值大于预设能力值,且所述第一测试集的结果正确率大于预设正确率,则确定所述第一测试集通过测试;
若根据所述测试结果确定所述数据处理能力值小于或者等于所述预设能力值,和/或所述结果正确率小于或者等于所述预设正确率,则确定所述第一测试集未通过测试。
7.如权利要求1至6任一项所述的***测试方法,其特征在于,所述当获取到待测试***对应的第一测试集后,在与生产环境流量一致的测试环境中测试所述第一测试集,得到测试结果的步骤之前,还包括:
当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据;
将所述敏感数据替换成预设字符串,得到用于测试所述待测试***的第一测试集。
8.如权利要求7所述的***测试方法,其特征在于,所述当侦测到测试所述待测试***的测试指令后,根据所述测试指令从所述待测试***的磁盘文件中获取所述交易数据的流水号和消息序列,并确定所述消息序列中的敏感数据的步骤之前,还包括:
当获取到交易数据后,获取每一笔交易数据对应的流水号,将所述流水号与所述交易数据对应的消息序列以键值的形式存储到所述待测试***的磁盘文件中。
9.一种***测试设备,其特征在于,所述***测试设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的***测试程序,所述***测试程序被所述处理器执行时实现如权利要求1至8中任一项所述的***测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有***测试程序,所述***测试程序被处理器执行时实现如权利要求1至8中任一项所述的***测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810946965.8A CN109324956B (zh) | 2018-08-20 | 2018-08-20 | ***测试方法、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810946965.8A CN109324956B (zh) | 2018-08-20 | 2018-08-20 | ***测试方法、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109324956A true CN109324956A (zh) | 2019-02-12 |
CN109324956B CN109324956B (zh) | 2021-11-05 |
Family
ID=65264377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810946965.8A Active CN109324956B (zh) | 2018-08-20 | 2018-08-20 | ***测试方法、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109324956B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175130A (zh) * | 2019-06-11 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 集群***性能的测试方法、装置、设备及可读存储介质 |
CN111565103A (zh) * | 2020-04-29 | 2020-08-21 | 中国银行股份有限公司 | 一种生产数据处理的方法和装置 |
CN113691565A (zh) * | 2021-10-25 | 2021-11-23 | 中电云数智科技有限公司 | 数据安全处理平台与方法 |
CN114267115A (zh) * | 2021-12-27 | 2022-04-01 | 江苏银承网络科技股份有限公司 | 识别票据方法和*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0695068A2 (de) * | 1994-07-28 | 1996-01-31 | Alcatel SEL Aktiengesellschaft | Testverfahren sowie Konvertereinrichtung, Testeinrichtung und Testprogramm-Modul dafür |
CN1981200A (zh) * | 2004-05-22 | 2007-06-13 | 株式会社爱德万测试 | 开发用于半导体集成电路的测试程序的方法和结构 |
CN102981951A (zh) * | 2012-11-01 | 2013-03-20 | 珠海金山网络游戏科技有限公司 | 云测试开发平台及云测试开发方法 |
CN107220121A (zh) * | 2017-05-25 | 2017-09-29 | 深信服科技股份有限公司 | 一种numa架构下沙箱环境测试方法及其*** |
CN107748717A (zh) * | 2017-09-26 | 2018-03-02 | 深圳市牛鼎丰科技有限公司 | 接口自动化测试方法、装置、存储介质和计算机设备 |
-
2018
- 2018-08-20 CN CN201810946965.8A patent/CN109324956B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0695068A2 (de) * | 1994-07-28 | 1996-01-31 | Alcatel SEL Aktiengesellschaft | Testverfahren sowie Konvertereinrichtung, Testeinrichtung und Testprogramm-Modul dafür |
CN1981200A (zh) * | 2004-05-22 | 2007-06-13 | 株式会社爱德万测试 | 开发用于半导体集成电路的测试程序的方法和结构 |
CN102981951A (zh) * | 2012-11-01 | 2013-03-20 | 珠海金山网络游戏科技有限公司 | 云测试开发平台及云测试开发方法 |
CN107220121A (zh) * | 2017-05-25 | 2017-09-29 | 深信服科技股份有限公司 | 一种numa架构下沙箱环境测试方法及其*** |
CN107748717A (zh) * | 2017-09-26 | 2018-03-02 | 深圳市牛鼎丰科技有限公司 | 接口自动化测试方法、装置、存储介质和计算机设备 |
Non-Patent Citations (1)
Title |
---|
LINSONGBIN1: "互联网项目发布环境:测试、回归、预发布、灰度发布、上生产", 《HTTPS://WWW.ITDAAN.COM/BLOG/2015/09/15/7496E6F435E0.HTML》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110175130A (zh) * | 2019-06-11 | 2019-08-27 | 深圳前海微众银行股份有限公司 | 集群***性能的测试方法、装置、设备及可读存储介质 |
CN110175130B (zh) * | 2019-06-11 | 2024-05-28 | 深圳前海微众银行股份有限公司 | 集群***性能的测试方法、装置、设备及可读存储介质 |
CN111565103A (zh) * | 2020-04-29 | 2020-08-21 | 中国银行股份有限公司 | 一种生产数据处理的方法和装置 |
CN111565103B (zh) * | 2020-04-29 | 2022-10-21 | 中国银行股份有限公司 | 一种生产数据处理的方法和装置 |
CN113691565A (zh) * | 2021-10-25 | 2021-11-23 | 中电云数智科技有限公司 | 数据安全处理平台与方法 |
CN114267115A (zh) * | 2021-12-27 | 2022-04-01 | 江苏银承网络科技股份有限公司 | 识别票据方法和*** |
CN114267115B (zh) * | 2021-12-27 | 2024-03-08 | 江苏银承网络科技股份有限公司 | 识别票据方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN109324956B (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109324956A (zh) | ***测试方法、设备及计算机可读存储介质 | |
CN112884092B (zh) | Ai模型生成方法、电子设备及存储介质 | |
CN110177108A (zh) | 一种异常行为检测方法、装置及验证*** | |
CN109901968A (zh) | 一种自动化页面数据校验方法和装置 | |
CN108829581A (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
CN107168844B (zh) | 一种性能监控的方法及装置 | |
CN107608291A (zh) | 一种智能变电站应用功能联动规则验证方法及*** | |
CN107562600A (zh) | 页面检测方法、装置、计算设备以及存储介质 | |
CN109685089A (zh) | 评估模型性能的***及方法 | |
CN107346272A (zh) | 动态异构冗余***的确定方法和装置 | |
CN107168879A (zh) | 集中配置管理***测试报告的生成方法及装置 | |
CN109783260A (zh) | 智能it全流程运维方法、装置、设备及可读存储介质 | |
CN110472866A (zh) | 一种工单质检分析方法及装置 | |
CN106547901A (zh) | 一种基于能量优化的微博用户转发行为预测方法 | |
CN113918526A (zh) | 日志处理方法、装置、计算机设备和存储介质 | |
CN103955425B (zh) | 网页web探索测试装置及方法 | |
CN106547695B (zh) | 一种规模软件的测试***及方法 | |
CN109814517A (zh) | 风机运行参数的处理方法和***与计算机可读存储介质 | |
CN111522736A (zh) | 一种软件缺陷预测方法、装置、电子设备及计算机存储介质 | |
CN111506305B (zh) | 工具包生成方法、装置、计算机设备及可读存储介质 | |
CN117709715A (zh) | 一种隧道工程施工风险评估方法、***、终端及介质 | |
CN112860549A (zh) | 一种测试样本的获取方法及装置 | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
CN105068937B (zh) | 一种Linux内核模块的单元测试方法 | |
CN113127362A (zh) | 对象测试方法、对象测试装置、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |