CN113688031B - 一种基于字节码增强技术的测试定位方法 - Google Patents

一种基于字节码增强技术的测试定位方法 Download PDF

Info

Publication number
CN113688031B
CN113688031B CN202110801329.8A CN202110801329A CN113688031B CN 113688031 B CN113688031 B CN 113688031B CN 202110801329 A CN202110801329 A CN 202110801329A CN 113688031 B CN113688031 B CN 113688031B
Authority
CN
China
Prior art keywords
code
test
byte code
enhancement
positioning
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.)
Active
Application number
CN202110801329.8A
Other languages
English (en)
Other versions
CN113688031A (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.)
Shanghai Pudong Development Bank Co Ltd
Original Assignee
Shanghai Pudong Development 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 Shanghai Pudong Development Bank Co Ltd filed Critical Shanghai Pudong Development Bank Co Ltd
Priority to CN202110801329.8A priority Critical patent/CN113688031B/zh
Publication of CN113688031A publication Critical patent/CN113688031A/zh
Application granted granted Critical
Publication of CN113688031B publication Critical patent/CN113688031B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • 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/368Test management for test version control, e.g. updating test cases to a new software version
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

一种基于字节码增强技术的测试定位方法
技术领域
本发明涉及软件开发测试技术领域,尤其是涉及一种基于字节码增强技术的测试定位方法。
背景技术
目前软件测试中常见的黑盒测试包括***集成测试、用户验收测试等手段均由测试部门发起,编写相关测试案例,执行自动化测试或手工测试。由于测试人员无法知道程序内部运行的结构和情况,从而导致测试人员以及开发人员都无法知道自己的黑例是否充分。因此,在编写测试案例时,测试人员需与开发人员进行相当长时间沟通,以确定该次测试所涉及的测试范围和边界。
现有测试方案不分析源码及代码执行记录的相关关系,同样也不分析源码间的类、方法之间的调用关系,因此源码对于测试人员并无多大意义,因此,代码执行记录及其覆盖率信息对于测试人员也是一个数据孤岛,因此测试人员在编写测试用例时没有正确的标竿,只能通过与开发人员不断的沟通来确定测试内容。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于字节码增强技术的测试定位方法。
本发明的目的可以通过以下技术方案来实现:
一种基于字节码增强技术的测试定位方法,该方法包括:
配置字节码增强模块;
基于字节码增强技术加载分析并修改源码对应的字节码文件,获取字节码静态数据;
基于字节码增强技术在源码逻辑之上增加事件埋点,采用测试用例进行测试时中获取测试信息和代码执行动态数据;
基于字节码静态数据、测试信息和代码执行动态数据进行测试定位。
优选地,所述的配置字节码增强模块的具体方式为:初始化字节码增强模块,通过Agent模块连接其JVM虚拟机,使用JVM提供的Attach Api,在各测试***启动完成后,向各测试***的JVM附着代理工具程序,加载增强扩展并读取增强配置。
优选地,所述的字节码静态数据包括源代码各类别所涉及到的成员、方法、注解信息以及相应类别对应的方法调用、成员初始化及调用、异常区间、代码行记录。
优选地,获取字节码静态数据的方式包括:
加载现有程序中对应的jar包信息,通过字节码增强技术分析class类文件,将class类文件的内容从头到尾扫描一遍,每次扫描到类文件相应的内容时,调用AgentClassVisitor获取class类文件所对应的类别涉及到的成员、方法、注解信息,调用AgentMethodVisitor获取相应类别所涉及到的方法调用、成员初始化及调用、异常区间、代码行记录。
优选地,所述的事件埋点设置位置包括源码的开始和结束位置以及每一行代码之后。
优选地,测试用例进行测试时,当执行某一条代码时,则该代码后对应的事件埋点被触发,产生对应的代码执行动态数据。
优选地,所述的测试信息包括***名称、应用名称、服务名称、请求分布式架构组件中的服务信息、测试标识、案例标识、用户标识、请求标识。
优选地,所述的代码执行动态数据为日志数据,所述的日志数据记录当前代码对应的执行情况或覆盖与否。
优选地,所述的字节码静态数据、测试信息和代码执行动态数据由Kafka日志模块收集并发送至测试平台进行统一处理进行测试定位。
优选地,所述的进行测试定位具体包括定位源码所涉及的代码执行记录、测试用例的覆盖率。
与现有技术相比,本发明具有如下优点:
(1)更简单:测试人员可以通过开发的代码变更直接获取当前测试的测试范围;
(2)更高效:测试人员一定程度上参与到代码级别的开发工作上来,有很多难以沟通的问题可以从代码变更上得到体现;
(3)更智能:测试平台可以根据代码变更进行测试用例的推荐以获取代码的最大覆盖,比盲目的全量测试更为精准。
附图说明
图1为本发明一种基于字节码增强技术的测试定位方法的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。注意,以下的实施方式的说明只是实质上的例示,本发明并不意在对其适用物或其用途进行限定,且本发明并不限定于以下的实施方式。
实施例
一种基于字节码增强技术的测试定位方法,该方法包括:
1、配置字节码增强模块,具体方式为:初始化字节码增强模块,通过Agent模块连接其JVM虚拟机,使用JVM提供的Attach Api,在各测试***启动完成后,向各测试***的JVM附着代理工具程序,加载增强扩展并读取增强配置。
2、基于字节码增强技术加载分析并修改源码对应的字节码文件,获取字节码静态数据,字节码静态数据包括源代码各类别所涉及到的成员、方法、注解信息以及相应类别对应的方法调用、成员初始化及调用、异常区间、代码行记录。
获取字节码静态数据的方式包括:
加载现有程序中对应的jar包信息,通过字节码增强技术分析class类文件,将class类文件的内容从头到尾扫描一遍,每次扫描到类文件相应的内容时,调用AgentClassVisitor获取class类文件所对应的类别涉及到的成员、方法、注解信息,调用AgentMethodVisitor获取相应类别所涉及到的方法调用、成员初始化及调用、异常区间、代码行记录。
3、基于字节码增强技术在源码逻辑之上增加事件埋点,采用测试用例进行测试时中获取测试信息和代码执行动态数据。
事件埋点设置位置包括源码的开始和结束位置以及每一行代码之后。测试用例进行测试时,当执行某一条代码时,则该代码后对应的事件埋点被触发,产生对应的代码执行动态数据。
测试信息包括***名称、应用名称、服务名称、请求分布式架构组件中的服务信息、测试标识、案例标识、用户标识、请求标识。
代码执行动态数据为日志数据,日志数据记录当前代码对应的执行情况或覆盖与否。
4、基于字节码静态数据、测试信息和代码执行动态数据进行测试定位。字节码静态数据、测试信息和代码执行动态数据由Kafka日志模块收集并发送至测试平台进行统一处理进行测试定位。进行测试定位具体包括定位源码所涉及的代码执行记录、测试用例的覆盖率,具体地:
测试平台在获取以上内容后,可以结合源码程序分析得到以下内容:
(1)查看全局代码覆盖率;
(2)对应源码显示当前类代码全局覆盖情况;
(3)从class文件静态分析类依赖关系;
(4)对应源码显示当前类依赖了哪些类;
(5)推荐显示当前类被那些类引用;
(6)基于用例查看某次用例执行涉及的代码覆盖情况;
(7)显示某次用例方法调用路径;
(8)对应源码显示当前分支涉及代码覆盖情况;
(9)对应源码显示当前变更涉及代码覆盖情况;
(10)执行用例查看当前变更在某次用例对应代码覆盖情况;
(11)对应源码显示用例执行记录;
(12)对应源码推荐使用某用例执行来获得最大覆盖。
本专利是通过在各测试***启动完成后,通过Agent模块连接其JVM虚拟机,并加载分析并修改其现有业务对应的字节码文件,获取现有字节码静态数据,并在原有业务逻辑之上增加事件埋点信息,以在业务执行过程中获取当前上下文中的测试信息和代码执行情况。因此本发明所涉及的关键点主要包括字节码静态数据和代码执行动态数据两种数据的获取方法。当获取字节码静态数据和代码执行动态数据后便可结合测试信息和源码解决定位源码所涉及的代码执行记录和其覆盖率等数据的相互关系。进而,测试人员可以通过开发的代码变更直接获取当前测试的测试范围,测试人员一定程度上参与到代码级别的开发工作上来,有很多难以沟通的问题可以从代码变更上得到体现,测试平台可以根据代码变更进行测试用例的推荐以获取代码的最大覆盖,比盲目的全量测试更为精准。
上述实施方式仅为例举,不表示对本发明范围的限定。这些实施方式还能以其它各种方式来实施,且能在不脱离本发明技术思想的范围内作各种省略、置换、变更。

