CN114238110A - 软件应用测试方法、装置、设备及存储介质 - Google Patents
软件应用测试方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114238110A CN114238110A CN202111546060.XA CN202111546060A CN114238110A CN 114238110 A CN114238110 A CN 114238110A CN 202111546060 A CN202111546060 A CN 202111546060A CN 114238110 A CN114238110 A CN 114238110A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- tested
- test case
- software application
- 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
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/3676—Test management for coverage analysis
-
- 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
本发明属于计算机技术领域,公开了一种软件应用测试方法、装置、设备及存储介质。本发明通过获取目标软件应用对应的待测试代码及测试用例;在断点测试模式下执行测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;若脚本执行结果与测试用例对应的预测结果不一致,则获取测试用例在待测试代码中对应的测试代码段落;根据有效执行代码及测试代码段落确定代码覆盖率,根据代码覆盖率确定异常代码位置。由于是在断点测试模式下执行测试脚本,可准确获得有效执行代码,在脚本执行结果与预测结果不一致时可根据比较得到的代码覆盖率快速定位异常代码位置,降低了开发人员定位异常代码位置的难度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件应用测试方法、装置、设备及存储介质。
背景技术
目前,测试人员在发现故障(bug)时因专业原因难以获取异常代码位置,仅可会将输入参数及bug描述提交给开发人员,而开发人员会需要根据输入参数及bug描述对该部分代码逐渐进行断点排查,才可定位异常代码位置,再对异常代码进行调整,从而导致整体流程长,耗时久。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种软件应用测试方法、装置、设备及存储介质,旨在解决开发人员根据测试数据定位异常代码困难的技术问题。
为实现上述目的,本发明提供了一种软件应用测试方法,所述方法包括以下步骤:
获取目标软件应用对应的待测试代码及测试用例;
在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;
若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落;
将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
可选的,所述获取目标软件应用对应的待测试代码及测试用例的步骤,包括:
对接收到的测试指令进行解析,获得待测应用标识及代码访问路径;
根据所述代码访问路径获取目标软件应用对应的待测试代码;
根据所述待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合;
在所述测试用例集合中选取所述目标软件应用对应的测试用例。
可选的,所述在所述测试用例集合中选取所述目标软件应用对应的测试用例的步骤,包括:
检测所述测试用例集合中各代码测试用例是否存在数据依赖关系;
若存在数据依赖关系,则获取所述测试用例集合中各代码测试用例对应的执行顺序;
根据所述执行顺序对所述测试用例集合中的代码测试用例进行排序,获得排序用例集合;
对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例。
可选的,所述在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码的步骤之后,还包括:
若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例;
若存在未被遍历过的代码测试用例,则返回所述对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例的步骤。
可选的,所述若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例的步骤之后,还包括:
若不存在未被遍历过的代码测试用例,则获取所述排序用例集合中各代码测试用例对应的有效执行代码;
根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记;
根据标记后的待测试代码生成测试质量报告,并将所述测试质量报告进行展示。
可选的,所述根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记的步骤,包括:
根据所述各代码测试用例对应的有效执行代码构建已测试代码;
将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
可选的,所述将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码的步骤,包括:
获取所述排序用例集合中各代码测试用例对应的异常代码位置;
根据所述异常代码位置确定疑问代码;
将所述疑问代码及所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
相应的,所述根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记的步骤,包括:
根据所述疑问代码、所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
此外,为实现上述目的,本发明还提出一种软件应用测试装置,所述软件应用测试装置包括以下模块:
数据获取模块,用于获取目标软件应用对应的待测试代码及测试用例;
脚本执行模块,用于在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;
结果比对模块,用于若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落;
异常定位模块,用于将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
此外,为实现上述目的,本发明还提出一种软件应用测试设备,所述软件应用测试设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的软件应用测试程序,所述软件应用测试程序被处理器执行时实现如上所述的软件应用测试方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有软件应用测试程序,所述软件应用测试程序执行时实现如上所述的软件应用测试方法的步骤。
本发明通过获取目标软件应用对应的待测试代码及测试用例;在断点测试模式下执行测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;若脚本执行结果与测试用例对应的预测结果不一致,则获取测试用例在待测试代码中对应的测试代码段落;根据有效执行代码及测试代码段落确定代码覆盖率,根据代码覆盖率确定异常代码位置。由于是在断点测试模式下执行测试脚本,可准确获得有效执行代码,在脚本执行结果与预测结果不一致时可根据比较得到的代码覆盖率快速定位异常代码位置,降低了开发人员定位异常代码位置的难度。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
图2为本发明软件应用测试方法第一实施例的流程示意图;
图3为本发明软件应用测试方法第二实施例的流程示意图;
图4为本发明软件应用测试方法第三实施例的流程示意图;
图5为本发明软件应用测试装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的软件应用测试设备结构示意图。
如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及软件应用测试程序。
在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在软件应用测试设备中,所述电子设备通过处理器1001调用存储器1005中存储的软件应用测试程序,并执行本发明实施例提供的软件应用测试方法。
本发明实施例提供了一种软件应用测试方法,参照图2,图2为本发明一种软件应用测试方法第一实施例的流程示意图。
本实施例中,所述软件应用测试方法包括以下步骤:
步骤S10:获取目标软件应用对应的待测试代码及测试用例。
需要说明的是,本实施例的执行主体可以是所述软件应用测试设备,所述软件应用测试设备可以是个人电脑、服务器等电子设备,还可以是可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以软件应用测试设备为例对本发明软件应用测试方法进行说明。
需要说明的是,目标软件应用可以是需要进行测试的软件应用,待测试代码可以是目标软件应用的全部或部分源代码,测试用例可以是由测试人员预先进行设置的代码测试用例。
在实际使用中,用户可以在用户终端操作选定待测试代码及测试用例,则用户终端会根据用户选定的待测试代码及测试用例发送指令至软件应用测试设备,则软件应用测试设备可以根据接收到的指令中的参数确定目标软件应用,并获取目标软件应用对应的待测试代码及测试用例。
步骤S20:在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码。
需要说明的是,测试用例可以包括预测结果、测试脚本等内容,预测结果可以是待测试代码无异常时执行测试脚本理论上应返回的结果,测试脚本中可以包括对待测试函数的访问路径、输入数据、访问方式等数据。获取测试用例对应的测试脚本可以是从测试用例提取测试用例对应的测试脚本;当然,实际使用中测试脚本可能较大,测试用例中可以仅保存测试脚本的脚本访问路径,则此时获取测试用例对应的测试脚本可以是读取测试用例中的脚本访问路径,根据脚本访问路径获取测试用例对应的测试脚本。断点测试模式是一种代码执行模式,开启断点测试模式再运行代码,则代码在达到某一断点处时会暂停,直到得到控制指令才会继续执行。脚本执行结果可以是测试脚本在执行后所得到的执行结果。有效执行代码是在测试用例对应的测试脚本执行时待测试代码中可正常执行的代码。
在实际使用中,为了准确的确定有效执行代码,可以将待测试代码中每一行均设置一个断点,在一行代码顺利执行后再执行下一行,从而保证任意一行代码出现异常无法正常执行时可以快速停止执行,从而快速确定有效执行代码。
可以理解的是,在确定到有任意一行代码无法顺利执行时,可以直接放开后续的代码的断点调试,不再继续进行断点,从而快速获得脚本执行结果,可以加快测试脚本的执行效率,减少不必要的时间消耗。
步骤S30:若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落。
需要说明的是,测试用例一般是对单个函数或多个函数进行功能测试,获取测试用例在待测试代码中对应的测试代码段落可以是获取测试用例进行功能测试的单个或多个函数在待测代码中对应的代码段落,从而获得测试用例在待测试代码中对应的测试代码段落。
可以理解的是,若脚本执行结果与测试用例对应的预测结果不一致,则说明待测试代码中出现了异常,因此,可以获取测试用例在待测试代码中对应的测试代码段落,以便于对异常代码进行定位。
步骤S40:将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
需要说明的是,测试代码段落是测试用例进行测试的单个或多个函数在待测代码中对应的代码段落,将有效执行代码与测试代码段落进行比对,即可确定有效执行代码在测试代码段落中所占比例,从而获得代码覆盖率。
可以理解的是,代码覆盖率为有效执行代码在测试代码段落中所占比例,而代码是具备执行顺序的,因此,根据代码覆盖率及代码的执行顺序即可快速定位异常代码位置。
在实际使用中,还可以根据异常代码位置、脚本执行结果、测试用例对应的用例标识、测试脚本及预测结果生成故障(bug)报告,将bug报告推送给开发人员,以便于开发人员排查bug原因。当然,还可以将故障报告进行存储。其中,测试用例对应的用例标识可以是测试用例的唯一标识。
当然,在实际使用过程中,因网络波动或其他因素影响,也可能会导致测试结果与预测结果不一致,此时可能并非真正的存在bug,若不进行验证直接生成bug报告推送给开发人员,则开发人员可能会浪费大量的时间去进行排查,浪费大量的人力物力,为了避免此种现象,若测试用例对应的测试脚本支持重复运行,在测试结果与预测结果不一致时,还可以重复尝试运行测试脚本多次,若多次运行得到的测试结果均与预测结果不一致,再生成bug报告,并将bug报告推送给开发人员。
本实施例通过获取目标软件应用对应的待测试代码及测试用例;在断点测试模式下执行测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;若脚本执行结果与测试用例对应的预测结果不一致,则获取测试用例在待测试代码中对应的测试代码段落;根据有效执行代码及测试代码段落确定代码覆盖率,根据代码覆盖率确定异常代码位置。由于是在断点测试模式下执行测试脚本,可准确获得有效执行代码,在脚本执行结果与预测结果不一致时可根据比较得到的代码覆盖率快速定位异常代码位置,降低了开发人员定位异常代码位置的难度。
参考图3,图3为本发明一种软件应用测试方法第二实施例的流程示意图。
基于上述第一实施例,本实施例软件应用测试方法的所述步骤S10,包括:
步骤S101:对接收到的测试指令进行解析,获得待测应用标识及代码访问路径。
需要说明的是,测试指令可以是用户操作用户终端发送软件应用测试设备的,测试指令中可以包括待测应用标识及代码访问路径,其中,待测试应用标识可以是目标软件应用的应用唯一标识,代码访问路径可以是目标软件应用中的源代码的访问路径。
步骤S102:根据所述代码访问路径获取目标软件应用对应的待测试代码。
需要说明的是,根据代码访问路径获取目标软件应用对应的待测试代码可以是在代码仓库中根据代码访问路径读取目标软件应用对应的待测试代码。其中,代码仓库可以是预先设置的用于保存各软件应用的源代码的仓库,例如:svn或git等代码仓库。
在实际使用中,对某个应用进行测试时可能并不会对整体应用进行测试,而是会对应用中部分功能模块进行测试,为了保证后续未覆盖代码标定的准确率,测试指令中还可以包括代码访问目录,对待测应用的源码进行更进一步的指定,指定待测应用对应的代码中的某一部分作为待测试代码。则此时可以是在代码仓库中根据代码访问路径及代码访问目录读取目标软件应用对应的待测试代码。
步骤S103:根据所述待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合。
需要说明的是,预设用例库可以是预先设置的用于存储代码测试用例的数据库,预设用例库中的代码测试用例可以由测试人员预先进行设置,代码测试用例中可以预先设置有测试目标标识,用于指定该代码测试用例对应的软件应用。根据待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合可以是查找预测用例库中对应的测试目标标识与待测应用标识相同的代码测试用例,并将查找到的代码测试用例进行聚合,从而获得测试用例集合。
步骤S104:在所述测试用例集合中选取所述目标软件应用对应的测试用例。
需要说明的是,在测试用例集合中选取目标软件应用对应的测试用例可以是对测试用例集合进行遍历,将遍历得到的代码测试用例作为目标软件应用对应的测试用例。其中,测试用例集合可以是有序集合,对测试用例集合进行遍历可以是根据集合索引顺序对测试用例集合进行遍历。
可以理解的是,在测试用例集合中选取目标软件应用对应的测试用例,则可以继续之后后续步骤,在一个测试用例运行完毕之后,还可以继续对测试用例集合的遍历,即在步骤S40之后,还可以返回所述步骤S104,继续对测试用例集合进行遍历。当然,根据实际需要,若某测试用例的测试脚本对应的脚本执行结果与测试用例对应的预测结果不一致,也可以停止对测试用例集合的遍历。
本实施例通过对接收到的测试指令进行解析,获得待测应用标识及代码访问路径;根据所述代码访问路径获取目标软件应用对应的待测试代码;根据所述待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合;在所述测试用例集合中选取所述目标软件应用对应的测试用例。由于是根据待测应用标识在预设用例库中查找对应的代码测试用例,构建测试用例集合,然后对测试用例集合进行遍历处理,使得测试人员可以同时设置多个不同的测试用例顺序执行,减少了测试人员的工作量,简化了测试人员的操作难度。
参考图4,图4为本发明一种软件应用测试方法第三实施例的流程示意图。
基于上述第二实施例,本实施例软件应用测试方法的所述步骤S104,包括:
步骤S1041:检测所述测试用例集合中各代码测试用例是否存在数据依赖关系。
需要说明的是,检测测试用例集合中各代码测试用例是否出存在数据依赖关系可以是检测测试用例集合中的各代码测试用例是否存在依赖于其他代码测试用例正常执行后产生的数据的才可执行的代码测试用例,若存在该类代码测试用例,则判定存在数据依赖关系,若不存在该类代码测试用例,则判定不存在数据依赖关系。
步骤S1042:若存在数据依赖关系,则获取所述测试用例集合中各代码测试用例对应的执行顺序。
需要说明的是,测试用例集合是由查找到的待测应用标识对应的代码测试用例聚合而成的,在构建时并未考虑到数据依赖关系,若测试用例集合中的各代码测试用例不存在数据依赖关系,则说明各代码测试用例相互独立,互不影响,因此,可以直接将测试用例集合作为排序用例集合进行遍历,但是,若测试用例集合中的各代码测试用例存在数据依赖关系,此时直接对测试用例集合进行遍历,则可能会出现部分测试用例因缺少依赖的数据无法正常执行,而为了避免此种现象,可以先获取各代码测试用例对应的执行顺序,其中,代码测试用例对应的执行顺序可以由测试人员根据数据依赖关系预先进行设置。
步骤S1043:根据所述执行顺序对所述测试用例集合中的代码测试用例进行排序,获得排序用例集合。
需要说明的是,根据执行顺序对测试用例集合中的代码测试用例进行排序,获得排序用例集合可以是根据该执行顺序对测试用例集合中的代码测试用例进行排序,获得排序结果,根据排序结果将测试用例集合中的代码测试用例顺序添加至一空白有序集合中,从而获得排序用例集合。
步骤S1044:对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例。
可以理解的是,在根据代码测试用例对应的执行顺序进行排序之后,再对排序用例集合进行遍历,则测试用例可以根据执行顺序依次运行,从而保证在待测试代码无异常时测试用例均可以顺利运行。
本实施例所述步骤S20之后,还包括:
步骤S30':若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例。
需要说明的是,若脚本执行结果与测试用例对应的预测结果一致,则说明测试用例对应的测试脚本运行后返回的结果与预测的结果一致,可以确定该测试用例测试的功能并无异常,可以继续执行后续的测试流程,则此时可以检测排序用例集合中是否存在未被遍历过的代码测试用例。
在实际使用中,检测排序用例集合中是否存在未被遍历过的代码测试用例可以是将当前遍历时获取的集合索引与排序用例集合中集合索引的最大值进行比较,若遍历时获取的集合索引小于集合索引的最大值,则判定排序用例集合中存在未被遍历过的代码测试用例,遍历时获取的集合索引等于集合索引的最大值,则判定判定排序用例集合中不存在未被遍历过的代码测试用例。
当然,在遍历获取代码测试用例时对遍历到的代码测试用例进行标记,则此时检测排序用例集合中是否存在未被遍历过的代码测试用例可以是检测排序用例集合中是否存在未被标记的代码测试用例,若存在未被标记的代码测试用例,则判定存在未被遍历过的代码测试用例,若不存在未被标记的代码测试用例,则判定不存在未被遍历过的代码测试用例。
可以理解的是,若排序用例集合中存在未被遍历过的代码测试用例,则表示用户指定的测试用例并未全部执行,因此,可以返回所述步骤S1044,继续对排序用例集合进行遍历。若排序用例集合中不存在未被遍历过的代码测试用例,则表示用户指定的测试用例均已执行,则此时可以执行以下步骤:
步骤S40':获取所述排序用例集合中各代码测试用例对应的有效执行代码。
需要说明的是,代码测试用例对应的有效执行代码可以是代码测试用例对应的测试脚本所对应的有效执行代码。
可以理解的是,若排序用例集合中不存在未被遍历过的代码测试用例,则表示用户指定的测试用例均已执行过,因此,可以获取排序用例集合中各代码测试用例对应的有效执行代码,以便于后续统计。
步骤S50':根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记。
需要说明的是,根据各代码测试用例对应的有效执行代码对待测试代码进行标记可以是将排序用例集合中各代码测试用例对应的有效执行代码与待测试代码进行比对,将待测试代码中与有效执行代码对应的部分标记为已执行。例如:将待测试代码中与有效执行代码对应的部分背景色修改为绿色。
在实际使用中,为了加快标记速度,提高执行效率,本实施例所述步骤S50,可以包括:
根据所述各代码测试用例对应的有效执行代码构建已测试代码;
将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
需要说明的是,根据各代码测试用例对应的有效执行代码构建已测试代码可以是将排序用例集合中各代码测试用例对应的有效执行代码进行聚合,从而获得已测试代码。
可以理解的是,先将各排序用例集合中各代码测试用例对应的有效执行代码聚合为已测试代码,再将已测试代码与待测试代码进行比较,获得未覆盖代码,然后根据未覆盖代码及已测试代码对待测试代码进行标记,则可以避免在比较时循环获取各代码测试用例对应的有效执行代码,可以减少循环过程中进行数据处理,可以加快整体标记过程的执行速度,提高执行效率。
在实际使用中,根据未覆盖代码及已测试代码对待测试代码进行标记可以是将待测试代码中未覆盖代码对应的部分的背景色修改为未覆盖代码对应的标记色,将待测试代码中已测试代码对应的部分的背景色修改为已覆盖代码对应的标记色。其中,标记色可以根据实际需要进行设置,例如:将已测试代码的标记色设定为绿色,将未覆盖代码对应的标记色设定为红色。
进一步的,在实际场景中,部分代码未被执行可能是因为代码异常导致的流程中断,从而使得该部分代码未被执行,为了避免此类代码对代码覆盖判断产生的干扰,本实施例所述将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码的步骤,可以包括:
获取所述排序用例集合中各代码测试用例对应的异常代码位置;
根据所述异常代码位置确定疑问代码;
将所述疑问代码及所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
相应的,所述根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记的步骤,包括:
根据所述疑问代码、所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
需要说明的是,异常代码位置可以是异常代码的行号等位置信息,获取代码测试用例对应的异常代码位置可以是根据代码测试用例的用例标识查找代码测试用例对应的bug报告,从bug报告中读取异常代码位置。疑问代码可以是因代码异常而未被执行的代码,根据异常代码位置确定疑问代码可以是获取代码测试用例在待测试代码中对应的代码测试段落,根据异常代码位置及代码测试段落确定疑问代码,例如:假设代码测试用例在待测试代码中对应的代码测试段落的行号为30-60,异常代码位置为第44行,则此时可以判定44-60行为疑问代码。
在实际使用中,将疑问代码及已测试代码与待测试代码进行比对,获得未覆盖代码可以是将疑问代码及已测试代码与待测试代码进行比对,将待测试代码中与疑问代码及已测试代码均不对应的部分作为未覆盖代码。根据疑问代码、未覆盖代码及已测试代码对待测试代码进行标记可以是将待测试代码中未覆盖代码对应的部分的背景色修改为未覆盖代码对应的标记色,将待测试代码中已测试代码对应的部分的背景色修改为已覆盖代码对应的标记色,将待测试代码中疑问代码对应的部分的背景色修改为疑问代码对应的标记色。其中,标记色可以根据实际需要进行设置,例如:将已测试代码的标记色设定为绿色,将未覆盖代码对应的标记色设定为红色,将疑问代码对应的标记色设定为灰色。
步骤S60':根据标记后的待测试代码生成测试质量报告,并将所述测试质量报告进行展示。
可以理解的是,根据标记后的待测试代码生成测试质量报告,并将测试质量报告进行展示,则测试人员可以根据测试质量报告确定目前设定的测试用例对应的测试脚本执行时对待测试代码的整体覆盖率,确定是否有待测试代码是否未被覆盖到,从而确定是否需要补充测试用例。
可以理解的是,若测试人员确定不需要补充测试用例,则此时待测试代码中未被覆盖到的代码可能是废弃代码或是无用代码,因此,在测试人员确定完毕之后,还可以将测试质量报告向开发人员进行展示,以便于开发人员确定是否需要对代码进行调整。
本实施例通过检测测试用例集合中各代码测试用例是否存在数据依赖关系,在存在数据依赖关系时,还会获取测试用例集合中各代码测试用例对应的执行顺序,根据执行顺序对测试用例集合中的代码测试用例进行排序,获得排序用例集合,然后再对排序用例集合进行遍历,从而避免了部分测试用例因缺少依赖的数据无法正常执行的现象,且在排序用例集合中不存在未被遍历过的代码测试用例时还会获取排序用例集合中各代码测试用例对应的有效执行代码,根据排序用例集合中各代码测试用例对应的有效执行代码对待测试代码进行标记,根据标记后的待测试代码生成测试质量报告,并将测试质量报告进行展示,使得测试人员可根据测试质量报告明确是否需要补充测试用例,开发人员可根据测试质量报告明确是否需要进行代码调整,进一步降低了测试人员及开发人员的工作难度。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有软件应用测试程序,所述软件应用测试程序被处理器执行时实现如上文所述的软件应用测试方法的步骤。
参照图5,图5为本发明软件应用测试装置第一实施例的结构框图。
如图5所示,本发明实施例提出的软件应用测试装置包括:
数据获取模块10,用于获取目标软件应用对应的待测试代码及测试用例;
脚本执行模块20,用于在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;
结果比对模块30,用于若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落;
异常定位模块40,用于将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
本实施例通过获取目标软件应用对应的待测试代码及测试用例;在断点测试模式下执行测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;若脚本执行结果与测试用例对应的预测结果不一致,则获取测试用例在待测试代码中对应的测试代码段落;根据有效执行代码及测试代码段落确定代码覆盖率,根据代码覆盖率确定异常代码位置。由于是在断点测试模式下执行测试脚本,可准确获得有效执行代码,在脚本执行结果与预测结果不一致时可根据比较得到的代码覆盖率快速定位异常代码位置,降低了开发人员定位异常代码位置的难度。
进一步的,所述数据获取模块10,还用于对接收到的测试指令进行解析,获得待测应用标识及代码访问路径;根据所述代码访问路径获取目标软件应用对应的待测试代码;根据所述待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合;在所述测试用例集合中选取所述目标软件应用对应的测试用例。
进一步的,所述数据获取模块10,还用于检测所述测试用例集合中各代码测试用例是否存在数据依赖关系;若存在数据依赖关系,则获取所述测试用例集合中各代码测试用例对应的执行顺序;根据所述执行顺序对所述测试用例集合中的代码测试用例进行排序,获得排序用例集合;对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例。
进一步的,所述结果比对模块30,还用于若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例;若存在未被遍历过的代码测试用例,则返回所述对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例的步骤。
进一步的,所述结果比对模块30,还用于若不存在未被遍历过的代码测试用例,则获取所述排序用例集合中各代码测试用例对应的有效执行代码;根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记;根据标记后的待测试代码生成测试质量报告,并将所述测试质量报告进行展示。
进一步的,所述结果比对模块30,还用于根据所述各代码测试用例对应的有效执行代码构建已测试代码;将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
进一步的,所述结果比对模块30,还用于获取所述排序用例集合中各代码测试用例对应的异常代码位置;根据所述异常代码位置确定疑问代码;将所述疑问代码及所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
所述结果比对模块30,还用于根据所述疑问代码、所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的软件应用测试方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种软件应用测试方法,其特征在于,所述软件应用测试方法包括以下步骤:
获取目标软件应用对应的待测试代码及测试用例;
在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;
若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落;
将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
2.如权利要求1所述的软件应用测试方法,其特征在于,所述获取目标软件应用对应的待测试代码及测试用例的步骤,包括:
对接收到的测试指令进行解析,获得待测应用标识及代码访问路径;
根据所述代码访问路径获取目标软件应用对应的待测试代码;
根据所述待测应用标识在预设用例库中查找对应的代码测试用例,获得测试用例集合;
在所述测试用例集合中选取所述目标软件应用对应的测试用例。
3.如权利要求2所述的软件应用测试方法,其特征在于,所述在所述测试用例集合中选取所述目标软件应用对应的测试用例的步骤,包括:
检测所述测试用例集合中各代码测试用例是否存在数据依赖关系;
若存在数据依赖关系,则获取所述测试用例集合中各代码测试用例对应的执行顺序;
根据所述执行顺序对所述测试用例集合中的代码测试用例进行排序,获得排序用例集合;
对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例。
4.如权利要求3所述的软件应用测试方法,其特征在于,所述在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码的步骤之后,还包括:
若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例;
若存在未被遍历过的代码测试用例,则返回所述对所述排序用例集合进行遍历,将遍历到的代码测试用例作为测试用例的步骤。
5.如权利要求4所述的软件应用测试方法,其特征在于,所述若所述脚本执行结果与所述测试用例对应的预测结果一致,则检测所述排序用例集合中是否存在未被遍历过的代码测试用例的步骤之后,还包括:
若不存在未被遍历过的代码测试用例,则获取所述排序用例集合中各代码测试用例对应的有效执行代码;
根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记;
根据标记后的待测试代码生成测试质量报告,并将所述测试质量报告进行展示。
6.如权利要求5所述的软件应用测试方法,其特征在于,所述根据所述各代码测试用例对应的有效执行代码对所述待测试代码进行标记的步骤,包括:
根据所述各代码测试用例对应的有效执行代码构建已测试代码;
将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
7.如权利要求6所述的软件应用测试方法,其特征在于,所述将所述已测试代码与所述待测试代码进行比对,获得未覆盖代码的步骤,包括:
获取所述排序用例集合中各代码测试用例对应的异常代码位置;
根据所述异常代码位置确定疑问代码;
将所述疑问代码及所述已测试代码与所述待测试代码进行比对,获得未覆盖代码;
相应的,所述根据所述未覆盖代码及所述已测试代码对所述待测试代码进行标记的步骤,包括:
根据所述疑问代码、所述未覆盖代码及所述已测试代码对所述待测试代码进行标记。
8.一种软件应用测试装置,其特征在于,所述软件应用测试装置包括以下模块:
数据获取模块,用于获取目标软件应用对应的待测试代码及测试用例;
脚本执行模块,用于在断点测试模式下执行所述测试用例对应的测试脚本,并在所述测试脚本执行完毕后获取脚本执行结果及有效执行代码;
结果比对模块,用于若所述脚本执行结果与所述测试用例对应的预测结果不一致,则获取所述测试用例在所述待测试代码中对应的测试代码段落;
异常定位模块,用于将所述有效执行代码与所述测试代码段落进行比较,获得代码覆盖率,并根据所述代码覆盖率定位异常代码位置。
9.一种软件应用测试设备,其特征在于,所述软件应用测试设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的软件应用测试程序,所述软件应用测试程序被处理器执行时实现如权利要求1-7中任一项所述的软件应用测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有软件应用测试程序,所述软件应用测试程序执行时实现如权利要求1-7中任一项所述的软件应用测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546060.XA CN114238110A (zh) | 2021-12-16 | 2021-12-16 | 软件应用测试方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111546060.XA CN114238110A (zh) | 2021-12-16 | 2021-12-16 | 软件应用测试方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238110A true CN114238110A (zh) | 2022-03-25 |
Family
ID=80757372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111546060.XA Pending CN114238110A (zh) | 2021-12-16 | 2021-12-16 | 软件应用测试方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238110A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667750A (zh) * | 2024-01-31 | 2024-03-08 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
-
2021
- 2021-12-16 CN CN202111546060.XA patent/CN114238110A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667750A (zh) * | 2024-01-31 | 2024-03-08 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
CN117667750B (zh) * | 2024-01-31 | 2024-05-14 | 北京纷扬科技有限责任公司 | 测试用例生成、测试方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
CN106294120B (zh) | 测试代码的方法、设备和计算机程序产品 | |
US20160292068A1 (en) | Code coverage rate determination method and system | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN109885480B (zh) | 一种基于调试桥的自动化界面兼容性测试方法及装置 | |
CN108509344B (zh) | 日切跑批测试方法、设备及可读存储介质 | |
CN110554962A (zh) | 回归测试的流程覆盖方法、服务器及计算机可读存储介质 | |
CN110069404B (zh) | 代码调试方法、装置、设备及介质 | |
CN112052169A (zh) | 测试管理方法、系统、设备以及计算机可读存储介质 | |
CN105183658A (zh) | 测试软件代码的方法及装置 | |
CN110928777B (zh) | 测试用例的处理方法、装置、设备及存储介质 | |
CN111897727A (zh) | 软件测试方法、装置、计算机设备及存储介质 | |
CN104021072A (zh) | 用于评估失效的软件程序的机器和方法 | |
CN112817866A (zh) | 录制回放方法、装置、系统、计算机设备以及存储介质 | |
CN110569194A (zh) | 接口测试方法、装置、电子设备及存储介质 | |
CN111639034A (zh) | 测试方法、装置、设备及计算机存储介质 | |
CN112069073A (zh) | 测试用例的管理方法、终端和存储介质 | |
CN112153375A (zh) | 基于视频信息的前端性能测试方法、装置、设备及介质 | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN114238110A (zh) | 软件应用测试方法、装置、设备及存储介质 | |
CN114676066A (zh) | 目标应用的安全测试方法及其装置、电子设备及存储介质 | |
CN111240974A (zh) | 日志输出方法、装置、电子设备及介质 | |
CN110543429A (zh) | 测试用例调试方法、装置及存储介质 | |
CN117493188A (zh) | 接口测试方法及装置、电子设备及存储介质 | |
CN111666200A (zh) | 一种pc软件冷启动耗时的测试方法及终端 |
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 |