一种工业软件大数据量的性能测试方法和系统与流程

文档序号:32156565发布日期:2022-11-11 23:49阅读:23来源:国知局
1.本发明涉及一种工业软件性能测试技术应用领域,具体涉及一种工业软件大数据量的性能测试方法和系统。
背景技术
::2.传统的性能测试,业务场景单一,需要在一次性能测试结束后才能获得性能测试结果,消息滞后,时间与资源利用率低下。发明专利cn201010613464.1提出了《一种性能测试系统及方法》,该系统可以实时监测被测服务器的性能数据,当被测服务器cpu使用率未达到设定阈值时,增加并发用户数;当被测服务器cpu使用率超出设定阈值时,停止性能测试。该性能测试方法实现了一定程度的无人值守,但是仍有一定的缺陷:3.1、该系统仍针对单一性能测试场景,当业务系统庞大,需要测试的性能场景较多时,仍需要测试人员的介入切换场景,而切换业务场景需要创造大量的sql数据,人为创造数据将花费大量的时间。4.2、该系统仅实时监测被测服务器资源,判断条件单一,没有获取其他关键性能结果并分析,可能造成后续性能测试无效,浪费了后续性能测试的时间与资源。5.3、当被测服务器cpu使用率超过设定阈值时,停止当前测试,不能及时通知用户,问题排查与后续测试仍存在时间差。技术实现要素:6.本发明为了克服以上技术的不足,提供了一种工业软件大数据量的性能测试方法和系统,针对工业软件不同的业务场景,快速创建大数据量的测试数据,从而提高人工创建sql语句的效率。同时实时监控测试结果和被测服务器硬件资源,测试过程中不满足预设性能指标和服务器资源时,及时给予测试人员通知预警。7.本发明的第一个方面提出了一种工业软件大数据量的性能测试方法,包括:部署api请求抓取工具,所述api请求抓取工具用于收集api请求信息;8.基于预设性能测试场景和性能测试要求,模拟若干用户通过浏览器访问对应的业务功能,基于api请求抓取工具对访问产生的api请求信息进行收集,从而生成性能测试脚本;部署脚本管理中心工具,所述脚本管理中心工具至少包括用于导入多个测试用例的测试用例维护模块、用于导入性能测试脚本的功能模块和对应不同测试场景的测试用例的数据测试脚本,所述脚本管理中心通过测试用例模块对导入的测试用例进行解析,将解析的内容存储到用例维护表中,其中,数据测试脚本中至少包括连接数据库所需的脚本;部署测试管理中心工具,所述测试管理中心至少包括消息管理中心模块,所述消息管理中心模块用于发送消息任务至脚本管理中心,开启大数据量的性能测试;性能测试脚本调用数据测试脚本,数据测试脚本基于对应测试用例的测试用例维护表的状态标志向数据库插入预设数据量的模拟数据,生成的模拟数据用于大数据量的性能测试;消息管理中心模块接收到数据测试脚本的执行结果,开始大数据量的性能测试任务;开启测试结果收集并分析测试结果。9.进一步的,所述性能测试脚本调用数据测试脚本,数据测试脚本基于测试用例维护模块的状态标志向数据库插入预设数据量的模拟数据,具体包括:所述脚本管理中心工具接收到消息管理中心模块的大数据量的性能测试请求之后开始执行测试用例,并通过性能测试脚本调用数据测试脚本,数据测试脚本基于测试用例维护表的状态标志判断是否需要插入预设数据量的数据,若状态标志表示已经存在用于性能测试的数据则不需要再插入数据,若状态标志表示数据不存在用于性能测试的数据,则插入预设数据量的数据。10.进一步的,所述插入预设数据量的数据,具体包括:数据测试脚本中通过设置的数据库信息、表名,初始化数据库连接,调用数据库插入语句;得到可执行sql语句的光标对象,将插入数据写成随机变量形式通过循环大批量插入,基于预设数据量执行完成后发送消息管理中心插入完成消息,并返回结果集以元组显示。11.进一步的,还包括将发送api请求的接口的标识和测试步骤的标识添加至性能测试样本并保存。12.进一步的,开启测试结果收集以及分析测试结果,具体包括,基于各个用户服务器的压力测试结果数据和部署待测试工业软件的服务器的资源使用情况数据按时间序列保存至时间序列数据库,其中,每条数据至少包括时间戳,并定时发送数据,基于web页面可视图动态展示压力测试结果数据和服务器的资源使用情况数据。13.进一步的,还包括:若测试结果数据错误或服务器的资源使用情况数据超出预设阈值,则通过消息中间件通知配置测试参数中设置的接收人,以及,通过测试管理中心工具的web页面访问查看压力测试结果数据和服务器的资源使用情况数据。14.进一步的,所述工业软件大数据量的性能测试方法还包括,基于预设日志级别,对日志进行收集、存储和过滤,以及,基于图形化的编程进行日志的展示,从而快速定位问题。15.进一步的,所述测试管理中心工具的还包括系统配置模块、资源文件模块、任务调度模块、监控模块、数据分析模块和数据展示模块;所述系统配置模块用于配置被测服务器、测试执行机运行参数和测试环境;所述资源文件模块用于配置测试脚本;所述任务调度模块用于配置任务名称、选择执行的测试脚本、执行的时间和频率,以及,任务构建执行后,启动性能测试,执行测试脚本。所述监控模块用于监控被测服务器、测试执行机池的运行情况,并且收集被测服务器、测试执行机池的运行数据;所述数据分析模块用于对性能测试结果指标和服务器资源使用情况通过python编程的方式进行分析、汇总;所述数据展示模块用于进行可视图实时动态展示用户设置的各种性能测试结果指标和服务器资源使用情况;所述消息管理中心模块还用于配置相关通知人员、通知方式、通知频率,通过消息中间件及时通知相关负责人;所述日志管理模块用于收集测试执行机池执行过程中的日志文件。16.进一步的,所述数据测试脚本为python脚本,所述性能测试脚本为jmeter脚本。17.本发明的第二个方面还提出了一种运行上述性能测试方法的性能测试系统,至少包括脚本管理中心,实时监控中心和消息管理中心,所述脚本管理中心用于适配不同业务场景运行对应的脚本,以及创建测试数据;所述实时监控系统用于实时获取运行脚本后的性能测试结果和服务器资源信息,并发送至消息管理中心;所述消息管理中心基于预设阈值、性能测试结果和服务器资源信息反馈测试结果。18.本发明的有益效果是:19.1、对工业软件领域性能测试业务场景复杂、数据量大、时效性高的痛点,调用不同的脚本快速生成大量数据库数据;20.2、在性能测试过程中实时监控性能测试结果与服务器资源,及时主动向用户发送消息,以便用户快速做出调整,是工业软件领域内适配性好、针对性强、快速高效的性能测试方法;21.3、同时通过配置定时任务可以实时发送测试结果到分析装置,通过分析装置可以分析结果,并将分析结果通过邮件配置服务器发送到用户,真正实现了无人值守的性能测试过程。附图说明22.图1为本发明实施例的工业软件大数据量的性能测试方法的流程示意图;23.图2为本发明实施例的生成性能测试样本的流程示意图;24.图3为本发明实施例的脚本管理中心工具工作流程示例图;25.图4为本发明实施例的测试用例维护表示意图26.图5为本发明实施例的测试执行过程中测试结果超过预设阈值的流程示意图。具体实施方式27.api:应用程序接口(applicationprogramminginterface,简称:api),又称为应用编程接口,软件系统不同组成部分衔接的约定。28.测试用例:为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合;29.测试脚本:是为了进行自动化测试而编写的脚本,测试脚本的编写必须对应相应的测试用例;30.fiddler:互联网调试代理工具,不仅可以抓取电脑甚至手机与互联网的各种http通讯,同时还能查看他们进行分析。31.jmeter:用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能。32.为了便于本领域人员更好的理解本发明,下面结合附图和具体实施例对本发明做进一步详细说明,下述仅是示例性的不限定本发明的保护范围。33.本发明公开了一种工业软件大数据量的性能测试方法,如图1所示,为工业软件大数据量的性能测试方法的流程示意图,具体包括,部署api请求抓取工具,api请求抓取工具用于收集api请求信息;基于预设性能测试场景和性能测试要求,模拟若干用户通过浏览器访问对应的业务功能,基于api请求抓取工具对访问产生的api请求信息进行收集,从而生成性能测试脚本;部署脚本管理中心工具,脚本管理中心工具至少包括用于导入多个测试用例的测试用例维护模块、用于导入性能测试脚本的功能模块和对应不同测试场景的测试用例的数据测试脚本,脚本管理中心通过测试用例模块对导入的测试用例进行解析,将解析的内容存储到用例维护表中,其中,数据测试脚本中至少包括连接数据库所需的脚本;部署测试管理中心工具,测试管理中心至少包括消息管理中心模块,消息管理中心模块用于发送消息任务至脚本管理中心,开启大数据量的性能测试;基于脚本管理中心工具导入性能测试脚本,消息管理中心接收消息,发送调度任务至脚本管理中心;性能测试脚本调用数据测试脚本,数据测试脚本基于对应测试用例的测试用例维护表的状态标志向数据库插入预设数据量的模拟数据,生成的模拟数据用于大数据量的性能测试;消息管理中心模块接收到数据测试脚本的执行结果,开始大数据量的性能测试任务;开启测试结果收集并分析测试结果。34.下面以应用于医药行业的工业软件的大数量的性能测试为例,对各个步骤进行说明。35.s1,部署api请求抓取工具,api请求抓取工具用于收集api请求信息。36.在本发明的实施例中,采用fiddler作为api请求抓取工具。下载并安装fiddler,在用户测试时,开启fiddler,即可实现api请求抓取工具37.s2、基于预设性能测试场景和性能测试要求,模拟若干用户通过浏览器访问对应的业务功能,基于api请求抓取工具对访问产生的api请求信息进行收集,从而生成性能测试脚本;38.根据待测试工业软件的应用场景和对应性能测试的要求,模拟用户通过浏览器访问被测系统,即待测试工业软件。模拟用户通过浏览器发送api请求至被测系统。39.例如多用户同时请求某个业务功能时,在被测系统安装并启动fiddlerr,模拟用户通过浏览器访问被测系统,流程示意如图2所示。fiddlerr拦截模拟用户发送的api请求,对web产品运行过程中产生的所有api请求信息进行收集,保存形成jmeter格式的脚本。40.在一些实施方式中,还包括将发送api请求的接口的标识和测试步骤的标识添加至性能测试样本,另外,根据请求发送的时间戳生成唯一的id,并截取请求路径生产value值,并根据id和value的形式添加请求标识。41.s3、部署脚本管理中心工具,脚本管理中心工具至少包括用于导入多个测试用例的测试用例维护模块、用于导入性能测试脚本的导入性能测试脚本功能模块和对应不同测试场景的测试用例的数据测试脚本,脚本管理中心通过测试用例模块对导入的测试用例进行解析,将解析的内容存储到用例维护表中,其中,数据测试脚本连接数据库。42.脚本管理中心由python实现,编写python脚本文件之后导入到脚本管理中心,脚本管理中心对导入的测试用例进行解析,对测试用例进行管理。脚本管理中心工具的工作示意图如图3所示。脚本管理中心导入性能测试脚本,消息管理中心模块接收到消息,则发送任务到脚本管理中心,则脚本管理中心开始任务,执行性能测试脚本,并判断测试用例的状态标志,如果测试状态用例的状态标志位false,则调用数据测试脚本,生产大数据量的测试数据,执行完成后,数据测试脚本发送消息至消息管理中心模块,开启大数据量的想能测试。43.在一些实施方式中,脚本管理中心有导入按钮可以导入性能测试脚本,即导入测试用例。在脚本管理中心对测试用例维护存储在oracle数据表中,创建表语句如下:44.createtable"test_cases"("id"number(20,0)notnullenable,"case_name"varchar2(256)notnullenable,"pycasename"varchar2(20,0)notnullenable,"operate"varchar2(256)notnullenable,"status"number(1,0)default0,"creator"varchar2(64),"modify_time"timestamp(6)defaultnull,primarykey("id"));45.id:表示我们脚本用例表的唯一标识46.case_name:表示用例名称,测试用例自定义名称,例如测试用例1、测试用例247.pycasename:表示用例对应的python脚本文件48.status:状态,生效用例用true标识,失效用例用false标识49.operate:操作用0,1,2在数据库中存储,0代表编辑,1代表执行,2代表删除50.creator:表示用例是由谁创建的51.modify_time:修改时间,表示用例的修改时间52.当我们执行某一测试用例时,会运行对应的python脚本文件,界面输入起始值与结束值即可生成数据,所以只要编写多个python来实现不同业务场景的脚本,即可以实现测试用例对不同业务场景的覆盖。编写python脚本文件首先需要创建用例维护目录如:d:\datatest\case\test_process_type.py,本实施示例的用例维护表的示意图如图4所示。53.s4、部署测试管理中心工具,测试管理中心至少包括消息管理中心模块,消息管理中心模块用于发送消息任务至脚本管理中心,开启大数据量的性能测试。54.在一些实施方式中,测试管理中心工具包括以下几种模块,系统配置模块:主要用于配置被测服务器、测试执行机运行参数和测试环境。资源文件模块:主要用于配置测试脚本。任务调度模块:主要用于配置任务名称、选择执行的测试脚本、执行的时间和频率。任务构建执行后,启动性能测试,执行测试脚本。监控模块:主要用于监控被测服务器、测试执行机池的运行情况,并且收集被测服务器、测试执行机池的运行数据;数据分析模块:用于对性能测试结果指标和服务器资源使用情况通过python编程的方式进行分析、汇总。数据展示模块:用于进行可视图实时动态展示用户设置的各种性能测试结果指标和服务器资源使用情况。消息管理中心模块:主要用于配置相关通知人员、通知方式、通知频率,通过消息中间件及时通知相关负责人及脚本管理中心开启任务。日志管理模块:主要用于收集测试执行机池执行过程中的日志文件。55.测试管理中心工具可通过web页面访问。56.在脚本管理中心的用例维护模块进行导入多个测试用例,一个测试用例就是对应一个性能测试脚本,用户可以直接访问web界面在资源文件中导入性能测试脚本,在待测试系统的系统设置中的测试参数中设置修改各场景虚拟用户数,用户思考时间,测试结果保存路径,阈值管理中可新增压测服务器资源cpu、内存、io、网卡使用阈值,测试错误率阈值,日志级别,测试结果各种指标展示情况、服务器资源使用情况等,同时在任务调度中配置定时任务,构建触发器执行定时任务,以及配置构建后操作,配置测试报告模板和邮件接收人信息,其中测试报告模板支持默认模板和用户自定义设置;实现无人值守。57.其中,定时任务的配置,可触发接口发送任务,即可以将测试结果定时发送至收集信息装置,用于测试结果的收集。58.s5,性能测试脚本调用数据测试脚本,数据测试脚本基于对应测试用例的测试用例维护表的状态标志向数据库插入预设数据量的模拟数据,生成的模拟数据用于大数据量的性能测试。59.可以根据业务场景点击不同的测试用例,当我们执行某一测试用例时,即开启大数据量的性能测试后,会运行对应的python脚本文件,发起像数据库中插入数据,将数据写成随机变量形式通过循环插入,实现批量测试数据的有效实现。在插入数据过程中我们也会根据测试用例维护表的status字段判断是否需要插入,如果是已经存在的数据则不需要再插入,如果是不存在的则开始准备插入数据。60.以数据测试脚本中连接数据库oracle为例,在oracle数据库中造一百万的数据,我们可以通过定义表对象类classa,初始化数据库连接cx-oracle,得到一个可以执行sql语句的光标对象,执行完毕返回的结果集默认以元组显示。61.在一些实施方式中,例如创建时间字段,我们通过设置时间格式的字符串,通过编写for循环实现每次循环插入的时间字段dt=(dt+datetime.timedelta(days=-1))会自动减1天,修改时间字段可能会要求固定在某个时间段的数据,可以将时间转换成对应的时间戳modify_time=time.strftime('%y-%m-%d%h:%m:%s',time.localtime(1585497600-random.randrange(1,1000000)))。然后通过executemany方法批量插入数据insertinto表名(字段)values(占位符)。62.另一个业务场景就是不同的字段如id字段,在循环中定位id为str(i),input_key字段我们设置为input_key='lims:氨氮含量'+shift_date。63.s6,消息管理中心模块接收到数据测试脚本的执行结果,开始大数据量的性能测试任务;64.s7,开启测试结果收集并分析测试结果。65.开始性能测试任务,则启动结果收集装置和服务器监控装置,其中,服务器监控装置监控被测服务器的硬件资源,结果收集装置收集性能测试收据。在本发明的一个实施例中,通过定时任务的配置,触发接口发送任务,定时将测试结果发送至收集测试结果装置。各个服务器的压力测试结果、服务器资源使用情况进行收集保存时间序列数据库,基于时间存储的数据库,每条数据都有一个时间戳;收集测试结果整合后发送至分析装置。分析装置基于收集的测试结果数据和服务器资源使用数据,进行数据的汇总、分析进行可视图实时动态展示用户设置的各种性能测试结果指标和服务器资源使用情况。测试结果错误率、服务器资源使用率超出设定阈值时,流程图如图5所示,通过消息中间件及时通知相关负责人,相关负责人可通过web页面访问查看历史测试指标数据和服务器资源监控数据,进行排查分析。66.用户能第一时间得知实时的性能测试结果,及时进行人工干预,避免了性能测试出现错误至性能测试结束期间的时间与资源浪费,确保了性能测试高效性。67.s8,基于预设日志级别,对日志进行收集、存储和过滤,以及,基于python图形化的编程进行日志的展示,从而快速定位问题。68.在一些实施方式中,基于脚本管理中心的日志管理模块用于收集测试执行机池产生的日志信息,日志级别如下可选:debug《info《warning《error《fatal,以日期生成对应的日期文件并且保存在硬盘上,日志分析会对日期的日志文件进行解析,根据用户输入的关键字进行搜索,可以快速定位。69.s9、配置邮件服务中心,向不同的用户发送测试报告结果70.在一些实施方式中,还包括配置邮件服务中心,向不同的用户发送测试报告结果。71.本发明的另一个方面,提出了一种工业软件大数据量性能测试系统,至少包括脚本管理中心,实时监控中心和消息管理中心,脚本管理中心用于适配不同业务场景运行对应的脚本,以及创建测试数据;实时监控系统用于实时获取运行脚本后的性能测试结果和服务器资源信息,并发送至消息管理中心;消息管理中心基于预设阈值、性能测试结果和服务器资源信息反馈测试结果。72.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。73.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1