CN113535559A - 一种应用接口覆盖率统计方法和系统 - Google Patents

一种应用接口覆盖率统计方法和系统 Download PDF

Info

Publication number
CN113535559A
CN113535559A CN202110795837.XA CN202110795837A CN113535559A CN 113535559 A CN113535559 A CN 113535559A CN 202110795837 A CN202110795837 A CN 202110795837A CN 113535559 A CN113535559 A CN 113535559A
Authority
CN
China
Prior art keywords
application program
application
program interface
interface
engine
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
CN202110795837.XA
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.)
Hangzhou Moan Technology Co ltd
Original Assignee
Hangzhou Moan Technology 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 Hangzhou Moan Technology Co ltd filed Critical Hangzhou Moan Technology Co ltd
Priority to CN202110795837.XA priority Critical patent/CN113535559A/zh
Publication of CN113535559A publication Critical patent/CN113535559A/zh
Pending legal-status Critical Current

Links

Images

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/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)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及软件测试技术领域中的一种应用接口覆盖率统计方法和系统,包括以下步骤:应用启动时,获取应用的开发语言和运行环境信息;根据应用框架的类型、开发语言和运行环境信息织入应用程序接口发现代码,得到应用程序接口发现引擎;根据应用程序接口发现引擎,计算应用程序接口的数量;根据应用程序接口发现引擎,获取每个应用程序接口的执行函数;在执行函数上织入应用程序接口请求检测代码,得到应用程序接口请求引擎;根据应用程序接口请求引擎判断各个应用程序接口是否被访问,并计算测试覆盖率,具有实现应用程序风险检测的优点,突破了无法计算软件功能测试及安全测试完成率的瓶颈。

Description

