CN109144878A - 基于路径差异的代码测试方法 - Google Patents
基于路径差异的代码测试方法 Download PDFInfo
- Publication number
- CN109144878A CN109144878A CN201811015412.7A CN201811015412A CN109144878A CN 109144878 A CN109144878 A CN 109144878A CN 201811015412 A CN201811015412 A CN 201811015412A CN 109144878 A CN109144878 A CN 109144878A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- detected
- case
- 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
Links
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/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/3672—Test management
- G06F11/3676—Test management for coverage analysis
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
本发明公开了一种基于路径差异的代码测试方法,包括:针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;根据所述路径差异信息,获取相应的测试用例;以及使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;根据所述功能包的内容,获取相应的再测试用例,并使用该再测试用例再次测试所述待检测代码。本方法避免了系统功能点测试的遗漏,提供了稳定的测试质量。
Description
技术领域
本申请涉及检测技术,特别涉及基于路径差异的代码测试方法。
背景技术
随着科技的发展,运行在服务器或者终端上,提供各类服务的软件系统越来越多,这些系统投入使用之前都会针对软件系统的源代码进行功能测试,通常会设计测试用例来模拟系统运行时会出现的各种情况以测试系统的每个功能是否能够正常而稳定的工作,而系统的每次更新通常会修改源代码以带来新的功能或是删减掉某些功能,这都需要在系统上线前重新进行功能测试,也就需要设计新的测试用例以覆盖到新的功能或是避免涉及已经删除的功能。
另一方面,以JAVA类语言开发的软件系统,其源代码的结构通常是一个项目(Project)下包含了多个实现具体功能的功能包(Package),功能包下又包含多个类(class),类下又包含多个方法(method);具体运行时,在代码层面所形成的package-class-method层层调用的关系,就称之为路径。
传统的功能测试过程极其不稳定,特别依赖于测试人员的业务能力和临场发挥能力,即使很优秀的测试人员也会因为状态问题而导致测试用例设计水准出现波动,更不要提有经验人员和经验欠缺人员在测试用例设计上的巨大差别。这就导致了随着系统的更新,测试用例不断增加,却仍旧无法得知系统功能点测试是否有遗漏,测试质量是否得到了保障。
发明内容
本发明提供了基于路径差异的代码测试方法,以避免系统功能点测试的遗漏,提供稳定的测试质量。
为达到上述目的,本发明的技术方案是这样实现的:
基于路径差异的代码测试方法,包括:
针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
根据所述路径差异信息,获取相应的测试用例;以及使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;
根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
根据所述功能包的内容,获取相应的再测试用例,并使用该再测试用例再次测试所述待检测代码。
本方案通过对新旧代码的路径对比,得到待测试代码相对于旧代码新增/删减的功能,从而知道新的测试用例的设计,从而在第一版代码设计并通过测试后,通过迭代的方法,确保每次新增/删减的功能得以测试,并通过代码覆盖率作为验证手段,筛选出没有被测试到的功能包,并针对性的执行再测试用例,保证测试中没有功能点被遗漏,保证了测试质量的稳定。
进一步,还包括,将所述再测试用例存入测试用例库。
通过案例集成,为以后的测试用例编写提供参考,利用经验的可视化集成确保不同水平的测试人员均能做到基本一致的测试质量。
进一步,通过Jdepend工具获取所述待检测代码与其对应的旧版本代码各自的路径信息,进而对比出所述路径差异信息。
该工具可以对代码包进行结构分析,从而获得所需的路径信息。
进一步,通过JaCoCo工具获取所述代码覆盖率信息。
JaCoCo工具包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes),非常适用于本发明中针对路径的代码测试。
进一步,通过EMMA工具获取所述代码覆盖率信息。
EMMA支持对类,方法,代码行和基本的分支语句的覆盖率测试,并提供了多种格式的报告,包括纯文本,HTML和XML,所有的报告都可以进行详细设置以获得定制报告。而且,使用EMMA时,不需要获得源代码就可进行覆盖率测试,更为方便。
附图说明
图1为本发明实施例中的源代码测试的工作流程示意图。
图2为本发明实施例中的基于路径差异的代码测试系统的示意性框图。
具体实施方式
为使本发明的技术方案更加清楚、明白、以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图1为本实施例的流程图。如图1所示,包括以下内容:
首先是针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
路径的形式是package-class-method,得到差异信息的方法可以是:
通过Jdepend工具获取所述待检测代码与其对应的旧版本代码各自的路径信息,进而对比出所述路径差异信息。
该工具可以对代码包进行结构分析,从而获得所需的路径信息。
于是测试人员明确了在主案例里应该包括哪些内容,从而根据这些路径差异信息,制定出测试用例;
该测试用例经过审核后,交测试平台进行平台扫描,也就是使用所述测试用例对所述待检测代码进行测试。测试结束后,便同步可以得到测试中的待检测代码各组成部分的代码覆盖率信息;
得到代码覆盖率信息的方法可以是:
通过JaCoCo工具获取所述代码覆盖率信息。
JaCoCo工具包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes),非常适用于本发明中针对路径的代码测试。
或者通过EMMA工具获取所述代码覆盖率信息。
EMMA支持对类,方法,代码行和基本的分支语句的覆盖率测试,并提供了多种格式的报告,包括纯文本,HTML和XML,所有的报告都可以进行详细设置以获得定制报告。而且,使用EMMA时,不需要获得源代码就可进行覆盖率测试,更为方便。
根据得到的代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
根据所述功能包的内容,在原有测试用例的基础上补充相应的自动化脚本,从而获取相应的再测试用例;可以由测试人员自己走读代码,也可以咨询相应对模块的开发人员以确定具体需要新增怎样的自动化脚本。并使用该再测试用例再次测试所述待检测代码。
最后核查本次测试是否覆盖所有的主业务流程,以及所有新增/删减功能。
本实施例通过以下系统实现:
基于路径差异的代码测试系统,基本如图2所示,包括:
路径分析模块,用于针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
测试用例获取模块,用于获取根据所述路径差异信息所指定的测试用例;
测试平台,用于使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;
筛选模块,用于根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
测试用例再次获取模块,用于获取根据所述功能包的内容所制定的再测试用例,并发送该再测试用例至测试平台再次测试所述待检测代码。
测试用例库,用于存储所述再测试用例。
最后将所述再测试用例存入测试用例库,入库前可由相关人员对本次使用的案例进行评述,或是以代码覆盖率的高低做过评价标准,对案例加以筛选,通过案例集成,为以后的测试用例编写提供参考,利用经验的可视化集成确保不同水平的测试人员均能做到基本一致的测试质量。
本实施例通过对新旧代码的路径对比,得到待测试代码相对于旧代码新增/删减的功能,从而知道新的测试用例的设计,从而在第一版代码设计并通过测试后,通过迭代的方法,确保每次新增/删减的功能得以测试,并通过代码覆盖率作为验证手段,筛选出没有被测试到的功能包,并针对性的执行再测试用例,保证测试中没有功能点被遗漏,保证了测试质量的稳定。
本实施例中还包括走读代码辅助模块。
在人工走读代码时,由于代码的行数较多;走读到后期,走读者会越来越疲惫,出现精神涣散、注意力不集中等现象,往往出现错读、漏读等现象。为了缓解这一想象,本实施例在人工走读代码时,利用走读代码辅助模块获取已经走读过的代码的行数,随着行数的增加,逐渐增加代码字体的大小,相应的也就减少了同一显示范围内代码的行数;走读行数可以通过代码的浏览工具中当前显示到那一行来得知,或者可以根据走读人员滚动鼠标滚轴的圈数来得知,后者需要通过鼠标计数模块根据鼠标的信号输入来计算该滚动圈数并通知走读代码辅助模块。通过走读过的代码行数来放大代码,让走读者在进入疲惫时,看到更为清楚、更为醒目的代码,也减少了同时出现在显示范围内的代码的行数,有助于走读者集中精神在代码上,从而减少错读的概率,且根据走读过的代码行数逐渐增大,顺应了人的疲劳曲线,越到后面走读者越是疲劳,而代码的字体也越大。
在另一些实施例中,走读代码辅助模块还统计单位时间内走读过的代码行数作为辅助判断标准;发现走读的行数超过某阈值,且走读时间内走读过的代码行数高于某一阈值时,再开始放大代码;或者,当单位时间内走读过的代码行数大于另一阈值时,不等发现走读的行数超过某阈值,就直接开始放大字体;以此,第一避免走读者本来就放慢了走读速度时,字体变大会过多的降低效率;第二,防止走读者不负责任的快速浏览代码造成错读和漏读,在其浏览过快时,通过放大字体,减少显示范围内的代码行数来从客观上强制放慢其走读代码的速度。
以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
Claims (5)
1.一种基于路径差异的代码测试方法,其特征在于,包括:针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
根据所述路径差异信息,获取相应的测试用例;以及使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;
根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
根据所述功能包的内容,获取相应的再测试用例,并使用该再测试用例再次测试所述待检测代码。
2.根据权利要求1所述的方法,其特征在于,还包括,将所述再测试用例存入测试用例库。
3.根据权利要求1所述的方法,其特征在于,通过Jdepend工具获取所述待检测代码与其对应的旧版本代码各自的路径信息,进而对比出所述路径差异信息。
4.根据权利要求1所述的方法,其特征在于,通过JaCoCo工具获取所述代码覆盖率信息。
5.根据权利要求1所述的方法,其特征在于,通过EMMA工具获取所述代码覆盖率信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811015412.7A CN109144878A (zh) | 2018-08-31 | 2018-08-31 | 基于路径差异的代码测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811015412.7A CN109144878A (zh) | 2018-08-31 | 2018-08-31 | 基于路径差异的代码测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109144878A true CN109144878A (zh) | 2019-01-04 |
Family
ID=64826018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811015412.7A Pending CN109144878A (zh) | 2018-08-31 | 2018-08-31 | 基于路径差异的代码测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144878A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413506A (zh) * | 2019-06-19 | 2019-11-05 | 平安普惠企业管理有限公司 | 测试用例推荐方法、装置、设备及存储介质 |
CN111552698A (zh) * | 2020-04-21 | 2020-08-18 | 重庆富民银行股份有限公司 | 一种解决环境差异的sql版本控制系统及方法 |
CN111858292A (zh) * | 2019-09-12 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 测试用例的筛选方法、筛选系统、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246600A (zh) * | 2012-02-10 | 2013-08-14 | 广州博纳信息技术有限公司 | 软件测评快速校验方法 |
US20140245264A1 (en) * | 2013-02-28 | 2014-08-28 | International Business Machines Corporation | Identifying Test Cases Based on Changed Test Code |
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
-
2018
- 2018-08-31 CN CN201811015412.7A patent/CN109144878A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246600A (zh) * | 2012-02-10 | 2013-08-14 | 广州博纳信息技术有限公司 | 软件测评快速校验方法 |
US20140245264A1 (en) * | 2013-02-28 | 2014-08-28 | International Business Machines Corporation | Identifying Test Cases Based on Changed Test Code |
CN107957956A (zh) * | 2017-12-26 | 2018-04-24 | 广州品唯软件有限公司 | 软件差异覆盖率的测试方法、装置及可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413506A (zh) * | 2019-06-19 | 2019-11-05 | 平安普惠企业管理有限公司 | 测试用例推荐方法、装置、设备及存储介质 |
CN111858292A (zh) * | 2019-09-12 | 2020-10-30 | 北京嘀嘀无限科技发展有限公司 | 测试用例的筛选方法、筛选系统、计算机设备及存储介质 |
CN111552698A (zh) * | 2020-04-21 | 2020-08-18 | 重庆富民银行股份有限公司 | 一种解决环境差异的sql版本控制系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10782961B2 (en) | Analyzing components related to a software application in a software development environment | |
CN104050261B (zh) | 基于Storm的可变逻辑的通用数据处理系统及方法 | |
CN109144878A (zh) | 基于路径差异的代码测试方法 | |
CN103268226B (zh) | 一种测试脚本文件生成方法及装置 | |
CN108196880A (zh) | 软件项目知识图谱自动构造方法与系统 | |
CN107909466A (zh) | 客户关系网络展示方法、装置、设备及可读存储介质 | |
CN109740159B (zh) | 用于命名实体识别的处理方法及装置 | |
CN109254918A (zh) | 基于路径差异的代码测试系统 | |
US20150051946A1 (en) | Weighting sentiment information | |
CN101751461A (zh) | 一种文档转换方法和装置 | |
CN109255093A (zh) | 行为数据处理方法、装置、电子设备及计算机可读介质 | |
CN108509199A (zh) | 自动生成中文注释的方法、装置、设备及存储介质 | |
CN106503108A (zh) | 地理位置检索方法和装置 | |
CN106502680B (zh) | 一种通过可视化界面进行图元扩展的方法 | |
CN109634569A (zh) | 基于注解的流程实现方法、装置、设备及可读存储介质 | |
KR102124935B1 (ko) | 크라우드 소싱을 활용한 재난 모니터링 시스템, 재난 모니터링 방법 및 이를 수행하기 위한 컴퓨터 프로그램 | |
Asuncion et al. | Automated techniques for capturing custom traceability links across heterogeneous artifacts | |
CN113779261B (zh) | 知识图谱的质量评价方法、装置、计算机设备及存储介质 | |
Rulff et al. | Urban Rhapsody: Large‐scale exploration of urban soundscapes | |
KR101685495B1 (ko) | 이종 센서 매시업 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
CN104142952A (zh) | 报表展示方法和装置 | |
CN107943515A (zh) | 一种云管理平台管理服务编排模板的方法和装置 | |
US10055110B2 (en) | Simulating a user interface to submit data received from a device | |
CN105074669A (zh) | 用于分析计算机系统活动的跟踪时间线的方法和系统 | |
CN110471730A (zh) | 基于Echarts的展示方法、系统、大屏系统和介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190104 |