CN109254918A - 基于路径差异的代码测试系统 - Google Patents

基于路径差异的代码测试系统 Download PDF

Info

Publication number
CN109254918A
CN109254918A CN201811015377.9A CN201811015377A CN109254918A CN 109254918 A CN109254918 A CN 109254918A CN 201811015377 A CN201811015377 A CN 201811015377A CN 109254918 A CN109254918 A CN 109254918A
Authority
CN
China
Prior art keywords
code
test
case
detected
obtains
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
CN201811015377.9A
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.)
Chongqing Fumin Bank Co Ltd
Original Assignee
Chongqing Fumin Bank 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 Chongqing Fumin Bank Co Ltd filed Critical Chongqing Fumin Bank Co Ltd
Priority to CN201811015377.9A priority Critical patent/CN109254918A/zh
Publication of CN109254918A publication Critical patent/CN109254918A/zh
Pending legal-status Critical Current

Links

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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/3688Test 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)
  • Data Exchanges In Wide-Area Networks (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为本发明实施例中的基于路径差异的代码测试系统的示意性框图。
具体实施方式
为使本发明的技术方案更加清楚、明白、以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本实施例基于路径差异的代码测试系统,基本如图2所示,包括:
路径分析模块,用于针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
测试用例获取模块,用于获取根据所述路径差异信息所指定的测试用例;
测试平台,用于使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;
筛选模块,用于根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
测试用例再次获取模块,用于获取根据所述功能包的内容所制定的再测试用例,并发送该再测试用例至测试平台再次测试所述待检测代码。
测试用例库,用于存储所述再测试用例。
本实施例中的系统的具体工作过程如下。
首先是针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
路径的形式是package-class-method,得到差异信息的方法可以是,通过加载Jdepend工具获取所述待检测代码与其对应的旧版本代码各自的路径信息,进而对比出所述路径差异信息。
该工具可以对代码包进行结构分析,从而获得所需的路径信息。
于是测试人员明确了在主案例里应该包括哪些内容,从而根据这些路径差异信息,制定出测试用例;
该测试用例经过审核后,交测试平台进行平台扫描,也就是使用所述测试用例对所述待检测代码进行测试。测试结束后,便同步可以得到测试中的待检测代码各组成部分的代码覆盖率信息;
得到代码覆盖率信息的方法可以是,在测试平台中加载JaCoCo工具获取所述代码覆盖率信息。
JaCoCo工具包含了多种尺度的覆盖率计数器,包含指令级覆盖(Instructions,C0coverage),分支(Branches,C1coverage)、圈复杂度(CyclomaticComplexity)、行覆盖(Lines)、方法覆盖(non-abstract methods)、类覆盖(classes),非常适用于本发明中针对路径的代码测试。
还可以是在测试平台中加载EMMA工具获取所述代码覆盖率信息。
EMMA支持对类,方法,代码行和基本的分支语句的覆盖率测试,并提供了多种格式的报告,包括纯文本,HTML和XML,所有的报告都可以进行详细设置以获得定制报告。而且,使用EMMA时,不需要获得源代码就可进行覆盖率测试,更为方便。
根据得到的代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
根据所述功能包的内容,在原有测试用例的基础上补充相应的自动化脚本,从而获取相应的再测试用例,可以由测试人员自己走读代码,也可以咨询相应对模块的开发人员以确定具体需要新增怎样的自动化脚本。并使用该再测试用例再次测试所述待检测代码。
最后核查本次测试是否覆盖所有的主业务流程,以及所有新增/删减功能。
最后将所述再测试用例存入测试用例库,入库前可由相关人员对本次使用的案例进行评述,或是以代码覆盖率的高低做为评价标准,对案例加以筛选,通过案例集成,为以后的测试用例编写提供参考,利用经验的可视化集成确保不同水平的测试人员均能做到基本一致的测试质量。
本实施例通过对新旧代码的路径对比,得到待测试代码相对于旧代码新增/删减的功能,从而知道新的测试用例的设计,从而在第一版代码设计并通过测试后,通过迭代的方法,确保每次新增/删减的功能得以测试,并通过代码覆盖率作为验证手段,筛选出没有被测试到的功能包,并针对性的执行再测试用例,保证测试中没有功能点被遗漏,保证了测试质量的稳定。
本实施例中还包括走读代码辅助模块。
在人工走读代码时,由于代码的行数较多;走读到后期,走读者会越来越疲惫,出现精神涣散、注意力不集中等现象,往往出现错读、漏读等现象。为了缓解这一想象,本实施例在人工走读代码时,利用走读代码辅助模块获取已经走读过的代码的行数,随着行数的增加,逐渐增加代码字体的大小,相应的也就减少了同一显示范围内代码的行数;走读行数可以通过代码的浏览工具中当前显示到那一行来得知,或者可以根据走读人员滚动鼠标滚轴的圈数来得知,后者需要通过鼠标计数模块根据鼠标的信号输入来计算该滚动圈数并通知走读代码辅助模块。通过走读过的代码行数来放大代码,让走读者在进入疲惫时,看到更为清楚、更为醒目的代码,也减少了同时出现在显示范围内的代码的行数,有助于走读者集中精神在代码上,从而减少错读的概率,且根据走读过的代码行数逐渐增大,顺应了人的疲劳曲线,越到后面走读者越是疲劳,而代码的字体也越大。
在另一些实施例中,走读代码辅助模块还统计单位时间内走读过的代码行数作为辅助判断标准;发现走读的行数超过某阈值,且走读时间内走读过的代码行数高于某一阈值时,再开始放大代码;或者,当单位时间内走读过的代码行数大于另一阈值时,不等发现走读的行数超过某阈值,就直接开始放大字体;以此,第一避免走读者本来就放慢了走读速度时,字体变大会过多的降低效率;第二,防止走读者不负责任的快速浏览代码造成错读和漏读,在其浏览过快时,通过放大字体,减少显示范围内的代码行数来从客观上强制放慢其走读代码的速度。
以上所述的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本申请给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本申请的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本申请要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。

Claims (5)

1.基于路径差异的代码测试系统,其特征在于,包括:
路径分析模块,用于针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的路径差异信息;
测试用例获取模块,用于获取根据所述路径差异信息所指定的测试用例;
测试平台,用于使用所述测试用例对所述待检测代码进行测试,并获取该次测试中的待检测代码各组成部分的代码覆盖率信息;
筛选模块,用于根据所述代码覆盖率信息,筛选出在该次中代码覆盖率为0%的功能包;
测试用例再次获取模块,用于获取根据所述功能包的内容所制定的再测试用例,并发送该再测试用例至测试平台再次测试所述待检测代码。
2.根据权利要求1所述的基于路径差异的代码测试系统,其特征在于,还包括测试用例库,用于存储所述再测试用例。
3.根据权利要求1所述的基于路径差异的代码测试系统,其特征在于,所述路径分析模块通过Jdepend工具获取所述待检测代码与其对应的旧版本代码各自的路径信息,进而对比出所述路径差异信息。
4.根据权利要求1所述的基于路径差异的代码测试系统,其特征在于,所述测试平台通过JaCoCo工具获取所述代码覆盖率信息。
5.根据权利要求1所述的基于路径差异的代码测试系统,其特征在于,所述测试平台通过EMMA工具获取所述代码覆盖率信息。
CN201811015377.9A 2018-08-31 2018-08-31 基于路径差异的代码测试系统 Pending CN109254918A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811015377.9A CN109254918A (zh) 2018-08-31 2018-08-31 基于路径差异的代码测试系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811015377.9A CN109254918A (zh) 2018-08-31 2018-08-31 基于路径差异的代码测试系统

Publications (1)

Publication Number Publication Date
CN109254918A true CN109254918A (zh) 2019-01-22

Family

ID=65050067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811015377.9A Pending CN109254918A (zh) 2018-08-31 2018-08-31 基于路径差异的代码测试系统

Country Status (1)

Country Link
CN (1) CN109254918A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552698A (zh) * 2020-04-21 2020-08-18 重庆富民银行股份有限公司 一种解决环境差异的sql版本控制系统及方法
CN112181849A (zh) * 2020-10-23 2021-01-05 网易(杭州)网络有限公司 测试用例识别方法、装置、设备及存储介质
CN113760307A (zh) * 2020-11-19 2021-12-07 北京沃东天骏信息技术有限公司 获取应用代码的差异化覆盖率的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
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 广州品唯软件有限公司 软件差异覆盖率的测试方法、装置及可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552698A (zh) * 2020-04-21 2020-08-18 重庆富民银行股份有限公司 一种解决环境差异的sql版本控制系统及方法
CN112181849A (zh) * 2020-10-23 2021-01-05 网易(杭州)网络有限公司 测试用例识别方法、装置、设备及存储介质
CN112181849B (zh) * 2020-10-23 2023-07-25 网易(杭州)网络有限公司 测试用例识别方法、装置、设备及存储介质
CN113760307A (zh) * 2020-11-19 2021-12-07 北京沃东天骏信息技术有限公司 获取应用代码的差异化覆盖率的方法和装置

Similar Documents

Publication Publication Date Title
CN104966031B (zh) 安卓应用程序中非权限相关隐私数据的识别方法
CN104267947B (zh) 一种编辑弹窗图片的方法及弹窗图片编辑装置
US10782961B2 (en) Analyzing components related to a software application in a software development environment
CN104679519B (zh) 图形用户界面软件功能获取方法及装置
CN105224462B (zh) 控件元素的识别方法和装置
CN107909466A (zh) 客户关系网络展示方法、装置、设备及可读存储介质
EP2228726A2 (en) A method and system for task modeling of mobile phone applications
US9098630B2 (en) Data selection
CN109254918A (zh) 基于路径差异的代码测试系统
US20190087075A1 (en) Simulation of cloud platform integration testing in a visual interface
CN104035873A (zh) 测试代码生成方法及生成装置
US8924848B2 (en) Synchronizing a user interface area
CN109740159B (zh) 用于命名实体识别的处理方法及装置
CN106354519A (zh) 一种用户画像的标签生成方法和装置
CN111930617B (zh) 基于数据对象化的自动化测试方法及装置
Yasmin et al. Macro-, meso-, and micro-level validation of an activity-based travel demand model
CN108132879A (zh) 自动化软件测试方法、平台、终端及介质
US20190004934A1 (en) Automated path generator for optimized application testing
CN108509199A (zh) 自动生成中文注释的方法、装置、设备及存储介质
CN109144878A (zh) 基于路径差异的代码测试方法
CN106326088A (zh) 实现构建测试对象的方法、装置及业务配置测试的装置
Asuncion et al. Automated techniques for capturing custom traceability links across heterogeneous artifacts
Trias Building CMS-based Web applications using a model-driven approach
CN113779261B (zh) 知识图谱的质量评价方法、装置、计算机设备及存储介质
US20120159442A1 (en) Auto-documenting based on real-time analysis of code execution

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: 20190122