CN112799962A - 一种软件测试方法、装置、设备及介质 - Google Patents
一种软件测试方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112799962A CN112799962A CN202110217404.6A CN202110217404A CN112799962A CN 112799962 A CN112799962 A CN 112799962A CN 202110217404 A CN202110217404 A CN 202110217404A CN 112799962 A CN112799962 A CN 112799962A
- Authority
- CN
- China
- Prior art keywords
- timing task
- timing
- software
- tasks
- source code
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013522 software testing Methods 0.000 title claims abstract description 44
- 238000012360 testing method Methods 0.000 claims abstract description 166
- 238000011068 loading method Methods 0.000 claims abstract description 55
- 230000001419 dependent effect Effects 0.000 claims description 39
- 238000004422 calculation algorithm Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 9
- 238000012163 sequencing technique Methods 0.000 claims description 8
- 230000008439 repair process Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 16
- 238000012795 verification Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000011161 development Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件测试方法、装置、设备及介质,该方法包括:加载待测试软件中的定时任务集合进行缓存;连接所述待测试软件对应的Oracle数据库,并从所述连接后的Oracle数据库中的底层视图中抽取所述缓存中的每个定时任务的源码;基于所述每个定时任务的源码对所述缓存中的每个定时任务进行测试,生成测试结果数据;根据所述测试结果数据生成测试报告。因此,采用本申请实施例,软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率。
Description
技术领域
本发明涉及软件测试技术领域,特别涉及一种软件测试方法、装置、设备及介质。
背景技术
软件测试是一种通过对比实际功能节点下输出的字段以及效果与预期输出的字段和效果之间的差异,来鉴定软件的正确性、完整性、安全性和质量的过程,该过程通常是在规定的使用条件下对软件进行操作,从而确定该软件是否满足设计要求,从而可以对软件的质量进行评估。
目前在对系统中的功能节点进行功能性测试时,在测试功能节点的过程中,通常采取的是手工测试的方法进行逐一测试,由于手工测试的方式存在测试场景覆盖不全,测试工作重复以及不能及时回归测试,容易造成遗漏且验证有误。例如,开发工程师基于个人理解修改了某个定时任务的依赖数据,但是未评估到此依赖数据对其他定时任务的影响,导致项目上线时,部分定时任务一致停滞,无法完成执行,从而需要测试工程师花费大量时间反复排查,因此现有测试方式降低了系统中功能节点的测试效率,提升了功能节点测试的错误率。
发明内容
基于此,有必要针对开发效率低下,代码臃肿且不易维护的问题,提供一种软件测试方法、装置、设备及介质。
一种软件测试方法,方法包括:加载待测试软件中的定时任务集合进行缓存;连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;根据测试结果数据生成测试报告。
在其中一个实施例中,待测试软件中的定时任务集合的加载方式包括单一加载方式和批量加载方式,所述加载待测试软件中的定时任务集合进行缓存,包括:当加载方式为单一加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存数组;采用预先设定的函数标记算法将待测试软件中的定时任务进行遍历标记,并将标记后的定时任务逐一缓存至缓存数组中。
在其中一个实施例中,所述加载待测试软件中的定时任务集合进行缓存,还包括:当加载方式为批量加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存集合;采用滑动窗口算法创建滑动窗口;将待测试软件中的定时任务逐一输入创建的滑动窗口中;当滑动窗口内的定时任务数量到达预设数量时,将到达预设数量的定时任务输入缓存集合中进行缓存;统计未进入所述滑动窗口的定时任务;继续将所述未进入所述滑动窗口的定时任务逐一输入所述创建的滑动窗口中,直到所述待测试软件中的定时任务全部进入所述滑动窗口时缓存结束。
在其中一个实施例中,基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,包括:将每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件;从每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识;解析依赖标识,并基于解析后的依赖标识从待测试软件中获取每个定时任务对应的依赖数据;从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息,生成匹配结果;基于所述匹配结果确定是否针对所述每个定时任务的依赖数据进行修复;若否,获取所述每个定时任务的依赖数据所对应的日志记录;从所述Oracle数据库中定位所述每个定时任务的数据字典;将所述每个定时任务的依赖数据所对应的日志记录插入所述每个定时任务的数据字典中生成目标定时任务集合;基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据。
在其中一个实施例中,所述基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据,包括:获取目标定时任务集合中各定时任务的依赖层级,并根据依赖层级的高低顺序将目标定时任务集合中各定时任务进行排序,生成排序后的定时任务集合;根据预设时间间隔修改排序后的定时任务集合各定时任务的执行时间,并基于修改后的执行时间启动所述各定时任务进行执行,生成测试结果数据;输出执行后生成的测试结果数据。
在其中一个实施例中,从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息,包括:将每个定时任务的源码文件确定为主串;将每个定时任务的依赖数据确定为模式串;将主串和模式串输入预设BMH算法中,输出模式串在主串中的位置下标;根据输出的位置下标判断是否存在与每个定时任务对应的依赖数据相同的数据信息。
在其中一个实施例中,获取目标定时任务集合中各定时任务的依赖层级,包括:统计目标定时任务集合中各定时任务的依赖次数;根据各定时任务的依赖次数确定各定时任务的依赖层级。
一种基于Oracle数据库的软件测试装置,装置包括:定时任务加载模块,用于加载待测试软件中的定时任务集合进行缓存;源码获取模块,用于连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;测试结果数据生成模块,用于基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;测试报告生成模块,用于根据测试结果数据生成测试报告。
一种设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述软件测试方法的步骤。
一种存储有计算机可读指令的介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述软件测试方法的步骤。
上述软件测试方法、装置、设备和介质,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本申请一个实施例中提供的软件测试方法的实施环境图;
图2为本申请一个实施例中设备的内部结构示意图;
图3为本申请一个实施例中提供的软件测试方法的方法示意图;
图4为本申请一个实施例中提供的软件系统中定时任务进行校验时的校验过程的过程示意图;
图5为本申请另一个实施例中提供的软件测试方法的方法示意图;
图6是本申请实施例提供的一种基于Oracle数据库的软件测试装置的装置示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
图1为一个实施例中提供的软件测试方法的实施环境图,如图1所示,在该实施环境中,包括设备110以及用户终端120。
设备110可以为服务器设备,例如为保存Oracle数据库的服务器设备、还可以是用来缓存待测试软件系统中的定时任务的服务器设备。客户端120上安装有待测试的软件系统和软件测试工具,当需要进行软件测试时,客户端120首先加载待测试软件中的定时任务集合缓存至设备110中;客户端120上的软件测试工具然后连接设备110上的待测试软件对应的Oracle数据库,客户端120并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,客户端120基于每个定时任务的源码对设备110缓存中的每个定时任务进行测试,生成测试结果数据,客户端120最后根据测试结果数据生成测试报告。
需要说明的是,客户端120可为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。设备110以及客户端120可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者其他通讯连接方式进行连接,本发明在此不做限制。
图2为一个实施例中设备的内部结构示意图。如图2所示,该设备包括通过系统总线连接的处理器、介质、存储器和网络接口。其中,该设备的介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种软件测试方法。该设备的处理器用于提供计算和控制能力,支撑整个设备的运行。该设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种软件测试方法。该设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。其中,介质为一种可读的存储介质。
下面将结合附图3-附图5,对本申请实施例提供的软件测试方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的基于Oracle数据库的软件测试装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
请参见图3,为本申请实施例提供了一种软件测试方法的流程示意图。如图3所示,本申请实施例的方法可以包括以下步骤:
S101,加载待测试软件中的定时任务集合进行缓存;
其中,待测试软件为当前用户需要进行功能性测试的软件系统,定时任务为软件系统中多个需要执行的功能函数。
通常,在加载定时任务集合时,可以采用单一加载方式和批量加载方式。
在一种可能的实现方式中,当采用逐一加载方式时,首先计算当前系统中定时任务的数量,然后根据定时任务的数量创建数组,再采用函数标记算法将当前系统中的定时任务进行标记,最后将标记后的定时任务逐一缓存至创建的数据中。需要说明的是,单一加载方式适用于分布式的软件系统。其中,数组为(Array)是有序的元素序列,用于储存多个相同类型数据的集合。
在另一种可能的实现方式中,当采用批量加载方式时,首先当加载方式为批量加载方式时,计算待测试软件中定时任务的数量,再根据定时任务的数量创建缓存集合,然后采用滑动窗口算法创建滑动窗口,其次将待测试软件中的定时任务逐一输入创建的滑动窗口中,再当滑动窗口内的定时任务数量到达预设数量时,将到达预设数量的定时任务输入缓存集合中进行缓存,最后统计未进入所述滑动窗口的定时任务;继续将所述未进入所述滑动窗口的定时任务逐一输入所述创建的滑动窗口中,直到所述待测试软件中的定时任务全部进入所述滑动窗口时缓存结束。需要说明的是,批量加载方式适用于多集群的软件系统,批量加载的方式再多集群的软件系统中可以减少定时任务初始化的时间,提升软件系统的测试效率。其中,本申请中的集合选择java语言中的Map集合。
例如,定时任务有ABCDE,将ABCDE输入滑动窗口进行统计时,第一次输入了ABC后发现数量够一批了,将ABC保存到集合,然后再将CDE输入时,当输入了CDE时,发现够一批了,再缓存,这样循环遍历缓存直到所有定时任务全部缓存到集合时停止缓存。
S102,连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;
其中,Oracle数据库是甲骨文公司的一款关系数据库管理系统。底层视图是Oracle数据库中的功能视图,该功能视图中保存有全部定时任务的源代码。
在一种可能的实现方式中,测试工具在加载到待测试软件系统中的定时任务进行缓存后,用户首先针对测试工具输入当前软件系统连接oracle数据库的用户名和密码,测试工具通过python语言和输入的用户名、密码连接当前oracle数据库,连接成功后访问当前oracle数据库中的oracle底层视图,并从oracle底层视图中获取当前软件系统中全部定时任务所对应的源代码。其中,该源代码中包含定时任务的依赖标识和依赖数据。
S103,基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;
在本申请实施例中,首先将每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件,再从每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识,然后解析每个定时任务的依赖标识,再根据解析后的每个定时任务的依赖标识从当前系统中获取每个定时任务的依赖数据,其次从每个定时任务的源码文件中匹配是否存在与每个定时任务的依赖数据相同的数据信息,若存在与每个定时任务的依赖数据相同的数据信息时,则每个定时任务的依赖有效。若不存在与每个定时任务的依赖数据相同的数据信息时,则每个定时任务的依赖无效,当每个定时任务的依赖无效时,接收依赖修复指令,根据依赖修复指令进行依赖修复。
具体的,从每个定时任务的源码文件中匹配是否存在与每个定时任务的依赖数据相同的数据信息时,首先将每个定时任务的源码文件确定为主串,然后将每个定时任务的依赖数据确定为模式串,最后将主串和模式串输入预设BMH算法中,输出模式串在主串中的位置下标,根据输出的位置下标判断是否存在与每个定时任务的依赖数据相同的数据信息。
具体的,当模式串在主串中的位置下标小于0时,定时任务源码文件中不存在与每个定时任务的依赖数据相同的数据信息。当模式串在主串中的位置下标大于0时,定时任务源码文件中存在与每个定时任务的依赖数据相同的数据信息。
进一步地,当每个定时任务有效或依赖修复结束后,测试工具首先获取每个定时任务的依赖数据所对应的日志记录,再从oracle数据库中定位每个定时任务的数据字典,并将每个定时任务的依赖数据所对应的日志记录插入每个定时任务的数据字典中生成最终的定时任务集合。
进一步地,获取最终的定时任务集合中各定时任务的依赖层级,根据依赖层级的高低顺序将最终的定时任务集合中各定时任务进行排序,生成排序后的定时任务集合。
在一种可能的实现方式中,在获取最终的定时任务集合中各定时任务的依赖层级时,首先统计每个定时任务的依赖次数,基于依赖次数确定每个定时任务的依赖层级。
例如有定时任务A、B、C、D,定时任务A依赖于定时任务C和定时任务D,而定时任务B依赖于定时任务A,定时任务C依赖于定时任务A、B、C、D,定时任务D依赖于定时任务A、B和C,由此可知定时任务A的依赖次数为2,定时任务B的依赖次数为1,定时任务C的依赖次数为4,定时任务D的依赖次数为3,从而排序后为C、D、A、B。
需要说明的是,当两个定时任务的依赖次数相同时,获取该定时任务的功能函数,统计该功能函数中的实体对象个数,将实体属性个数多的定时任务排在实体对象个数较少的定时任务之后。
进一步地,在最终的定时任务集合中各定时任务排序结束后,再根据预设时间间隔修改排序后的定时任务中各定时任务的执行时间。优选的,预设时间间隔为2分钟。其次根据排序的先后顺序逐一将各定时任务进行启动执行,当执行后的结果符合预期时等待两分钟进行下一个定时任务启动执行,或者当执行后的结果不符合预期时,验证失败,并将验证失败的日志信息进行保存,保存后等待两分钟进行下一个定时任务启动执行。
当排序后的定时任务全部执行结束后,生成测试结果数据。
例如图4所示,图4是将排序后的全部定时任务逐一执行的过程示意图,当每个定时任务启动执行后的校验点不符合预期时,验证失败,结束该定时任务的验证并记录日志后进行下一个定时任务校验点的验证,当全部校验点验证结束后,综合判断验证结果,输出结果并记录,生成结果文件。
S104,根据测试结果数据生成测试报告。
在一种可能的实现方式中,当生成测试结果数据后,根据预先设定的规则定义测试报告模板,获取测试报告模板中映射标识符,将测试结果数据的标识符和映射标识符逐一对应后填充至测试报告模板中,生成测试报告。
具体的,测试报告由“定时任务名称”、“日志对象”、“映射标识”、“定时表达式”等属性组成。
进一步地,测试报告模板可以通过文字编辑插件器编辑,生成html脚本保存到数据库中。模板中通过类似${dataResultOne.count}、${dataResultOne.data1.columnA}的脚本表示动态数据。
当测试报告生成后,还可以进一步根据预设的时间对测试报告进行推送,推送至有关部门进行及时预警处理。在预设测试报告的推送时间时,可以使用java的定时任务技术、邮件技术、短信技术等,完成测试报告的自动推送。
需要说明的是,本申请可以得到更好的测试效率和准确率,可以降低测试工程师的测试时间,去进行更多的细节以及无法自动化替代的测试工作中去。在测试定时任务过程中,更多的解决之前的场景覆盖不全,验证结果不全,定时任务依赖验证不到位,定时任务执行结果验证不到位等测试易忽视问题,在针对前面提到的问题,可以快速的,全量的进行验证,避免测试遗漏。
在本申请实施例中,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
为了便于理解本申请实施例提供的软件测试方法,下面结合附图5进行说明。如图5所示,一种软件测试方法,包括:
S201,加载待测试软件中的定时任务集合进行缓存;
S202,连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;
S203,将每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件;
S204,从每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识;
S205,解析依赖标识,并基于解析后的依赖标识从待测试软件中获取每个定时任务对应的依赖数据;
S206,从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息,生成匹配结果;
S207,基于匹配结果确定是否针对所述每个定时任务的依赖数据进行修复;
S208,若否,获取每个定时任务的依赖数据所对应的日志记录;
S209,从Oracle数据库中定位每个定时任务的数据字典;
S210,将每个定时任务的依赖数据所对应的日志记录插入每个定时任务的数据字典中生成目标定时任务集合;
S211,获取目标定时任务集合中各定时任务的依赖层级,并根据依赖层级的高低顺序将目标定时任务集合中各定时任务进行排序,生成排序后的定时任务集合;
S212,根据预设时间间隔修改排序后的定时任务集合各定时任务的执行时间,并基于修改后的执行时间启动所述各定时任务进行执行,生成测试结果数据,输出执行后生成的测试结果数据;
S213,根据测试结果数据生成测试报告。
在本申请实施例中,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
请参见图6,其示出了本发明一个示例性实施例提供的基于Oracle数据库的软件测试装置的结构示意图,应用于服务器。该基于Oracle数据库的软件测试系统可以通过软件、硬件或者两者的结合实现成为设备的全部或一部分。该装置1包括定时任务加载模块10、源码获取模块20、测试结果数据生成模块30、测试报告生成模块40。
定时任务加载模块10,用于加载待测试软件中的定时任务集合进行缓存;
源码获取模块20,用于连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;
测试结果数据生成模块30,用于基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;
测试报告生成模块40,用于根据测试结果数据生成测试报告。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
在一个实施例中,提出了一种设备,设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:加载待测试软件中的定时任务集合进行缓存;连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;根据测试结果数据生成测试报告。
在一个实施例中,处理器执行待测试软件中的定时任务集合的加载方式包括单一加载方式和批量加载方式,所述加载待测试软件中的定时任务集合进行缓存时,具体执行以下操作:当加载方式为单一加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存数组;采用预先设定的函数标记算法将待测试软件中的定时任务进行遍历标记,并将标记后的定时任务逐一缓存至缓存数组中。
在一个实施例中,处理器执行所述加载待测试软件中的定时任务集合进行缓存时,具体执行以下操作:当加载方式为批量加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存集合;采用滑动窗口算法创建滑动窗口;将待测试软件中的定时任务逐一输入创建的滑动窗口中;当滑动窗口内的定时任务数量到达预设数量时,将到达预设数量的定时任务输入缓存集合中进行缓存;统计未进入所述滑动窗口的定时任务;继续将所述未进入所述滑动窗口的定时任务逐一输入所述创建的滑动窗口中,直到所述待测试软件中的定时任务全部进入所述滑动窗口时缓存结束。
在一个实施例中,处理器执行基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据时,具体执行以下操作:将每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件;从每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识;解析依赖标识,并基于解析后的依赖标识从待测试软件中获取每个定时任务对应的依赖数据;从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息,生成匹配结果;基于所述匹配结果确定是否针对所述每个定时任务的依赖数据进行修复;若否,获取所述每个定时任务的依赖数据所对应的日志记录;从所述Oracle数据库中定位所述每个定时任务的数据字典;将所述每个定时任务的依赖数据所对应的日志记录插入所述每个定时任务的数据字典中生成目标定时任务集合;基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据。
在一个实施例中,处理器基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据时,还执行以下操作:获取目标定时任务集合中各定时任务的依赖层级,并根据依赖层级的高低顺序将目标定时任务集合中各定时任务进行排序,生成排序后的定时任务集合;根据预设时间间隔修改排序后的定时任务集合各定时任务的执行时间,并基于修改后的执行时间启动所述各定时任务进行执行,生成测试结果数据;输出执行后生成的测试结果数据。
在一个实施例中,处理器执行从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息时,具体执行以下操作:将每个定时任务的源码文件确定为主串;将每个定时任务的依赖数据确定为模式串;将主串和模式串输入预设BMH算法中,输出模式串在主串中的位置下标;根据输出的位置下标判断是否存在与每个定时任务对应的依赖数据相同的数据信息。
在一个实施例中,处理器执行获取目标定时任务集合中各定时任务的依赖层级时,具体执行以下操作:统计目标定时任务集合中各定时任务的依赖次数;根据各定时任务的依赖次数确定各定时任务的依赖层级。
在本申请实施例中,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
在一个实施例中,提出了一种存储有计算机可读指令的介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:加载待测试软件中的定时任务集合进行缓存;连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码;基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据;根据测试结果数据生成测试报告。
在一个实施例中,处理器执行待测试软件中的定时任务集合的加载方式包括单一加载方式和批量加载方式,所述加载待测试软件中的定时任务集合进行缓存时,具体执行以下操作:当加载方式为单一加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存数组;采用预先设定的函数标记算法将待测试软件中的定时任务进行遍历标记,并将标记后的定时任务逐一缓存至缓存数组中。
在一个实施例中,处理器执行加载待测试软件中的定时任务集合进行缓存时,具体执行以下操作:当加载方式为批量加载方式时,计算待测试软件中定时任务的数量;根据定时任务的数量创建缓存集合;采用滑动窗口算法创建滑动窗口;将待测试软件中的定时任务逐一输入创建的滑动窗口中;当滑动窗口内的定时任务数量到达预设数量时,将到达预设数量的定时任务输入缓存集合中进行缓存;统计未进入所述滑动窗口的定时任务;继续将所述未进入所述滑动窗口的定时任务逐一输入所述创建的滑动窗口中,直到所述待测试软件中的定时任务全部进入所述滑动窗口时缓存结束。
在一个实施例中,处理器执行基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据时,具体执行以下操作:将每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件;从每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识;解析依赖标识,并基于解析后的依赖标识从待测试软件中获取每个定时任务对应的依赖数据;从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息,生成匹配结果;基于所述匹配结果确定是否针对所述每个定时任务的依赖数据进行修复;若否,获取所述每个定时任务的依赖数据所对应的日志记录;从所述Oracle数据库中定位所述每个定时任务的数据字典;将所述每个定时任务的依赖数据所对应的日志记录插入所述每个定时任务的数据字典中生成目标定时任务集合;基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据。
在一个实施例中,处理器基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据时,还执行以下操作:获取目标定时任务集合中各定时任务的依赖层级,并根据依赖层级的高低顺序将目标定时任务集合中各定时任务进行排序,生成排序后的定时任务集合;根据预设时间间隔修改排序后的定时任务集合各定时任务的执行时间,并基于修改后的执行时间启动所述各定时任务进行执行,生成测试结果数据;输出执行后生成的测试结果数据。
在一个实施例中,处理器执行从每个定时任务的源码文件中匹配是否存在与每个定时任务对应的依赖数据相同的数据信息时,具体执行以下操作:将每个定时任务的源码文件确定为主串;将每个定时任务的依赖数据确定为模式串;将主串和模式串输入预设BMH算法中,输出模式串在主串中的位置下标;根据输出的位置下标判断是否存在与每个定时任务对应的依赖数据相同的数据信息。
在一个实施例中,处理器执行获取目标定时任务集合中各定时任务的依赖层级时,具体执行以下操作:统计目标定时任务集合中各定时任务的依赖次数;根据各定时任务的依赖次数确定各定时任务的依赖层级。
在本申请实施例中,基于Oracle数据库的软件测试装置首先加载待测试软件中的定时任务集合进行缓存,再连接待测试软件对应的Oracle数据库,并从连接后的Oracle数据库中的底层视图中抽取缓存中的每个定时任务的源码,然后基于每个定时任务的源码对缓存中的每个定时任务进行测试,生成测试结果数据,最后根据测试结果数据生成测试报告。由于本方案通过从Oracle数据库中提取定时任务的源码文件进行自动化校验,以确保每个定时任务对应的依赖数据准确无误,当每个定时任务的依赖数据准确无误时,定时任务根据依赖数据执行后打印的日志信息才能保证和预先保存的日志信息一致,在日志信息不一致的情况下可以及时通知开发工程师进行修改,从而软件测试过程中可以提升测试效率和准确率,进一步降低测试工程师的测试时间,提升工作效率,保证了项目上线时的高效运行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性介质,或随机存储记忆体(RandomAccess Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种软件测试方法,其特征在于,所述方法包括:
加载待测试软件中的定时任务集合进行缓存;
连接所述待测试软件对应的Oracle数据库,并从所述连接后的Oracle数据库中的底层视图中抽取所述缓存中的每个定时任务的源码;
基于所述每个定时任务的源码对所述缓存中的每个定时任务进行测试,生成测试结果数据;
根据所述测试结果数据生成测试报告。
2.根据权利要求1所述的方法,其特征在于,所述待测试软件中的定时任务集合的加载方式包括单一加载方式和批量加载方式,所述加载待测试软件中的定时任务集合进行缓存,包括:
当所述加载方式为单一加载方式时,计算所述待测试软件中定时任务的数量;
根据所述定时任务的数量创建缓存数组;
采用预先设定的函数标记算法将所述待测试软件中的定时任务进行遍历标记,并将所述标记后的定时任务逐一缓存至所述缓存数组中。
3.根据权利要求2所述的方法,其特征在于,所述加载待测试软件中的定时任务集合进行缓存还包括:
当所述加载方式为批量加载方式时,计算所述待测试软件中定时任务的数量;
根据所述定时任务的数量创建缓存集合;
采用滑动窗口算法创建滑动窗口;
将所述待测试软件中的定时任务逐一输入所述创建的滑动窗口中;
当所述滑动窗口内的定时任务数量到达预设数量时,将所述到达预设数量的定时任务输入所述缓存集合中进行缓存;
统计未进入所述滑动窗口的定时任务;
继续将所述未进入所述滑动窗口的定时任务逐一输入所述创建的滑动窗口中,直到所述待测试软件中的定时任务全部进入所述滑动窗口时缓存结束。
4.根据权利要求1所述的方法,其特征在于,所述基于所述每个定时任务的源码对所述缓存中的每个定时任务进行测试,生成测试结果数据,包括:
将所述每个定时任务的源码写入预先创建的多个定时任务源码文件中,生成每个定时任务的源码文件;
从所述每个定时任务的源码文件中逐一遍历每个定时任务的依赖标识;
解析所述依赖标识,并基于所述解析后的依赖标识从所述待测试软件中获取所述每个定时任务对应的依赖数据;
从所述每个定时任务的源码文件中匹配是否存在与所述每个定时任务对应的依赖数据相同的数据信息,生成匹配结果;
基于所述匹配结果确定是否针对所述每个定时任务的依赖数据进行修复;
若否,获取所述每个定时任务的依赖数据所对应的日志记录;
从所述Oracle数据库中定位所述每个定时任务的数据字典;
将所述每个定时任务的依赖数据所对应的日志记录插入所述每个定时任务的数据字典中生成目标定时任务集合;
基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据。
5.根据权利要求4所述的方法,其特征在于,所述基于所述目标定时任务集合对所述缓存中的每个定时任务进行测试,生成测试结果数据,包括:
获取所述目标定时任务集合中各定时任务的依赖层级,并根据所述依赖层级的高低顺序将所述目标定时任务集合中各定时任务进行排序,生成排序后的定时任务集合;
根据预设时间间隔修改所述排序后的定时任务集合各定时任务的执行时间,并基于所述修改后的执行时间启动所述各定时任务进行执行,生成测试结果数据;
输出所述执行后生成的测试结果数据。
6.根据权利要求4所述的方法,其特征在于,所述从所述每个定时任务的源码文件中匹配是否存在与所述每个定时任务对应的依赖数据相同的数据信息,包括:
将所述每个定时任务的源码文件确定为主串;
将所述每个定时任务的依赖数据确定为模式串;
将所述主串和所述模式串输入预设BMH算法中,输出所述模式串在所述主串中的位置下标;
根据所述输出的位置下标判断是否存在与所述每个定时任务对应的依赖数据相同的数据信息。
7.根据权利要求5所述的方法,其特征在于,所述获取所述目标定时任务集合中各定时任务的依赖层级,包括:
统计所述目标定时任务集合中各定时任务的依赖次数;
根据所述各定时任务的依赖次数确定所述各定时任务的依赖层级。
8.一种基于Oracle数据库的软件测试装置,其特征在于,所述装置包括:
定时任务加载模块,用于加载待测试软件中的定时任务集合进行缓存;
源码获取模块,用于连接所述待测试软件对应的Oracle数据库,并从所述连接后的Oracle数据库中的底层视图中抽取所述缓存中的每个定时任务的源码;
测试结果数据生成模块,用于基于所述每个定时任务的源码对所述缓存中的每个定时任务进行测试,生成测试结果数据;
测试报告生成模块,用于根据所述测试结果数据生成测试报告。
9.一种设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述软件测试方法的步骤。
10.一种存储有计算机可读指令的介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述基于Oracle数据库的软件测试的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110217404.6A CN112799962A (zh) | 2021-02-26 | 2021-02-26 | 一种软件测试方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110217404.6A CN112799962A (zh) | 2021-02-26 | 2021-02-26 | 一种软件测试方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112799962A true CN112799962A (zh) | 2021-05-14 |
Family
ID=75815922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110217404.6A Pending CN112799962A (zh) | 2021-02-26 | 2021-02-26 | 一种软件测试方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799962A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993747B1 (en) * | 1999-08-30 | 2006-01-31 | Empirix Inc. | Method and system for web based software object testing |
CN102693183A (zh) * | 2012-05-30 | 2012-09-26 | 瑞斯康达科技发展股份有限公司 | 一种实现软件自动化测试的方法及系统 |
US8850391B1 (en) * | 2012-01-27 | 2014-09-30 | Google Inc. | System and method for building components of a software product in a distributed system |
EP2927763A1 (en) * | 2014-04-04 | 2015-10-07 | Abb Ag | System and method for an optimized operation of real-time embedded solutions in industrial automation |
CN110928784A (zh) * | 2019-11-21 | 2020-03-27 | 中国民航信息网络股份有限公司 | 一种软件测试环境监测方法及装置 |
-
2021
- 2021-02-26 CN CN202110217404.6A patent/CN112799962A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993747B1 (en) * | 1999-08-30 | 2006-01-31 | Empirix Inc. | Method and system for web based software object testing |
US8850391B1 (en) * | 2012-01-27 | 2014-09-30 | Google Inc. | System and method for building components of a software product in a distributed system |
CN102693183A (zh) * | 2012-05-30 | 2012-09-26 | 瑞斯康达科技发展股份有限公司 | 一种实现软件自动化测试的方法及系统 |
EP2927763A1 (en) * | 2014-04-04 | 2015-10-07 | Abb Ag | System and method for an optimized operation of real-time embedded solutions in industrial automation |
CN110928784A (zh) * | 2019-11-21 | 2020-03-27 | 中国民航信息网络股份有限公司 | 一种软件测试环境监测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256558B (zh) | 一种测试用例的生成方法、装置、计算机设备及存储介质 | |
US8397104B2 (en) | Creation of test plans | |
CN113127347B (zh) | 一种接口测试方法、装置、设备及可读存储介质 | |
CN111026433A (zh) | 基于代码变更历史的软件代码质量问题自动修复方法、系统及介质 | |
CN108874661B (zh) | 测试映射关系库生成方法、装置、计算机设备和存储介质 | |
JP7404839B2 (ja) | ソフトウェアプログラム不良位置の識別 | |
CN113434395B (zh) | 测试用例的自动化生成方法、装置、设备及介质 | |
CN111078568A (zh) | 代码规范方法、装置、计算机设备和存储介质 | |
CN113282513B (zh) | 接口测试案例的生成方法、装置、计算机设备及存储介质 | |
CN108399125B (zh) | 自动化测试方法、装置、计算机设备和存储介质 | |
CN116245074A (zh) | 芯片验证方法、设备及存储介质 | |
US8589734B2 (en) | Verifying correctness of processor transactions | |
US11960862B2 (en) | Source code correction assistance apparatus and source code correction assistance method | |
US7895575B2 (en) | Apparatus and method for generating test driver | |
US11645192B2 (en) | Graph-based method for inductive bug localization | |
CN109684205B (zh) | 系统测试方法、装置、电子设备及存储介质 | |
CN112799962A (zh) | 一种软件测试方法、装置、设备及介质 | |
US11520691B2 (en) | Test procedure systems and methods | |
CN116069650A (zh) | 一种测试用例的生成方法及装置 | |
CN113704114A (zh) | 功能接口的自动化测试方法、装置、设备及介质 | |
CN115408049A (zh) | 文件版本控制方法、装置和电子设备 | |
CN115034165A (zh) | 一种芯片仿真验证方法、系统、设备以及存储介质 | |
CN112363933A (zh) | 字段落表的自动化验证方法、装置、计算机设备及存储介质 | |
CN114595159B (zh) | 测试数据生成方法、装置、设备及存储介质 | |
CN115658551B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210514 |