CN114116488A - 测试覆盖率信息获取方法、装置、设备及存储介质 - Google Patents

测试覆盖率信息获取方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114116488A
CN114116488A CN202111431142.XA CN202111431142A CN114116488A CN 114116488 A CN114116488 A CN 114116488A CN 202111431142 A CN202111431142 A CN 202111431142A CN 114116488 A CN114116488 A CN 114116488A
Authority
CN
China
Prior art keywords
code
coverage rate
test
information
rate information
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
Application number
CN202111431142.XA
Other languages
English (en)
Inventor
卢裕如
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Securities Co Ltd
Original Assignee
Ping An Securities Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Securities Co Ltd filed Critical Ping An Securities Co Ltd
Priority to CN202111431142.XA priority Critical patent/CN114116488A/zh
Publication of CN114116488A publication Critical patent/CN114116488A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

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

本发明涉及测试工具领域,揭露一种测试覆盖率信息获取方法,包括:利用程序插桩将插桩代码添加至待测试版本代码中,生成测试覆盖率项目;接收到UI服务启动命令时,启动测试覆盖率项目;采集测试覆盖率项目对应的整体代码的执行路径,根据执行路径确定整体覆盖率信息;获取基线版本代码,根据基线版本代码确定代码增量,并根据整体覆盖率信息确定代码增量覆盖率信息;将整体覆盖率信息及代码增量覆盖率信息导入预设的报告模板,生成待测试版本代码覆盖率信息报告。此外本发明还涉及区块链技术,覆盖率信息报告可存储于区块链的节点。本发明还提出一种测试覆盖率信息获取装置、电子设备以及存储介质。本发明可以提高业务测试的完整性及有效性。

Description