Claims (6)

1.一种基于字节码增强技术的测试定位方法,其特征在于,该方法包括:
配置字节码增强模块;
基于字节码增强技术加载分析并修改源码对应的字节码文件,获取字节码静态数据;
基于字节码增强技术在源码逻辑之上增加事件埋点,采用测试用例进行测试时中获取测试信息和代码执行动态数据;
基于字节码静态数据、测试信息和代码执行动态数据进行测试定位;
所述的字节码静态数据包括源代码各类别所涉及到的成员、方法、注解信息以及相应类别对应的方法调用、成员初始化及调用、异常区间、代码行记录;
所述的配置字节码增强模块的具体方式为:初始化字节码增强模块,通过Agent模块连接其JVM虚拟机,使用JVM提供的Attach Api,在各测试***启动完成后,向各测试***的JVM附着代理工具程序,加载增强扩展并读取增强配置;
所述的事件埋点设置位置包括源码的开始和结束位置以及每一行代码之后;
测试用例进行测试时,当执行某一条代码时,则该代码后对应的事件埋点被触发,产生对应的代码执行动态数据。
2.根据权利要求1所述的一种基于字节码增强技术的测试定位方法,其特征在于,获取字节码静态数据的方式包括:
加载现有程序中对应的jar包信息,通过字节码增强技术分析class类文件,将class类文件的内容从头到尾扫描一遍,每次扫描到类文件相应的内容时,调用AgentClassVisitor获取class类文件所对应的类别涉及到的成员、方法、注解信息,调用AgentMethodVisitor获取相应类别所涉及到的方法调用、成员初始化及调用、异常区间、代码行记录。
3.根据权利要求1所述的一种基于字节码增强技术的测试定位方法,其特征在于,所述的测试信息包括***名称、应用名称、服务名称、请求分布式架构组件中的服务信息、测试标识、案例标识、用户标识、请求标识。
4.根据权利要求1所述的一种基于字节码增强技术的测试定位方法,其特征在于,所述的代码执行动态数据为日志数据,所述的日志数据记录当前代码对应的执行情况或覆盖与否。
5.根据权利要求1所述的一种基于字节码增强技术的测试定位方法,其特征在于,所述的字节码静态数据、测试信息和代码执行动态数据由Kafka日志模块收集并发送至测试平台进行统一处理进行测试定位。
6.根据权利要求1所述的一种基于字节码增强技术的测试定位方法,其特征在于,所述的进行测试定位具体包括定位源码所涉及的代码执行记录、测试用例的覆盖率。
CN202110801329.8A 2021-07-15 2021-07-15 一种基于字节码增强技术的测试定位方法 Active CN113688031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110801329.8A CN113688031B (zh) 2021-07-15 2021-07-15 一种基于字节码增强技术的测试定位方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110801329.8A CN113688031B (zh) 2021-07-15 2021-07-15 一种基于字节码增强技术的测试定位方法