一种应用接口覆盖率统计方法和系统
技术领域
本发明涉及软件测试技术领域,具体涉及一种应用接口覆盖率统计方法和系统。
背景技术
应用程序接口,即Application Programming Interface(应用程序接口),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。软件功能测试及安全测试实际上也是通过访问应用程序来判断具体的功能是否正常实现以及是否存在安全问题,而实际情况中,通常存在软件功能测试或安全测试完成后,无法统计应用程序的应用程序接口是否全部完成测试的情况,因此应用程序覆盖率成为了软件功能测试及安全测试的重要指标。
发明内容
本发明针对现有技术中的缺点,提供了一种应用接口覆盖率统计方法和系统,具有实现应用程序风险检测的优点,突破了无法计算软件功能测试及安全测试完成率的瓶颈。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种应用接口覆盖率统计方法,包括以下步骤:
应用启动时,获取应用的开发语言和运行环境信息;
判断应用框架的类型,根据应用框架的类型、开发语言和运行环境信息织入应用程序接口发现代码,得到应用程序接口发现引擎;
根据所述应用程序接口发现引擎,计算应用程序接口的数量;
根据所述应用程序接口发现引擎,对应用程序接口进行数据解析,并获取每个应用程序接口的执行函数;
在所述执行函数上织入应用程序接口请求检测代码,得到应用程序接口请求引擎;
根据所述应用程序接口请求引擎判断各个应用程序接口是否被访问,计算被访问的应用程序接口数量,并计算测试覆盖率。
可选的,根据所述应用程序接口发现引擎,对应用程序接口进行数据解析,并获取应每个用程序接口的执行函数,包括以下步骤:
根据所述应用程序接口发现引擎,解析每个应用程序接口的应用程序路由;
根据所述应用程序路由,获取应用程序路由对应的请求方法;
根据所述请求方法获取每个应用程序接口的执行函数。
可选的,还包括以下步骤:
当织入所述应用程序接口发现代码时,织入应用程序接口上报代码,得到应用程序接口上报引擎。
可选的,所述应用程序接口上报引擎将所述应用程序路由、请求方法和执行函数上报至服务终端。
可选的,计算被访问的应用程序接口数量,并计算测试覆盖率,测试覆盖率的计算公式为:测试覆盖率=被访问的应用程序接口数量/应用程序接口的数量。
可选的,所述开发语言包括JAVA、Python、Golang、Ruby或PHP中的任意一种。
可选的,所述请求方法包括GET方法、HEAD方法、POST方法、PUT方法、DELETE方法、CONNECT方法、OPTIONS方法TRACE方法和PATCH方法中的一种或多种。
可选的,还包括以下步骤:
根据所述应用程序接口发现引擎,织入风险检测代码,形成应用程序接口风险检测引擎;
判断是否对应用程序接口启动风险检测动作,若需要启动风险检测动作,则调用应用程序接口风险检测引擎,若不需要启动风险检测动作,则结束;
若应用程序接口风险检测引擎发现风险函数,则上报风险;反之,继续进行风险检测动作。
一种应用接口覆盖率统计系统,系统采用上述任意一种应用接口覆盖率统计方法。
一种计算机可读存储介质,计算机可读存储介质用于存储和执行上述一种应用接口覆盖率统计系统。
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
通过在应用程序接口上织入应用程序接口发现代码得出应用程序的应用程序接口数量,并在应用检测时织入应用程序接口请求检测代码,获取被访问的应用程序接口数量从而计算得到应用程序的测试覆盖率,便于工作人员获取应用程序的测试结果,并通过在应用程序接口织入风险检测代码,使应用程序的各个应用程序接口都进行风险防护,提高应用程序的稳定性,且传统测试覆盖率计算为http路由匹配,相较于本申请,本申请的计算更加精确。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提出的一种应用接口覆盖率统计方法的流程图之一;
图2为本发明实施例提出的一种应用接口覆盖率统计方法的流程图之二。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
如图1所示,一种应用接口覆盖率统计方法,包括以下步骤:应用启动时,获取应用的开发语言和运行环境信息;判断应用框架的类型,根据应用框架的类型、开发语言和运行环境信息织入应用程序接口发现代码,得到应用程序接口发现引擎;根据应用程序接口发现引擎,计算应用程序接口的数量;
在应用启动时,进行运行时字节码插桩,字节码插桩可以插入指定代码从而获取应用的开发语言和运行环境信息,如Java可以通过插入system.getProperty方式获取开发语言和运行环境信息,其中开发语言包括JAVA、Python、Golang、Ruby或PHP中的任意一种。
框架为应用自身框架,可分为web框架和非web框架,其中web框架有Java web框架和go web框架,而Java web框架有spring、struts2、传统Servlet等;go web框架有net/http、gin、bingo等;非web框架有dubbo、grpc等,上述列举仅对web框架和非web框架进行举例说明,但不限于上述框架种类。
不同的应用框架需要根据其自身的框架逻辑、开发语言和运行环境信息等,织入不同的应用程序接口发现代码,比如Java传统Servlet需要在doGet、doPost等方法中织入ServletRoute Discover方法,springboot需要在org.springframework.web.servlet.DispatcherServlet.getHandler方法中织入SpringbootRouteDiscover方法。
在对应用程序的各个应用程序接口织入应用程序接口发现代码后,形成应用程序接口发现引擎,通过应用程序接口发现引擎统计应用程序接口的数量,从而得到应用程序接口数量。
根据应用程序接口发现引擎,对应用程序接口进行数据解析,并获取每个应用程序接口的执行函数,其中根据应用程序接口发现引擎,对应用程序接口进行数据解析,并获取应每个用程序接口的执行函数,包括以下步骤:根据应用程序接口发现引擎,解析每个应用程序接口的应用程序路由;根据应用程序路由,获取应用程序路由对应的请求方法;根据请求方法获取每个应用程序接口的执行函数。
应用程序接口发现引擎用于解析应用程序路由,并获取请求方法,完成应用程序路由到执行函数的映射关系,即根据应用程序路由找到对应的执行函数,且请求方法包括GET方法、HEAD方法、POST方法、PUT方法、DELETE方法、CONNECT方法、OPTIONS方法TRACE方法和PATCH方法中的一种或多种。
统计测试覆盖率的方法,还包括以下步骤:当织入应用程序接口发现代码时,织入应用程序接口上报代码,得到应用程序接口上报引擎,应用程序接口上报引擎将应用程序路由、请求方法和执行函数上报至服务终端。
应用程序接口上报引擎将应用程序路由、应用程序路由对应的请求方法和获取的应用程序接口的执行函数上报至服务终端后,服务终端会在界面上显示该应用程序所有的应用程序接口的相关数据,包括开发语言、运行环境信息、请求方法、应用程序路由以及执行函数,此时标记所有的应用程序接口均为“未请求”,且此时应用启动完成。
应用检测时,在执行函数上织入应用程序接口请求检测代码,得到应用程序接口请求引擎;根据应用程序接口请求引擎判断各个应用程序接口是否被访问,计算被访问的应用程序接口数量,并计算测试覆盖率。
在应用启动完成,进行测试时,首先调取应用程序的执行函数,并在应用程序的执行函数上织入应用程序接口请求检测代码,该应用程序接口请求检测代码含有检测应用程序接口是否被访问的代码,然后执行应用程序接口请求检测代码,应用程序接口请求检测代码完成执行后,若应用程序接口请求引擎检测到被访问的应用程序接口,则应用程序接口上报引擎会将检测到的被访问的应用程序接口的请求状态和对应的请求方法上报至服务终端进行记录,且被上报的应用程序接口被标记为“已请求”。
计算被访问的应用程序接口数量,并计算测试覆盖率,测试覆盖率的计算公式为:测试覆盖率=被访问的应用程序接口数量/应用程序接口的数量。
当应用在进行功能性检测或安全检测时,需要通过访问应用程序的接口进行,因此若应用程序接口检测到被访问过,则代表该应用程序接口已经经过功能性检测或安全检测,从而应用程序接口的被访问数量即为经过功能性/安全检测的接口的数量,进而得出测试覆盖率为被访问数量/应用程序接口总数量的结论。
如图2所示,应用接口覆盖率统计方法还包括以下步骤:根据应用程序接口发现引擎,织入风险检测代码,形成应用程序接口风险检测引擎;判断是否对应用程序接口启动风险检测动作,若需要启动风险检测动作,则调用应用程序接口风险检测引擎,若不需要启动风险检测动作,则结束;若应用程序接口风险检测引擎发现风险函数,则上报风险;反之,继续进行风险检测动作。
作为一种实施例,风险检测代码可以在织入应用程序接口发现代码后织入,此时应用程序接口风险检测引擎可以实现对应用程序的所有接口进行风险检测,为降低运行负荷,首先对应用的各个应用程序接口做是否启动风险检测动作的判断,然后根据判断结果执行,若需要对应用程序接口启动风险检测动作,则调用应用程序接口风险检测引擎,应用程序接口风险检测引擎会首先判断应用程序的请求类型,然后对请求的执行函数的内容进行排查,如果排查到危险的执行函数,如Runtime.exec,则判定为风险函数,然后通过应用程序接口上报引擎将该应用程序接口以及排查到的风险函数进行上报,提醒工作人员存在风险,并进行人工审核,若未发现,则应用程序接口风险检测引擎进行周期性运行,即周期性执行风险检测动作。
在应用程序接口发现代码后织入应用程序风险检测代码有利于对所有的应用程序接口的风险进行防护,防止遗漏某个应用程序接口,导致在后期需要单独对未织入应用程序风险检测代码的应用程序接口进行单独风险检测,防止了事后诸葛亮事件发生,同时应用程序风险检测代码也可在完成测试覆盖率的统计后织入,而需要进行风险检测的应用程序接口主要为以下三种:jsp、php和asp,因此可根据应用程序接口的类型进行判断是否进行风险检测。
相较于现有的测试覆盖率的计算方法,本申请为执行方法级别,计算更加精确,例如一个带有正则匹配的模糊路由,使用传统方案会匹配失败,但本申请可以通过确定具体为哪个应用程序接口被执行而进行计算,且现有的测试覆盖率的方法对于无http路由的非web框架无法支持测试覆盖率统计,本申请可以不考虑应用框架,通过应用程序接口发现引擎将所有应用程序接口均获取并计算出,并在此基础上对应用程序接口的测试完成率进行统计以及应用程序接口的风险进行检测。
一种应用接口覆盖率统计系统,系统采用上述任意一种应用接口覆盖率统计方法。
一种计算机可读存储介质,计算机可读存储介质用于存储和执行上述一种应用接口覆盖率统计系统,计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
综合上述方法,通过在应用程序接口上织入应用程序接口发现代码得出应用程序的应用程序接口总数量,并在应用检测时织入应用程序接口请求检测代码,获取被访问的应用程序接口数量从而计算得到应用程序的测试覆盖率,便于工作人员获取应用程序的测试结果,并通过在应用程序接口织入风险检测代码,使应用程序的各个应用程序接口都进行风险防护,提高应用程序的稳定性,且本方法适用于web框架和非web框架的测试覆盖率计算,对应用框架适用性更强。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

