CN106776338B - 一种测试方法、装置及服务器 - Google Patents
一种测试方法、装置及服务器 Download PDFInfo
- Publication number
- CN106776338B CN106776338B CN201611256451.7A CN201611256451A CN106776338B CN 106776338 B CN106776338 B CN 106776338B CN 201611256451 A CN201611256451 A CN 201611256451A CN 106776338 B CN106776338 B CN 106776338B
- Authority
- CN
- China
- Prior art keywords
- code coverage
- test
- file
- code
- executable file
- 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.)
- Expired - Fee Related
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/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
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试方法、装置及服务器。
背景技术
服务端是为客户端服务的,服务的内容包括向客户端提供资源、保存客户端数据等。由于服务端业务比较复杂、功能逻辑较多、版本迭代较快,因此,为了保证业务功能逻辑需要进行功能测试。
代码覆盖(code coverage)是软件测试中的一种度量,用于描述程式中源代码被测试的比例和程度。其中,源代码被测试的比例称为代码覆盖率。目前,可以通过开发人员编写单元测试用例来评估代码覆盖率,但是针对功能测试的代码覆盖率还处于盲区,因此,针对功能测试的代码覆盖率已成为一个亟待解决的技术问题。
发明内容
本发明实施例公开了一种测试方法、装置及服务器,用于解决针对功能测试的代码覆盖率处于盲区的问题。
本发明实施例第一方面公开一种测试方法,包括:
将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
将所述可执行文件部署在测试环境中;
在所述测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果;
对所述代码覆盖率结果进行分析输出代码覆盖率报告。
在一个实施例中,所述将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,包括:
设置编译参数,根据所述编译参数生成二进制可执行文件,所述二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
在一个实施例中,所述在所述测试环境中执行用于功能测试的测试用例,包括:
将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具;
所述对所述代码覆盖率结果进行分析输出代码覆盖率报告,包括:
使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告。
在一个实施例中,所述使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告,包括:
使所述代码覆盖率工具对比分析所述代码覆盖率结果中的数据和所述可执行文件中的代码,以得到代码覆盖率的统计数据,并根据所述代码覆盖率的统计数据生成代码覆盖率报告。
在一个实施例中,所述代码覆盖率的统计数据包括函数覆盖率和/或行覆盖率。
在一个实施例中,所述方法还包括:
根据所述代码覆盖率报告生成可视化文件。
本发明实施例第二方面公开一种测试装置,包括:
编译单元,用于将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
部署单元,用于将所述编译单元编译生成的可执行文件部署在测试环境中;
执行单元,用于在所述部署单元部署的测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
确定单元,用于根据所述编译单元编译生成的可执行文件确定所述执行单元执行的测试用例执行后的代码覆盖率结果;
输出单元,用于对所述确定单元确定的代码覆盖率结果进行分析输出代码覆盖率报告。
在一个实施例中,所述编译单元,具体用于设置编译参数,根据所述编译参数生成二进制可执行文件,所述二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
在一个实施例中,所述执行单元,具体用于将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具;
所述输出单元,具体用于使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告。
在一个实施例中,所述输出单元使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告包括:
使所述代码覆盖率工具对比分析所述代码覆盖率结果中的数据和所述可执行文件中的代码,以得到代码覆盖率的统计数据,并根据所述代码覆盖率的统计数据生成代码覆盖率报告。
在一个实施例中,所述代码覆盖率的统计数据包括函数覆盖率和/或行覆盖率。
在一个实施例中,所述装置还包括:
生成单元,用于根据所述输出单元输出的代码覆盖率报告生成可视化文件。
本发明实施例第三方面公开一种服务器,包括处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种测试方法;
其中,所述测试方法包括:
将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
将所述可执行文件部署在测试环境中;
在所述测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果;
对所述代码覆盖率结果进行分析输出代码覆盖率报告。
本发明实施例中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种测试方法的流程示意图;
图2是本发明实施例公开的另一种测试方法的流程示意图;
图3是本发明实施例公开的一种测试装置的结构示意图;
图4是本发明实施例公开的另一种测试装置的结构示意图;
图5是本发明实施例公开的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种测试方法、装置及服务器,用于解决针对功能测试的代码覆盖率处于盲区的问题。以下分别进行详细说明。
为了更好地理解本发明实施例公开的一种测试方法及装置,下面先对本发明实施例使用的基本概念进行描述。Gcov是Linux下GCC自带的一个C/C++代码覆盖率分析工具。Lcov是Gcov的图形化前端工具,用于收集Gcov数据多个源文件,并创建超文本标记语言(Hypertext Marked Language,HTML)含覆盖信息注释的源代码页。
请参阅图1,图1是本发明实施例公开的一种测试方法的流程示意图。如图1所示,该测试方法可以包括以下步骤。
101、将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件。
本实施例中,当需要确定针对功能测试的代码覆盖率时,可以将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,即设置编译参数,并根据编译参数生成二进制可执行文件,也即在组件编译中添加用于标识代码编译参数,并打包带有gcov信息的bin文件,还即获取用于标识代码的编译参数,生成包括编译参数的gcov信息,将gcov信息打包为bin文件。其中,可以通过函数-fprofile-arcs和-ftest-coverage添加编译参数。其中,二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析,bin文件即二进制可执行文件,bin文件中包括gcon,是在打包时添加进去的。其中,标识代码,即为代码打标签,例如:第1行代码、第2行代码等。其中,gcov信息即gcon。
102、将可执行文件部署在测试环境中。
本实施例中,由于进行测试时,需要在特定的环境下进行,因此,需要部署测试环境。因此,将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件之后,将可执行文件部署在测试环境中,即将bin文件部署在测试环境中,以便部署测试环境。
103、在测试环境中执行用于功能测试的测试用例。
本实施例中,将可执行文件部署在测试环境中,即部署好测试环境之后,在测试环境中执行用于功能测试的测试用例,即将可执行文件和用于功能测试的测试用例提交给代码覆盖率工具,如Gcov等,以便对bin文件中打标签的代码进行测试。
104、根据可执行文件确定测试用例执行后的代码覆盖率结果。
本实施例中,在测试环境中执行用于功能测试的测试用例之后,将根据可执行文件确定测试用例执行后的代码覆盖率结果,可以是获取部署的bin文件的标识,并统计测试用例执行过程中该标识对应的bin文件中被调用的代码。其中,获取bin文件的标识,即获取bin文件对应的pid进程号;统计测试用例执行过程中该标识对应的bin文件中被调用的代码,即根据获取的pid进程号,使用gdb命令,生成gcda格式的dump文件。
105、对代码覆盖率结果进行分析输出代码覆盖率报告。
本实施例中,根据可执行文件确定测试用例执行后的代码覆盖率结果之后,将对代码覆盖率结果进行分析输出代码覆盖率报告,即使代码覆盖率工具根据代码覆盖率结果生成代码覆盖率报告,也即使代码覆盖率工具对比分析代码覆盖率结果中的数据和可执行文件中的代码,以得到代码覆盖率的统计数据,并根据代码覆盖率的统计数据生成代码覆盖率报告。其中,代码覆盖率的统计数据可以包括函数覆盖率和/或行覆盖率。其中,对代码覆盖率结果进行分析输出代码覆盖率报告,即根据dump文件生成info文件。
在图1所描述的测试方法中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
请参阅图2,图2是本发明实施例公开的另一种测试方法的流程示意图。如图2所示,该测试方法可以包括以下步骤。
201、将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件。
本实施例中,当需要确定针对功能测试的代码覆盖率时,可以将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,即设置编译参数,并根据编译参数生成二进制可执行文件,也即在组件编译中添加用于标识代码编译参数,并打包带有gcov信息的bin文件,还即获取用于标识代码的编译参数,生成包括编译参数的gcov信息,将gcov信息打包为bin文件。其中,可以通过函数-fprofile-arcs和-ftest-coverage添加编译参数。其中,二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析,bin文件即二进制可执行文件,bin文件中包括gcon,是在打包时添加进去的。其中,标识代码,即为代码打标签,例如:第1行代码、第2行代码等。其中,gcov信息即gcon。
202、将可执行文件部署在测试环境中。
本实施例中,由于进行测试时,需要在特定的环境下进行,因此,需要部署测试环境。因此,将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件之后,将可执行文件部署在测试环境中,即将bin文件部署在测试环境中,以便部署测试环境。
203、在测试环境中执行用于功能测试的测试用例。
本实施例中,将可执行文件部署在测试环境中,即部署好测试环境之后,在测试环境中执行用于功能测试的测试用例,即将可执行文件和用于功能测试的测试用例提交给代码覆盖率工具,如Gcov等,以便对bin文件中打标签的代码进行测试。
204、根据可执行文件确定测试用例执行后的代码覆盖率结果。
本实施例中,在测试环境中执行用于功能测试的测试用例之后,将根据可执行文件确定测试用例执行后的代码覆盖率结果,可以是获取部署的bin文件的标识,并统计测试用例执行过程中该标识对应的bin文件中被调用的代码。其中,获取bin文件的标识,即获取bin文件对应的pid进程号;统计测试用例执行过程中该标识对应的bin文件中被调用的代码,即根据获取的pid进程号,使用gdb命令,生成gcda格式的dump文件。
205、对代码覆盖率结果进行分析输出代码覆盖率报告。
本实施例中,根据可执行文件确定测试用例执行后的代码覆盖率结果之后,将对代码覆盖率结果进行分析输出代码覆盖率报告,即使代码覆盖率工具根据代码覆盖率结果生成代码覆盖率报告,也即使代码覆盖率工具对比分析代码覆盖率结果中的数据和可执行文件中的代码,以得到代码覆盖率的统计数据,并根据代码覆盖率的统计数据生成代码覆盖率报告。其中,代码覆盖率的统计数据可以包括函数覆盖率和/或行覆盖率。其中,对代码覆盖率结果进行分析输出代码覆盖率报告,即根据dump文件生成info文件。
206、根据代码覆盖率报告生成可视化文件。
本实施例中,由于代码覆盖率报告用户无法查看,因此,对代码覆盖率结果进行分析输出代码覆盖率报告之后,将根据代码覆盖率报告生成可视化文件,即根据info文件生成html文件,以便用户可以查看。其中,html文件可以包括本次测试中哪些代码行被覆盖了,哪些代码行未被覆盖。
本实施例中,可以在每次得到可视化文件之后,即每次测试完成后,从可视化文件中提取代码覆盖率并记录,以便可以统计每次测试的代码覆盖率。其中,每次测试使用的测试用例可以完全不同,也可以部分相同,还可以完全相同;每次测试使用的测试代码可以完全不同,也可以部分相同,还可以完全相同。
举例说明,执行测试用例,查看代码覆盖率报告,发现功能A相关的代码覆盖率中:行覆盖率只有30%,函数覆盖率只有45%,但是关于功能A的用例有5枚,检查点有24个。可以查阅代码覆盖率的报告,找到功能A中哪些代码被覆盖,哪些代码未被覆盖。然后结合业务,补充未被覆盖的代码的测试用例。再次测试之后,可以得到功能A代码覆盖率:行覆盖率提升到80%,函数覆盖率提升到93%。
在图2所描述的测试方法中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
请参阅图3,图3是本发明实施例公开的一种测试装置的结构示意图。如图3所示,该测试装置可以包括:
编译单元301,用于将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
部署单元302,用于将编译单元301编译生成的可执行文件部署在测试环境中;
执行单元303,用于在部署单元302部署的测试环境中执行用于功能测试的测试用例,测试用例模拟客户端生成针对测试环境的数据请求,且测试环境响应测试用例的数据请求;
确定单元304,用于根据编译单元301编译生成的可执行文件确定执行单元303执行的测试用例执行后的代码覆盖率结果;
输出单元305,用于对确定单元304确定的代码覆盖率结果进行分析输出代码覆盖率报告。
在图3所描述的测试装置中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
请参阅图4,图4是本发明实施例公开的另一种测试装置的结构示意图。其中,图4所示的测试装置是由图3所示的测试装置优化得到的,其中:
编译单元301,具体用于设置编译参数,根据编译参数生成二进制可执行文件,二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
作为一种可能的实施方式,执行单元303,具体用于将可执行文件和用于功能测试的测试用例提交给代码覆盖率工具;
输出单元305,具体用于使代码覆盖率工具根据代码覆盖率结果生成代码覆盖率报告。
作为一种可能的实施方式,输出单元305使代码覆盖率工具根据代码覆盖率结果生成代码覆盖率报告包括:
使代码覆盖率工具对比分析代码覆盖率结果中的数据和可执行文件中的代码,以得到代码覆盖率的统计数据,并根据代码覆盖率的统计数据生成代码覆盖率报告。
作为一种可能的实施方式,代码覆盖率的统计数据可以包括函数覆盖率和/或行覆盖率。
作为一种可能的实施方式,该测试装置还可以包括:
生成单元306,用于根据输出单元305输出的代码覆盖率报告生成可视化文件。
在图4所描述的测试装置中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
请参阅图5,图5是本发明实施例公开的一种服务器的结构示意图。如图5所示,该服务器可以包括处理器501、存储器502、通信接口503和总线504,存储器502可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器502还可以是至少一个位于远离前述处理器501的存储装置。处理器501、存储器502和通信接口503通过总线504连接并完成相互间的通信;
存储器502存储可执行程序;
处理器501通过读取存储器502中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行一种测试方法;
其中,该测试方法可以包括:
将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
将可执行文件部署在测试环境中;
在测试环境中执行用于功能测试的测试用例,测试用例模拟客户端生成针对测试环境的数据请求,且测试环境响应测试用例的数据请求;
根据可执行文件确定测试用例执行后的代码覆盖率结果;
对代码覆盖率结果进行分析输出代码覆盖率报告。
在一个实施例中,该服务器还可以包括输入装置505,如为触摸屏、按键、话筒等,输出装置506,如显示屏、话筒等,其中:
输入装置505,用于接收用户输入的信息;
输出装置506,用于输出信息。
在图5所描述的测试装置中,将被测试的代码进行编译以生成用于代码覆盖率分析的可执行文件,将可执行文件部署在测试环境中,在测试环境中执行用于功能测试的测试用例,根据可执行文件确定测试用例执行后的代码覆盖率结果,并对代码覆盖率结果进行分析输出代码覆盖率报告,可见,可以通过用于功能测试的测试用例确定功能测试的代码覆盖率,因此,可以确定针对功能测试的代码覆盖率。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-only memory,ROM)、随机存取器(random accessmemory,RAM)、磁盘或光盘等。
以上对本发明实施例公开的测试方法、装置及服务器进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种测试方法,其特征在于,包括:
将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
将所述可执行文件部署在测试环境中;
在所述测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果;
所述根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果包括:
获取可执行文件对应的pid进程号;
根据获取的所述pid进程号,使用gdb命令,生成gcda格式的dump文件;
对所述代码覆盖率结果进行分析输出代码覆盖率报告;
所述对所述代码覆盖率结果进行分析输出代码覆盖率报告包括:
根据dump文件生成info文件;
info文件生成html文件,所述html文件包括本次测试中覆盖的代码和未覆盖的代码;
所述将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,包括:
在组件编译中添加用于标识代码编译参数,并打包带有gcov信息的bin文件,所述bin文件为可执行文件;
所述在所述测试环境中执行用于功能测试的测试用例,包括:
将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具,所述可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
2.根据权利要求1所述的方法,其特征在于,所述将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,包括:
设置编译参数,根据所述编译参数生成二进制可执行文件,所述二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
3.根据权利要求1所述的方法,其特征在于,所述在所述测试环境中执行用于功能测试的测试用例,包括:
将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具;
所述对所述代码覆盖率结果进行分析输出代码覆盖率报告,包括:
使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告。
4.根据权利要求3所述的方法,其特征在于,所述使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告,包括:
使所述代码覆盖率工具对比分析所述代码覆盖率结果中的数据和所述可执行文件中的代码,以得到代码覆盖率的统计数据,并根据所述代码覆盖率的统计数据生成代码覆盖率报告。
5.根据权利要求4所述的方法,其特征在于,所述代码覆盖率的统计数据包括函数覆盖率和/或行覆盖率。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
根据所述代码覆盖率报告生成可视化文件。
7.一种测试装置,其特征在于,包括:
编译单元,将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
部署单元,用于将所述编译单元编译生成的可执行文件部署在测试环境中;
执行单元,用于在所述部署单元部署的测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
确定单元,用于根据所述编译单元编译生成的可执行文件确定所述执行单元执行的测试用例执行后的代码覆盖率结果;
所述确定单元具体用于:
获取可执行文件对应的pid进程号;
根据获取的所述pid进程号,使用gdb命令,生成gcda格式的dump文件;
输出单元,用于对所述确定单元确定的代码覆盖率结果进行分析输出代码覆盖率报告;
所述输出单元具体用于:
根据dump文件生成info文件;
info文件生成html文件,所述html文件包括本次测试中覆盖的代码和未覆盖的代码;
所述编译单元具体用于:
在组件编译中添加用于标识代码编译参数,并打包带有gcov信息的bin文件,所述bin文件为可执行文件;
所述在所述测试环境中执行用于功能测试的测试用例,包括:
将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具,所述可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
8.根据权利要求7所述的装置,其特征在于,所述编译单元,具体用于设置编译参数,根据所述编译参数生成二进制可执行文件,所述二进制可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
9.根据权利要求7所述的装置,其特征在于,所述执行单元,具体用于将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具;
所述输出单元,具体用于使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告。
10.根据权利要求9所述的装置,其特征在于,所述输出单元使所述代码覆盖率工具根据所述代码覆盖率结果生成代码覆盖率报告包括:
使所述代码覆盖率工具对比分析所述代码覆盖率结果中的数据和所述可执行文件中的代码,以得到代码覆盖率的统计数据,并根据所述代码覆盖率的统计数据生成代码覆盖率报告。
11.根据权利要求10所述的装置,其特征在于,所述代码覆盖率的统计数据包括函数覆盖率和/或行覆盖率。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述装置还包括:
生成单元,用于根据所述输出单元输出的代码覆盖率报告生成可视化文件。
13.一种服务器,其特征在于,包括处理器、存储器、通信接口和总线;
所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;
所述存储器存储可执行程序;
所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行一种测试方法;
其中,所述测试方法包括:
将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件;
将所述可执行文件部署在测试环境中;
在所述测试环境中执行用于功能测试的测试用例,所述测试用例模拟客户端生成针对所述测试环境的数据请求,且所述测试环境响应所述测试用例的数据请求;
根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果;
所述根据所述可执行文件确定所述测试用例执行后的代码覆盖率结果包括:
获取可执行文件对应的pid进程号;
根据获取的所述pid进程号,使用gdb命令,生成gcda格式的dump文件;
对所述代码覆盖率结果进行分析输出代码覆盖率报告;
所述对所述代码覆盖率结果进行分析输出代码覆盖率报告包括:
根据dump文件生成info文件;
info文件生成html文件,所述html文件包括本次测试中覆盖的代码和未覆盖的代码;
所述将被测试的代码进行编译,以生成用于代码覆盖率分析的可执行文件,包括:
在组件编译中添加用于标识代码编译参数,并打包带有gcov信息的bin文件,所述bin文件为可执行文件;
所述在所述测试环境中执行用于功能测试的测试用例,包括:
将所述可执行文件和用于功能测试的测试用例提交给代码覆盖率工具,所述可执行文件在执行过程中对代码进行标识用于代码覆盖率分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611256451.7A CN106776338B (zh) | 2016-12-30 | 2016-12-30 | 一种测试方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611256451.7A CN106776338B (zh) | 2016-12-30 | 2016-12-30 | 一种测试方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776338A CN106776338A (zh) | 2017-05-31 |
CN106776338B true CN106776338B (zh) | 2020-04-03 |
Family
ID=58954270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611256451.7A Expired - Fee Related CN106776338B (zh) | 2016-12-30 | 2016-12-30 | 一种测试方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776338B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102618417B1 (ko) * | 2023-05-10 | 2023-12-28 | 쿠팡 주식회사 | 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807881B (zh) * | 2017-09-28 | 2020-09-11 | 北京新能源汽车股份有限公司 | 代码覆盖率的测试方法、装置和计算机设备 |
CN108491321B (zh) * | 2018-03-06 | 2021-05-25 | 平安科技(深圳)有限公司 | 测试用例范围确定方法、装置及存储介质 |
CN108829579A (zh) * | 2018-05-03 | 2018-11-16 | 广州金山安全管理系统技术有限公司 | 可执行文件的分析方法、装置、存储介质和处理器 |
CN109460357B (zh) * | 2018-10-19 | 2021-10-29 | 北京新能源汽车股份有限公司 | 一种代码覆盖率的测试方法、装置和设备 |
CN112988551B (zh) * | 2019-12-12 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 代码覆盖率测试方法及装置 |
CN112416773A (zh) * | 2020-11-23 | 2021-02-26 | 通号万全信号设备有限公司 | 一种跨平台的数据可视化方法 |
CN113342664B (zh) * | 2021-06-16 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 拨测方法、装置、存储介质及计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365771A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种代码覆盖率的获得方法和设备 |
CN104239219A (zh) * | 2014-10-21 | 2014-12-24 | 中国科学院软件研究所 | 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法 |
CN105005521A (zh) * | 2015-06-26 | 2015-10-28 | 腾讯科技(北京)有限公司 | 测试方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881355A (zh) * | 2014-02-27 | 2015-09-02 | 国际商业机器公司 | 一种用于检测测试覆盖的方法和系统 |
-
2016
- 2016-12-30 CN CN201611256451.7A patent/CN106776338B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365771A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种代码覆盖率的获得方法和设备 |
CN104239219A (zh) * | 2014-10-21 | 2014-12-24 | 中国科学院软件研究所 | 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法 |
CN105005521A (zh) * | 2015-06-26 | 2015-10-28 | 腾讯科技(北京)有限公司 | 测试方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102618417B1 (ko) * | 2023-05-10 | 2023-12-28 | 쿠팡 주식회사 | 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN106776338A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776338B (zh) | 一种测试方法、装置及服务器 | |
WO2018010552A1 (zh) | 测试方法和装置 | |
FR3044126A1 (fr) | Systeme et procede pour creer automatiquement des cas de tests a base d'exigences liees a un logiciel critique | |
CN110196801B (zh) | 一种基于代码覆盖率的测试方法及装置 | |
US20160328314A1 (en) | System and method for providing code coverage | |
US8868976B2 (en) | System-level testcase generation | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
US20140298297A1 (en) | Automatic feature-driven testing and quality checking of applications | |
US11544176B1 (en) | Systems and methods for automatically assessing and conforming software development modules to accessibility guidelines in real-time | |
US20130179867A1 (en) | Program Code Analysis System | |
CN111488109A (zh) | 用户界面的控件信息的获取方法、装置、终端及存储介质 | |
CN109614107B (zh) | 一种软件开发工具包的集成方法和装置 | |
US20190213706A1 (en) | Techniques for graphics processing unit profiling using binary instrumentation | |
JP2015219906A (ja) | ソフトウェア確認方法およびプロセッサ | |
CN111913878A (zh) | 基于程序分析结果的字节码插桩方法、装置及存储介质 | |
KR20140088963A (ko) | 애플리케이션 개발을 위한 런타임 에러 테스팅 시스템 및 방법 | |
US10579761B1 (en) | Method and system for reconstructing a graph presentation of a previously executed verification test | |
CN112084108A (zh) | 一种测试脚本生成方法、装置及相关组件 | |
CN116719736A (zh) | 一种用于测试软件界面的测试用例生成方法及装置 | |
CN116841543A (zh) | 基于Flutter动态生成跨平台多端应用的开发方法 | |
US20160292067A1 (en) | System and method for keyword based testing of custom components | |
CN111400171A (zh) | 一种接口测试方法、系统、装置及可读存储介质 | |
CN105339974B (zh) | 模拟传感器 | |
KR102603330B1 (ko) | 테스트 커버리지 표시 장치 및 표시 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200403 Termination date: 20211230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |