CN104199773A - 获取代码覆盖信息的方法及装置 - Google Patents
获取代码覆盖信息的方法及装置 Download PDFInfo
- Publication number
- CN104199773A CN104199773A CN201410447155.XA CN201410447155A CN104199773A CN 104199773 A CN104199773 A CN 104199773A CN 201410447155 A CN201410447155 A CN 201410447155A CN 104199773 A CN104199773 A CN 104199773A
- Authority
- CN
- China
- Prior art keywords
- code coverage
- coverage information
- pitching pile
- code
- instruction
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种获取代码覆盖信息的方法,包括:加载待测源代码或二进制文件对其添加插桩标记;接收代码覆盖信息生成指令;统计与所述代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息;将提取的代码覆盖信息整合写入相应的代码覆盖报表。此外,还提供了一种获取代码覆盖信息的装置。上述获取代码覆盖信息的方法及装置能够避免重复的测试过程,从而提高测试效率。
Description
技术领域
本发明涉及软件测试技术领域,特别是涉及一种获取代码覆盖信息的方法及装置。
背景技术
在现有的软件测试技术中,通常需要统计测试过程中的代码覆盖信息,其描述的是测试过程中被执行的待测软件的源代码数量、位置以及占整体源代码的比例等参数。
现有的获取代码覆盖信息方法通常运行多个单元测试样例代码,然后在软件测试结束后统计待测软件在内存中的读写地址,从而统计待测软件中被执行的代码数量和位置,生成包含代码覆盖信息的报表。
然而,由于待测软件并非正式发布的软件产品,自身本就可能存在较多bug,因此,在遇到执行单元测试样例代码出现错误导致待测软件崩溃(crash)中止执行时,则无法生成代码覆盖报告,需要测试人员在代码修改后重复执行测试流程,才能生成完整的代码覆盖报告,导致测试的效率较低。
发明内容
基于此,有必要提供一种能够提高测试效率的获取代码覆盖信息的方法。
一种获取代码覆盖信息的方法,包括:
加载待测源代码或二进制文件对其添加插桩标记;
接收代码覆盖信息生成指令;
统计与所述代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息;
将提取的代码覆盖信息整合写入相应的代码覆盖报表。
此外,还有必要提供一种能够提高测试效率的获取代码覆盖信息的装置。
一种获取代码覆盖信息的装置,包括:
代码插桩模块,用于加载待测源代码或二进制文件对其添加插桩标记;
指令接收模块,用于接收代码覆盖信息生成指令;
插桩统计模块,用于统计与所述代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息;
报告生成模块,用于将提取的代码覆盖信息整合写入相应的代码覆盖报表。
上述获取代码覆盖信息的方法及装置中,只要在测试过程中接收到任意方式触发的代码覆盖信息生成指令(用户输入、定时触发、结束触发等方式)即获取已测试过程涉及的代码覆盖信息,并以整合的方式写入代码覆盖报表存储。使得在待测程序出现崩溃时,能够避免部分重复的测试过程,从而提高测试效率。
附图说明
图1为一个实施例中获取代码覆盖信息的方法的流程图;
图2为一个接收输入设备输入的代码覆盖信息生成指令的应用场景中获取代码覆盖信息的过程示意图;
图3为一个通过定时器生成代码覆盖信息生成指令的应用场景中获取代码覆盖信息的过程示意图;
图4为一个通过检测测试流程结束来生成代码覆盖信息生成指令的应用场景中获取代码覆盖信息的过程示意图;
图5为一个实施例中获取代码覆盖信息的装置的结构示意图;
图6为另一个实施例中获取代码覆盖信息的装置的结构示意图。
具体实施方式
代码覆盖(code coverage)信息是软件测试中的一种度量,描述程序中源代码被测试的比例、位置和程度,所得比例也称为代码覆盖率。例如,若某段代码在测试过程中的代码覆盖率为80%,则表示该测试过程中该段代码的80%被调用执行了,即对80%的程序语句完成了测试,但还有20%的代码由于测试时输入的测试样本不够全面,导致某些条件分支下的程序语句没有被执行,或者某些函数没有被调用。现有技术中的包含代码覆盖信息的报表中还可包含具体的程序语句执行情况,在文件中将执行过的程序语句均显示出来,方便测试人员查看。
而在现有的软件测试中,测试人员先编写多个单元测试样例代码文件,通常先在源代码中添加插桩标记。插桩标记即为一段用于统计的代码,例如,当代码被调用时,向内存中特定的区域写入被调用的函数的内存地址等信息(即缓存该信息)。开始测试后,添加了插桩标记的源代码即被加载到内存中编译执行或解释执行,然后测试人员执行多个预先定义的单元测试样例代码,在执行完所有单元测试样例代码后,统计前述内存中特定的区域中写入的内存地址,生成相应的代码覆盖信息。
而对于某些没有源代码仅有编译后的二进制文件的程序,测试人员则通常不方便自行对其添加插桩标记,需要使用常用的插桩工具软件对二进制代码添加插桩标记,例如,微软的visual studio开发工具的测试模块中,在运行单元测试样例代码时,即自带了为二进制代码文件进行插桩并生成代码覆盖率的功能。其他的像emma工具(可作为java程序开发工具eclipse的测试插件),C/C++程序的gcov动态链接库,也提供了相应的插桩机制,现有的测试工具软件可利用上述插桩工具对二进制文件进行插桩,从而生成代码覆盖信息。
但是,如前所述,现有的这些测试工具软件存在下述问题:即由于测试流程的顺序执行,因此总是在运行完所有单元测试样例代码后才会统计由插桩工具添加的插桩标记的执行情况,使得在测试过程中若待测程序崩溃(例如某个函数是除法,但没有考虑分母参数为0的情况,而单元测试样例中刚好将分母参数设置为0,导致程序崩溃),则已经执行完成的部分单元测试样例代码的测试过程的代码覆盖信息无法得到,需要在程序恢复后重复执行测试流程,在不发生崩溃的情况下测试完毕后方可得到相应的代码覆盖信息,导致重复测试过程较多,从而使得测试效率低下。
因此,为解决上述问题,特提出了获取代码覆盖信息的方法。该方法完全依赖于计算机程序,该计算机程序可运行于基于冯洛伊曼体系的计算机系统上。该计算机程序可以插件、函数库(例如java语言中的jar包)或动态链接库(例如C/C++语言中的dll文件)的形式由现有的测试软件或开发工具加载调用。
在一个实施例中,如图1所示,该方法包括:
步骤S102,加载待测源代码或二进制文件对其添加插桩标记。
在一个待测的程序文件为源代码文件或待测程序本身为解释执行的程序语言(例如python等)的应用场景中,该方法的运行可依赖于测试人员预先编写脚本程序。在测试开始后,执行该脚本程序批量为源代码文件中的程序语句添加插桩标记,例如,该脚本程序中可预先定义批量在函数定义语句中,条件分支判断中,switch语句中等位置添加标记性代码的逻辑,标记性代码可以是用于向内存中缓存函数名称、该函数的内存地址等的函数。执行添加插桩标记的脚本程序后,当测试过程中编译执行或解释执行该源代码到此标记处时,则执行标记性代码记录执行到的程序语句名称或内存地址。
而在一个待测的程序文件为二进制文件(已编译)的应用场景中,该方法的运行可依赖于前述的插桩程序(插桩程序也可以对源代码的程序文件进行插桩)。也就是说,可调用插桩程序的插桩函数加载待测源代码或二进制文件对其添加插桩标记。插桩工具通过在二进制文件中写入二进制码或在加载二进制文件到内存中时在相应的内存区域添加字节码来实现插桩。
例如,前述的emma插桩工具即为通过向.class文件(java语言的二进制文件)中插入字节码的方式来跟踪记录被运行代码信息的。emma插桩工具支持两种模式:On the fly和Offline模式。
On the fly模式往加载的类中加入字节码,相当于用emma插桩工具替换了原有的系统的应用级类加载器(application class loader),在通过应用级类加载器加载待测的.class文件时则在加载过程中添加字节码。
上述两种模式添加的字节码即为插桩标记。
也就是说,待测的源代码或二进制代码文件需要加载到内存中才能运行,从而进行测试。而本实施例中,在测试开始时,可利用插桩工具加载待测的源代码或二进制代码文件,而不是将其直接加载。
步骤S104,接收代码覆盖信息生成指令。
步骤S106,统计与代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息。
步骤S108,将提取的代码覆盖信息整合写入相应的代码覆盖报表。
代码覆盖信息生成指令即为用于触发该方法运行所依赖的插件、函数库或动态链接库执行相应的统计插桩标记的代码的计算机指令。该方法运行所依赖的插件、函数库或动态链接库可设置函数检测是否有代码覆盖信息生成指令输入,若是,则统计与代码覆盖信息生成指令对应的插桩标记。
在本实施例中,前述作为插桩标记添加的代码,可在被执行时,向特定的内存区域或磁盘区域写入插桩位置的内存地址、执行的时间戳、函数名称、程序语句名称等记录信息,每个被执行的作为插桩标记的代码对应相应的记录信息。在统计时,即可在该特定的内存区域或磁盘区域逐条读取记录信息。然后可按照前述的时间戳的顺序写入到整合的报表中。
代码覆盖报表可以txt、xml、html文件等形式存储,还可根据统计到的记录信息以及待测程序的代码量计算代码覆盖率(即执行的代码占整体待测代码的百分比)并写入到报表中。也可根据前述的时间戳计算代码的执行时间,并记录在报表中,从而方便测试人员进行性能分析。
在本实施例中,统计与代码覆盖信息生成指令对应的插桩标记的步骤可具体为:调用插桩程序的插桩统计函数统计与代码覆盖信息生成指令对应的插桩标记。
例如,前述的插桩程序可以是用于java程序开发的emma工具,C/C++程序的gcov动态链接库。
在使用eclipse开发工具开发java程序的应用场景(目前java程序开发的常用手段,其他java语言的开发工具例如IDEA等也可通过调用相应的emma插件的jar包实现该功能)中,使用emma工具插桩并统计,则调用emma工具包中的com.vladium.emma.rt.RT dumpCoverageData接口函数统计插桩标记。该函数被执行后,则可通过emma工具统计其在加载待测程序时添加的插桩标记。
而在进行C/C++的程序开发时,则可调用gcov动态链接库程序中的__gcov_flush接口函数统计插桩标记。该函数被执行后,则可通过调用gcov动态链接库中统计其在加载待测程序时添加的插桩标记。
调用插桩程序的插桩函数添加插桩标记,并调用插桩程序的插桩统计函数统计与代码覆盖信息生成指令对应的插桩标记。可利用插桩程序较成熟的插桩和统计算法,对二进制待测文件进行统计,因此不需要提供源代码,使得测试工具不仅能用于白盒测试,也可用于黑盒测试。
优选的,在使用eclipse开发java程序的应用场景中,可将本方法运行所基于的计算机程序打包成jar包并放置于相应的classpath下,即可调用作为插桩程序的emma工具包插桩和统计。
进一步的,统计与代码覆盖信息生成指令对应的插桩标记的步骤之后还包括:提取与统计的插桩标记对应的统计位置信息。
相应的,在本实施例中,将提取的代码覆盖信息整合写入相应的代码覆盖报表的步骤为:根据统计位置信息将提取的代码覆盖信息整合写入相应的代码覆盖报表。
统计位置信息可以是内存地址、程序语句名称或时间戳等用于定位的信息。在本实施例中,若在一次测试过程内,多次接收到代码覆盖信息生成指令,则将对插桩标记进行多次统计,因此部分插桩标记将被重复统计。引入统计位置信息作为参考后,在将代码覆盖信息写入代码覆盖报表时,则可将重复的内存地址、程序语句名称或时间戳对应的插桩标记的记录信息整合。也就是说,可根据与代码覆盖信息对应的内存地址、程序语句名称或时间戳等参考信息以增量地方式将插桩标记的记录信息写入报表,从而避免重复。
进一步的,前述的接收代码覆盖信息生成指令的方式可至少包括三种:
1.用户通过输入设备输入代码覆盖信息生成指令实时获取代码覆盖信息。即接收代码覆盖信息生成指令的步骤可具体为:接收通过输入设备输入的代码覆盖信息生成指令。
2.设置定时器,通过定时器以计划任务的方式定时获取代码覆盖信息。即接收代码覆盖信息生成指令的步骤之前还包括:设置定时器对象并启动;检测定时器对象触发的计划任务事件,并生成代码覆盖信息生成指令。
3.在测试结束后自动获取代码覆盖信息。即接收代码覆盖信息生成指令的步骤之前还包括:检测源代码或二进制文件的执行是否结束,若是,则触发代码覆盖信息生成指令。
例如,在一个用户通过输入设备输入代码覆盖信息生成指令的应用场景中,其流程如图2所示。测试人员可在每执行一个单元测式样例代码的脚本时,手动输入(键盘或鼠标点击按钮等方式)代码覆盖信息生成指令。相当于对该单元测式样例代码的脚本的测试过程进行了保存。若某个单元测式样例代码的脚本在执行时导致程序崩溃需要重启重新进行测试时,可避免对已执行过的测试流程进行重复执行,从而节约测试时间。
而在一个使用定时器定时生成指令的应用场景中,其流程如图3所示。测试人员可预先设置定时的时间参数(具体时刻或周期时长),然后由定时器对象(例如java程序中的Timer类)在时刻抵达时触发事件生成代码覆盖信息生成指令。若测试人员设置获取代码覆盖信息的周期为5分钟,则每隔5分钟自动获取代码覆盖信息。若某个单元测式样例代码的脚本在执行时导致程序崩溃需要重启并重新进行测试时,也可避免对已执行过的测试流程进行重复执行,从而节约测试时间,从而节约测试时间。而且相对于前述测试人员通过输入设备输入的方式,测试人员不需要频繁输入指令而只需要设置参数后(也可预先设置默认的定时参数)自动进行获取,提高了操作的便利性。
在一个使用测试程序完自动获取代码覆盖信息的应用场景中,其流程则如图4所示。可在测试流程中加入终止测试的代码,并在该代码中加入触发程序测试结束事件的代码。则在测试流程运行结束时执行该代码,并触发相应的事件。该方法运行所基于的插件、函数库或动态链接库中则可设置函数检测该事件,从而判断程序是否测试完成,进而生成代码覆盖信息生成指令。使得测试过程在结束后能够自动对代码覆盖信息进行获取而不需要测试人员手动输入,从而提高了操作的便利性。
在一个实施例中,如图5所示,一种获取代码覆盖信息的装置,包括:
代码插桩模块102,用于加载待测源代码或二进制文件对其添加插桩标记。
指令接收模块104,用于接收代码覆盖信息生成指令。
插桩统计模块106,用于统计与代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息。
报告生成模块108,用于将提取的代码覆盖信息整合写入相应的代码覆盖报表。
在本实施例中,代码插桩模块102用于调用插桩程序的插桩函数加载待测源代码或二进制文件对其添加插桩标记。
插桩统计模块106用于调用插桩程序的插桩统计函数统计与代码覆盖信息生成指令对应的插桩标记。
在本实施例中,插桩统计模块106还用于提取与统计的插桩标记对应的统计位置信息。
报告生成模块108还用于根据统计位置信息将提取的代码覆盖信息整合写入相应的代码覆盖报表。
在本实施例中,如图6所示,该获取代码覆盖信息的装置还包括第一指令生成模块110,用于检测源代码或二进制文件的执行是否结束,若是,则触发代码覆盖信息生成指令。
在本实施例中,指令接收模块104还用于接收通过输入设备输入的代码覆盖信息生成指令。
在本实施例中,如图6所示,该获取代码覆盖信息的装置还包括第二指令生成模块112,用于设置定时器对象并启动;检测定时器对象触发的计划任务事件,并生成代码覆盖信息生成指令。
上述获取代码覆盖信息的方法及装置中,只要在测试过程中接收到任意方式触发的代码覆盖信息生成指令(用户输入、定时触发、结束触发等方式)即获取已测试过程涉及的代码覆盖信息,并以整合的方式写入代码覆盖报表存储。使得在待测程序出现崩溃时,能够避免部分重复的测试过程,从而提高测试效率。
对于测试人员而言,其只需要输入(手动输入、设置定时输入等方式)代码覆盖信息生成指令即可实现对代码覆盖信息的获取,因此也增加了测试人员对测试过程的控制力度。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种获取代码覆盖信息的方法,包括:
加载待测源代码或二进制文件对其添加插桩标记;
接收代码覆盖信息生成指令;
统计与所述代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息;
将提取的代码覆盖信息整合写入相应的代码覆盖报表。
2.根据权利要求1所述的获取代码覆盖信息的方法,其特征在于,所述加载待测源代码或二进制文件对其添加插桩标记的步骤为:
调用插桩程序的插桩函数加载待测源代码或二进制文件对其添加插桩标记;
所述统计与所述代码覆盖信息生成指令对应的插桩标记的步骤为:
调用所述插桩程序的插桩统计函数统计与所述代码覆盖信息生成指令对应的插桩标记。
3.根据权利要求1或2所述的获取代码覆盖信息的方法,其特征在于,所述统计与所述代码覆盖信息生成指令对应的插桩标记的步骤之后还包括:
提取与所述统计的插桩标记对应的统计位置信息;
所述将提取的代码覆盖信息整合写入相应的代码覆盖报表的步骤为:
根据所述统计位置信息将提取的代码覆盖信息整合写入相应的代码覆盖报表。
4.根据权利要求1所述的获取代码覆盖信息的方法,其特征在于,所述接收代码覆盖信息生成指令的步骤之前还包括:
检测所述源代码或二进制文件的执行是否结束,若是,则触发代码覆盖信息生成指令。
5.根据权利要求1所述的获取代码覆盖信息的方法,其特征在于,所述接收代码覆盖信息生成指令的步骤为:
接收通过输入设备输入的代码覆盖信息生成指令。
6.根据权利要求1所述的获取代码覆盖信息的方法,其特征在于,所述接收代码覆盖信息生成指令的步骤之前还包括:
设置定时器对象并启动;
检测所述定时器对象触发的计划任务事件,并生成代码覆盖信息生成指令。
7.一种获取代码覆盖信息的装置,其特征在于,包括:
代码插桩模块,用于加载待测源代码或二进制文件对其添加插桩标记;
指令接收模块,用于接收代码覆盖信息生成指令;
插桩统计模块,用于统计与所述代码覆盖信息生成指令对应的插桩标记,提取相应的代码覆盖信息;
报告生成模块,用于将提取的代码覆盖信息整合写入相应的代码覆盖报表。
8.根据权利要求7所述的获取代码覆盖信息的装置,其特征在于,所述代码插桩模块用于调用插桩程序的插桩函数加载待测源代码或二进制文件对其添加插桩标记;
插桩统计模块用于调用所述插桩程序的插桩统计函数统计与所述代码覆盖信息生成指令对应的插桩标记。
9.根据权利要求7或8所述的获取代码覆盖信息的装置,其特征在于,所述插桩统计模块还用于提取与所述统计的插桩标记对应的统计位置信息;
所述报告生成模块还用于根据所述统计位置信息将提取的代码覆盖信息整合写入相应的代码覆盖报表。
10.根据权利要求7所述的获取代码覆盖信息的装置,其特征在于,所述装置还包括第一指令生成模块,用于检测所述源代码或二进制文件的执行是否结束,若是,则触发代码覆盖信息生成指令。
11.根据权利要求7所述的获取代码覆盖信息的装置,其特征在于,所述指令接收模块还用于接收通过输入设备输入的代码覆盖信息生成指令。
12.根据权利要求7所述的获取代码覆盖信息的装置,其特征在于,所述装置还包括第二指令生成模块,用于设置定时器对象并启动;检测所述定时器对象触发的计划任务事件,并生成代码覆盖信息生成指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410447155.XA CN104199773B (zh) | 2014-09-03 | 2014-09-03 | 获取代码覆盖信息的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410447155.XA CN104199773B (zh) | 2014-09-03 | 2014-09-03 | 获取代码覆盖信息的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104199773A true CN104199773A (zh) | 2014-12-10 |
CN104199773B CN104199773B (zh) | 2017-08-25 |
Family
ID=52085069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410447155.XA Active CN104199773B (zh) | 2014-09-03 | 2014-09-03 | 获取代码覆盖信息的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199773B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375941A (zh) * | 2014-12-11 | 2015-02-25 | 无锡江南计算技术研究所 | 可执行程序测试用例集二进制代码覆盖率自动化评估方法 |
CN105573915A (zh) * | 2015-12-16 | 2016-05-11 | 北京奇虎科技有限公司 | 一种基于代码覆盖率的测试方法和装置 |
CN105630671A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 代码覆盖率报告的生成方法及装置 |
CN106155897A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
CN106155900A (zh) * | 2015-04-17 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种代码测试监测方法、装置及设备 |
CN106155909A (zh) * | 2016-07-26 | 2016-11-23 | 网易(杭州)网络有限公司 | 代码覆盖率测试结果的处理方法及装置 |
CN106647405A (zh) * | 2016-12-27 | 2017-05-10 | 贵州西部丽城生态环境发展有限责任公司 | 一种易扩展的除臭飘香机控制方法 |
CN109460357A (zh) * | 2018-10-19 | 2019-03-12 | 北京新能源汽车股份有限公司 | 一种代码覆盖率的测试方法、装置和设备 |
CN109992511A (zh) * | 2019-03-25 | 2019-07-09 | 口碑(上海)信息技术有限公司 | 获取代码测试覆盖率的装置及方法 |
CN110059009A (zh) * | 2018-04-13 | 2019-07-26 | 百度(美国)有限责任公司 | 用于测试代码文件的方法和装置 |
CN110795329A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 覆盖率测试方法及系统、处理器、存储介质 |
CN110928776A (zh) * | 2019-11-15 | 2020-03-27 | 武汉极意网络科技有限公司 | 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备 |
CN111026630A (zh) * | 2018-10-09 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 代码覆盖率的统计方法、装置和系统 |
CN111078563A (zh) * | 2019-12-18 | 2020-04-28 | 上海品顺信息科技有限公司 | 覆盖率数据处理方法、终端设备及计算机可读存储介质 |
CN111930627A (zh) * | 2020-08-12 | 2020-11-13 | 中国工商银行股份有限公司 | Egl编程语言的代码覆盖率确定方法及装置 |
WO2024193153A1 (zh) * | 2023-03-17 | 2024-09-26 | 华为云计算技术有限公司 | 处理源代码的方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301813A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Testing Software Applications with Schema-based Fuzzing |
CN101833500A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于Agent的嵌入式软件智能测试方法 |
CN102141958A (zh) * | 2011-03-09 | 2011-08-03 | 中国矿业大学 | 面向缺陷的路径覆盖测试数据进化生成方法 |
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
-
2014
- 2014-09-03 CN CN201410447155.XA patent/CN104199773B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301813A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Testing Software Applications with Schema-based Fuzzing |
CN101833500A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于Agent的嵌入式软件智能测试方法 |
CN102141958A (zh) * | 2011-03-09 | 2011-08-03 | 中国矿业大学 | 面向缺陷的路径覆盖测试数据进化生成方法 |
CN103425573A (zh) * | 2012-05-24 | 2013-12-04 | 腾讯科技(深圳)有限公司 | 代码测试信息收集方法及系统 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375941A (zh) * | 2014-12-11 | 2015-02-25 | 无锡江南计算技术研究所 | 可执行程序测试用例集二进制代码覆盖率自动化评估方法 |
CN104375941B (zh) * | 2014-12-11 | 2017-09-22 | 无锡江南计算技术研究所 | 可执行程序测试用例集二进制代码覆盖率自动化评估方法 |
CN106155897A (zh) * | 2015-04-16 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
CN106155897B (zh) * | 2015-04-16 | 2020-12-08 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及装置 |
CN106155900A (zh) * | 2015-04-17 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 一种代码测试监测方法、装置及设备 |
CN106155900B (zh) * | 2015-04-17 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 一种代码测试监测方法、装置及设备 |
CN105573915B (zh) * | 2015-12-16 | 2019-07-05 | 北京奇虎科技有限公司 | 一种基于代码覆盖率的测试方法和装置 |
CN105573915A (zh) * | 2015-12-16 | 2016-05-11 | 北京奇虎科技有限公司 | 一种基于代码覆盖率的测试方法和装置 |
CN105630671A (zh) * | 2015-12-16 | 2016-06-01 | 北京奇虎科技有限公司 | 代码覆盖率报告的生成方法及装置 |
CN105630671B (zh) * | 2015-12-16 | 2019-03-08 | 北京奇虎科技有限公司 | 代码覆盖率报告的生成方法及装置 |
CN106155909A (zh) * | 2016-07-26 | 2016-11-23 | 网易(杭州)网络有限公司 | 代码覆盖率测试结果的处理方法及装置 |
CN106647405A (zh) * | 2016-12-27 | 2017-05-10 | 贵州西部丽城生态环境发展有限责任公司 | 一种易扩展的除臭飘香机控制方法 |
CN110059009A (zh) * | 2018-04-13 | 2019-07-26 | 百度(美国)有限责任公司 | 用于测试代码文件的方法和装置 |
CN110795329A (zh) * | 2018-08-02 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 覆盖率测试方法及系统、处理器、存储介质 |
CN111026630A (zh) * | 2018-10-09 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 代码覆盖率的统计方法、装置和系统 |
CN111026630B (zh) * | 2018-10-09 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 代码覆盖率的统计方法、装置和系统 |
CN109460357A (zh) * | 2018-10-19 | 2019-03-12 | 北京新能源汽车股份有限公司 | 一种代码覆盖率的测试方法、装置和设备 |
CN109992511A (zh) * | 2019-03-25 | 2019-07-09 | 口碑(上海)信息技术有限公司 | 获取代码测试覆盖率的装置及方法 |
CN110928776A (zh) * | 2019-11-15 | 2020-03-27 | 武汉极意网络科技有限公司 | 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备 |
CN111078563A (zh) * | 2019-12-18 | 2020-04-28 | 上海品顺信息科技有限公司 | 覆盖率数据处理方法、终端设备及计算机可读存储介质 |
CN111930627A (zh) * | 2020-08-12 | 2020-11-13 | 中国工商银行股份有限公司 | Egl编程语言的代码覆盖率确定方法及装置 |
CN111930627B (zh) * | 2020-08-12 | 2023-09-26 | 中国工商银行股份有限公司 | Egl编程语言的代码覆盖率确定方法及装置 |
WO2024193153A1 (zh) * | 2023-03-17 | 2024-09-26 | 华为云计算技术有限公司 | 处理源代码的方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104199773B (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199773A (zh) | 获取代码覆盖信息的方法及装置 | |
CN108595329B (zh) | 一种应用测试方法、装置及计算机存储介质 | |
Amalfitano et al. | A general framework for comparing automatic testing techniques of Android mobile apps | |
Hu et al. | Efficiently, effectively detecting mobile app bugs with appdoctor | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
US7613954B2 (en) | Test executive with stack corruption detection | |
Liu et al. | Capture-replay testing for android applications | |
CN104657247B (zh) | 基于jtag调试方式实现通用型故障注入系统和故障注入方法 | |
CN103377120A (zh) | 一种应用程序测试方法及装置 | |
CN106649107B (zh) | 安卓系统稳定性的自动化测试方法及装置 | |
CN106776338B (zh) | 一种测试方法、装置及服务器 | |
CN110196801B (zh) | 一种基于代码覆盖率的测试方法及装置 | |
US9069894B2 (en) | Data collisions in concurrent programs | |
CN105512562B (zh) | 一种漏洞挖掘方法、装置及电子设备 | |
CN117093353B (zh) | 一种中断控制方法、装置、电子设备及可读存储介质 | |
CN111679984B (zh) | 一种性能分析方法和装置 | |
Mahmud et al. | Api change impact analysis for android apps | |
CN112416733B (zh) | 一种内存检测方法、内存检测装置及智能设备 | |
CN110633199A (zh) | 用于支持智能合约的区块链的测试装置、方法及介质 | |
KR102165747B1 (ko) | 보안성을 고려한 경량 크래시 리포트 기반 디버깅 방법 | |
CN106708722A (zh) | 一种应用测试方法、装置及电子设备 | |
CN116795726B (zh) | 一种在线调试Linux内核的方法 | |
CN108874658A (zh) | 一种沙箱分析方法、装置、电子设备及存储介质 | |
CN106970862B (zh) | 一种内存抖动自动化测试方法及装置 | |
us Saqib et al. | Functionality, performance, and compatibility testing: a model based approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |