CN112783778A - 测试方法、装置、网络设备及存储介质 - Google Patents
测试方法、装置、网络设备及存储介质 Download PDFInfo
- Publication number
- CN112783778A CN112783778A CN202110118442.6A CN202110118442A CN112783778A CN 112783778 A CN112783778 A CN 112783778A CN 202110118442 A CN202110118442 A CN 202110118442A CN 112783778 A CN112783778 A CN 112783778A
- Authority
- CN
- China
- Prior art keywords
- test
- target service
- service code
- code
- testing
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 367
- 238000010998 test method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000008569 process Effects 0.000 claims abstract description 45
- 238000013519 translation Methods 0.000 claims abstract description 22
- 238000013515 script Methods 0.000 claims description 77
- 230000006870 function Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 4
- 238000002347 injection Methods 0.000 claims description 4
- 239000007924 injection Substances 0.000 claims description 4
- 230000004044 response Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
Images
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/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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
本发明实施方式涉及内容分发网络领域,公开了一种测试方法,包括:接收由CDN用户下发的目标业务代码;对所述目标业务代码进行翻译,并在翻译过程中根据所述目标业务代码注入测试代码;根据所述测试代码测试所述目标业务代码的运行情况。本发明实施方式还公开了一种测试装置、网络设备及存储介质。本发明实施方式提供的测试方法、装置、网络设备及存储介质,可以缩短CDN定制业务的测试周期。
Description
技术领域
本发明涉及内容分发网络领域,特别涉及一种测试方法、装置、网络设备及存储介质。
背景技术
传统的CDN定制业务在开发上线的过程中,整个业务交付流程非常长,投入的人力也较多,已经无法满足互联网产业的发展,客户对业务交付的时效性和灵活性要求越来越高,因此衍生出了一种开放式的交付方式——可编程CDN,由CDN用户编写业务代码后在CDN上运行。
由于可编程CDN的结果还需要依赖传统CDN的运行环境,因此CDN开放的可编程能力也相应带来了很多的风险,例如若CDN用户编写的业务代码运行超时,则会导致一直占用CDN资源,造成资源独占的风险。
为了降低这些风险,需要在部署相应的业务代码前进行运行情况的测试,以判断业务代码是否符合在CDN上运行的要求,例如是运行时间、运行是否正常或运行的效率等。然而,目前多是提供测试工具供CDN用户进行性能测试,由于CDN用户在利用测试工具进行测试时,需要先根据测试的需求构建相应的测试环境,设置测试工具的各种测试条件和参数,才能进行相应的测试,使得测试的周期较长。
发明内容
本发明实施方式的目的在于提供一种测试方法、装置、网络设备及存储介质,可以缩短CDN定制业务的测试周期。
为解决上述技术问题,本发明的实施方式提供了一种测试方法,包括:接收由CDN用户下发的目标业务代码;对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码;根据测试代码测试目标业务代码的运行情况。
本发明的实施方式还提供了一种测试装置,包括:接收模块,用于接收由CDN用户下发的目标业务代码;注入模块,用于对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码;测试模块,用于根据测试代码测试目标业务代码的运行情况。
本发明的实施方式还提供了一种网络设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的测试方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述的测试方法。
本发明实施方式相对于相关技术而言,通过接收由CDN用户下发的目标业务代码,对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码,根据测试代码测试目标业务代码的运行情况。由于CDN可以根据在目标业务代码的翻译过程自动注入的测试代码,测试目标业务代码的运行情况,因此CDN用户不需要进行测试环境的构建即可对目标业务代码进行测试,从而可以缩短CDN定制业务测试的周期,提高了用户测试业务代码的便捷性。
另外,根据测试代码测试目标业务代码的运行情况,包括:在预设的测试框架中加载测试脚本;将注入测试代码后的目标业务代码加载至测试脚本中,以测试目标业务代码的运行情况。由于测试脚本是测试代码的运行载体,而测试框架是测试脚本的运行载体,因此,通过预设的测试框架运行的测试脚本来加载注入测试代码后的目标业务代码,可以实现目标业务代码的测试。
另外,测试脚本至少为两个,每一测试脚本对应一部分测试代码且不同的测试脚本对应的测试代码不同;将注入测试代码后的目标业务代码加载至测试脚本中,以测试目标业务代码的运行情况,包括:将注入测试代码后的目标业务代码加载至每一测试脚本中进行测试;根据所有测试脚本的测试结果得到目标业务代码的运行情况的测试结果。由于测试脚本对应一部分测试代码且不同的测试脚本对应的测试代码不同,因此可以使不同的测试脚本对应测试目标业务代码的不同内容,当用户的需求不同时,方便根据具体的用户需求选择不同的测试脚本进行组合测试,以使测试结果符合用户的实际需要。
另外,根据所有测试脚本的测试结果得到目标业务代码的运行情况的测试结果,包括:通过共享内存获取每一测试脚本的测试结果并整合得到目标业务代码的运行情况的测试结果。由于每一测试脚本对应一个进程,而共享内存可以与各个进程进行通信,因此,通过共享内存的方式可以方便获取到多个进程的调试信息。
另外,测试方法还包括:将目标业务代码的实时调试信息放在测试脚本对应进程的请求上下文中。由于放在请求上下文的信息会在测试结束时释放,而实时调试信息不是测试需要获得的信息,因此将实时调试信息放在测试脚本对应进程的请求上下文中,在测试结束时释放,可以减少内存的消耗。
另外,测试代码包括以下任意一种或组合:目标业务代码翻译前的代码和行号、目标业务代码中每个函数的进入点和退出点、目标业务代码中每条语句执行的时间点、目标业务代码中条件执行的时间点、测试通过的阈值、Exit函数、Assert函数和Trace函数。通过注入以上内容的测试代码,可以实现对目标业务代码的运行情况的测试;而由于各个用户的需求不同,因此通过合理设置需要的测试代码,可以根据用户需求进行相应的测试。
另外,根据测试代码测试目标业务代码的运行情况,包括:在测试结束后,输出以下任意一种或组合的测试信息:目标业务代码的运行总耗时、目标业务代码的运行超时内容、Assert数据、Trace数据、目标业务代码中函数和语句执行的覆盖率、目标业务代码中各个指令的性能情况、目标业务代码运行是否异常的结果、目标业务代码中函数递归调用情况和堆栈深度。通过在测试结束后输出以上内容的测试信息,有利于目标业务代码具体的运行情况的判断,方便用户根据测试信息判断是否进行评审和发布等业务产品上线的流程。
另外,目标业务代码由CDN用户下发。由于目标业务代码可以由CDN用户根据自身需求编写后下发,因此不需要依赖CDN服务商,可以实时对目标业务代码进行调整,提高目标业务代码实现的灵活性。
另外,目标业务代码对应一个或一个以上的执行阶段,在根据测试代码测试目标业务代码的运行情况之后,还包括:若目标业务代码的运行情况符合测试预期,则根据目标业务代码的执行阶段在CDN节点上加载目标业务代码;在接收到与目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。在目标业务代码的运行情况符合测试预期时在CDN节点上加载目标业务代码,可以确保CDN用户编写下发的第三方代码符合CDN节点的需求;而在接收到目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理,可以实现目标业务代码对应的业务逻辑,实现CDN用户对应的定制化功能。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是本发明第一实施方式提供的测试方法的流程示意图;
图2是本发明第二实施方式提供的测试方法的流程示意图;
图3是本发明第二实施方式提供的测试方法的流程示例图;
图4是本发明第三实施方式提供的测试方法的流程示意图;
图5是本发明第四实施方式提供的测试装置的模块结构示意图;
图6是本发明第五实施方式提供的网络设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的第一实施方式涉及一种测试方法,通过接收由CDN用户下发的目标业务代码,对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码,根据测试代码测试目标业务代码的运行情况。由于CDN可以根据在目标业务代码的翻译过程自动注入的测试代码,测试目标业务代码的运行情况,因此CDN用户不需要进行测试环境的构建即可完成对目标业务代码的测试,从而可以缩短测试的周期,提高了用户测试业务代码的便捷性。
应当说明的是,本发明实施方式提供的测试方法的执行主体可以为CDN节点,其中,CDN节点具体可以由单独的CDN服务器或多个CDN服务器组成的集群来实现。
本发明实施方式提供的测试方法的具体流程如图1所示,包括以下步骤:
S101:接收由CDN用户下发的目标业务代码。
其中,目标业务代码是指待测试的业务代码。应当理解的是,本发明实施方式提供的测试方法并不限于与CDN业务相关的业务代码,也可以是其它场景或其它类型的业务代码,本发明实施方式以CDN的业务代码为例进行说明。
可选地,CDN用户下发目标业务代码时,可以通过与CDN节点连接的服务平台编写目标业务代码,再将编写好的目标业务代码发送至CDN节点。CDN用户的下发动作之前,还可以包括编写目标业务代码的动作,可以是根据在线编辑平台的预设脚本语言,由CDN用户自行编写或者由第三方编写后交付所述CDN用户,而不是由CDN服务商自行编写。其中,CDN用户一般是指企业用户,也可以普通个人用户,只要该CDN用户涉及到CDN业务即可。选地,目标业务代码由CDN用户编写好之后,发送给CDN节点,CDN节点接收目标业务代码后将其保存至指定位置。
由于目标业务代码可以由CDN用户根据自身需求编写后下发,因此不需要依赖CDN服务商,可以实时对目标业务代码进行调整,提高目标业务代码实现的灵活性。
S102:对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码。
其中,对目标业务代码进行翻译是将目标业务代码翻译为平台可以识别的语言,可以是利用翻译工具进行翻译,具体采用的翻译工具此处不做限制。
本发明实施方式中,注入的测试代码是为了验证目标业务代码在CDN上的运行情况,因此,注入的测试代码是与目标业务代码在CDN上运行情况相关的测试代码,具体注入的测试代码可以根据CDN运行的要求确定,此处不做具体限制。
可选地,测试代码可以包括以下任意一种或组合:目标业务代码翻译前的代码和行号、目标业务代码中每个函数的进入点和退出点、目标业务代码中每条语句执行的时间点、目标业务代码中条件执行的时间点、测试通过的阈值、Exit函数、Assert函数和Trace函数。
其中,目标业务代码翻译前的代码和行号是为了便于定位测试的问题,例如,当目标业务代码的测试出现问题时,CDN节点上的测试框架可以输出目标业务代码第几行什么函数出现了什么问题,从而使用户可以针对出现问题的代码段进行修改,提高问题解决的效率;目标业务代码中每个函数的进入点和退出点、每条语句执行的时间点、条件执行的时间点可以方便检验每个函数、每条语句和每个条件是否被执行或执行的顺序是否正常;测试通过的阈值可以包括目标业务代码整体运行指标的通过阈值,也可以是目标业务代码某个部分的运行指标的通过阈值,用于衡量目标业务代码的运行情况是否达到CDN节点运行的要求;Exit函数用于退出测试并清理堆栈;Assert函数用于在执行条件返回错误值时,终止测试,实际注入时可加入行号和断言条件;Trace函数用于输出具体的调试信息。
通过注入以上内容的测试代码,可以实现对目标业务代码的运行情况的测试;而由于各个用户的需求不同,因此通过合理设置需要的测试代码,可以根据用户需求进行相应的测试。
S103:根据测试代码测试目标业务代码的运行情况。
在对目标业务代码注入测试代码之后,等待客户端发送测试请求时对目标业务代码进行测试。可选地,在根据测试代码测试目标业务代码的运行情况之前,还包括:接收目标业务代码的测试请求;在接收到目标业务代码的测试请求时,根据测试代码测试目标业务代码的运行情况。具体地,CDN用户需要测试目标代码时,向CDN节点发送一个测试请求。其中,测试请求可以携带目标业务代码的所需的信息,从而使CDN节点根据请求内容执行目标业务代码对应的业务逻辑,从而进行目标业务代码的测试。
可选地,CDN节点在根据测试代码测试目标业务代码的运行情况时,可以是在一个指定的线上测试服务器上进行测试,同时将线上测试服务器的信息发送给用户,以供用户可以实时看到测试的进度和具体调试的信息。可选地,用户可以在线上测试服务器对目标业务代码进行功能逻辑的自行测试,以验证功能逻辑的完整性。
在根据测试代码测试目标业务代码的运行情况时,CDN节点可以运行与测试代码对应的测试载体从而实现对目标业务代码的测试,其中,测试载体例如可以测试脚本,具体的形式此处不做具体限制。
在一个具体的例子中,S103可以包括:在测试结束后,输出以下任意一种或组合的测试信息:目标业务代码的运行总耗时、目标业务代码的运行超时内容、Assert数据、Trace数据、目标业务代码中函数和语句执行覆盖率、目标业务代码中各个指令的性能情况、目标业务代码运行是否异常的结果、目标业务代码中函数递归调用情况和堆栈深度。
可以理解的是,在测试结束后输出以上信息,有利于判断目标业务代码的各项运行情况。进一步地,CDN节点可针对以上信息设置一些判断条件,当以上信息符合设置的判断条件时,判定该项信息的测试结果为通过,若不符合时,判定该项信息的测试结果为不通过。例如,CDN节点可设置运行总耗时要小于等于A,若目标业务代码的运行总耗时大于A,则判定在运行总耗时该项为不通过。在各项信息判定的基础上,CDN节点可在每一项信息均为通过时判定测试通过,或者在某一项或某几项信息为通过时判定测试通过,具体可以根据实际需要进行设置,此处不做具体限制。
通过在测试结束后输出以上内容的测试信息,有利于目标业务代码具体的运行情况的判断,方便用户根据测试信息判断是否进行评审和发布等业务产品上线的流程。
本发明实施方式提供的测试方法,通过接收由CDN用户下发的目标业务代码,对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码,根据测试代码测试目标业务代码的运行情况。由于CDN预部署机器,如CDN中的任一具有测试功能的节点可以根据在目标业务代码的翻译过程自动注入的测试代码,测试目标业务代码的运行情况,因此CDN用户不需要进行测试环境的构建即可完成对目标业务代码进行测试,从而可以缩短CDN定制业务测试的周期,提高了用户测试业务代码的便捷性。
本发明的第二实施方式涉及一种测试方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:在本发明实施方式中,在对目标业务代码进行测试时,是采用若干个测试脚本对目标业务代码进行测试,再通过汇聚测试脚本的测试结果得到目标业务代码的测试结果。
本发明实施方式提供的测试方法的具体流程如图2所示,包括以下步骤:
S201:接收由CDN用户下发的目标业务代码。
S202:对目标业务代码进行翻译为CDN节点可以识别的业务代码,并在翻译过程中根据目标业务代码注入测试代码。
其中,S201-S202与第一实施方式中的S101-S102相同,具体可以参见第一实施方式中的相关描述,为了避免重复,这里不再赘述。
S203:在预设的测试框架中运行测试脚本,其中,测试脚本至少为两个,每一测试脚本对应一部分测试代码且不同的测试脚本对应的测试代码不同。
其中,预设的测试框架用于运行测试脚本并对测试脚本进行管理。
每一测试脚本对应的测试代码可以根据实际需要进行设置,例如A测试脚本对应目标业务代码中每个函数的进入点和退出点,B测试脚本对应目标业务代码中每条语句执行的时间点等,此处不做具体限制。
可以理解的是,由于用户的需求是各不相同的,因此若使用相同的测试脚本来对不同的业务代码进行测试,测试的结果可能只有部分才是用户所需要的,其它的则不是用户需要的,这样的测试结果可能不符合用户的期望,也不方便用户进行判断。因此,通过两个或以上的测试脚本来对目标业务代码进行测试,可以使不同的测试脚本对应测试不同的内容,当用户的需求不同时,可以根据具体的用户需求选择不同的测试脚本进行组合测试,以使测试结果符合用户的实际需要,方便用户进行判断。
S204:将注入测试代码后的目标业务代码加载至每一测试脚本中进行测试。
可以理解的是,测试脚本是测试代码的运行载体,而测试框架是测试脚本的运行载体,通过预设的测试框架运行测试脚本来加载注入测试代码后的目标业务代码,可以实现目标业务代码的测试。而将注入测试代码后的目标业务代码加载至每一测试脚本中,可以利用各个测试脚本测试目标业务代码不同方面的运行情况。
S205:根据所有测试脚本的测试结果得到目标业务代码的运行情况的测试结果。
在一个具体的例子中,S205具体包括:通过共享内存获取每一测试脚本的测试结果并整合得到目标业务代码的运行情况的测试结果。
其中,共享内存可以是在进行测试的时候,在测试服务器中开辟的一块共用的内存空间,用于储存测试结果。
由于每一测试脚本对应一个进程,而共享内存可以与各个进程进行通信,因此,通过共享内存的方式可以方便获取到多个进程的调试信息,再将获取到的调试信息整合在一起就可以得到目标业务代码的运行情况的测试结果。
在一个具体的例子中,本发明实施方式提供的测试方法还包括:将目标业务代码的实时调试信息放在测试脚本对应进程的请求上下文中。
其中,实时调试信息是指目标业务代码在测试时产生的信息,包括但不限于context、session等对象,例如是当前请求信息,trace的log信息等。请求上下文是指测试脚本的进程与测试请求的交互信息。
由于放在请求上下文的信息会在测试结束时释放,而实时调试信息不是测试需要获得的信息,因此将实时调试信息放在测试脚本对应进程的请求上下文中,在测试结束时释放,可以减少内存的消耗。
请参考图3,其为本发明实施方式提供的测试方法的流程示例图。具体地,1.1、用户发起目标业务代码的测试请求;1.2、CDN节点利用翻译器对目标业务代码进行翻译,在翻译的过程中注入测试代码,并将执行的测试脚本的文件信息发送给采集和汇聚模块;2.1、CDN节点在测试框架中运行测试脚本;2.2、代码执行模块执行注入调试信息(包括目标业务代码和注入的测试代码)的测试脚本;2.3、采集和汇聚模块采集和汇聚调试的信息;3.1、CDN节点获取调试的信息;3.2、采集和汇聚模块返回相应的调试信息;3.3、CDN节点将获取的调试信息反馈给用户,完成当前的测试。
本发明实施方式提供的测试方法,在对目标业务代码进行测试时,采用两个或以上的测试脚本对目标业务代码进行测试,再通过汇聚测试脚本的测试结果得到目标业务代码的测试结果。由于测试脚本对应一部分测试代码且不同的测试脚本对应的测试代码不同,可以使不同的测试脚本对应测试目标业务代码的不同内容,当用户的需求不同时,方便根据具体的用户需求选择不同的测试脚本进行组合测试,以使测试结果符合用户的实际需要,方便用户对测试的结果进行判断。
本发明的第三实施方式涉及一种测试方法,在本发明实施方式中,在目标业务代码的运行情况符合测试预期时,根据目标业务代码的执行阶段在CDN节点上加载目标业务代码,在接收到目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。
本发明实施方式提供的测试方法的具体流程如图4所示,包括以下步骤:
S301:接收CDN用户下发目标业务代码,其中,目标业务代码对应一个或一个以上的执行阶段。
其中,执行阶段包括请求接入阶段、回源转发阶段、回源响应阶段或请求响应阶段。而执行阶段的先后顺序为:请求接入阶段、回源转发阶段、回源响应阶段或请求响应阶段。目标业务代码对应一个或一个以上的执行阶段例如是:目标业务代码对应请求接入阶段,或者目标业务代码对应请求接入阶段和回源响应阶段等。
S302:对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码。
其中,S302与第一实施方式中的S102相同,具体可以参见第一实施方式中的相关描述,为了避免重复,此处不再赘述。
S303:根据测试代码测试目标业务代码的运行情况。
其中,S303与第一实施方式中的S103相同,具体可以参见第一实施方式中的相关描述,为了避免重复,此处不再赘述。
S304:若目标业务代码的运行情况符合测试预期,则根据目标业务代码的执行阶段在CDN节点上加载目标业务代码。
可选地,测试预期可以是设置相应的测试阈值,若目标业务代码的运行情况对应的结果均符合相应的测试阈值,则判定符合测试预期。
可选地,目标业务代码对应的执行阶段可以通过对应的配置信息进行确定,即CDN用户下发目标业务代码时,同时下发对应的配置信息,其中,配置信息包括目标业务代码对应的执行阶段。在确定目标业务代码对应的执行阶段后,CDN节点可在对应的执行阶段使用工作线程加载目标业务代码。例如,若目标业务代码对应的执行阶段为请求接入阶段和请求响应阶段,则CDN节点在请求接入阶段和请求响应阶段分别使用工作线程来加载目标业务代码。
S305:在接收到与目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。
其中,用户请求具体可以为应用层协议的请求,例如是http或https请求等,用户请求的具体形式此处不做限制。
可选地,目标业务代码包括触发条件,在接收符合触发条件且执行阶段与目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。其中,触发条件包括域名、定制请求头或定制URL参数等,具体的触发条件可以由CDN用户根据实际需要进行设置,此处不做具体限制。
例如,若目标业务代码的触发条件为用户请求的域名为A域名且用户请求的执行阶段在请求接入阶段,则接收到域名为www.A.com且处于请求接入阶段的用户请求时,CDN节点可以判定接收到与目标业务代码对应的用户请求;又例如,若目标业务代码的触发条件为用户请求的域名为A域名、请求IP地址为上海区域的IP地址且用户请求的执行阶段在回源转发阶段,则接收到域名为www.A.com、IP地址为上海区域的IP地址且处于回源转发阶段的用户请求时,CDN节点可以判定接收到与目标业务代码对应的用户请求。
当目标业务代码对应两个或以上的执行阶段时,目标业务代码在两个或以上的执行阶段加载,按照目标业务代码的处理顺序先后在具有业务定制的执行阶段执行目标业务代码对用户请求进行处理。
本发明实施方式提供的测试方法,在目标业务代码的运行情况符合测试预期时,根据目标业务代码的执行阶段在CDN节点加载目标业务代码,在接收到与目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。在目标业务代码的运行情况符合测试预期时在CDN节点上加载目标业务代码,可以确保CDN用户编写下发的第三方代码符合CDN节点的需求;而在接收到目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理,可以实现目标业务代码对应的业务逻辑,实现CDN用户对应的定制化功能。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第四实施方式涉及一种测试装置400,如图5所示,包括接收模块401、注入模块402、测试模块403,各模块功能详细说明如下:
接收模块401,用于接收由CDN用户下发的目标业务代码;
注入模块402,用于对目标业务代码进行翻译,并在翻译过程中根据目标业务代码注入测试代码;
测试模块403,用于根据测试代码测试目标业务代码的运行情况。
进一步地,测试模块403还用于:
在预设的测试框架中加载测试脚本;
将注入测试代码后的目标业务代码加载至测试脚本中,以测试目标业务代码的运行情况。
进一步地,测试脚本至少为两个,每一测试脚本对应一部分测试代码且不同的测试脚本对应的测试代码不同,测试模块403还用于:
将注入测试代码后的目标业务代码加载至每一测试脚本中进行测试;
根据所有测试脚本的测试结果得到目标业务代码的运行情况的测试结果。
进一步地,测试模块403还用于:
通过共享内存获取每一测试脚本的测试结果并整合得到目标业务代码的运行情况的测试结果。
进一步地,本发明实施方式提供的测试装置400还包括放置模块,其中,放置模块用于:
将目标业务代码的实时调试信息放在测试脚本对应进程的请求上下文中。
进一步地,测试代码包括以下任意一种或组合:目标业务代码翻译前的代码和行号、目标业务代码中每个函数的进入点和退出点、目标业务代码中每条语句执行的时间点、目标业务代码中条件执行的时间点、测试通过的阈值、Exit函数、Assert函数和Trace函数。
进一步地,测试模块403还用于:
在测试结束后,输出以下任意一种或组合的测试信息:目标业务代码的运行总耗时、目标业务代码的运行超时内容、Assert数据、Trace数据、目标业务代码中函数和语句执行的覆盖率、目标业务代码中各个指令的性能情况、目标业务代码运行是否异常的结果、目标业务代码中函数递归调用情况和堆栈深度。
进一步地,目标业务代码由CDN用户下发。
进一步地,本发明实施方式提供的测试装置400还包括执行模块,用于在目标业务代码的运行情况符合测试预期时,根据目标业务代码的执行阶段在CDN节点上加载目标业务代码;在接收到与目标业务代码对应的用户请求时,执行目标业务代码对用户请求进行处理。
不难发现,本实施方式为与前述实施方式相对应的装置实施例,本实施方式可与前述实施方式互相配合实施。前述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在前述实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第五实施方式涉及一种网络设备,如图6所示,包括至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述的测试方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器501和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
本发明第六实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (11)
1.一种测试方法,其特征在于,包括:
接收由CDN用户下发的目标业务代码;
对所述目标业务代码进行翻译,并在翻译过程中根据所述目标业务代码注入测试代码;
根据所述测试代码测试所述目标业务代码的运行情况。
2.根据权利要求1所述的测试方法,其特征在于,所述根据所述测试代码测试所述目标业务代码的运行情况,包括:
在预设的测试框架中加载测试脚本;
将注入测试代码后的所述目标业务代码加载至测试脚本中,以测试所述目标业务代码的运行情况。
3.根据权利要求2所述的测试方法,其特征在于,所述测试脚本至少为两个,每一测试脚本对应一部分所述测试代码且不同的测试脚本对应的测试代码不同;
所述将注入测试代码后的所述目标业务代码加载至测试脚本中,以测试所述目标业务代码的运行情况,包括:
将注入测试代码后的所述目标业务代码加载至每一所述测试脚本中进行测试;
根据所有测试脚本的测试结果得到所述目标业务代码的运行情况的测试结果。
4.根据权利要求3所述的测试方法,其特征在于,所述根据所有测试脚本的测试结果得到所述目标业务代码的测试结果,包括:
通过共享内存获取每一所述测试脚本的测试结果并整合得到所述目标业务代码的运行情况的测试结果。
5.根据权利要求2所述的测试方法,其特征在于,还包括:
将所述目标业务代码的实时调试信息放在所述测试脚本对应进程的请求上下文中。
6.根据权利要求1所述的测试方法,其特征在于,所述测试代码包括以下任意一种或组合:所述目标业务代码翻译前的代码和行号、所述目标业务代码中每个函数的进入点和退出点、所述目标业务代码中每条语句执行的时间点、所述目标业务代码中条件执行的时间点、测试通过的阈值、Exit函数、Assert函数和Trace函数。
7.根据权利要求6所述的测试方法,其特征在于,所述根据所述测试代码测试所述目标业务代码的运行情况,包括:
在测试结束后,输出以下任意一种或组合的测试信息:所述目标业务代码的运行总耗时、所述目标业务代码的运行超时内容、Assert数据、Trace数据、所述目标业务代码中函数和语句执行的覆盖率、所述目标业务代码中各个指令的性能情况、所述目标业务代码运行是否异常的结果、所述目标业务代码中函数递归调用情况和堆栈深度。
8.根据权利要求1所述的测试方法,其特征在于,所述目标业务代码对应一个或一个以上的执行阶段,在所述根据所述测试代码测试所述目标业务代码的运行情况之后,还包括:
若所述目标业务代码的运行情况符合测试预期,则根据所述目标业务代码的执行阶段在CDN节点上加载所述目标业务代码;
在接收到与所述目标业务代码对应的用户请求时,执行所述目标业务代码对所述用户请求进行处理。
9.一种测试装置,其特征在于,包括:
接收模块,用于接收由CDN用户下发的目标业务代码;
注入模块,用于对所述目标业务代码进行翻译,并在翻译过程中根据所述目标业务代码注入测试代码;
测试模块,用于根据所述测试代码测试所述目标业务代码的运行情况。
10.一种网络设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至8中任一项所述的测试方法。
11.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110118442.6A CN112783778A (zh) | 2021-01-28 | 2021-01-28 | 测试方法、装置、网络设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110118442.6A CN112783778A (zh) | 2021-01-28 | 2021-01-28 | 测试方法、装置、网络设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112783778A true CN112783778A (zh) | 2021-05-11 |
Family
ID=75759415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110118442.6A Pending CN112783778A (zh) | 2021-01-28 | 2021-01-28 | 测试方法、装置、网络设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783778A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485921A (zh) * | 2021-06-30 | 2021-10-08 | 网易(杭州)网络有限公司 | 文件系统的测试方法、装置、设备及存储介质 |
CN115996179A (zh) * | 2021-10-15 | 2023-04-21 | 北京字节跳动网络技术有限公司 | 业务节点的测试方法、装置、可读介质和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170126538A1 (en) * | 2015-10-28 | 2017-05-04 | Fastly, Inc. | Testing in a content delivery network |
CN108028853A (zh) * | 2015-09-11 | 2018-05-11 | 亚马逊科技公司 | 用于边缘位置处的可定制的事件触发计算的系统、方法和计算机可读存储介质 |
CN109067890A (zh) * | 2018-08-20 | 2018-12-21 | 广东电网有限责任公司 | 一种基于docker容器的CDN节点边缘计算系统 |
-
2021
- 2021-01-28 CN CN202110118442.6A patent/CN112783778A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108028853A (zh) * | 2015-09-11 | 2018-05-11 | 亚马逊科技公司 | 用于边缘位置处的可定制的事件触发计算的系统、方法和计算机可读存储介质 |
US20170126538A1 (en) * | 2015-10-28 | 2017-05-04 | Fastly, Inc. | Testing in a content delivery network |
CN109067890A (zh) * | 2018-08-20 | 2018-12-21 | 广东电网有限责任公司 | 一种基于docker容器的CDN节点边缘计算系统 |
Non-Patent Citations (1)
Title |
---|
王华茂: "《网络协议逆向分析及应用》", 北京理工大学出版社, pages: 418 - 256 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485921A (zh) * | 2021-06-30 | 2021-10-08 | 网易(杭州)网络有限公司 | 文件系统的测试方法、装置、设备及存储介质 |
CN113485921B (zh) * | 2021-06-30 | 2023-08-08 | 网易(杭州)网络有限公司 | 文件系统的测试方法、装置、设备及存储介质 |
CN115996179A (zh) * | 2021-10-15 | 2023-04-21 | 北京字节跳动网络技术有限公司 | 业务节点的测试方法、装置、可读介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7287190B2 (en) | Simultaneous execution of test suites on different platforms | |
WO2019037203A1 (zh) | 应用程序的性能测试方法、装置、计算机设备和存储介质 | |
US7337361B2 (en) | Test harness for enterprise application integration environment | |
CN108536571A (zh) | 性能测试方法、装置、设备及计算机可读存储介质 | |
CN112783778A (zh) | 测试方法、装置、网络设备及存储介质 | |
CN107733710A (zh) | 链路调用关系的构建方法、装置、计算机设备及存储介质 | |
CN113449022A (zh) | 一种处理业务请求的方法和装置 | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN110134612A (zh) | Ui测试数据生成方法、装置、设备及可读存储介质 | |
CN111597110A (zh) | 页面测试方法、装置、电子设备及存储介质 | |
CN113672441A (zh) | 对智能设备的测试方法及装置 | |
CN113986733A (zh) | 基于jar包的性能测试方法、装置、设备及存储介质 | |
CN110750446A (zh) | 一种系统测试的方法及相关装置 | |
CN112699034A (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN113377668A (zh) | 服务接口的自动化测试方法、装置和计算机设备 | |
US8661305B2 (en) | Method and system for test vector generation | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN112445692B (zh) | 一种用例测试方法及终端 | |
CN115437351A (zh) | 自动化测试系统、方法、电子设备及存储介质 | |
CN113127335A (zh) | 一种系统测试的方法和装置 | |
CN113238965B (zh) | 一种接口测试脚本生成方法、系统及存储介质 | |
CN110888800A (zh) | 服务交互功能的测试方法、装置、存储介质及测试系统 | |
CN108089972A (zh) | 接口测试方法及装置 | |
CN112131095B (zh) | 压力测试方法和装置 | |
CN108322524A (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 |