CN103425573A - 代码测试信息收集方法及系统 - Google Patents

代码测试信息收集方法及系统 Download PDF

Info

Publication number
CN103425573A
CN103425573A CN2012101644327A CN201210164432A CN103425573A CN 103425573 A CN103425573 A CN 103425573A CN 2012101644327 A CN2012101644327 A CN 2012101644327A CN 201210164432 A CN201210164432 A CN 201210164432A CN 103425573 A CN103425573 A CN 103425573A
Authority
CN
China
Prior art keywords
code
information
current line
row
tested
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
Application number
CN2012101644327A
Other languages
English (en)
Other versions
CN103425573B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201210164432.7A priority Critical patent/CN103425573B/zh
Publication of CN103425573A publication Critical patent/CN103425573A/zh
Application granted granted Critical
Publication of CN103425573B publication Critical patent/CN103425573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种代码测试信息收集方法及系统,该方法包括步骤:通过自动化发布系统将被测代码部署到测试环境;在所述测试环境中对所述被测代码进行测试,获得代码测试信息,所述代码测试信息可以是代码覆盖率信息和/或代码差异化信息。本发明方案在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码测试信息,实现了代码测试信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码测试信息的收集,减少了测试人员的工作量,提高了效率。

Description

代码测试信息收集方法及系统
技术领域
本发明涉及测试领域,特别涉及一种代码测试信息收集方法以及一种代码测试信息收集系统。
背景技术
在目前的软件应用中,在开发出软件后,通常需要对软件代码进行测试,并在对代码进行测试的过程中收集代码测试信息,以基于所收集的代码测试信息来对所编写的软件的代码的性能进行评估,这里的代码测试信息根据实际测试目的不同会有所不同,其中一种代码测试信息可以是代码覆盖率。代码覆盖率(Code Coverage)是指代码在执行过程中的覆盖情况,代码覆盖率是反映测试用例对被测代码覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标,而代码差异化则是新旧代码的差异化数据信息。
以代码测试信息为代码覆盖率为例,现有大多数的代码覆盖率信息收集工具,在实现代码覆盖率信息收集时,其中一种方式是利用一些测试框架和代码覆盖率信息收集工具,例如PHP可以使用PHPUnit和Xdebug,C/C++可以使用gtest和lcov实现代码覆盖率信息的收集,同时生成可视化的代码覆盖率报告供测试人员参考,另外一种方式是利用这些代码覆盖率信息收集工具在功能测试过程中实现代码覆盖率信息的收集。这两种收集方式,在实现时都需要大量的人工参与,对测试人员不透明,使用起来非常不方便,会影响到测试人员的正常测试流程,为测试人员增加了额外的工作量,从而影响到了代码覆盖率信息收集的效率。
发明内容
针对上述现有技术中存在的问题,本发明的其中一个目的在于提供一种代码测试信息收集方法,另一个目的在于提供一种代码测试信息收集系统,其可以无感知地实现代码测试信息的收集,减少测试人员的工作量。
为达到上述目的,本发明采用以下技术方案:
一种代码测试信息收集方法,包括步骤:
通过自动化发布系统将被测代码部署到测试环境;
在所述测试环境中对所述被测代码进行测试,获得代码测试信息,所述代码测试信息包括代码覆盖率信息和/或代码差异化信息。
一种代码测试信息收集系统,包括:
导入单元,用于通过自动化发布系统将被测代码部署到测试环境;
测试单元,用于在所述测试环境中对所述被测代码进行测试,获得代码测试信息,所述代码测试信息包括代码覆盖率信息和/或代码差异化信息。
根据上述本发明方案,其是通过自动化发布系统将被测代码部署到测试环境后,再在测试环境中对被测代码进行测试得到代码测试信息,从而实现对代码测试信息的收集,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测代码部署到测试环境后进行测试从而收集代码测试信息,实现了代码测试信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码测试信息的收集,减少了测试人员的工作量,提高了效率。
附图说明
图1是本发明的代码测试信息收集方法实施例一的流程示意图;
图2是本发明的代码测试信息收集方法实施例二的流程示意图;
图3是图2中所示的方法生成可视化报告的实施例的流程示意图;
图4是本发明的代码测试信息收集方法实施例三的流程示意图;
图5是图4中所示的方法生成可视化报告的实施例的流程示意图;
图6是本发明的代码覆盖率信息收集方法实施例四的流程示意图;
图7是图6中所示的方法生成可视化报告的实施例的流程示意图;
图8是本发明的代码测试信息收集系统实施例一的结构示意图;
图9是本发明的代码测试信息收集系统实施例二的结构示意图;
图10是图9所示的分析单元的一个具体示例的结构示意图;
图11是本发明的代码测试信息收集系统实施例三的结构示意图;
图12是图11中所示的分析单元的一个具体示例的结构示意图;
图13是本发明的代码测试信息收集系统实施例四的结构示意图;
图14是图13中所示的分析单元的一个具体示例的结构示意图。
具体实施方式
以下结合其中的较佳实施例对本发明方案进行详细阐述,在下述各实施例的说明中,出于简便说明的目的,是以被测代码为被测源代码为例进行说明,本领域技术人员可以知晓的是,根据实际需要,下述各实施例中的被测源代码可以根据需测试的代码的名称(例如被测代码)进行替换,因此,下述说明仅仅是对本发明方案的举例说明,并不用以对本发明方案构成限定。
在下述各实施例的说明中,先对本发明的代码测试信息收集方法的各实施例进行举例说明,再对本发明的代码测试信息收集系统的各实施例进行距离说明。
以下先对本发明的代码测试信息收集方法的各实施例进行详细说明。
实施例一
图1中示出了本发明的代码测试收集方法实施例一的流程示意图。如图1所示,本实施例中的代码测试信息收集方法包括步骤:
步骤S101:通过自动化发布系统将被测代码部署到测试环境,所谓测试环境(test environment),是指测试运行其上的软件和硬件环境的描述,以及任何其它与被测软件交互的软件,包括驱动和桩等等,也是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,因此,在本发明的下述说明中,不对测试环境展开赘述;
步骤S102:在上述测试环境中对所述被测代码进行测试,获得代码测试信息,其中,这里的代码测试信息可以是代码覆盖率信息,也可以是代码差异化信息,也可以是代码覆盖率信息与代码差异化信息的组合。
根据本实施例中的方案,其是通过自动化发布系统将被测源代码部署到测试环境后,再在测试环境中对被测代码进行测试得到代码测试信息,从而实现对代码测试信息的收集,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码测试信息,实现了代码测试信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码测试信息的收集,减少了测试人员的工作量,提高了效率。
以下结合代码测试信息为代码覆盖率信息、代码差异化信息为例,分别对本发明的代码测试信息收集方法进行详细说明。
实施例二
图2中示出了本发明的代码测试信息收集方法实施例二的流程示意图,在本实施例二的方案中,与上述实施例一的不同之处主要在于,本实施例中是以仅仅收集代码覆盖率信息为例进行说明。
如图2所示,在该实施例二中,本发明的代码测试信息收集方法包括步骤:
步骤S201:通过自动化发布系统将被测源代码部署到测试环境;
步骤S202:对上述部署到测试环境的被测源代码进行插桩;
步骤S203:执行功能测试用例,在执行功能测试用例时收集代码覆盖率信息;
步骤S204:对上述被测源代码移桩后将上述被测源代码进行发布。
根据如上所述的本实施例中的代码测试信息收集方法,其是通过自动化发布系统将被测源代码部署到测试环境后,再对被测源代码进行插桩,然后执行测试功能用例,并在执行功能测试用例时收集代码覆盖率信息,并在测试完毕后,将移桩后的被测源代码进行发布,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码覆盖率信息,由此可见,本实施例中的方案是实现了代码覆盖率信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码覆盖率信息的收集,减少了测试人员的工作量,提高代码覆盖率信息收集的效率。
上述步骤S202中对被测源代码进行插桩时,可以采用已有的以及在以后出现的各种可能的方式进行,用于插桩的代码,可以根据实际需要进行设定,在此不予赘述。所谓插桩,是指在不破坏被测程序原有逻辑完整性的情况下,在被测程序的相应位置插入用于插桩的代码(也称之为探针),这些探针本质上是进行信息采集的代码段,通过探针的执行并输出程序的运行特征数据,从而基于这些特征数据的分析,揭示程序的内部行为和特性。在测试完毕后,需要将这些插入的探针去除,以保留被测程序的完整性,即步骤S204中的移桩操作。
在执行功能测试用例时对代码覆盖率信息的收集,可以是在执行功能测试用例的后台进行,无需人工干预,对用户完全透明,因此可以在用户毫无感知的情况下收集到代码覆盖率信息。所谓无感知,是指对用户完全透明,用户只需正常完成测试工作即可,在测试过程中感知不到代码覆盖率信息收集工具的存在。具体的代码覆盖率信息的收集方式,可以采用已有的以及在以后出现的各种可能的方式进行,在此不予赘述。
其中,在收集到代码覆盖率信息之后,还可以对该代码覆盖率信息进行分析、生成可视化报告。该对代码覆盖率信息进行分析、生成可视化报告的过程,可以是任何时候进行,在其中一种实现方式中,可以是在测试完毕后、对被测源代码移桩之前进行,因此,如图2所示,在本实施例的方法中,在上述步骤S203与步骤S204之间还包括步骤:
步骤S2034:测试完毕后,接收将上述被测源代码进行发布的指令,对上述代码覆盖率信息进行分析,生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,在收集到代码覆盖率信息之后,还可以将该代码覆盖率信息转换成第一预设格式类型信息后予以存储,以方便后续过程中对代码覆盖率信息分析后生成可视化报告。生成的可视化报告可提供给测试人员,供测试人员对测试过程及结果进行评估,例如基于代码覆盖率信息对测试用例是否够全面进行评估等等。此外,该第一预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,在收集到代码覆盖率信息之后,可以将该代码覆盖率信息以其当前格式直接予以存储,在需要进行分析、生成可视化报告时,读取出该代码覆盖率信息后,再将该代码覆盖率信息转换为第一预设格式类型,以便于生成可视化报告,该第一预设格式类型,可以依据实际需要设定为任何一种方式,例如json格式类型或者xml格式类型等等。
图3中示出了图2所示的代码测试信息收集方法在对代码覆盖率信息进行分析生成可视化报告时实施例的流程示意图,如图3所示,该实施例二中生成可视化报告的步骤包括:
获取被测源代码的代码统计信息,这里的该代码统计信息标明了被测源代码中哪些行是可执行行,哪些行是注释行;
加载上述获得的代码覆盖率信息,该代码覆盖率信息,实际上标明了哪些行是覆盖行,方便后续过程中对各行是否为覆盖行的判断;
读取被测源代码的一行源代码,根据上述代码覆盖率信息判断当前行是否为覆盖行,其中,在对源代码行进行读取时,可以是按照程序编码顺序依次对各行源代码进行读取,也可以是采用其他的设定方式进行读取,例如随机读取等等;
若是覆盖行,判断该当前行是否为可执行行,若是可执行行,将该当前行的样式设置为覆盖样式,若不是可执行行,将该当前行的样式设置为普通样式;
若不是覆盖行,判断该当前行是否为可执行行,若是可执行行,将该当前行的样式设置为未覆盖样式,若不是可执行行,将该当前行的样式设置为普通样式;请对以上三种样式做出阐述。
若该被测源代码的各行源代码均已读取完毕,则完成可视化报告的生成过程,若未读取完毕,则读取下一行源代码后,针对所读取的下一行源代码执行上述判断其是否为覆盖行、可执行行的判断过程,直至被测源代码中的各行源代码均完成该判断过程。
其中,上述代码统计信息,可以是在收集代码覆盖率信息的同时予以分析收集,对被测源代码进行分析统计、获得代码统计信息的方式可以采用已有的或者以后出现的各种可能的方式进行,具体的收集代码统计信息的方式在此不予赘述。
其中,上述覆盖样式、普通样式、未覆盖样式,是为了从生成的可视化报告的结果直观地对各行的测试结果进行分析,将当前行的样式设置为覆盖样式,则说明该当前行为可执行行且在测试过程中被覆盖,将当前行的样式设置为未覆盖样式,则说明该当前行为可执行行且在测试过程中未被覆盖,将当前行的样式设置为普通样式,则说明当前行不是可执行行,基于各行的样式的设置,测试人员可以一目了然地对测试结果进行分析。
在对代码覆盖率信息进行分析时,也可以不按上述步骤先对覆盖行、再对可执行行的步骤进行判断,对覆盖行、可执行行的判定顺序不限,只要是能够将不是可执行行的源代码行的样式设置为普通样式、将是可执行行且是覆盖行的源代码行的样式设置为覆盖样式、将是可执行行且不是覆盖行的源代码行的样式设置为未覆盖样式即可。
实施例三
图4中示出了本发明的代码测试信息收集方法实施例三的流程示意图,在本实施例中,与上述实施例一的不同之处主要在于,本实施例中是以仅收集代码差异化信息为例进行说明。
如图4所示,本实施例中的代码测试信息收集方法包括步骤:
步骤S401:通过自动化发布系统将被测源代码部署到测试环境;
步骤S402:检测与上述被测源代码对应的旧版源代码;
步骤S403:根据上述被测源代码、上述旧版源代码生成代码差异化信息。
根据如上所述的本实施例中的代码测试信息收集方法,其不仅实现了代码差异化信息的收集,而且其是通过自动化发布工具将被测源代码部署到测试环境后,再收集代码差异化信息,然后对被测源代码进行发布,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码差异化信息,由此可见,本实施例中的方案是实现了代码差异化信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码差异化信息的收集,减少了测试人员的工作量,提高代码差异化信息收集的效率。
上述与被测源代码对应的旧版源代码,通常情况下可以设置为与当前的被测源代码最近的旧版源代码,即最新的旧版源代码。当然,如果需要对早前的某个版本的旧版源代码与被测源代码进行评估,也可以将其设置为所需要版本的旧版源代码,可以依据实际需要进行设定,在此不予赘述。
对代码差异化信息的收集,可以是在执行功能测试用例的过程中进行,无需人工干预,对用户完全透明,因此可以在用户毫无感知的情况下收集到代码差异化信息。所谓无感知,是指对用户完全透明,用户只需正常完成测试工作即可,在测试过程中感知不到代码差异化信息收集工具的存在。具体的代码差异化信息的收集方式,可以采用已有的或者以后出现的各种可能的方式进行,具体的代码差异化信息的收集方式在此不予赘述。
其中,在收集到代码差异化信息之后,还可以对该代码差异化信息进行分析,生成可视化报告。该对代码差异化信息进行分析、生成可视化报告的过程,可以是在得到代码差异化信息之后的任何时候进行,在其中一种实现方式中,可以是在测试完毕后进行,因此,如图4所示,在本实施例的方法中,在上述步骤S403之后还包括步骤:
步骤S404:执行功能测试用例,在测试完毕后、接收到将被测源代码进行发布的指令时,对上述代码差异化信息进行分析生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,在收集到代码差异化信息之后,还可以将该代码差异化信息转换成第二预设格式类型信息后予以存储,以方便后续过程中对代码差异化信息进行分析生成可视化报告。该第二预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,在收集到代码差异化信息之后,可以将该代码差异化信息以其当前格式直接予以存储,在需要进行分析生成可视化报告时,读取出该代码差异化信息后,再将该代码差异化信息转换为第二预设格式类型,以便于生成可视化报告,该第二预设格式类型,可以依据实际需要设定为任何一种哦方式,例如json格式类型或者xml格式类型等等。
图5中示出了本实施例中对代码差异化信息进行分析生成可视化报告的流程示意图,如图5所示,对代码差异化信息进行分析生成可视化报告的步骤包括:
加载上述代码差异化信息,该代码差异化信息,实际上标明了哪些行是变更行,方便后续过程中对是否为变更行的判断;
读取被测源代码行中的一行源代码;
根据上述代码差异化信息判断当前行是否为变更行:若是变更行,将当前行的样式设置为变更样式,若不是变更行,将当前行的样式设置为非变更样式;
若该被测源代码的各行源代码均已读取完毕,则完成可视化报告的生成过程,若未读取完毕,则读取下一行源代码后,针对所读取的下一行源代码执行上述判断其是否为变更行的判断过程,直至被测源代码中的各行源代码均完成该判断过程。
其中,这里的变更样式、未变更样式,是为了从生成的可视化报告的结果直观地对各行的测试结果进行分析,将当前行的样式设置为变更样式,则说明该当前行发生了变更,将当前行的样式设置为未变更样式,则说明该当前行未发生变更,基于各行的样式的设置,测试人员可以一目了然地对测试结果进行分析。
实施例四
图6中示出了本发明的代码测试信息收集方法实施例四的流程示意图,在本实施例中,与上述实施例二的不同之处主要在于,本实施例中的方案还实现了代码差异化信息的收集,即同时收集了代码覆盖率信息与代码差异化信息。
如图6所示,本实施例四中的代码测试信息收集方法包括步骤:
步骤S601:通过自动化发布系统将被测源代码部署到测试环境;
步骤S602:对上述部署到测试环境的被测源代码进行插桩;
步骤S603:检测与上述被测源代码对应的旧版源代码,根据该被测源代码、该旧版源代码生成代码差异化信息;
步骤S604:执行功能测试用例,在执行功能测试用例时收集代码覆盖率信息;
步骤S605:对上述被测源代码移桩后将被测源代码进行发布。
根据本实施例中的方法,不仅实现了代码覆盖率信息的收集,还实现了代码差异化信息的收集,而代码差异化信息与代码覆盖率信息的结合表明了新旧版本代码差异部分被覆盖的情况,有助于测试人员对变更代码测试程度的评估,可以评估增量测试的完整性,具有重要的意义。
上述与被测源代码对应的旧版源代码,通常情况下可以设置为与当前的被测源代码最近的旧版源代码,即最新的旧版源代码。当然,如果需要对早前的某个版本的旧版源代码与被测源代码进行评估,也可以将其设置为所需要版本的旧版源代码,可以依据实际需要进行设定,在此不予赘述。
其中,在收集到代码差异化信息、代码覆盖率信息之后,还可以对该代码差异化信息、代码覆盖率信息进行分析、生成可视化报告。该对代码差异化信息和代码覆盖率信息进行分析、生成可视化报告的过程,可以是任何时候进行,在其中一种实现方式中,可以是在测试完毕后、对被测源代码移桩前进行,因此,如图6所示,在本实施例的方法中,在上述步骤S604与步骤S605之间还包括步骤:
步骤S6045:测试完毕后,接收将上述被测源代码进行发布的指令,对上述代码差异化信息、代码覆盖率信息进行分析,生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,在收集到代码差异化信息之后,还可以将该代码差异化信息转换成第二预设格式类型信息后予以存储,以方便后续过程中对代码差异化信息分析后生成可视化报告。该第二预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,在收集到代码差异化信息之后,可以将该代码差异化信息以其当前格式直接进行存储,在需要进行分析、生成可视化报告时,读取出该代码差异化信息后,再将该代码差异化信息转换为第二预设格式类型,以便于生成可视化报告,该第二预设格式类型,可以依据实际需要设定为任何一种哦方式,例如json格式类型或者xml格式类型等等。
上述代码覆盖率信息转换成的第一预设格式类型信息与该代码差异化信息转换成的第二预设格式类型可以相同也可以不同,通常情况下可设置为相同,以便于操作。
图7中示出了本实施例中对代码差异化信息、代码覆盖率信息进行分析生成可视化报告的流程示意图,如图7所示,将代码差异化信息、代码覆盖率信息的分析结果生成可视化报告的步骤包括:
获取被测源代码的代码统计信息,这里的代码统计信息标明了被测源代码中哪些行是可执行行,哪些行是注释行;
加载上述收集的代码差异化信息、代码覆盖率信息,该代码差异化信息,实际上标明了哪些行是变更行,方便后续过程中对是否为变更行的判断,该代码覆盖率信息,实际上标明了哪些行是覆盖行,方便后续过程中对是否为覆盖行的判断;
读取被测源代码中的一行源代码;
根据上述代码差异化信息判断当前行是否为变更行:若是变更行,将当前行的样式设置为变更样式,若不是变更行,将当前行的样式设置为非变更样式;
根据上述代码覆盖率信息判断当前行是否为覆盖行:
若是覆盖行,判断该当前行是否为可执行行,若是可执行行,将该当前行的样式设置为覆盖样式,若不是可执行行,将该当前行的样式设置为普通样式;
若不是覆盖行,判断该当前行是否为可执行行,若是可执行行,将该当前行的样式设置为未覆盖样式,若不是可执行行,将该当前行的样式设置为普通样式;
若该被测源代码的各行源代码均已读取完毕,则完成可视化报告的生成过程,若未读取完毕,则读取下一行源代码后,针对所读取的下一行源代码执行上述判断其是否为变更行、覆盖行、可执行行的判断过程,直至被测源代码中的各行源代码均完成该判断过程。
其中,这里的变更样式、未变更样式,是为了从生成的可视化报告的结果直观地对各行的测试结果进行分析,将当前行的样式设置为变更样式,则说明该当前行发生了变更,将当前行的样式设置为未变更样式,则说明该当前行未发生变更,基于各行的样式的设置,测试人员可以一目了然地对测试结果进行分析。
在对代码差异化信息、代码覆盖率信息进行分析时,也可以不按上述步骤先对变更行、再对覆盖行与可执行行的步骤进行判断,对变更行、覆盖行、可执行行的判定顺序不限,只要是能够将是变更行的源代码行的样式设置为变更样式、将不是变更行的源代码行的样式设置为未变更样式、将不是可执行行的源代码行的样式设置为普通样式、将是可执行行且是覆盖行的源代码行的样式设置为覆盖样式、将是可执行行且不是覆盖行的源代码行的样式设置为未覆盖样式即可。
其中上述代码统计信息,可以是在收集代码差异化信息或者代码覆盖率信息的同时予以分析收集,对被测源代码进行分析统计、获得代码统计信息的方式可以采用现有技术中已有的方式,在此不予赘述。
本实施例四中的代码测试信息收集方法的其他技术特征与上述实施例二中的相同,在此不予赘述。
根据上述本发明的代码测试信息收集方法,本发明还提供一种代码测试信息收集系统,以下针对本发明的代码测试信息收集系统的其中几个具体示例进行详细说明。
实施例一
图8中示出了本发明的代码测试信息收集系统实施例一的结构示意图。如图8所示,本实施例一中的代码测试信息收集系统包括:
导入单元801,用于通过自动化发布系统将被测代码部署到测试环境;
测试单元802,用于在上述测试环境中对所述被测代码进行测试,获得代码测试信息,其中,这里的代码测试信息可以是代码覆盖率信息,也可以是代码差异化信息,也可以是代码覆盖率信息与代码差异化信息的组合。
根据本实施例中的方案,其是通过自动化发布系统将被测源代码部署到测试环境后,再在测试环境中对被测代码进行测试得到代码测试信息,从而实现对代码测试信息的收集,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码测试信息,实现了代码测试信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码测试信息的收集,减少了测试人员的工作量,提高了效率。
以下结合代码测试信息为代码覆盖率信息、代码差异化信息为例,分别对本发明的代码测试信息收集系统进行详细说明。
实施例二
图9中示出了本发明的代码测试信息收集系统实施例二的结构示意图,在本实施例二的方案中,与上述实施例一中的不同之处主要在于,本实施例中是以仅仅收集代码覆盖率信息为例进行说明。
如图9所示,本实施例中的代码测试信息收集系统包括:
导入单元901,用于通过自动化发布系统将被测源代码部署到测试环境;
测试单元902,用于在上述测试环境中对所述被测代码进行测试,获得代码测试信息,这里的代码测试信息可以包括代码覆盖率信息。
其中,该测试单元902具体可以包括:
插桩单元9021,用于对上述部署到测试环境的被测源代码进行插桩;
代码覆盖率信息收集单元9022,用于在执行功能测试用例时收集上述部署到测试环境的被测源代码的代码覆盖率信息;
移桩单元9023,用于对上述被测源代码进行移桩,上述被测源代码经移桩后进行发布。
根据本实施例中的代码测试信息收集系统,其是通过自动化发布工具将被测源代码部署到测试环境后,再对被测源代码进行插桩,然后执行测试功能用例,并在执行功能测试用例时收集代码覆盖率信息,并在测试完毕后,将被测源代码移桩后进行发布,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码覆盖率信息,由此可见,本实施例中的方案是实现了代码覆盖率信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码覆盖率信息的收集,减少了测试人员的工作量,提高代码覆盖率信息收集的效率。
插桩单元9021对被测源代码进行插桩时,可以采用已有的以及在以后出现的各种可能的方式进行,用于插桩的代码,可以根据实际需要进行设定,在此不予赘述。所谓插桩,是指在不破坏被测程序原有逻辑完整性的情况下,在被测程序的相应位置插入用于插桩的代码(也称之为探针),这些探针本质上是进行信息采集的代码段,通过探针的执行并输出程序的运行特征数据,从而基于这些特征数据的分析,揭示程序的内部行为和特性。在测试完毕后,需要将这些插入的探针去除,以保留被测程序的完整性,即移桩单元9023中的移桩操作。
代码覆盖率信息收集单元9022对代码覆盖率信息的收集,可以是在执行功能测试用例的后台进行,无需人工干预,对用户完全透明,因此可以在用户毫无感知的情况下收集到代码覆盖率信息。所谓无感知,是指对用户完全透明,用户只需正常完成测试工作即可,在测试过程中感知不到代码覆盖率信息收集的存在。具体的代码覆盖率信息的收集方式,可以采用已有的以及在以后出现的各种可能的方式进行,在此不予赘述。
其中,在收集到代码覆盖率信息之后,还可以对该代码覆盖率信息进行分析、生成可视化报告。该对代码覆盖率信息进行分析、生成可视化报告的过程,可以是任何时候进行,在其中一种实现方式中,可以是在测试完毕后、对被测源代码移桩之前进行,因此,如图9所示,在本实施例的系统中,在上述代码覆盖率信息收集单元9022与插桩单元9021之间还包括:
分析单元90212,用于在接收到将被测源代码进行发布的指令时,对上述代码覆盖率信息进行分析生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,代码覆盖率信息收集单元9022在收集到代码覆盖率信息之后,还可以将该代码覆盖率信息转换成第一预设格式类型信息后予以存储,以方便后续过程中对代码覆盖率信息分析后生成可视化报告。生成的可视化报告可提供给测试人员,供测试人员对测试过程及结果进行评估,例如基于代码覆盖率信息对测试用例是否够全面进行评估等等。该第一预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,代码覆盖率信息收集单元9022在收集到代码覆盖率信息之后,可以将该代码覆盖率信息以其当前格式直接予以存储,分析单元90212在需要对代码覆盖率信息进行分析、生成可视化报告时,读取出该代码覆盖率信息后,再将该代码覆盖率信息转换为第一预设格式类型,以便于生成可视化报告,该第一预设格式类型,可以依据实际需要设定为任何一种哦方式,例如json格式类型或者xml格式类型等等。
图10中示出了图9中所示的分析单元90212在一个具体示例中的结构示意图,如图10所示,在本实施例二中,上述分析单元90212具体可以包括:
统计信息获取单元902121,用于获取被测源代码的代码统计信息;
加载单元902122,用于加载上述代码覆盖率信息;
行读取单元902123,用于读取被测源代码中的各行;
覆盖行判定单元902124,用于根据上述代码覆盖率信息判断当前行是否为覆盖行;
可执行行判定单元902125,用于根据上述代码统计信息判定当前行是否为可执行行;
样式设置单元902126,用于在覆盖行判定单元902124判定当前行是覆盖行、可执行行判定单元902125判定当前行是可执行行时,将当前行的样式设置为覆盖样式,在覆盖行判定单元902124判定当前行不是覆盖行、可执行行判定单元902125判定当前行是可执行行时,将该当前行的样式设置为未覆盖样式,否则将该当前行的样式设置为普通样式。
在对代码覆盖率信息进行分析时,对覆盖行、可执行行的判定顺序不限,只要是能够将不是可执行行的源代码行的样式设置为普通样式、将是可执行行且是覆盖行的源代码行的样式设置为覆盖样式、将是可执行行且不是覆盖行的源代码行的样式设置为未覆盖样式即可。
上述代码统计信息,可以直接利用已经分析统计好的代码统计信息,也可以由图9中所示的代码信息统计单元9024进行分析统计,即本实施例中的代码测试信息收集系统,还可以包括代码信息统计单元9024,用于对上述被测源代码进行分析统计,获得上述代码统计信息。
该代码统计信息,可以是在收集代码覆盖率信息的同时予以分析收集,对被测源代码进行分析统计、获得代码统计信息的方式可以采用各种可能的方式进行,在此不予赘述。
本实施例二中的代码测试信息收集系统,具体的代码测试信息的收集方法与上述本发明代码测试信息收集方法实施例二中的相同,在此不予赘述。
本实施例二的代码测试信息收集具体的代码测试信息的收集方式与上述本发明代码测试信息收集方法实施例二中的相同,在此不予赘述。
实施例三
图11中示出了本发明的代码测试信息收集系统实施例三的结构示意图,在本实施例三的方案中,与上述实施例一中的方案的不同之处主要在于,本实施例中是以仅仅收集代码差异化信息为例进行说明。
如图11所示,本实施例中的代码测试信息收集系统包括:
导入单元1101,用于通过自动化发布系统将被测源代码部署到测试环境;
测试单元1102,用于在上述测试环境中对所述被测代码进行测试,获得代码测试信息,这里的代码测试信息可以包括代码差异化信息,
其中,该测试单元1102具体包括:
代码差异化信息收集单元1121,用于检测与上述被测源代码对应的旧版源代码,并根据上述被测源代码、旧版源代码生成代码差异化信息。
根据如上所述的本实施例中的代码测试信息收集系统,其不仅实现了代码差异化信息的收集,而且是通过自动化发布工具将被测源代码部署到测试环境后,再收集代码差异化信息,然后将被测源代码进行发布,由于自动化发布系统可以实现文件的自动化发布,文件的传输无需人工干预,测试人员只需点几个按钮就可以将文件从开发环境发布到外网正式环境,从而在通过自动化发布系统将被测源代码部署到测试环境后进行测试从而收集代码差异化信息,由此可见,本发明方案是实现了代码差异化信息的收集与自动化发布工具的结合,无需用户的大量干预,实现了在用户无感知的情况下对代码差异化信息的收集,减少了测试人员的工作量,提高代码差异化信息收集的效率。
上述与被测源代码对应的旧版源代码,通常情况下可以设置为与当前的被测源代码最近的旧版源代码,即最新的旧版源代码。当然,如果需要对早前的某个版本的旧版源代码与被测源代码进行评估,也可以将其设置为所需要版本的旧版源代码,可以依据实际需要进行设定,在此不予赘述。
代码差异化信息收集单元1121对代码差异化信息的收集,可以是在执行功能测试用例的过程中进行,无需人工干预,对用户完全透明,因此可以在用户毫无感知的情况下收集到代码差异化信息。所谓无感知,是指对用户完全透明,用户只需正常完成测试工作即可,在测试过程中感知不到代码差异化信息收集工具的存在。具体的代码差异化信息的收集方式,可以采用已有的或者以后出现的各种可能的方式进行,具体的代码差异化信息的收集方式在此不予赘述。
其中,在收集到代码差异化信息之后,还可以对该代码差异化信息进行分析,生成可视化报告。该对代码差异化信息进行分析、生成可视化报告的过程,可以是在得到代码差异化信息之后的任何时候进行,在其中一种实现方式中,可以是在测试完毕后进行,因此,如图11所示,在本实施例中,上述测试单元1102还可以包括:
分析单元1122,用于在接收到将上述被测源代码进行发布的指令时,对上述代码差异化信息进行分析生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,代码差异化信息生成单元1121在收集到代码差异化信息之后,还可以将该代码差异化信息转换成第二预设格式类型信息后予以存储,以方便后续过程中对代码差异化信息分析后生成可视化报告。该第二预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,代码差异化信息生成单元1121在收集到代码差异化信息之后,可以将该代码差异化信息以其当前格式直接予以存储,分析单元1122在需要生成可视化报告时,读取出该代码差异化信息后,再将该代码差异化信息转换为第二预设格式类型,以便于生成可视化报告,该第二预设格式类型,可以依据实际需要设定为任何一种哦方式,例如json格式类型或者xml格式类型等等。
图12中示出了图11中所示的分析单元1122在一个具体示例中的结构示意图,如图12所示,在本实施例中,上述分析单元1122具体可以包括:
加载单元11221,用于加载上述代码差异化信息;
行读取单元11222,用于读取被测源代码行中的各行;
变更行判定单元11223,根据上述代码差异化信息判断当前行是否为变更行;
样式设置单元11224,用于在变更行判定单元11223判定当前行为变更行时,将当前行的样式设置为变更样式,在变更行判定单元11223判定当前行不是变更行时,将当前行的样式设置为非变更样式。
本实施例三中的代码测试信息收集具体的代码测试信息的收集方式与上述本发明代码测试信息收集方法实施例三中的相同,在此不予赘述。
实施例四
图13中示出了本发明的代码测试信息收集系统实施例四的结构示意图,在本实施例中,与上述实施例二的不同之处主要在于,本实施例中的方案还实现了代码差异化信息的收集,即同时收集了代码覆盖率信息与代码差异化信息。
如图13所示,本实施例四中的代码测试信息收集系统包括:
导入单元1301,用于通过自动化发布系统将被测源代码部署到测试环境;
测试单元1302,用于在上述测试环境中对所述被测代码进行测试,获得代码测试信息,这里的代码测试信息可以包括代码覆盖率信息以及代码差异化信息。
其中,该测试单元1302具体包括:
插桩单元13211,用于对部署到测试环境的上述被测源代码进行插桩;
代码差异化信息生成单元13212,用于检测与上述被测源代码对应的旧版源代码,并根据上述被测源代码、上述旧版源代码生成代码差异化信息;
代码覆盖率信息收集单元13213,用于在执行功能测试用例时收集代码覆盖率信息;
移桩单元13214,用于对上述被测源代码进行移桩,上述被测源代码经移桩后进行发布。
根据本实施例中的系统,不仅实现了代码覆盖率信息的收集,还实现了代码差异化信息的收集,而代码差异化信息与代码覆盖率信息的结合表明了新旧版本代码差异部分被覆盖的情况,有助于测试人员对变更代码测试程度的评估,可以评估增量测试的完整性,具有重要的意义。
上述与被测源代码对应的旧版源代码,通常情况下可以设置为与当前的被测源代码最近的旧版源代码,即最新的旧版源代码。当然,如果需要对早前的某个版本的旧版源代码与被测源代码进行评估,也可以将其设置为所需要版本的旧版源代码,可以依据实际需要进行设定,在此不予赘述。
其中,在收集到代码差异化信息、代码覆盖率信息之后,还可以对该代码差异化信息、代码覆盖率信息进行分析、生成可视化报告。该对代码差异化信息和代码覆盖率信息进行分析、生成可视化报告的过程,可以是任何时候进行,在其中一种实现方式中,可以是在测试完毕后、对被测源代码移桩前进行,因此,如图13所示,在本实施例的系统中,在上述代码覆盖率信息收集单元13213与移桩单元13214之间还包括:
分析单元132134,用于在接收到将被测源代码进行发布的指令时,对上述代码差异化信息、代码覆盖率信息进行分析生成可视化报告。
出于对生成可视化报告时的便利性考虑,在其中一种实现方式中,代码差异化信息生成单元13212在收集到代码差异化信息之后,还可以将该代码差异化信息转换成第二预设格式类型信息后予以存储,以方便后续过程中对代码差异化信息分析后生成可视化报告。该第二预设格式类型,可以依据实际需要设定为任何一种方式,只要能够便于后续过程生成可视化报告即可,例如json格式类型或者xml格式类型等等。
在另外一种方式中,代码差异化信息生成单元13212在收集到代码差异化信息之后,可以将该代码差异化信息以其当前格式直接予以存储,分析单元132134在需要生成可视化报告时,读取出该代码差异化信息后,再将该代码差异化信息转换为第二预设格式类型,以便于生成可视化报告,该第二预设格式类型,可以依据实际需要设定为任何一种方式,例如json格式类型或者xml格式类型等等。
上述代码覆盖率信息转换成的第一预设格式类型信息与该代码差异化信息转换成的第二预设格式类型可以相同也可以不同,通常情况下可设置为相同,以便于操作。
图14中示出了图13中所示的分析单元132134在一个具体示例中的结构示意图,如图14所示,在本实施例二中,上述分析单元132134具体可以包括:
统计信息获取单元132101,用于获取被测源代码的代码统计信息;
加载单元132102,用于加载上述代码差异化信息、代码覆盖率信息;
行读取单元132103,用于读取被测源代码中的各行;
变更行判定单元132104,根据上述代码差异化信息判断当前行是否为变更行;
覆盖行判定单元132105,用于根据上述代码覆盖率信息判断当前行是否为覆盖行;
可执行行判定单元132106,用于根据上述代码统计信息判定当前行是否为可执行行;
样式设置单元132107,用于在变更行判定单元132104判定当前行为变更行时,将当前行的样式设置为变更样式,在变更行判定单元132104判定当前行不是变更行时,将当前行的样式设置为非变更样式,在覆盖行判定单元132105判定当前行是覆盖行、可执行行判定单元132106判定当前行是可执行行时,将当前行的样式设置为覆盖样式,在覆盖行判定单元132105判定当前行不是覆盖行、可执行行判定单元132106判定当前行是可执行行时,将该当前行的样式设置为未覆盖样式,在可执行行判定单元132106判定当前行不是可执行行时,将该当前行的样式设置为普通样式。
在对代码差异化信息、代码覆盖率信息进行分析时,对变更行、覆盖行、可执行行的判定顺序不限,只要是能够将是变更行的源代码行的样式设置为变更样式、将不是变更行的源代码行的样式设置为未变更样式、将不是可执行行的源代码行的样式设置为普通样式、将是可执行行且是覆盖行的源代码行的样式设置为覆盖样式、将是可执行行且不是覆盖行的源代码行的样式设置为未覆盖样式即可。
上述代码统计信息,可以直接利用已经分析统计好的代码统计信息,也可以由图13中所示的代码信息统计单元13215进行分析统计,即本实施例中的代码测试信息收集系统,还可以包括代码信息统计单元13215,用于对上述被测源代码进行分析统计,获得上述代码统计信息。
该代码统计信息,可以是在收集代码差异化信息或者代码覆盖率信息的同时予以分析收集,对被测源代码进行分析统计、获得代码统计信息的方式可以采用现有技术中已有的方式,在此不予赘述。
本实施例四中的代码测试信息收集系统的其他技术特征,与上述实施例二中的代码测试信息收集系统中的相同,具体的代码测试信息的收集方法与上述本发明代码测试信息收集方法实施例四中的相同,在此不予赘述。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (24)