测试覆盖率信息获取方法、装置、设备及存储介质
技术领域
本发明涉及测试工具领域,尤其涉及一种测试覆盖率信息获取方法、装置、电子设备及计算机可读存储介质。
背景技术
前端项目中,需要测试人员通过测试案例对业务进行全面系统性的测试,即需要测试案例尽可能的覆盖全部的代码,才能保证前端项目开发的完整性但目前测试案例覆盖率信息解决方案主要是处理服务端Java代码,随着胖客户端时代的到来,前端的功能不仅仅处理绘制功能,同时还兼具了部分逻辑运算功能,所以前端js的代码覆盖率信息同样重要。
目前的测试覆盖率方法主要是利用在待测试版本代码添加测试代码,再收集测试代码的测试结果,但这种方法需要编写额外的测试代码,无法保证测试代码与待测试版本代码的兼容性,且测试结果不具有全面性和准确性。
发明内容
本发明提供一种测试覆盖率信息获取方法、装置及计算机可读存储介质,其主要目的在于解决业务测试不全面且准确性低的问题。
为实现上述目的,本发明提供的一种测试覆盖率信息获取方法,包括:
利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
接收到UI服务启动命令时,启动所述测试覆盖率项目;
采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
可选地,所述利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,包括:
将待插桩源代码进行宏展开;
根据插桩需求,在所述待测试版本代码中确定插桩切入点,并为所述插桩切入点编写插桩语法规则;
利用语法分析器将所述插桩语法规则转化为插桩脚本,运行所述插桩脚本,将所述宏展开后的待插桩源代码插入所述插桩切入点。
可选地,所述采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,包括:
获取所述测试覆盖率项目所对应的项目配置文件,根据所述项目配置文件确定所述测试覆盖率项目所对应的各待测组件;
获取所述各待测组件的响应参数;
根据所述响应参数确定所述各待测组件的响应顺序,根据所述响应顺序确定所述各待测组件对应的整体代码的执行路径。
可选地,所述根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息,包括:
根据所述执行路径确定所述每个执行路径所触发的界面或所述各待测组件,得到每个执行路径的测试执行事件;
将所述每个执行路径的测试执行事件绘制为有向图;
将所述每个执行路径的测试执行事件及所述有向图组装集合,得到测试执行事件集;
根据所述测试执行事件集计算所述测试覆盖率项目的整体代码覆盖率;
整合所述执行路径及整体代码覆盖率,得到整体代码覆盖率信息。
可选地,所述根据所述测试执行事件集计算所述测试覆盖率项目的整体代码覆盖率,包括:
利用如下如下公式计算所述测试覆盖率项目的整体代码覆盖率:
Figure BDA0003380173210000021
其中,Coveragek为整体代码覆盖率,pagek表示第k条执行路径的测试执行事件,
Figure BDA0003380173210000022
为为测试执行事件集。
可选地,所述获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息,包括:
获取所述测试覆盖率项目对应的基线版本代码,将所述基线版本代码与所述待测试版本代码进行对比,得到相对于所述基线版本代码的代码增量;
根据所述整体代码覆盖率信息及所述代码增量将所述代码增量的变更代码行映射至抽象语法树的行对象;
遍历所述抽象语法树的行对象,从所述抽象语法树的行对象中确定所述代码增量的特征信息总数和代码增量的被覆盖特征信息数量;
计算所述被覆盖特征信息数量占所述特征信息总数的比例,得到代码增量覆盖率信息。
可选地,所述获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告,包括:
利用UI页面的公共函数定时收集所述整体代码覆盖率信息及所述代码增量覆盖率信息;
获取预设的报告模板,并将所述整体代码覆盖率信息及所述代码增量覆盖率信息转化为所述报告模板使用的数据格式,得到报告模板数据。
将所述报告模板数据导入所述报告模板,得到待测试版本代码覆盖率信息报告。
为了解决上述问题,本发明还提供一种测试覆盖率信息获取装置,所述装置包括:
程序插桩模块,用于利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
项目启动模块,用于接收到UI服务启动命令时,启动所述测试覆盖率项目;
整体代码覆盖率信息获取模块,用于采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
代码增量覆盖率信息获取模块,用于获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
覆盖率信息报告生成模块,用于获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的测试覆盖率信息获取方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的测试覆盖率信息获取方法。
本发明实施例通过程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目,保证了待插桩的待测试版本源代码的准确性及针对性;接收到UI服务启动命令时,启动所述测试覆盖率项目,采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息,同时获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息,保证了测试覆盖率信息获取的完整性;将整体代码覆盖率信息及所述代码增量覆盖率信息导入预设的报告模板,生成待测试版本代码覆盖率信息报告,能够直观地向测试人员展示测试案例的执行路径及测试覆盖率,提高测试效率。因此本发明提出的测试覆盖率信息获取方法、装置、电子设备及计算机可读存储介质,可以解决业务测试不全面且准确性低的问题。
附图说明
图1为本发明一实施例提供的测试覆盖率信息获取方法的流程示意图;
图2为本发明一实施例提供的程序插桩的流程示意图;
图3为本发明一实施例提供的获取代码增量覆盖率信息的流程示意图;
图4为本发明一实施例提供的测试覆盖率信息获取装置的功能模块图;
图5为本发明一实施例提供的实现所述测试覆盖率信息获取方法的电子设备的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种测试覆盖率信息获取方法。所述测试覆盖率信息获取方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述测试覆盖率信息获取方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(ContentDelivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
参照图1所示,为本发明一实施例提供的测试覆盖率信息获取方法的流程示意图。在本实施例中,所述测试覆盖率信息获取方法包括:
S1、利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
其中,所述插桩代码是指是在保证所述待测试版本代码逻辑完整性的基础上在程序上插入一些进行信息采集的代码段,所述代码段可以是采集测试覆盖信息的函数调用。
进一步地,所述插桩方法包括但不限于jacoco等,通常是利用插入布尔型数组来起到插桩代码的标记作用。
详细地,参阅图2所示,所述利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,包括:
S11、将待插桩源代码进行宏展开;
S12、根据插桩需求,在所述待测试版本代码中确定插桩切入点,并为所述插桩切入点编写插桩语法规则;
S13、利用语法分析器将所述插桩语法规则转化为插桩脚本,运行所述插桩脚本,将所述宏展开后的待插桩源代码插入所述插桩切入点。
本发明实施例中,通过对待插桩源代码进行宏展开并根据实际插桩需求明确插桩切入点,再为所述插桩切入点编写插桩语法规则,对所述待插桩源代码进行完整的语法分析并在所述语法分析的基础上进行代码的插桩,保证了待测试版本代码源代码的准确性及针对性;同时利用语法分析器将所述插桩语法规则转化为插桩脚本,可以在短时间内实现代码的插桩,提高后续获取测试覆盖率信息的效率。
S2、接收到UI服务启动命令时,启动所述测试覆盖率项目;
本发明实施例中,所述UI服务启动命令是指测试人员获取到所述待测试版本代码后,直接通过node.js的程序运行环境启动UI服务。
当项目开发者获取到测试覆盖率项目时,通过执行命令直接将UI服务启动,服务器当接收到所述UI服务启动命令时,将同时启动所述测试覆盖率信息项目。
S3、采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
本发明实施例中,所述整体代码覆盖率信息为测试覆盖率项目的整体代码进行测试时,执行测试路径的代码与整体代码之间的比例及执行测试案例的待测试版本代码。
详细地,所述采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,包括:
获取所述测试覆盖率项目所对应的项目配置文件,根据所述项目配置文件确定所述测试覆盖率项目所对应的各待测组件;
获取所述各待测组件的响应参数;
根据所述响应参数确定所述各待测组件的响应顺序,根据所述响应顺序确定所述各待测组件对应的整体代码的执行路径。
其中,所述响应参数包括响应时间及响应方式。
本发明实施例中,所述项目配置文件可以是nginx配置文件,通过所述项目配置文件能将所述测试覆盖率信息项目所依赖的项目组件压缩为组件代码,因此,通过项目配置文件能够确定所述测试覆盖率项目所对应的各待测组件。
进一步地,所述根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息,包括:
根据所述执行路径确定所述每个执行路径所触发的界面或所述各待测组件,得到每个执行路径的测试执行事件;
将所述每个执行路径的测试执行事件绘制为有向图;
将所述每个执行路径的测试执行事件及所述有向图组装集合,得到测试执行事件集;
根据所述测试执行事件集计算所述测试覆盖率项目的整体代码覆盖率;
整合所述执行路径及整体代码覆盖率,得到整体代码覆盖率信息。
具体地,本发明实施例利用如下公式计算所述测试覆盖率项目的整体代码覆盖率:
Figure BDA0003380173210000071
其中,Coveragek为整体代码覆盖率,pagek表示第k条执行路径的测试执行事件,
Figure BDA0003380173210000072
为测试执行事件集。
本发明实施例中,通过所述整体代码覆盖率信息能够得到在版本代码测试时获取到哪些代码执行了测试,测试人员则可通过所述整体代码覆盖率信息对测试案例进行改进,同时发现测试案例设计的测试盲点,能够提高测试人员的测试案例设计能力,增长测试案例设计经验。
S4、获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
本发明实施例中,所述基线版本代码为项目开发时的基础代码,代码增量则为项目开发后续进行的模块改动所添加的对应代码。
详细地,参阅图3所示,所述获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息,包括:
S41、获取所述测试覆盖率项目对应的基线版本代码,将所述基线版本代码与所述待测试版本代码进行对比,得到相对于所述基线版本代码的代码增量;
S42、根据所述整体代码覆盖率信息及所述代码增量将所述代码增量的变更代码行映射至抽象语法树的行对象;
S43、遍历所述抽象语法树的行对象,从所述抽象语法树的行对象中确定所述代码增量的特征信息总数和代码增量的被覆盖特征信息数量;
S44、计算所述被覆盖特征信息数量占所述特征信息总数的比例,得到代码增量覆盖率信息。
本发明实施例中,通过所述代码增量覆盖率信息能够让测试人员快速聚焦到新加的模块或变化的模块,发现新加的模块或变化的模块的测试盲点,进一步地增加测试案例的完整性,提高测试案例的设计能力。
S5、获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
本发明实施例中,所述代码覆盖率信息报告为所述测试覆盖率项目的全面的代码覆盖率信息报告,直接的向测试人员展示测试案例的代码执行路径,发现测试案例的代码执行盲点。
详细地,所述获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告,包括:
利用UI页面的公共函数定时收集所述整体代码覆盖率信息及所述代码增量覆盖率信息;
获取预设的报告模板,并将所述整体代码覆盖率信息及所述代码增量覆盖率信息转化为所述报告模板使用的数据格式,得到报告模板数据。
将所述报告模板数据导入所述报告模板,得到待测试版本代码覆盖率信息报告。
本发明实施例中,通过所述待测试版本代码覆盖率信息报告能够得到待测试版本代码中测试案例的代码执行路径及执行测试测试案例的代码比例,测试人员利用所述待测试版本代码覆盖率信息报告,能够及时的发现测试案例的不足,发现未进行测试的代码盲点,准确地对测试案例进行问题定位,以改进测试案例,提高业务测试的完整性及有效性。
本发明实施例通过程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目,保证了待插桩的待测试版本源代码的准确性及针对性;接收到UI服务启动命令时,启动所述测试覆盖率项目,采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息,同时获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息,保证了测试覆盖率信息获取的完整性;将整体代码覆盖率信息及所述代码增量覆盖率信息导入预设的报告模板,生成待测试版本代码覆盖率信息报告,能够直观地向测试人员展示测试案例的执行路径及测试覆盖率,提高测试效率。因此本发明提出的测试覆盖率信息获取方法,可以解决业务测试不全面且准确性低的问题。
如图4所示,是本发明一实施例提供的测试覆盖率信息获取装置的功能模块图。
本发明所述测试覆盖率信息获取装置100可以安装于电子设备中。根据实现的功能,所述测试覆盖率信息获取装置100可以包括程序插桩模块101、项目启动模块102、整体代码覆盖率信息获取模块103、代码增量覆盖率信息获取模块104及覆盖率信息报告生成模块105。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述程序插桩模块101,用于利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
所述项目启动模块102,用于用于接收到UI服务启动命令时,启动所述测试覆盖率项目;
所述整体代码覆盖率信息获取模块103,用于采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
所述代码增量覆盖率信息获取模块104,用于获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
所述覆盖率信息报告生成模块105,用于获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
详细地,本发明实施例中所述测试覆盖率信息获取装置100中所述的各模块在使用时采用与上述图1至图3中所述的测试覆盖率信息获取方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图5所示,是本发明一实施例提供的实现测试覆盖率信息获取方法的电子设备的结构示意图。
所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如测试覆盖率信息获取程序。
其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行测试覆盖率信息获取程序等),以及调用存储在所述存储器11内的数据,以执行电子设备的各种功能和处理数据。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备的应用软件及各类数据,例如测试覆盖率信息获取程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线12可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
所述通信接口13用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的测试覆盖率信息获取程序是多个指令的组合,在所述处理器10中运行时,可以实现:
利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
接收到UI服务启动命令时,启动所述测试覆盖率项目;
采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
具体地,所述处理器10对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
接收到UI服务启动命令时,启动所述测试覆盖率项目;
采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种测试覆盖率信息获取方法,其特征在于,所述方法包括:
利用程序插桩的方法将预设的插桩代码添加至测试覆盖率项目中,生成测试覆盖率项目;
接收到UI服务启动命令时,启动所述测试覆盖率项目;
采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成测试覆盖率项目覆盖率信息报告。
2.如权利要求1所述的测试覆盖率信息获取方法,其特征在于,所述利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,包括:
将待插桩源代码进行宏展开;
根据插桩需求,在所述待测试版本代码中确定插桩切入点,并为所述插桩切入点编写插桩语法规则;
利用语法分析器将所述插桩语法规则转化为插桩脚本,运行所述插桩脚本,将所述宏展开后的待插桩源代码插入所述插桩切入点。
3.如权利要求1所述的测试覆盖率信息获取方法,其特征在于,所述采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,包括:
获取所述测试覆盖率项目所对应的项目配置文件,根据所述项目配置文件确定所述测试覆盖率项目所对应的各待测组件;
获取所述各待测组件的响应参数;
根据所述响应参数确定所述各待测组件的响应顺序,根据所述响应顺序确定所述各待测组件对应的整体代码的执行路径。
4.如权利要求1所述的测试覆盖率信息获取方法,其特征在于,所述根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息,包括:
根据所述执行路径确定所述每个执行路径所触发的界面或所述各待测组件,得到每个执行路径的测试执行事件;
将所述每个执行路径的测试执行事件绘制为有向图;
将所述每个执行路径的测试执行事件及所述有向图组装集合,得到测试执行事件集;
根据所述测试执行事件集计算所述测试覆盖率项目的整体代码覆盖率;
整合所述执行路径及整体代码覆盖率,得到整体代码覆盖率信息。
5.如权利要求4所述的测试覆盖率信息获取方法,其特征在于,所述根据所述测试执行事件集计算所述测试覆盖率项目的整体代码覆盖率,包括:
利用如下公式计算所述测试覆盖率项目的整体代码覆盖率:
Figure FDA0003380173200000021
其中,Coveragek为整体代码覆盖率,pagek表示第k条执行路径的测试执行事件,
Figure FDA0003380173200000022
为测试执行事件集。
6.如权利要求1所述的测试覆盖率信息获取方法,其特征在于,所述获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息,包括:
获取所述测试覆盖率项目对应的基线版本代码,将所述基线版本代码与所述待测试版本代码进行对比,得到相对于所述基线版本代码的代码增量;
根据所述整体代码覆盖率信息及所述代码增量将所述代码增量的变更代码行映射至抽象语法树的行对象;
遍历所述抽象语法树的行对象,从所述抽象语法树的行对象中确定所述代码增量的特征信息总数和代码增量的被覆盖特征信息数量;
计算所述被覆盖特征信息数量占所述特征信息总数的比例,得到代码增量覆盖率信息。
7.如权利要求1所述的测试覆盖率信息获取方法,其特征在于,所述获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告,包括:
利用UI页面的公共函数定时收集所述整体代码覆盖率信息及所述代码增量覆盖率信息;
获取预设的报告模板,并将所述整体代码覆盖率信息及所述代码增量覆盖率信息转化为所述报告模板使用的数据格式,得到报告模板数据。
将所述报告模板数据导入所述报告模板,得到待测试版本代码覆盖率信息报告。
8.一种测试覆盖率信息获取装置,其特征在于,所述装置包括:
程序插桩模块,用于利用程序插桩的方法将预设的插桩代码添加至待测试版本代码中,生成测试覆盖率项目;
项目启动模块,用于接收到UI服务启动命令时,启动所述测试覆盖率项目;
整体代码覆盖率信息获取模块,用于采集所述测试覆盖率项目内各待测组件对应的整体代码的执行路径,根据所述执行路径确定所述测试覆盖率项目的整体代码覆盖率信息;
代码增量覆盖率信息获取模块,用于获取所述测试覆盖率项目对应的基线版本代码,根据所述基线版本代码确定所述测试覆盖率项目的代码增量,并根据所述整体代码覆盖率信息确定所述代码增量覆盖率信息;
覆盖率信息报告生成模块,用于获取预设的报告模板,将所述整体代码覆盖率信息及所述代码增量覆盖率信息导入所述报告模板,生成待测试版本代码覆盖率信息报告。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任意一项所述的测试覆盖率信息获取方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的测试覆盖率信息获取方法。
CN202111431142.XA 2021-11-29 2021-11-29 测试覆盖率信息获取方法、装置、设备及存储介质 Pending CN114116488A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111431142.XA CN114116488A (zh) 2021-11-29 2021-11-29 测试覆盖率信息获取方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111431142.XA CN114116488A (zh) 2021-11-29 2021-11-29 测试覆盖率信息获取方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN114116488A true CN114116488A (zh) 2022-03-01

Family

ID=80371155

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111431142.XA Pending CN114116488A (zh) 2021-11-29 2021-11-29 测试覆盖率信息获取方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114116488A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858354A (zh) * 2022-11-29 2023-03-28 广发银行股份有限公司 一种测试覆盖率计算方法、系统、终端及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858354A (zh) * 2022-11-29 2023-03-28 广发银行股份有限公司 一种测试覆盖率计算方法、系统、终端及存储介质
CN115858354B (zh) * 2022-11-29 2023-08-18 广发银行股份有限公司 一种测试覆盖率计算方法、系统、终端及存储介质

Similar Documents

Publication Publication Date Title
CN113238929B (zh) 基于Mock数据的代码测试方法、装置、电子设备及存储介质
CN113138929A (zh) 分布式接口测试方法、装置、电子设备及存储介质
CN112527664A (zh) 生成测试用例的方法、装置、电子设备及存储介质
CN113051171A (zh) 接口测试方法、装置、设备及存储介质
CN113504935A (zh) 软件开发质量评估方法、装置、电子设备及可读存储介质
CN114880238A (zh) 移动端界面测试方法、装置、设备及存储介质
CN112559355A (zh) 测试用例的生成方法、装置、电子设备及存储介质
CN114398194A (zh) 数据收集方法、装置、电子设备及可读存储介质
CN115145870A (zh) 失败任务原因定位方法、装置、电子设备及存储介质
CN114780371A (zh) 基于多曲线拟合的压测指标分析方法、装置、设备及介质
CN114398282A (zh) 测试脚本的生成方法、装置、设备及存储介质
CN114385497A (zh) 测试环境生成方法、装置、电子设备及存储介质
CN114116488A (zh) 测试覆盖率信息获取方法、装置、设备及存储介质
CN113434542A (zh) 数据关系识别方法、装置、电子设备及存储介质
CN112579475A (zh) 代码测试方法、装置、设备及可读存储介质
CN112527655A (zh) 软件版本质量异常检测方法、装置、电子设备及存储介质
CN114727100B (zh) 一种监控设备的联合调试方法及装置
CN114896164A (zh) 接口优化方法、装置、电子设备及存储介质
CN115794621A (zh) 代码覆盖测试方法、装置、设备及存储介质
CN113469649A (zh) 项目进度分析方法、装置、电子设备及存储介质
CN114721952A (zh) 多套测试环境同步部署方法、装置、设备及存储介质
CN114461531A (zh) 测试用例的平台适应性测试方法、装置、设备及存储介质
CN113505079A (zh) 应用程序测试方法、装置、设备及介质
CN115033489A (zh) 代码资源检测方法、装置、电子设备及存储介质
CN114185588A (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