Claims (10)

1.一种应用接口覆盖率统计方法,其特征在于,包括以下步骤:
应用启动时,获取应用的开发语言和运行环境信息;
判断应用框架的类型,根据应用框架的类型、开发语言和运行环境信息织入应用程序接口发现代码,得到应用程序接口发现引擎;
根据所述应用程序接口发现引擎,计算应用程序接口的数量;
根据所述应用程序接口发现引擎,对应用程序接口进行数据解析,并获取每个应用程序接口的执行函数;
在所述执行函数上织入应用程序接口请求检测代码,得到应用程序接口请求引擎;
根据所述应用程序接口请求引擎判断各个应用程序接口是否被访问,计算被访问的应用程序接口数量,并计算测试覆盖率。
2.根据权利要求1的一种应用接口覆盖率统计方法,根据所述应用程序接口发现引擎,对应用程序接口进行数据解析,并获取应每个用程序接口的执行函数,包括以下步骤:
根据所述应用程序接口发现引擎,解析每个应用程序接口的应用程序路由;
根据所述应用程序路由,获取应用程序路由对应的请求方法;
根据所述请求方法获取每个应用程序接口的执行函数。
3.根据权利要求1的一种应用接口覆盖率统计方法,还包括以下步骤:
当织入所述应用程序接口发现代码时,织入应用程序接口上报代码,得到应用程序接口上报引擎。
4.根据权利要求3的一种应用接口覆盖率统计方法,所述应用程序接口上报引擎将所述应用程序路由、请求方法和执行函数上报至服务终端。
5.根据权利要求1的一种应用接口覆盖率统计方法,计算被访问的应用程序接口数量,并计算测试覆盖率,测试覆盖率的计算公式为:测试覆盖率=被访问的应用程序接口数量/应用程序接口的数量。
6.根据权利要求1的一种应用接口覆盖率统计方法,所述开发语言包括JAVA、Python、Golang、Ruby或PHP中的任意一种。
7.根据权利要求2的一种应用接口覆盖率统计方法,所述请求方法包括GET方法、HEAD方法、POST方法、PUT方法、DELETE方法、CONNECT方法、OPTIONS方法TRACE方法和PATCH方法中的一种或多种。
8.根据权利要求1的一种应用接口覆盖率统计方法,还包括以下步骤:
根据所述应用程序接口发现引擎,织入风险检测代码,形成应用程序接口风险检测引擎;
判断是否对应用程序接口启动风险检测动作,若需要启动风险检测动作,则调用应用程序接口风险检测引擎,若不需要启动风险检测动作,则结束;
若应用程序接口风险检测引擎发现风险函数,则上报风险;反之,继续进行风险检测动作。
9.一种应用接口覆盖率统计系统,其特征在于,系统采用权利要求1-8中任意一种应用接口覆盖率统计方法。
10.一种计算机可读存储介质,其特征在于,计算机可读存储介质用于存储和执行权利要求9的一种应用接口覆盖率统计系统。
CN202110795837.XA 2021-07-14 2021-07-14 一种应用接口覆盖率统计方法和系统 Pending CN113535559A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110795837.XA CN113535559A (zh) 2021-07-14 2021-07-14 一种应用接口覆盖率统计方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110795837.XA CN113535559A (zh) 2021-07-14 2021-07-14 一种应用接口覆盖率统计方法和系统