1.一种代码测试信息收集方法,其特征在于,包括步骤:
通过自动化发布系统将被测代码部署到测试环境;
在所述测试环境中对所述被测代码进行测试,获得代码测试信息,所述代码测试信息为代码覆盖率信息和/或代码差异化信息。
2.根据权利要求1所述的代码测试信息收集方法,其特征在于,所述代码测试信息为代码覆盖率信息,在所述测试环境中对所述被测代码进行测试的过程包括:
对所述被测代码进行插桩;
执行功能测试用例,在执行功能测试用例时收集代码覆盖率信息;
对所述被测代码移桩。
3.根据权利要求2所述的代码测试信息收集方法,其特征在于,在收集代码覆盖率信息之后、对所述被测代码移桩之前,还包括步骤:
测试完毕后,接收将上述被测代码进行发布的指令,对上述代码覆盖率信息进行分析生成可视化报告。
4.根据权利要求3所述的代码测试信息收集方法,其特征在于,对所述代码覆盖率信息进行分析生成可视化报告的步骤包括:
获取被测代码的代码统计信息;
加载所述代码覆盖率信息;
读取被测代码行中的各行,根据所述代码统计信息、所述代码覆盖率信息对各当前行的样式进行设置;
所述设置包括:在当前行是覆盖行且是可执行行时,将该当前行的样式设置为覆盖样式;在当前行不是覆盖行且是可执行行时,将该当前行的样式设置为未覆盖样式;在当前行不是可执行行时,将该当前行的样式设置为普通样式。
5.根据权利要求1所述的代码测试信息收集方法,其特征在于,所述代码测试信息为代码覆盖率信息和代码差异化信息,在所述测试环境中对所述被测代码进行测试的过程包括:
对所述被测代码进行插桩;
检测与所述被测代码对应的旧版代码;
根据所述被测代码、所述旧版代码生成代码差异化信息;
执行功能测试用例,在执行功能测试用例时收集代码覆盖率信息;
对所述被测代码移桩。
6.根据权利要求5所述的代码测试信息收集方法,其特征在于,在收集代码覆盖率信息之后、对所述被测代码移桩之前,还包括步骤:
测试完毕后,接收将所述被测代码进行发布的指令,对所述代码差异化信息、所述代码覆盖率信息进行分析生成可视化报告。
7.根据权利要求6所述的代码测试信息收集方法,其特征在于,所述生成可视化报告的步骤包括:
获取被测代码的代码统计信息;
加载所述代码差异化信息、所述代码覆盖率信息;
读取被测代码行中的各行,根据所述代码统计信息、所述代码覆盖率信息对各当前行的样式进行设置;
所述设置包括:在当前行是变更行时,将当前行的样式设置为变更样式;在当前行不是变更行时,将当前行的样式设置为非变更样式;在当前行是覆盖行且是可执行行时,将该当前行的样式设置为覆盖样式;在当前行不是覆盖行且是可执行行时,将该当前行的样式设置为未覆盖样式;在当前行不是可执行行时,将该当前行的样式设置为普通样式。
8.根据权利要求4或7所述的代码测试信息收集方法,其特征在于,还包括步骤,对所述被测代码进行分析统计,获得所述代码统计信息。
9.根据权利要求1所述的代码测试信息收集方法,其特征在于,所述代码测试信息为代码差异化信息,在所述测试环境中对所述被测代码进行测试的过程包括步骤:
检测与所述被测代码对应的旧版代码;
根据所述被测代码、所述旧版代码生成代码差异化信息。
10.根据权利要求9所述的代码测试信息收集方法,其特征在于,在生成代码差异化信息之后,还包括步骤:
执行功能测试用例,测试完毕后,接收将被测代码进行发布的指令,对所述代码差异化信息进行分析生成可视化报告。
11.根据权利要求10所述的代码测试信息收集方法,其特征在于,所述生成可视化报告的步骤包括:
加载所述代码差异化信息;
读取被测代码行中的各行;
根据所述代码差异化信息判断当前行是否为变更行,若是变更行,将当前行的样式设置为变更样式,若不是变更行,将当前行的样式设置为非变更样式。
12.根据权利要求2至11任意一项所述的代码测试信息收集方法,其特征在于,还包括步骤:
将所述代码覆盖率信息转换成第一预设格式类型信息;
或者
将所述代码差异化信息转换成第二预设格式类型信息;
或者
将所述代码覆盖率信息转换成第一预设格式类型信息,将所述代码差异化信息转换成第二预设格式类型信息,所述第一预设格式类型与所述第二预设格式类型相同或者不同。
13.一种代码测试信息收集系统,其特征在于,包括:
导入单元,用于通过自动化发布系统将被测代码部署到测试环境;
测试单元,用于在所述测试环境中对所述被测代码进行测试,获得代码测试信息,所述代码测试信息为代码覆盖率信息和/或代码差异化信息。
14.根据权利要求13所述的代码测试信息收集系统,其特征在于,所述代码测试信息为代码覆盖率信息,所述测试单元包括:
插桩单元,用于对所述被测代码进行插桩;
代码覆盖率信息收集单元,用于在执行功能测试用例时收集代码覆盖率信息;
移桩单元,用于所述被测代码进行移桩。
15.根据权利要求14所述的代码测试信息收集系统,其特征在于,所述测试单元还包括连接于代码覆盖率信息收集单元与移桩单元之间的分析单元,用于在接收到将所述被测代码进行发布的指令时,对所述代码覆盖率信息进行分析生成可视化报告。
16.根据权利要求15所述的代码测试信息收集系统,其特征在于,所述分析单元包括:
统计信息获取单元,用于获取被测代码的代码统计信息;
加载单元,用于加载所述代码覆盖率信息;
行读取单元,用于读取被测代码行中的各行;
覆盖行判定单元,用于根据所述代码覆盖率信息判断当前行是否为覆盖行;
可执行行判定单元,用于判定当前行是否为可执行行;
样式设置单元,用于在当前行是覆盖行且是可执行行时,将该当前行的样式设置为覆盖样式,在当前行不是覆盖行且是可执行行时,将该当前行的样式设置为未覆盖样式,在当前行不是可执行行时,将该当前行的样式设置为普通样式。
17.根据权利要求13所述的代码测试信息收集系统,其特征在于,所述代码测试信息为代码覆盖率信息,所述测试单元包括:
插桩单元,用于对所述被测代码进行插桩;
代码差异化信息生成单元,用于检测与所述被测代码对应的旧版代码,并根据所述被测代码、所述旧版代码生成代码差异化信息;
代码覆盖率信息收集单元,用于在执行功能测试用例时收集代码覆盖率信息;
移桩单元,用于所述被测代码进行移桩。
18.根据权利要求17所述的代码测试信息收集系统,其特征在于,所述测试单元还包括连接于代码覆盖率信息收集单元与移桩单元之间的分析单元,用于在接收到将所述被测代码进行发布的指令时,对所述代码差异化信息、所述代码覆盖率信息进行分析生成可视化报告。
19.根据权利要求18所述的代码测试信息收集系统,其特征在于,所述分析单元包括:
统计信息获取单元,用于获取被测代码的代码统计信息;
加载单元,用于加载所述代码差异化信息、所述代码覆盖率信息;
行读取单元,用于读取被测代码中的各行;
变更行判定单元,根据所述代码差异化信息判断当前行是否为变更行;
覆盖行判定单元,用于根据所述代码覆盖率信息判断当前行是否为覆盖行;
可执行行判定单元,用于判定当前行是否为可执行行;
样式设置单元,用于在当前行是变更行时,将当前行的样式设置为变更样式,在当前行不是变更行时,将当前行的样式设置为非变更样式,在当前行是覆盖行且是可执行行时,将该当前行的样式设置为覆盖样式,在当前行不是覆盖行且是可执行行时,将该当前行的样式设置为未覆盖样式,在当前行不是可执行行时,将该当前行的样式设置为普通样式。
20.根据权利要求16或19所述的代码测试信息收集系统,其特征在于,还包括代码信息统计单元,用于对所述被测代码进行分析统计,获得所述代码统计信息。
21.根据权利要求13所述的代码测试信息收集系统,其特征在于,所述代码测试信息为代码差异化信息,所述测试单元包括:
代码差异化信息收集单元,用于检测与所述被测代码对应的旧版代码,并根据所述被测代码、所述旧版代码生成代码差异化信息。
22.根据权利要求21所述的代码测试信息收集系统,其特征在于,所述测试单元还包括与代码差异化信息收集单元连接的分析单元,用于在接收到将所述被测代码进行发布的指令时,对所述代码差异化信息进行分析生成可视化报告。
23.根据权利要求22所述的代码测试信息收集系统,其特征在于,所述分析单元包括:
加载单元,用于加载所述代码差异化信息;
行读取单元,用于读取被测代码行中的各行;
变更行判定单元,根据所述代码差异化信息判断当前行是否为变更行;
样式设置单元,用于所在当前行是变更行时,将当前行的样式设置为变更样式,在当前行不是变更行时,将当前行的样式设置为非变更样式。
24.根据权利要求14至23任意一项所述的代码测试信息收集系统,其特征在于:
所述代码覆盖率信息收集单元,还用于将所述代码覆盖率信息转换成第一预设格式类型信息;
或者
所述代码差异化信息收集单元,还用于将所述代码差异化信息转换成第一预设格式类型信息;
或者
所述代码覆盖率信息收集单元,还用于将所述代码覆盖率信息转换成第一预设格式类型信息;所述代码差异化信息生成单元,还用于将所述代码差异化信息转换成第二预设格式类型信息,所述第一预设格式类型与所述第二预设格式类型相同或者不同。
CN201210164432.7A 2012-05-24 2012-05-24 代码测试信息收集方法及系统 Active CN103425573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210164432.7A CN103425573B (zh) 2012-05-24 2012-05-24 代码测试信息收集方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210164432.7A CN103425573B (zh) 2012-05-24 2012-05-24 代码测试信息收集方法及系统