Publications (2)

Publication Number Publication Date
CN113688031A CN113688031A (zh) 2021-11-23
CN113688031B true CN113688031B (zh) 2024-03-26

Family

ID=78577113

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110801329.8A Active CN113688031B (zh) 2021-07-15 2021-07-15 一种基于字节码增强技术的测试定位方法

Country Status (1)

Country Link
CN (1) CN113688031B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116756092B (zh) * 2023-08-23 2024-01-05 深圳红途科技有限公司 ***下载文件打标方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1276047A2 (en) * 2001-07-11 2003-01-15 Sun Microsystems, Inc. System controller for use in a distributed processing framework system and methods for implementing the same
KR20070052328A (ko) * 2007-03-28 2007-05-21 텔레콤 이탈리아 소시에떼 퍼 아찌오니 디지털 텔레비전에서의 상호작용 서비스 제공 방법 및시스템
CN106502896A (zh) * 2016-10-21 2017-03-15 武汉斗鱼网络科技有限公司 一种函数测试代码的生成方法及装置
CN107688530A (zh) * 2017-04-06 2018-02-13 平安科技(深圳)有限公司 软件测试方法及装置
CN112416794A (zh) * 2020-12-03 2021-02-26 平安银行股份有限公司 代码覆盖率的处理方法、装置、设备及存储介质
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及***
CN113076253A (zh) * 2021-04-16 2021-07-06 北京京东拓先科技有限公司 一种测试方法和测试装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1276047A2 (en) * 2001-07-11 2003-01-15 Sun Microsystems, Inc. System controller for use in a distributed processing framework system and methods for implementing the same
KR20070052328A (ko) * 2007-03-28 2007-05-21 텔레콤 이탈리아 소시에떼 퍼 아찌오니 디지털 텔레비전에서의 상호작용 서비스 제공 방법 및시스템
CN106502896A (zh) * 2016-10-21 2017-03-15 武汉斗鱼网络科技有限公司 一种函数测试代码的生成方法及装置
CN107688530A (zh) * 2017-04-06 2018-02-13 平安科技(深圳)有限公司 软件测试方法及装置
CN112416794A (zh) * 2020-12-03 2021-02-26 平安银行股份有限公司 代码覆盖率的处理方法、装置、设备及存储介质
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及***
CN113076253A (zh) * 2021-04-16 2021-07-06 北京京东拓先科技有限公司 一种测试方法和测试装置