Publications (1)

Publication Number Publication Date
CN113535559A true CN113535559A (zh) 2021-10-22

Family

ID=78127923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110795837.XA Pending CN113535559A (zh) 2021-07-14 2021-07-14 一种应用接口覆盖率统计方法和系统

Country Status (1)

Country Link
CN (1) CN113535559A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224460A (zh) * 2015-10-23 2016-01-06 浪潮电子信息产业股份有限公司 一种基于插装技术统计测试覆盖率的方法
CN106295353A (zh) * 2016-08-08 2017-01-04 腾讯科技(深圳)有限公司 一种引擎漏洞检测的方法以及检测装置
CN108322458A (zh) * 2018-01-30 2018-07-24 深圳壹账通智能科技有限公司 Web应用入侵检测方法、系统、计算机设备和存储介质
CN108549606A (zh) * 2018-04-16 2018-09-18 成都医云科技有限公司 接口测试方法及装置
CN111459495A (zh) * 2020-03-30 2020-07-28 招商局金融科技有限公司 单元测试代码文件生成方法、电子装置及存储介质
CN111949536A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 基于字节码技术的java应用程序测试方法及系统
CN112181821A (zh) * 2020-09-24 2021-01-05 浙江大搜车软件技术有限公司 接口测试覆盖度的检测方法、装置、电子装置和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224460A (zh) * 2015-10-23 2016-01-06 浪潮电子信息产业股份有限公司 一种基于插装技术统计测试覆盖率的方法
CN106295353A (zh) * 2016-08-08 2017-01-04 腾讯科技(深圳)有限公司 一种引擎漏洞检测的方法以及检测装置
CN108322458A (zh) * 2018-01-30 2018-07-24 深圳壹账通智能科技有限公司 Web应用入侵检测方法、系统、计算机设备和存储介质
CN108549606A (zh) * 2018-04-16 2018-09-18 成都医云科技有限公司 接口测试方法及装置
CN111459495A (zh) * 2020-03-30 2020-07-28 招商局金融科技有限公司 单元测试代码文件生成方法、电子装置及存储介质
CN111949536A (zh) * 2020-08-14 2020-11-17 中国工商银行股份有限公司 基于字节码技术的java应用程序测试方法及系统
CN112181821A (zh) * 2020-09-24 2021-01-05 浙江大搜车软件技术有限公司 接口测试覆盖度的检测方法、装置、电子装置和存储介质