Publications (2)

Publication Number Publication Date
CN103425573A true CN103425573A (zh) 2013-12-04
CN103425573B CN103425573B (zh) 2017-02-08

Family

ID=49650357

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210164432.7A Active CN103425573B (zh) 2012-05-24 2012-05-24 代码测试信息收集方法及系统

Country Status (1)

Country Link
CN (1) CN103425573B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN104714882A (zh) * 2013-12-17 2015-06-17 腾讯科技(深圳)有限公司 代码信息处理的方法及装置
CN104765692A (zh) * 2015-04-29 2015-07-08 北京嘀嘀无限科技发展有限公司 用于自动化测试软件的方法及设备
CN105045717A (zh) * 2015-08-18 2015-11-11 网易(杭州)网络有限公司 测试环境部署方法、装置和系统
CN105446884A (zh) * 2015-12-16 2016-03-30 北京奇虎科技有限公司 代码覆盖率的测试方法及装置
CN105988926A (zh) * 2015-02-13 2016-10-05 腾讯科技(深圳)有限公司 多版本测试数据的处理方法和装置
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106604312A (zh) * 2016-11-10 2017-04-26 上海斐讯数据通信技术有限公司 一种路由器测试数据可视化的方法及系统
CN107423222A (zh) * 2017-08-08 2017-12-01 腾讯科技(深圳)有限公司 一种确定测试覆盖率的方法及设备
CN108664802A (zh) * 2018-03-20 2018-10-16 西安烽火软件科技有限公司 一种敏感数据保护的方法和系统
CN109388566A (zh) * 2018-09-27 2019-02-26 北京城市网邻信息技术有限公司 一种代码覆盖率分析方法、装置、设备及存储介质
CN110007921A (zh) * 2018-12-04 2019-07-12 阿里巴巴集团控股有限公司 一种代码发布方法及装置
CN110928776A (zh) * 2019-11-15 2020-03-27 武汉极意网络科技有限公司 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备
CN111124915A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 覆盖率检测方法、覆盖率检测装置及存储介质
US10846954B2 (en) 2017-02-14 2020-11-24 Beijing Xiaomi Mobile Software Co., Ltd. Method for monitoring vehicle and monitoring apparatus

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722161A (zh) * 2005-04-29 2006-01-18 东华大学 电子政务协同工作数据标准符合性测试方法
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
CN102063374A (zh) * 2011-01-07 2011-05-18 南京大学 一种使用半监督信息进行聚类的回归测试用例选择方法
CN102419728A (zh) * 2011-11-01 2012-04-18 北京邮电大学 基于覆盖率量化指标确定软件测试过程充分性的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722161A (zh) * 2005-04-29 2006-01-18 东华大学 电子政务协同工作数据标准符合性测试方法
CN101561777A (zh) * 2008-04-14 2009-10-21 中兴通讯股份有限公司 一种实现覆盖率测试的系统和方法
CN102063374A (zh) * 2011-01-07 2011-05-18 南京大学 一种使用半监督信息进行聚类的回归测试用例选择方法
CN102419728A (zh) * 2011-11-01 2012-04-18 北京邮电大学 基于覆盖率量化指标确定软件测试过程充分性的方法

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699596A (zh) * 2013-12-06 2015-06-10 中兴通讯股份有限公司 代码覆盖率处理方法及装置
WO2014180396A1 (zh) * 2013-12-06 2014-11-13 中兴通讯股份有限公司 代码覆盖率处理方法及装置
CN104714882A (zh) * 2013-12-17 2015-06-17 腾讯科技(深圳)有限公司 代码信息处理的方法及装置
CN104714882B (zh) * 2013-12-17 2018-11-23 腾讯科技(深圳)有限公司 代码信息处理的方法及装置
CN104199773A (zh) * 2014-09-03 2014-12-10 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN104199773B (zh) * 2014-09-03 2017-08-25 腾讯科技(深圳)有限公司 获取代码覆盖信息的方法及装置
CN105988926A (zh) * 2015-02-13 2016-10-05 腾讯科技(深圳)有限公司 多版本测试数据的处理方法和装置
CN105988926B (zh) * 2015-02-13 2019-06-07 腾讯科技(深圳)有限公司 多版本测试数据的处理方法和装置
CN104765692A (zh) * 2015-04-29 2015-07-08 北京嘀嘀无限科技发展有限公司 用于自动化测试软件的方法及设备
CN104765692B (zh) * 2015-04-29 2018-11-06 北京嘀嘀无限科技发展有限公司 用于自动化测试软件的方法及设备
CN105045717B (zh) * 2015-08-18 2018-08-07 网易(杭州)网络有限公司 测试环境部署方法、装置和系统
CN105045717A (zh) * 2015-08-18 2015-11-11 网易(杭州)网络有限公司 测试环境部署方法、装置和系统
CN105446884A (zh) * 2015-12-16 2016-03-30 北京奇虎科技有限公司 代码覆盖率的测试方法及装置
CN106201863A (zh) * 2016-06-22 2016-12-07 广州唯品会信息科技有限公司 一种获取代码覆盖率的方法和装置
CN106604312A (zh) * 2016-11-10 2017-04-26 上海斐讯数据通信技术有限公司 一种路由器测试数据可视化的方法及系统
CN106604312B (zh) * 2016-11-10 2020-12-22 王蕴卓 一种路由器测试数据可视化的方法及系统
US10846954B2 (en) 2017-02-14 2020-11-24 Beijing Xiaomi Mobile Software Co., Ltd. Method for monitoring vehicle and monitoring apparatus
CN107423222A (zh) * 2017-08-08 2017-12-01 腾讯科技(深圳)有限公司 一种确定测试覆盖率的方法及设备
CN107423222B (zh) * 2017-08-08 2018-05-22 腾讯科技(深圳)有限公司 一种确定测试覆盖率的方法及设备
CN108664802A (zh) * 2018-03-20 2018-10-16 西安烽火软件科技有限公司 一种敏感数据保护的方法和系统
CN108664802B (zh) * 2018-03-20 2021-10-08 西安烽火软件科技有限公司 一种敏感数据保护的方法和系统
CN109388566A (zh) * 2018-09-27 2019-02-26 北京城市网邻信息技术有限公司 一种代码覆盖率分析方法、装置、设备及存储介质
CN110007921A (zh) * 2018-12-04 2019-07-12 阿里巴巴集团控股有限公司 一种代码发布方法及装置
CN110928776A (zh) * 2019-11-15 2020-03-27 武汉极意网络科技有限公司 一种基于lcov实现增量代码覆盖率的检测方法、装置及设备
CN111124915A (zh) * 2019-12-20 2020-05-08 广州品唯软件有限公司 覆盖率检测方法、覆盖率检测装置及存储介质
CN111124915B (zh) * 2019-12-20 2024-02-02 广州品唯软件有限公司 覆盖率检测方法、覆盖率检测装置及存储介质