Also Published As

Publication number Publication date
CN113688031A (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
US7647584B2 (en) Automation and isolation of software component testing
CN106325970A (zh) 编译方法和编译***
CN103577324B (zh) 移动应用中隐私信息泄露的静态检测方法
US8402446B2 (en) Associating probes with test cases
CN112732576B (zh) 基于用户界面的自动化测试方法、装置及设备
CN110716874B (zh) 一种国产操作***硬件兼容性测试方法
CN103823665B (zh) 一种sdk活跃度分析方法、网络服务器及***
CN113688031B (zh) 一种基于字节码增强技术的测试定位方法
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及***
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN110147313B (zh) 一种日志输出方法及装置
CN115456628A (zh) 基于区块链的智能合约查看方法、装置、存储介质及设备
CN113127367B (zh) Android动态权限申请的缺陷检测方法
CN114676436A (zh) 一种基于结构化变异的安卓应用多媒体解析库漏洞挖掘***及方法
CN112506782A (zh) 一种应用程序的测试方法、装置、设备及存储介质
Esipchuk et al. PTF-based test automation for Java applications on mobile phones
CN112131110A (zh) 一种智能手机***的多源异构数据探针方法及装置
CN112148581A (zh) 代码规范检查方法、装置、***及存储介质
CN117056241B (zh) 用于移动终端的应用程序测试方法和装置
CN112099838B (zh) 确定版本差异的方法、装置及存储介质
CN112783759B (zh) 白盒测试任务执行方法、装置、存储介质和计算机设备
CN114003478A (zh) 性能测试方法、装置、电子设备及存储介质
CN111221719B (zh) 一种自动化测试***及测试方法
CN113722233A (zh) 一种代码覆盖率确定方法、***、存储介质及电子设备
CN114780952A (zh) 敏感应用调用场景的检测方法、***及存储介质

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