Similar Documents

Publication Publication Date Title
US10102113B2 (en) Software test automation systems and methods
CN108694320B (zh) 一种多安全环境下敏感应用动态度量的方法及系统
CN113965397B (zh) 信创网络安全管理方法、装置、计算机设备以及存储介质
CN109255240B (zh) 一种漏洞处理方法和装置
CN113114680B (zh) 用于文件上传漏洞的检测方法和检测装置
CN110781073A (zh) 安全测试方法和系统
CN108009085B (zh) 渠道包测试方法
Gegick et al. Toward the use of automated static analysis alerts for early identification of vulnerability-and attack-prone components
CN113535559A (zh) 一种应用接口覆盖率统计方法和系统
CN112084108A (zh) 一种测试脚本生成方法、装置及相关组件
CN113127367B (zh) Android动态权限申请的缺陷检测方法
CN116010963A (zh) 一种内核漏洞检测方法、装置、设备及可读存储介质
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
CN115454860A (zh) 一种自动化测试的方法、装置、存储介质及电子设备
CN108845932B (zh) 一种网络库的单元测试方法、装置、存储介质及终端
CN111176975B (zh) 一种测试方法、装置、设备及计算机可读存储介质
CN111708670B (zh) 实时操作系统中任务时间参数的确定方法、装置及车辆
CN114546799A (zh) 埋点日志校验方法、装置、电子设备、存储介质及产品
US20050071820A1 (en) Using a debugging framework to enforce best practices in program development
CN109271781B (zh) 一种基于内核的应用程序获取超级权限行为检测方法与系统
CN113360389A (zh) 一种性能测试方法、装置、设备及存储介质
CN117742897B (zh) 一种基于容器镜像漏洞自动修复的实现方法
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN115357509A (zh) 一种埋点测试方法和系统
CN116302909A (zh) 一种自动化的Android应用定向行为测试方法

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
CB02 Change of applicant information

Address after: 1st Floor, Building 3, No. 2616, Yuhangtang Road, Cangqian Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100

Applicant after: HANGZHOU MOAN TECHNOLOGY CO.,LTD.

Address before: 311100 10th floor, Block E, building 1, 1378 Wenyi West Road, Cangqian street, Yuhang District, Hangzhou City, Zhejiang Province

Applicant before: HANGZHOU MOAN TECHNOLOGY CO.,LTD.

CB02 Change of applicant information