CN114201408A - 回归测试方法、装置、计算机设备及存储介质 - Google Patents
回归测试方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114201408A CN114201408A CN202111555672.5A CN202111555672A CN114201408A CN 114201408 A CN114201408 A CN 114201408A CN 202111555672 A CN202111555672 A CN 202111555672A CN 114201408 A CN114201408 A CN 114201408A
- Authority
- CN
- China
- Prior art keywords
- code
- tested
- file
- test
- test case
- 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/3696—Methods or tools to render software testable
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
技术领域
本发明实施例涉及回归测试领域,尤其是一种回归测试方法、装置、计算机设备及存储介质。
背景技术
随着自动化测试技术的发展,越来越多业务功能复杂的大型聚合项目采用自动化测试流程,其中回归测试作为测试流程中的重要组成部分,在测试过程中占有较大的工作量比重,在每次版本迭代升级之前,均需进行回归测试,以保证上线产品的稳定性。
现有的回归测试方法大多是基于所有测试用例对目标系统进行整体的测试,这种测试方式对新开发的功能缺乏针对性,且难以评估测试用例对目标系统的测试是否充分,难以发现测试盲点,导致回归测试之后的产品稳定性不高,且缺乏针对性的测试方式导致测试效率降低,可见,现有回归测试技术存在测试效率低、测试不充分的技术问题。
发明内容
本发明实施例提供一种能够提高回归测试效率的回归测试方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种回归测试方法,包括:
获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;
对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;
提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;
向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;
根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
可选的,所述获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件包括:
接收系统回归测试请求,并对所述系统回归测试请求对应的请求者身份信息进行操作权限验证,得到验证结果,所述验证结果用于指示所述请求者身份信息是否具有待测试系统的代码获取权限;
若所述验证结果指示所述请求者身份信息具有待测试系统的代码获取权限,则通过预置的代码管理系统获取待测试系统的代码分支模型,所述代码分支模型包括历史版本分支和热修复分支;
基于所述代码分支模型,获取所述历史版本分支上的原始系统文件和所述热修复分支上的待测试系统文件。
可选的,所述对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码包括:
获取所述代码分支模型的快照流,所述快照流用于指示差异代码文件的索引;
根据所述待测试系统文件的提交时刻,从所述快照流中提取目标代码索引,并通过所述目标代码索引获取目标代码文件;
将所述目标代码文件与原始系统文件中对应的原始代码文件进行差异遍历,得到系统差异代码。
可选的,所述提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例包括:
通过预置的正则表达式提取所述系统差异代码中的接口信息,所述接口信息包括请求地址和请求类型;
根据所述请求地址和请求类型,从预置接口功能文档中提取所述接口信息对应的业务功能信息;
基于所述业务功能信息,从预置的系统测试用例中查找所述接口信息对应的关联测试用例。
可选的,所述向所述待测试系统注入探测代码,得到待探测系统包括:
根据所述待测试系统的开发语言类型,从预置插桩策略中获取对应的目标插桩策略;
通过所述目标插桩策略,生成代码探测指针,所述代码探测指针用于指示所述待测试系统的插桩位置;
在所述待测试系统的插桩位置插入所述目标插桩策略对应的探测代码,得到待探测系统。
可选的,所述对所述待探测系统进行关联测试用例执行,得到执行结果包括:
提取所述关联测试用例中的自动化测试用例和人工测试用例,并获取所述自动化测试用例的执行脚本;
在所述待探测系统中运行所述执行脚本,得到脚本执行结果,并将所述人工测试用例输出至目标测试终端;
接收所述人工测试用例的人工测试结果,并合并所述脚本执行结果和所述人工测试结果,得到所述关联测试用例的执行结果。
可选的,所述根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告包括:
接收所述待探测系统中探测代码回传的探测结果,所述探测结果用于指示所述探测代码是否成功执行;
根据所述探测结果计算所述执行结果的成功率,所述成功率用于指示所述关联测试用例的执行率;
根据所述成功率计算所述待测试系统的代码覆盖率,并按照所述代码覆盖率生成系统回归测试报告。
为解决上述技术问题,本发明实施例还提供一种回归测试装置,包括:
获取模块,用于获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;
比对模块,用于对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;
提取模块,用于提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;
探测模块,用于向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;
生成模块,用于根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
可选的,所述获取模块具体用于:
接收系统回归测试请求,并对所述系统回归测试请求对应的请求者身份信息进行操作权限验证,得到验证结果,所述验证结果用于指示所述请求者身份信息是否具有待测试系统的代码获取权限;
若所述验证结果指示所述请求者身份信息具有待测试系统的代码获取权限,则通过预置的代码管理系统获取待测试系统的代码分支模型,所述代码分支模型包括历史版本分支和热修复分支;
基于所述代码分支模型,获取所述历史版本分支上的原始系统文件和所述热修复分支上的待测试系统文件。
可选的,所述比对模块具体用于:
获取所述代码分支模型的快照流,所述快照流用于指示差异代码文件的索引;
根据所述待测试系统文件的提交时刻,从所述快照流中提取目标代码索引,并通过所述目标代码索引获取目标代码文件;
将所述目标代码文件与原始系统文件中对应的原始代码文件进行差异遍历,得到系统差异代码。
可选的,所述提取模块具体用于:
通过预置的正则表达式提取所述系统差异代码中的接口信息,所述接口信息包括请求地址和请求类型;
根据所述请求地址和请求类型,从预置接口功能文档中提取所述接口信息对应的业务功能信息;
基于所述业务功能信息,从预置的系统测试用例中查找所述接口信息对应的关联测试用例。
可选的,所述探测模块包括:
获取单元,用于根据所述待测试系统的开发语言类型,从预置插桩策略中获取对应的目标插桩策略;
生成单元,用于通过所述目标插桩策略,生成代码探测指针,所述代码探测指针用于指示所述待测试系统的插桩位置;
插入单元,用于在所述待测试系统的插桩位置插入所述目标插桩策略对应的探测代码,得到待探测系统。
可选的,所述探测模块还包括:
提取单元,用于提取所述关联测试用例中的自动化测试用例和人工测试用例,并获取所述自动化测试用例的执行脚本;
运行单元,用于在所述待探测系统中运行所述执行脚本,得到脚本执行结果,并将所述人工测试用例输出至目标测试终端;
合并单元,用于接收所述人工测试用例的人工测试结果,并合并所述脚本执行结果和所述人工测试结果,得到所述关联测试用例的执行结果。
可选的,所述生成模块具体用于:
接收所述待探测系统中探测代码回传的探测结果,所述探测结果用于指示所述探测代码是否成功执行;
根据所述探测结果计算所述执行结果的成功率,所述成功率用于指示所述关联测试用例的执行率;
根据所述成功率计算所述待测试系统的代码覆盖率,并按照所述代码覆盖率生成系统回归测试报告。
为解决上述技术问题本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述回归测试方法的步骤。
为解决上述技术问题本发明实施例还提供一种计算机存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述回归测试方法的步骤。
本发明实施例的有益效果是:通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过二者的代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并向待测试系统注入探测代码之后执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请一个具体实施例的回归测试方法的基本流程示意图;
图2为本申请中回归测试方法的一个实施例示意图;
图3为本申请中回归测试方法的另一个实施例示意图;
图4为本申请一个实施例的回归测试装置基本结构示意图;
图5为本申请一个实施例的计算机设备的基本结构框图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
请参阅图1,图1为本实施例回归测试方法的基本流程示意图。如图1所示,一种回归测试方法,包括:
S100、获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;
需要说明的是,代码分支模型是用于代码分支管理的工具,具有代码共享、追溯、回滚及维护等功能,在获取待测试系统的代码分支模型之前,还包括构建待测试系统的代码分支模型,其中,代码分支模型包括主(master)分支、功能开发(feature)分支、历史版本(release)分支和热修复(hotfix)分支,主分支为部署分支,用于指示已发布版本,功能开发分支用于指示分支功能版本,如某业务系统的登录功能,历史版本分支用于指示已发布的上一版本,热修复分支用于指示在已发布版本上打补丁的版本。在一种实施方式中,通过代码分支模型的主分支或历史版本分支获取原始系统文件,并通过功能开发分支或热修复分支获取待测试系统文件。需要说明的是,不同系统对应的代码分支模型可以不同,具体的代码分支模型的组成与结构取决于产品发布策略,具体不做限定。采用代码分支模型能够使团队合作的系统开发和测试具有清晰的开发结构,能够支持各种产品发布策略,并提高产品测试效率。
在一种实施方式中,代码分支模型还包括系统文件的文件变更列表,当系统文件通过代码分支模型提交或保存(暂存)时,生成包含该系统文件与原系统文件之间差异的差异文件,并将差异文件存入文件变更列表,再通过文件变更列表获取原始系统文件和待测试系统文件,以实现高效的代码共享、追溯、回滚及维护等功能。本实时方式通过代码分支模型能够高效地获取不同版本的系统文件,使系统的回归测试更高效和更灵活。
本实施方式中,原始系统文件为已发布的上一历史版本的系统文件,待测试系统文件为待发布版本的系统文件,在一种实施方式中,原始系统文件和待测试系统文件可以包括完整的系统文件,也可以包括业务功能的系统文件,即剔除系统基础框架的系统文件,由于系统基础框架在业务开发过程中通常不会发生改变,因此,仅获取包括业务功能的原始系统文件和待测试系统文件,能够减少计算量,从而提高回归测试效率。
具体的,步骤S100包括:接收系统回归测试请求,并对所述系统回归测试请求对应的请求者身份信息进行操作权限验证,得到验证结果,所述验证结果用于指示所述请求者身份信息是否具有待测试系统的代码获取权限;若所述验证结果指示所述请求者身份信息具有待测试系统的代码获取权限,则通过预置的代码管理系统获取待测试系统的代码分支模型,所述代码分支模型包括历史版本分支和热修复分支;基于所述代码分支模型,获取所述历史版本分支上的原始系统文件和所述热修复分支上的待测试系统文件。
需要说明的是,由于回归测试过程中涉及系统源码的读取和写入,为了提高源码的安全性,在接收到系统回归测试请求之后,对请求者身份信息进行操作权限验证,得到验证结果,当验证结果指示请求者身份信息具有待测试系统的代码获取权限时,方可进行后续的系统文件获取操作,以提高系统源码的安全性。本实施方式中,通过代码分支模型中的历史版本分支和热修复分支,获取原始系统文件和待测试系统文件,能够高效地获取对应版本的系统文件,避免回归测试过程中版本混乱问题的发生。
S200、对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;
需要说明的是,为了提高回归测试的效率,将原始系统文件和待测试系统文件进行代码比对,得到系统差异代码,系统差异代码用于指示待测试系统文件与原始系统文件之间的差异,在一种实施方式中,将原始系统文件与待测试系统文件进行文件对齐,得到待比较文件对,待比较文件对中的文件具体相同的文件结构和文件路径,再遍历待比较文件对中的每一行代码,从而得到系统差异代码,本实施方式能够精准地获得系统差异代码,进而提高系统回归测试的覆盖率。
在一种实施方式中,通过安全散列算法,对原始系统文件和待测试系统文件进行哈希值计算,得到原始系统文件对应的原始哈希值和待测试系统文件对应的目标哈希值,再将原始哈希值与目标哈希值进行比较,得到差异哈希值,并将差异哈希值对应的待测试系统文件设置为变更系统文件,并将变更系统文件与对应的原始系统文件进行代码比对,得到系统差异代码。本实施方式能够通过安全散列算法高效地获取差异文件,并确定差异代码,从而提高回归测试的效率。
S300、提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;
需要说明的是,业务系统功能的本质是数据的传输与接收,而数据的传输与接收通常是基于接口实现,接口用于实现模块与模块之间的连接,其中,接口信息包括外部接口和内部接口,因此,通过接口信息获取对应的关联测试用例是覆盖率最高的一种测试方式,能够覆盖绝大部分的测试场景,减少漏测情况的发生。在一种实施方式中,关联测试用例为预置测试用例中的一部分,预置测试用例用于指示待测试系统的所有测试用例,预置测试用例为基于接口设计逻辑的测试用例,包括但不限于接口参数的组合、接口请求成功或失败、接口请求超时、接口请求异常等,基于接口的测试用例设计能够提高回归测试的覆盖率,并使得回归测试的测试逻辑更清晰。
在一种实施方式中,在获取待测试系统的代码分支模型之前,构建预置测试用例与接口信息之间的关联关系,具体的是,分别对预置测试用例和接口信息进行标识符生成,得到用例标识符和接口标识符,并将用例标识符与对应的接口标识符进行关联关系绑定,以使得提取到系统差异代码中的接口信息之后,通过接口信息对应的标识符获取用例标识符,再通过用例标识符获取对应的关联测试用例,本实施方式能够通过建立测试用例与接口之间的关联关系,提高回归测试的效率。
具体的,步骤S300包括:通过预置的正则表达式提取所述系统差异代码中的接口信息,所述接口信息包括请求地址和请求类型;根据所述请求地址和请求类型,从预置接口功能文档中提取所述接口信息对应的业务功能信息;基于所述业务功能信息,从预置的系统测试用例中查找所述接口信息对应的关联测试用例。
需要说明的是,预置接口功能文档用于记录接口信息中各接口的业务功能信息,每个业务功能对应至少应该关联测试用例,通过业务功能标识符与测试用例标识符之间的关联关系,从预置的系统测试用例中查找接口信息对应的关联测试用例,本实施方式通过预先建立的“业务功能-接口-测试用例”三者之间的关联关系,能够高效地获得接口信息对应的关联测试用例。
S400、向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;
需要说明的是,为了计算待测试系统的代码覆盖率,向待测试系统注入探测代码,从而得到待探测系统,再通过对待探测系统进行关联测试用例执行,得到执行结果,执行结果用于指示关联测试用例执行过程中探测代码对应的关联测试用例与代码模块是否成功执行。在一种实施方式中,按照预置的探针插入策略,向待测试系统插入探测代码,得到待探测系统,例如将探测代码插入至接口的回调函数中能够探测接口是否执行。通过探测代码的注入,能够量化回归测试过程中的代码覆盖率,从而衡量回归测试的质量。
需要说明的是,探测代码具有以下特点:能够记录代码执行记录、能够识别不同的探针代码、具有线程安全性、对待测试系统功能无影响以及具有最小的运行开销。基于上述特点,探测代码采用字节码的形式插入待测试系统,并通过探测代码采集关联测试用例执行过程中的代码执行记录,从而得到执行结果。本实施方式能够通过高效的探测代码探测待测试系统的关联测试用例执行情况,从而有效地衡量关联测试用例的执行结果。
具体的,步骤S400包括:提取所述关联测试用例中的自动化测试用例和人工测试用例,并获取所述自动化测试用例的执行脚本;在所述待探测系统中运行所述执行脚本,得到脚本执行结果,并将所述人工测试用例输出至目标测试终端;接收所述人工测试用例的人工测试结果,并合并所述脚本执行结果和所述人工测试结果,得到所述关联测试用例的执行结果。
需要说明的是,由于业务功能的测试需要依赖于自动化测试程序和人工测试,因此,关联测试用例中包括自动化测试用例和人工测试用例,为了提高关联测试用例的执行效率,自动执行自动化测试用例对应的执行脚本,从而得到脚本执行结果。对于人工测试用例,则将关联测试用例中的人工测试用例打包,并输出至目标测试终端,以使得目标测试终端接收人工测试用例之后,按照人工测试用例进行人工测试,并将人工测试结果上传,当接收到人工测试结果之后,合并脚本执行结果和人工测试结果,得到关联测试用例的执行结果。本实施方式能够灵活地结合自动化测试脚本和人工测试,是测试用例的执行效率提高。
S500、根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
在一种实施方式中,得到执行结果之后,通过代码覆盖率计数器计算待测试系统的代码覆盖率,由于所有类文件携带调试(debug)信息编译,使得每行代码的覆盖率可计算,即当至少一个指令(探测代码)被指定到源码行且已执行时,该源码行被认为已执行,通过探测代码的执行率计算待测试系统的代码覆盖率,能够精准地识别每一行代码是否被执行,得到精确的代码覆盖率,从而生成具有高度指导意义的回归测试报告。
在一种实施方式中,由于当类中的至少一个算法被执行,则表示该类已被执行,基于此,通过注入在类中的探测代码,判断类中各算法是否被执行,并根据算法执行情况计算待测试系统的代码覆盖率。本实施方式能够快速地确定代码的执行情况,进而提高回归测试效率。
需要说明的是,得到代码覆盖率之后,根据执行结果输出已执行测试用例和未执行测试用例,并按照已执行测试用例和未执行测试用例生成系统回归测试报告。之后,还包括将待探测系统的探测代码删除,以将待探测系统还原至待测试系统。
具体的,步骤S500包括:接收所述待探测系统中探测代码回传的探测结果,所述探测结果用于指示所述探测代码是否成功执行;根据所述探测结果计算所述执行结果的成功率,所述成功率用于指示所述关联测试用例的执行率;根据所述成功率计算所述待测试系统的代码覆盖率,并按照所述代码覆盖率生成系统回归测试报告。
本实施方式中,接收待探测系统中探测代码的探测结果,并通过探测结果判断探测代码是否成功执行,并根据探测结果计算执行结果的成功率,即关联测试用例的执行率,最后根据成功率和探测结果计算待测试系统的代码覆盖率,代码覆盖率用于指示关联测试用例的代码覆盖率,并将代码覆盖率对应的探测结果、执行结果、成功率输出至系统回归测试报告。本实施方式能够精确地将回归测试结果量化,并生成直观的测试报告,为后续的测试布局提供数据参考。
上述实施方式通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过二者的代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并向待测试系统注入探测代码之后执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
请参阅图2,本发明实施例中回归测试方法的一个实施例包括:
如图2所示,S200包括:
S210、获取所述代码分支模型的快照流,所述快照流用于指示差异代码文件的索引;
本实施方式中,在原始系统文件中的任一目标文件发生改变时,代码分支模型生成该目标文件对应的快照,并保存该快照的索引至快照流,在对原始系统文件和待测试系统文件进行代码比对时,通过代码分支模型的快照流,即能够快速地确定存在修改操作的目标代码文件,即差异文件,进而提高系统差异代码的获取效率。需要说明的是,快照是数据存储在某一时刻的状态记录,本实施方式通过快照流记录差异代码文件的索引,能够减少内存负担的同时提高文件获取效率。
S220、根据所述待测试系统文件的提交时刻,从所述快照流中提取目标代码索引,并通过所述目标代码索引获取目标代码文件,所述目标代码文件为所述待测试系统文件相对于所述原始系统文件存在修改操作的代码文件;
本实施方式中,由于快照流中存储所有版本的差异代码文件,因此需要从差异代码文件中筛选待测试系统文件的差异代码文件,具体的,根据待测试系统文件的提交时刻和原始系统文件的提交时刻,从快照流中提取在二者提交时刻之间的目标代码索引,并通过目标代码索引获取目标代码文件,即待测试系统文件相对于所述原始系统文件存在修改操作的代码文件。
S230、将所述目标代码文件与原始系统文件中对应的原始代码文件进行差异遍历,得到系统差异代码。
本实施方式中,通过分别对目标代码文件和原始系统文件中对应的原始代码文件进行字符遍历,得到系统差异代码,其中,原始代码文件用于指示与目标代码文件的文件路径相同的对应文件,本实施方式中,将原始代码文件中的每行代码与目标代码文件对应行代码进行比对,若存在任一字符不相同,则确定对应行代码存在差异,得到系统差异代码,系统差异代码用于指示差异代码的所在文件和所在行信息。本实施方式通过系统差异代码提高后续回归测试效率。
上述实施方式通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过代码分支模型中的快照流快速地获取差异代码文件,并通过对差异代码文件进行代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并向待测试系统注入探测代码之后执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
请参阅图3,本发明实施例中回归测试方法的另一个实施例包括:
如图3所示,S400包括:
S410、根据所述待测试系统的开发语言类型,从预置插桩策略中获取对应的目标插桩策略;
本实施方式中,由于不同的开发语言具有不同的语言特点,因此,不同的开发语言类型对应不同的插桩策略,预置插桩策略预先建立好不同开发语言类型对应的插桩策略,根据待测试系统的开发语言类型,直接从预置插桩策略中获取对应的目标插桩策略,如JAVA和JAVASCRIPT的插桩策略(探测代码)不同。本实施方式能够对基于不同开发语言的系统进行探测代码注入,使得回归测试适用于不同的开发语言。
S420、通过所述目标插桩策略,生成代码探测指针,所述代码探测指针用于指示所述待测试系统的插桩位置;
本实施方式中,根据目标插桩策略生成代码探测指针,代码探测指针用于指示待测试系统的插桩位置,如接口的回调函数结尾处、类的传入参数处等,具体不做限定,插桩位置包括插桩文件和插桩行号,探测指针能够精确地进行探测代码插入指引,避免探测代码的错误注入导致系统运行错误。
S430、在所述待测试系统的插桩位置插入所述目标插桩策略对应的探测代码,得到待探测系统。
本实施方式中,根据插桩位置中的插桩文件和插桩行号,将目标插桩策略对应的探测代码插入待测试系统对应的文件中,得到待探测系统,本实施方式能够高效地对待测试系统进行探测代码注入,从而提高回归测试的效率。
上述实施方式通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过二者的代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并通过目标插桩策略生成代码探测指针之后,按照代码探测指针指示的插桩位置向待测试系统注入探测代码,并执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
为解决上述技术问题,本发明实施例还提供回归测试装置。具体请参阅图4,图4为本实施例回归测试装置基本结构示意图。
如图4所示,一种回归测试装置,包括:获取模块1100、比对模块1200、提取模块1300、探测模块1400、生成模块1500,其中,获取模块1100用于获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;比对模块1200用于对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;提取模块1300用于提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;探测模块1400用于向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;生成模块1500用于根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
回归测试装置通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过二者的代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并向待测试系统注入探测代码之后执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
在一些实施方式中,所述获取模块具体用于:接收系统回归测试请求,并对所述系统回归测试请求对应的请求者身份信息进行操作权限验证,得到验证结果,所述验证结果用于指示所述请求者身份信息是否具有待测试系统的代码获取权限;若所述验证结果指示所述请求者身份信息具有待测试系统的代码获取权限,则通过预置的代码管理系统获取待测试系统的代码分支模型,所述代码分支模型包括历史版本分支和热修复分支;基于所述代码分支模型,获取所述历史版本分支上的原始系统文件和所述热修复分支上的待测试系统文件。
在一些实施方式中,所述比对模块具体用于:获取所述代码分支模型的快照流,所述快照流用于指示差异代码文件的索引;根据所述待测试系统文件的提交时刻,从所述快照流中提取目标代码索引,并通过所述目标代码索引获取目标代码文件,所述目标代码文件为所述待测试系统文件相对于所述原始系统文件存在修改操作的代码文件;将所述目标代码文件与原始系统文件中对应的原始代码文件进行差异遍历,得到系统差异代码。
在一些实施方式中,所述提取模块具体用于:通过预置的正则表达式提取所述系统差异代码中的接口信息,所述接口信息包括请求地址和请求类型;根据所述请求地址和请求类型,从预置接口功能文档中提取所述接口信息对应的业务功能信息;基于所述业务功能信息,从预置的系统测试用例中查找所述接口信息对应的关联测试用例。
在一些实施方式中,所述探测模块包括:获取单元,用于根据所述待测试系统的开发语言类型,从预置插桩策略中获取对应的目标插桩策略;生成单元,用于通过所述目标插桩策略,生成代码探测指针,所述代码探测指针用于指示所述待测试系统的插桩位置;插入单元,用于在所述待测试系统的插桩位置插入所述目标插桩策略对应的探测代码,得到待探测系统。
在一些实施方式中,所述探测模块还包括:提取单元,用于提取所述关联测试用例中的自动化测试用例和人工测试用例,并获取所述自动化测试用例的执行脚本;运行单元,用于在所述待探测系统中运行所述执行脚本,得到脚本执行结果,并将所述人工测试用例输出至目标测试终端;合并单元,用于接收所述人工测试用例的人工测试结果,并合并所述脚本执行结果和所述人工测试结果,得到所述关联测试用例的执行结果。
在一些实施方式中,所述生成模块具体用于:接收所述待探测系统中探测代码回传的探测结果,所述探测结果用于指示所述探测代码是否成功执行;根据所述探测结果计算所述执行结果的成功率,所述成功率用于指示所述关联测试用例的执行率;根据所述成功率计算所述待测试系统的代码覆盖率,并按照所述代码覆盖率生成系统回归测试报告。
为解决上述技术问题,本发明实施例还提供计算机设备。具体请参阅图5,图5为本实施例计算机设备基本结构框图。
如图5所示,计算机设备的内部结构示意图。该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种回归测试方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种回归测试方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图4中获取模块1100、比对模块1200、提取模块1300、探测模块1400和生成模块1500的具体功能,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有回归测试装置中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
计算机设备通过代码分支模型获取相应版本的原始系统文件和待测试系统文件,再通过二者的代码比对,确定新开发版本与原始版本的系统差异代码,而为了对新开发版本进行有针对性的测试,基于系统差异代码中的接口信息获取关联测试用例,并向待测试系统注入探测代码之后执行关联测试用例,使得通过执行结果能够量化计算待测试系统的代码覆盖率,使回归测试的充分程度能够被衡量,且直观地反映在系统回归测试报告中,能够提高回归测试效率,并能够量化评估回归测试的充分程度。
本发明还提供一种计算机存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例回归测试方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
本发明还提供一种计算机存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例回归测试方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
本技术领域技术人员可以理解,本申请中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本申请中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本申请中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种回归测试方法,其特征在于,包括:
获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;
对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;
提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;
向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;
根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
2.根据权利要求1所述的回归测试方法,其特征在于,所述获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件包括:
接收系统回归测试请求,并对所述系统回归测试请求对应的请求者身份信息进行操作权限验证,得到验证结果,所述验证结果用于指示所述请求者身份信息是否具有待测试系统的代码获取权限;
若所述验证结果指示所述请求者身份信息具有待测试系统的代码获取权限,则通过预置的代码管理系统获取待测试系统的代码分支模型,所述代码分支模型包括历史版本分支和热修复分支;
基于所述代码分支模型,获取所述历史版本分支上的原始系统文件和所述热修复分支上的待测试系统文件。
3.根据权利要求1所述的回归测试方法,其特征在于,所述对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码包括:
获取所述代码分支模型的快照流,所述快照流用于指示差异代码文件的索引;
根据所述待测试系统文件的提交时刻,从所述快照流中提取目标代码索引,并通过所述目标代码索引获取目标代码文件;
将所述目标代码文件与原始系统文件中对应的原始代码文件进行差异遍历,得到系统差异代码。
4.根据权利要求1所述的回归测试方法,其特征在于,所述提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例包括:
通过预置的正则表达式提取所述系统差异代码中的接口信息,所述接口信息包括请求地址和请求类型;
根据所述请求地址和请求类型,从预置接口功能文档中提取所述接口信息对应的业务功能信息;
基于所述业务功能信息,从预置的系统测试用例中查找所述接口信息对应的关联测试用例。
5.根据权利要求1所述的回归测试方法,其特征在于,所述向所述待测试系统注入探测代码,得到待探测系统包括:
根据所述待测试系统的开发语言类型,从预置插桩策略中获取对应的目标插桩策略;
通过所述目标插桩策略,生成代码探测指针,所述代码探测指针用于指示所述待测试系统的插桩位置;
在所述待测试系统的插桩位置插入所述目标插桩策略对应的探测代码,得到待探测系统。
6.根据权利要求1所述的回归测试方法,其特征在于,所述对所述待探测系统进行关联测试用例执行,得到执行结果包括:
提取所述关联测试用例中的自动化测试用例和人工测试用例,并获取所述自动化测试用例的执行脚本;
在所述待探测系统中运行所述执行脚本,得到脚本执行结果,并将所述人工测试用例输出至目标测试终端;
接收所述人工测试用例的人工测试结果,并合并所述脚本执行结果和所述人工测试结果,得到所述关联测试用例的执行结果。
7.根据权利要求1-6中任一项所述的回归测试方法,其特征在于,所述根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告包括:
接收所述待探测系统中探测代码回传的探测结果,所述探测结果用于指示所述探测代码是否成功执行;
根据所述探测结果计算所述执行结果的成功率,所述成功率用于指示所述关联测试用例的执行率;
根据所述成功率计算所述待测试系统的代码覆盖率,并按照所述代码覆盖率生成系统回归测试报告。
8.一种回归测试装置,其特征在于,包括:
获取模块,用于获取待测试系统的代码分支模型,并通过所述代码分支模型获取原始系统文件和待测试系统文件;
比对模块,用于对所述原始系统文件和所述待测试系统文件进行代码比对,得到系统差异代码;
提取模块,用于提取所述系统差异代码中的接口信息,并获取所述接口信息对应的关联测试用例;
探测模块,用于向所述待测试系统注入探测代码,得到待探测系统,并通过所述待探测系统执行所述关联测试用例,得到执行结果;
生成模块,用于根据所述执行结果计算所述待测试系统的代码覆盖率,并生成系统回归测试报告。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述回归测试方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述回归测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555672.5A CN114201408A (zh) | 2021-12-17 | 2021-12-17 | 回归测试方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555672.5A CN114201408A (zh) | 2021-12-17 | 2021-12-17 | 回归测试方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201408A true CN114201408A (zh) | 2022-03-18 |
Family
ID=80655117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111555672.5A Pending CN114201408A (zh) | 2021-12-17 | 2021-12-17 | 回归测试方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201408A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203064A (zh) * | 2022-09-19 | 2022-10-18 | 北京探境科技有限公司 | 代码检测方法、装置、计算机设备及可读存储介质 |
US20220391200A1 (en) * | 2021-06-05 | 2022-12-08 | Jpmorgan Chase Bank, N.A. | Method and apparatus for implementing an application release management module |
CN115587048A (zh) * | 2022-12-07 | 2023-01-10 | 平安银行股份有限公司 | 回归测试方法、终端设备及计算机可读存储介质 |
CN116541308A (zh) * | 2023-07-03 | 2023-08-04 | 芯耀辉科技有限公司 | 一种回归测试方法及系统 |
-
2021
- 2021-12-17 CN CN202111555672.5A patent/CN114201408A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220391200A1 (en) * | 2021-06-05 | 2022-12-08 | Jpmorgan Chase Bank, N.A. | Method and apparatus for implementing an application release management module |
US11733998B2 (en) * | 2021-06-05 | 2023-08-22 | Jpmorgan Chase Bank, N.A. | Method and apparatus for implementing an application release management module |
CN115203064A (zh) * | 2022-09-19 | 2022-10-18 | 北京探境科技有限公司 | 代码检测方法、装置、计算机设备及可读存储介质 |
CN115587048A (zh) * | 2022-12-07 | 2023-01-10 | 平安银行股份有限公司 | 回归测试方法、终端设备及计算机可读存储介质 |
CN116541308A (zh) * | 2023-07-03 | 2023-08-04 | 芯耀辉科技有限公司 | 一种回归测试方法及系统 |
CN116541308B (zh) * | 2023-07-03 | 2023-10-24 | 芯耀辉科技有限公司 | 一种回归测试方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474488B (zh) | 接口测试方法、装置及计算机设备 | |
CN114201408A (zh) | 回归测试方法、装置、计算机设备及存储介质 | |
US7475387B2 (en) | Problem determination using system run-time behavior analysis | |
US8782609B2 (en) | Test failure bucketing | |
US7882495B2 (en) | Bounded program failure analysis and correction | |
US20150169431A1 (en) | Process for displaying test coverage data during code reviews | |
US10657028B2 (en) | Method for replicating production behaviours in a development environment | |
US20200117587A1 (en) | Log File Analysis | |
US10528456B2 (en) | Determining idle testing periods | |
CN108459850B (zh) | 生成测试脚本的方法、装置及系统 | |
CN112199277B (zh) | 一种基于浏览器的缺陷复现方法、装置、设备及存储介质 | |
CN112241360A (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN112241370B (zh) | 一种api接口类的校验方法、系统及装置 | |
CN109324961B (zh) | 系统自动测试方法、装置、计算机设备及存储介质 | |
JP2015011372A (ja) | デバッグ支援システム、方法、プログラム及び記録媒体 | |
CN112650688A (zh) | 自动化回归测试方法、关联设备以及计算机程序产品 | |
US8327189B1 (en) | Diagnosing an incident on a computer system using a diagnostics analyzer database | |
US9563541B2 (en) | Software defect detection identifying location of diverging paths | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
CN116737736A (zh) | 数据一致性检查及修复方法、装置、设备、介质及产品 | |
CN113282496B (zh) | 接口自动测试方法、装置、设备及存储介质 | |
CN108345541A (zh) | 一种程序检测方法及系统 | |
JP2023000907A (ja) | ソースコード修正支援装置及びソースコード修正支援方法 | |
CN110908918A (zh) | 针对多个相互依赖的node.js模块的单元测试方法及装置 |
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 |