Also Published As

Publication number Publication date
CN103425573B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN103425573A (zh) 代码测试信息收集方法及系统
CN106330593B (zh) 协议检测方法及装置
US9310345B2 (en) Sensor system, computer, and machine
CN106874187A (zh) 代码覆盖率收集方法和装置
CN102353927A (zh) 用电信息采集系统现场测试仪及其测试方法
CN105022694B (zh) 用于移动终端测试的测试用例生成方法及系统
CN108802547A (zh) 一种基于云存储的智能变电站继电保护装置自动测试系统和方法
CN103323701B (zh) 一种移动式电力能效检测方法及其系统
CN102707712B (zh) 电子装备故障诊断方法和系统
CN104375024A (zh) 一种自动测试系统的原位自检、计量装置及其方法
CN105187608A (zh) 一种获取移动终端上应用程序耗电量的方法和装置
CN102821010B (zh) 保护装置仿真仪
CN105099801A (zh) 信息管理系统的测试系统和测试环境模拟方法
CN101996130A (zh) 软件测试系统
CN103308808A (zh) 智能变电站二次设备自动测试系统及测试方法
CN103885341B (zh) 基于汽车性能模拟器的性能分析系统和方法
CN102650263B (zh) 对风力涡轮机设备进行测试的方法和装置
CN101094113A (zh) 一种基于ttcan的燃料电池汽车整车通讯网络测试系统
CN103336739B (zh) 软件测试方法及平台
CN101673200A (zh) 用户输入模型的检测方法及装置
CN201037955Y (zh) 一种基于ttcan的燃料电池汽车整车通讯网络测试装置
CN106502897A (zh) 测试模型生成方法及装置
CN202204925U (zh) 用电信息采集系统现场测试仪
CN106330358B (zh) 一种宽带载波仿真测试系统
CN106502678A (zh) 一种软件开发过程可靠性预检测方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190808

Address after: 518000 Nanshan District science and technology zone, Guangdong, Zhejiang Province, science and technology in the Tencent Building on the 1st floor of the 35 layer

Co-patentee after: Tencent cloud computing (Beijing) limited liability company

Patentee after: Tencent Technology (Shenzhen) Co., Ltd.

Address before: Shenzhen Futian District City, Guangdong province 518044 Zhenxing Road, SEG Science Park 2 East Room 403

Patentee before: Tencent Technology (Shenzhen) Co., Ltd.