CN109656799B - 测试方法和装置 - Google Patents

测试方法和装置 Download PDF

Info

Publication number
CN109656799B
CN109656799B CN201710933266.5A CN201710933266A CN109656799B CN 109656799 B CN109656799 B CN 109656799B CN 201710933266 A CN201710933266 A CN 201710933266A CN 109656799 B CN109656799 B CN 109656799B
Authority
CN
China
Prior art keywords
test
log
request
application
tested
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
CN201710933266.5A
Other languages
English (en)
Other versions
CN109656799A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710933266.5A priority Critical patent/CN109656799B/zh
Publication of CN109656799A publication Critical patent/CN109656799A/zh
Application granted granted Critical
Publication of CN109656799B publication Critical patent/CN109656799B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results 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

本申请公开了测试方法和装置。该方法的一具体实施方式包括:接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。该实施方式提高了测试的灵活性。

Description

测试方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及测试方法和装置。
背景技术
测试是保证网站能够正常使用的必须程序。网站制作完成并上传到服务器之后,需要针对网站的各项性能情况进行测试工作,以供用户正常访问。
然而,在复杂的系统环境下,很难在线下重现线上问题。现有的网站测试通常是在线下进行的,无法在线上修改程序执行的逻辑,也无法将所修改的程序执行逻辑限制在测试会话中。线上主要通过日志跟踪程序的执行情况来辅助测试。此外,现有的网站测试方式不能适应分布式环境下的测试需求。一个请求所执行的代码逻辑往往分布在多个集群,难以在海量的线上请求日志中查找单个请求日志,从而存在测试的灵活性低的问题。
发明内容
本申请的目的在于提出一种改进的测试方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请实施例提供了一种测试方法,该方法包括:接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
在一些实施例中,测试请求还包括会话标识;以及该方法还包括:响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行上述处理步骤。
在一些实施例中,在接收第一测试请求之前,该方法还包括预先设置待生成的各条测试日志的级别;以及在运行待测试应用,以生成至少一条测试日志之后,该方法还包括:根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
在一些实施例中,第一测试请求是由终端设备发送的且还包括该终端设备所请求显示的测试日志的级别;以及该方法还包括:从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;对所选择的测试日志按照该待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;将该测试日志序列发送至上述终端设备。
在一些实施例中,测试请求还包括请求标识;以及在生成测试日志序列之后,上述将测试日志序列发送至终端设备包括:将该测试日志序列以及该测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至上述终端设备。
在一些实施例中,该方法还包括:响应于确定测试结束,删除该存储器中所存储的测试参数以及测试参数值。
第二方面,本申请提供了一种测试装置,该装置包括:接收单元,配置用于接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行单元,配置用于执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
在一些实施例中,测试请求还包括会话标识;以及该装置还包括:第一确定单元,配置用于响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行上述处理步骤。
在一些实施例中,该装置还包括:设置单元,配置用于预先设置待生成的各条测试日志的级别;第二确定单元,配置用于根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
在一些实施例中,第一测试请求是由终端设备发送的且还包括该终端设备所请求显示的测试日志的级别;以及该装置还包括:选择单元,配置用于从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;生成单元,配置用于对所选择的测试日志按照待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;发送单元,配置用于将该测试日志序列发送至上述终端设备。
在一些实施例中,测试请求还包括请求标识;以及上述发送单元包括:发送模块,配置用于将该测试日志序列以及该测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至该终端设备。
在一些实施例中,该装置还包括:删除单元,配置用于响应于确定测试结束,删除该存储器中所存储的测试参数以及测试参数值。
第三方面,本申请实施例提供了一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行,使得该一个或多个处理器实现如上述测试方法中任一实施例的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述测试方法中任一实施例的方法。
本申请实施例提供的测试方法和装置,通过接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志,从而,提高了测试的灵活性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2是根据本申请的测试方法的一个实施例的流程图;
图3是根据本申请的测试方法的一个应用场景的示意图;
图4A是根据本申请的测试方法的又一个实施例的流程图;
图4B是根据本申请的测试方法的一个实施例的时序示意图;
图5是根据本申请的测试装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的测试方法或测试装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送测试请求等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的网页提供支持的后台网页服务器。后台网页服务器可以对接收到的测试请求等数据进行分析等处理,并将处理结果(例如所生成的测试日志)反馈给终端设备。
需要说明的是,本申请实施例所提供的测试方法一般由服务器105执行,相应地,测试装置一般设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,并且上述服务器可以替换为分布式服务器集群。
继续参考图2,示出了根据本申请的测试方法的一个实施例的流程200。该测试方法,包括以下步骤:
步骤201,接收第一测试请求。
在本实施例中,测试方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式接收第一测试请求。其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的。
其中,上述第一测试请求可以是用户通过安装于终端的浏览器发送的HTTP(HyperText Transfer Protocol,超文本传输协议)请求,也可以是用户通过安装于终端的浏览器发送的HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,以安全为目标的HTTP通道)请求。
在本实施例的一些可选的实现方式中,可以在网站开发时,开发测试页面。当网站应用程序(即待测试应用)需要测试时,测试人员可以通过网址访问该测试页面,也可以通过浏览器插件访问该测试页面,还可以为显示该测试页面开发测试工具(例如,微信公众平台接口调试工具)。该测试界面上可以显示待测试应用的参数,也可以按照源程序的执行逻辑(所需要测试的代码片段的执行顺序)分区域显示每个代码片段运行时所需要的参数。这些显示在测试页面的参数包括测试参数。测试人员可以为这些显示在测试页面的参数设置参数值(经测试人员在测试页面设置的参数值即为测试参数值,测试参数值所对应的参数即为测试参数)。可以理解,通常情况下,当用户向浏览器后台服务器发送HTTP请求时,针对该HTTP请求,应用程序会使用默认存储器(即非测试状态下,用于存储用户数据的存储器)所存储的参数和参数值,以运行应用程序并响应该HTTP请求。然而,当测试人员在测试页面为测试参数设置了测试参数值之后,应用程序在运行时会优先使用测试人员所设置的测试参数和测试参数值。并且,可以理解,如果同一会话(用户打开一个浏览器,访问某一个网站,在这个网站点击多个超链接,访问服务器所存储的多个资源,然后关闭浏览器,整个过程称之为一个会话)内,测试参数值发生变化,则默认存储器中所存储的相应的参数值不会发生变化(与测试参数值所对应的测试参数相同的参数已经被存储于默认存储器中)。如果应用程序在运行时需要使用的参数和参数值没有在测试页面进行设置(例如,参数的参数值为空(NULL)),则上述电子设备可以使用默认存储器所存储的参数和参数值运行应用程序。
作为示例,如果待测试应用要计算两个数的和,例如:a+b,其中,a、b为该待测试应用的参数。此时,测试参数可以是“a”和“b”。并且,可以预先设置测试参数值,例如:“a=1”、“b=2”。然后,可以通过HTTP测试请求,利用cookie技术接收上述参数以及参数值。其中,cookie技术是指在HTTP下,服务器或脚本可以维护终端上信息的一种方式。cookie是一种能够让网站服务器把少量数据储存到终端,或是从终端读取数据的一种技术。
步骤202,执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。其中,测试日志是测试中所生成的日志。可以理解,每条测试日志可以是一条信息或信息片段。示例性的,每条测试日志可以对应一条程序语句(例如,使用Java语言,在导入日志操作包org.apache.log4j.Logger之后,可以通过Logger类的成员函数debug生成测试语句。其中,org.apache.log4j是Apache软件基金会(Apache SoftwareFoundation,ASF)的一个开放源代码项目,org.apache.log4j.Logger是一个开源的类)。可选的,还可以通过其他编程语言(例如Python等等)实现相应的功能。需要说明的是,在实践中,可以根据实际需要选择不同的方案来生成日志。例如,Apache Commons Logging(Apache软件基金会提供的一个通用日志工具包)、简单日志门面(SLF4J,Simple LoggingFacade for Java)等等。
在本实施例中,上述电子设备(例如图1所示的服务器)可以基于所接收的第一测试请求,执行以下处理步骤:首先,将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;然后,基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。其中,上述待测试应用中可以包括用于生成测试日志的操作,当该待测试应用运行时,测试日志可以自动生成。
其中,上述存储器所存储的测试参数和测试参数值是上述待测试应用的操作执行时的环境(即软件工程中的上下文)。可选的,可以根据测试参数执行待测试应用中的不同操作(即调用不同的应用程序或代码片段)。
作为示例,如果待测试应用要计算两个数的和,例如:a+b,并且,待测试应用中所包括的程序所生成的测试日志为“a+b”运算后的值(例如:a=1,b=1,则待测试应用在运行a+b时,所生成的测试日志为“2”。第一测试请求所包括的测试参数是“a”和“b”,预先设置的测试参数值分别为:“1”、“2”。此时,该处理步骤可以如下进行:
首先,可以将“a、b、1、2”存储至存储器。可以理解,在存储器中“a”与“1”、“b”与“2”是分别对应的。
然后,基于该存储器所存储的上述测试参数和上述测试参数值,运行上述待测试应用,可以生成测试日志“3”。
可选的,还可以生成用于表示应用程序运行结束的日志。示例性的,可以生成测试日志“应用程序运行结束!”。
需要说明的是,上述存储器可以是用于存储上述测试参数而临时分配的存储空间(例如Java中的上下文Context)。上述存储器中所存储的测试参数和测试参数值只会被当前会话运行待测试应用时使用,而不会被其它用于测试的会话或正常会话(即非用于测试的会话)使用。可选的,还可以实现将测试日志显示于文件(例如.log文件)中的功能。
示例性的,可以通过cookie技术获取测试人员通过终端浏览器所发送的HTTP请求中所包括的会话标识(sessionID),来确定是否为同一会话。在同一会话的各个请求间(可以理解,会话即请求集合),可以传递参数值。
在本实施例的一些可选的实现方式中,可以根据待测试应用中待执行的程序片段,预先设置参数,以调用分布式系统中不同的应用程序或代码片段,从而进行更具针对性的测试。
需要说明的是,在运行待测试应用时,如果测试参数值发生变化,则上述存储器中所存储的相应的测试参数值会被发生变化的测试参数值替代。而其它存储器(例如上述默认存储器)所存储的测试参数值则不会发生变化。
在本实施例的一些可选的实现方式中,上述待测试应用可以部署于分布式服务器上。相应的,上述待测试应用在执行时,可以进行进程间通信(IPC,InterProcessCommunication),其中,进程间通信的类型可以是远程过程调用(RPC,Remote ProcedureCall)或本地过程调用(LPC,Local Procedure Call)。
需要说明的是,本申请所涉及的技术方案中所包括的步骤,可以被实现为计算机软件应用。该应用可以包括待测试应用和测试工具应用。其中,待测试应用可以由一个Web(前端)入口和相关的RPC服务构成。符合一般的互联网分布式应用系统的部署方式。测试工具应用用于管理测试上下文(包括会话管理及测试参数的传递)以及测试日志的推送。其中,测试上下文可以是包含在程序执行过程中所需要的信息(例如,参数)。待测试应用可以定制逻辑控制器,以针对上下文的测试参数执行逻辑(调用不同的服务器程序或代码片段)。待测试应用和测试工具应用间通过cookie技术传递会话信息(例如,上述存储器中所存储的测试参数、测试参数值等)。测试工具应用可以通过SDK(Software DevelopmentKit,SDK,软件开发工具包)的方式嵌入到待测试应用中。
其中,测试工具应用可以利用Web层和RPC层的Filter,解析测试参数,并在分布式节点间进行上下文传递。Filter技术可以对web服务器的文件、请求进行拦截。在Java服务器页面(Java Server Pages,JSP)开发应用中广泛应用。Filter可以改变request(请求)和修改response(响应)。Filter能够在一个request到达Servlet之前预处理request,也可以在离开Servlet时处理response。Filter可以接收并拦截上述第一测试请求,并对该第一测试请求进行解析,进而得到测试参数、测试参数值。其中,Servlet即Server Applet,全称Java Servlet,是一种用Java编写的服务器端程序。主要功能在于交互式地浏览和修改数据,生成动态Web内容。此外,测试工具应用还可以在一个节点内部维护一个线程安全的测试上下文,并提供一系列的会话上下文管理方法。
继续参见图3,图3是根据本实施例的测试方法的应用场景的一个示意图。在图3的应用场景中,用户首先通过终端设置测试参数、测试参数值301“a=10,b=20”生成第一测试请求,并将第一测试请求发送至服务器;然后,服务器接收第一测试请求,并将“a=10,b=20”存储至存储器;之后,服务器使用该存储器所存储的测试参数和测试参数值301“a=10,b=20”运行待测试应用,生成了302“测试日志:30”。
本申请的上述实施例提供的方法通过在线测试待测试应用以及将测试参数、测试参数值存储至存储器,实现了在线测试,并且使测试参数、测试参数值只被正在处理该测试请求的线程获取,而不影响其他的线上请求,从而,提高了测试的灵活性。
进一步参考图4,其示出了测试方法的又一个实施例的流程400。该测试方法的流程400,包括以下步骤:
步骤401,接收第一测试请求。
在本实施例中,测试方法运行于其上的电子设备(例如图1所示的服务器)可以通过有线连接方式或者无线连接方式接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的。
步骤402,执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
在本实施例中,上述电子设备可以基于所接收的第一测试请求,执行以下处理步骤:首先,将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;然后,基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
步骤403,响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行上述处理步骤。
在本实施例中,上述电子设备(例如图1所示的服务器)可以在接收到第二测试请求时,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行上述处理步骤:首先,将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;然后,基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
需要说明的是,如果在步骤402接收到第一测试请求,并运行待测试应用之后,并且在步骤403接收到第二测试请求,并运行待测试应用之前,测试参数值发生变化,则上述存储器所存储的测试参数值会发生相应变化。当接收到第二测试请求,运行待测试应用时,将使用变化后的测试参数值运行待测试应用。
在本实施例的一些可选的实现方式中,上述电子设备在上述接收第一测试请求之前,该方法还包括预先设置待生成的各条测试日志的级别;以及在该运行待测试应用,以生成至少一条测试日志之后,该方法还包括:根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
其中,可以利用Java语言,设置测试日志的级别。示例性的,使用Java语言,在导入日志操作包org.apache.log4j.Logger之后,可以使用Logger类的成员函数设置测试日志的级别。例如,可以使用成员函数info设置测试日志的级别为一般信息级别;使用成员函数debug设置测试日志的级别为除错信息级别;使用成员函数warn设置测试日志的级别为警告提示级别;使用成员函数error设置测试日志的级别为错误提示级别。相应的,当包含上述程序语句的待测试应用程序运行,并生成相应级别的测试日志时,在终端的浏览器自带的调试工具中的控制台(即浏览器的开发者工具的Console面板)可以显示出上述测试日志,并且,每个级别的测试日志可以对应不同的颜色或标识。进一步的,可以根据每条测试日志所显示的颜色或所具有的标识确定各条测试日志的级别。需要说明的是,在实践中,可以根据需求自定义测试日志的级别,进而实现更灵活的日志分类,以便提高测试效率。上述生成日志的方法为本领域技术人员广泛研究和应用的技术,在此不再赘述。
在本实施例的一些可选的实现方式中,测试请求还包括请求标识;以及在生成测试日志序列之后,上述将测试日志序列发送至终端设备还包括:上述电子设备将该测试日志序列以及该测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至上述终端设备。其中,上述请求标识和会话标识可以通过WebSocket技术发送至上述终端设备。其中,WebSocket技术是基于传输控制协议(TCP,Transmission Control Protocol)的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信,允许服务器主动发送信息给客户端。
在本实施例的一些可选的实现方式中,可以按照待测试应用程序的执行顺序,为各条日志标识顺序号。请参考图4B,其示出了根据本申请的测试方法的一个实施例的时序示意图。在图4B中,可以通过保存一个前缀的方式保证所生成的测试日志的顺序号。当测试请求进入前端应用时,将前缀记为“T”,其中,T可以是;由前端应用进入应用服务1时,将前缀记为“T.A”;由应用服务1进入应用服务2时,将前缀记为“T.A.B”;由应用服务2进入应用服务3时,将前缀记为“T.A.B.C”。其中,上述应用服务之后的数字可以用于区分分布式环境下的服务器。A、B、C则是按照一定规律排列的字符。示例性的,当测试请求进入前端应用时,将可以将前缀T序号初始为0,每进入一个应用服务将前缀记为上层应用与字符“.0”的拼接。例如,如果图4B中的T为“0”,则相应的,T.A可以是“0.0”,T.A.B可以是“0.0.0”,T.A.B.C可以是“0.0.0.0”。
在本实施例的一些可选的实现方式中,遇到一个远程过程调用时,可以通过将上述前缀的尾数值加1的方式保证调用的顺序号。示例性的,例如当前前缀为“0.0”,则远程过程调用时,前缀为“0.1”。
需要说明的是,上述为各条测试日志标识顺序号的方式仅仅是示例性的,在实践中,可以根据需求,采取不同的方式为测试日志标识顺序,以记录测试日志的实际生成顺序。
在本实施例的一些可选的实现方式中,测试工具应用还可以具有上述管理日志、控制上述的终端设备所显示的日志的级别并实时向上述终端设备推送日志的功能。
在本实施例的一些可选的实现方式中,第一测试请求是由终端设备发送的且还包括该终端设备所请求显示的测试日志的级别;以及该方法还包括:上述电子设备从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;然后对所选择的测试日志按照该待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;最后将该测试日志序列发送至该终端设备。
其中,终端设备所请求显示的测试日志的级别可以由测试人员进行设定。示例性的,该级别可以是上述的错误提示级别的测试日志。可以理解,通过显示相应级别的测试日志可以快速锁定错误程序语句的位置,从而提高测试效率。
在本实施例的一些可选的实现方式中,待测试应用中的各个操作的操作顺序可以通过该测试应用程序的执行顺序体现。可以理解,可以根据上述为各条测试日志标识顺序号的方式,实现测试日志的排序,进而生成测试日志序列。
作为示例,如果按照上述方式,为测试日志生成的顺序号如下:测试日志1对应顺序号“0.1.0”、测试日志2对应顺序号“0.3.0”、测试日志3对应顺序号“0.1.9”、测试日志4对应顺序号“0.2.8”。可以理解,上述四个顺序号的生成顺序为“0.1.0、0.1.9、0.2.8、0.3.0”。上述四条测试日志的生成顺序为“测试日志1、测试日志3、测试日志4、测试日志2”。
在本实施例的一些可选的实现方式中,上述电子设备可以将所生成的日志实时发送至上述终端设备,以便测试人员实时了解待测试应用的执行情况(测试日志生成至终端设备显示测试日志时间间隔在1秒钟之内)。可选的,可以将所生成的测试日志,存储于Redis(一个开源内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理)中。
在本实施例的一些可选的实现方式中,上述测试工具应用可以监听Redis队列中的日志。当发现有新的日志入队列时,在测试工具应用进行日志读取和处理(例如,发送至上述终端设备,以供其显示相应级别的日志)。
在本实施例的一些可选的实现方式中,该方法还包括:上述电子设备响应于确定测试结束,删除该存储器中所存储的测试参数以及测试参数值。需要说明的是,存储器中所存储的测试参数以及测试参数值仅仅用于测试时为待测试应用构建上下文环境,而其它会话中的请求则会始终使用用于存储该待测试应用数据的存储器(例如上述默认存储器)中的参数和参数值运行该待测试应用,以此,将测试时数据的改变限制在用于测试的会话中,其中,上下文环境还可以包括会话标识、请求标识、测试日志顺序号等等。
在本实施例的一些可选的实现方式中,如果预设时间段内未接收到相同会话标识的测试请求,则上述电子设备可以确定该会话的测试结束。
在本实施例的一些可选的实现方式中,上述电子设备还可以通过在上述测试页面设置测试结束按键,并检测测试结束按键是否被点击的方式来确定测试结束。
作为示例,上述测试工具应用可以通过一组Filter,对Web请求和RPC请求进行拦截,分别在请求的入口和出口进行上下文的创建和清理。其中,对于HTTP请求,在Web调用入口处使用针对Web的Filter进行参数的解析、获取会话数据,写入到当前的测试上下文中。当请求返回时WebFilter可以清理掉当前请求的上下文信息;在进行RPC调用时,调用方通过针对Rpc的Filter将测试的上下文信息追加到RPC调用的消息体中,被调用方通过针对Rpc的Filter获取调用方传递的测试上下文,解析并写入当前线程的上下文中。当被调用程序返回时,使用针对Rpc的Filter清理掉当前线程的上下文信息。测试上下文使用ThreadLocal(线程的局部变量)对象进行保存,保证该上下文只被正在处理该测试请求的线程获取,以便进行测试上下文的隔离。
从图4中可以看出,与图2对应的实施例相比,本实施例中的网页生成方法的流程400突出了对第二测试请求进行处理的步骤。由此,本实施例描述的方案可以实现会话维度的测试,以提高测试的灵活性。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种测试装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的测试装置500包括:接收单元501和执行单元502。其中,接收单元501配置用于接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行单元502配置用于执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
在本实施例中,网页生成装置500的接收单元501可以通过有线连接方式或者无线连接方式接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的。
在本实施例中,上述执行单元502可以基于所接收的第一测试请求,执行以下处理步骤:首先,将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;然后,基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。其中,上述待测试应用中可以包括用于生成测试日志的操作,当该待测试应用运行时,测试日志可以自动生成。
在本实施例的一些可选的实现方式中,测试请求还可以包括会话标识;以及该装置还可以包括:第一确定单元(图中未示出)配置用于响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行上述处理步骤。
在本实施例的一些可选的实现方式中,该装置还可以包括:设置单元(图中未示出)配置用于预先设置待生成的各条测试日志的级别;第二确定单元(图中未示出)配置用于根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
在本实施例的一些可选的实现方式中,第一测试请求可以由终端设备发送且还可以包括该终端设备所请求显示的测试日志的级别;以及该装置还可以包括:选择单元(图中未示出)配置用于从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;生成单元(图中未示出)配置用于对所选择的测试日志按照该待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;发送单元(图中未示出)配置用于将该测试日志序列发送至该终端设备。
在本实施例的一些可选的实现方式中,测试请求还可以包括请求标识;以及上述发送单元可以包括:发送模块(图中未示出)配置用于将该测试日志序列以及该测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至该终端设备。
在本实施例的一些可选的实现方式中,该装置还可以包括:删除单元(图中未示出)配置用于响应于确定测试结束,删除该存储器中所存储的测试参数以及测试参数值。
本申请的上述实施例提供的装置,通过接收单元501接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的,然后,执行单元502执行以下处理步骤:首先,将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器,再基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志,实现了在线测试,提高了测试的灵活性。
下面参考图6,其示出了适于用来实现本申请实施例的服务器的计算机系统600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元和执行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,接收单元还可以被描述为“接收第一测试请求的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的服务器中所包含的;也可以是单独存在,而未装配入该服务器中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该服务器执行时,使得该服务器:接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于该存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (14)

1.一种测试方法,其特征在于,所述方法包括:
接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;
执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于所述存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志并按照所述待测试应用的执行顺序,为所述至少一条测试日志中的各条日志标识顺序号,其中,所述待测试应用部署于分布式服务器上,所述待测试应用在执行时,进行进程间通信。
2.根据权利要求1所述的方法,其特征在于,测试请求还包括会话标识;以及
所述方法还包括:
响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行所述处理步骤。
3.根据权利要求2所述的方法,其特征在于,在所述接收第一测试请求之前,所述方法还包括预先设置待生成的各条测试日志的级别;以及
在所述运行待测试应用,以生成至少一条测试日志之后,所述方法还包括:
根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
4.根据权利要求3所述的方法,其特征在于,第一测试请求是由终端设备发送的且还包括所述终端设备所请求显示的测试日志的级别;以及
所述方法还包括:
从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;
对所选择的测试日志按照所述待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;
将所述测试日志序列发送至所述终端设备。
5.根据权利要求4所述的方法,其特征在于,测试请求还包括请求标识;以及
所述将所述测试日志序列发送至所述终端设备,包括:
将所述测试日志序列以及所述测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至所述终端设备。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
响应于确定测试结束,删除所述存储器中所存储的测试参数以及测试参数值。
7.一种测试装置,其特征在于,所述装置包括:
接收单元,配置用于接收第一测试请求,其中,测试请求包括:测试参数集合、测试参数值集合,测试参数是待测试应用的参数集合中的参数,测试参数值与测试参数相对应且是预先设置的;
执行单元,配置用于执行以下处理步骤:将第一测试请求所包括的测试参数集合以及测试参数值集合存储至存储器;基于所述存储器所存储的测试参数和测试参数值,运行待测试应用,以生成至少一条测试日志并按照所述待测试应用的执行顺序,为所述至少一条测试日志中的各条日志标识顺序号,其中,所述待测试应用部署于分布式服务器上,所述待测试应用在执行时,进行进程间通信。
8.根据权利要求7所述的装置,其特征在于,测试请求还包括会话标识;以及
所述装置还包括:
第一确定单元,配置用于响应于接收到第二测试请求,确定第二测试请求所包括的会话标识与第一测试请求所包括的会话标识是否相同;若相同,则将第二测试请求作为第一测试请求,继续执行所述处理步骤。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
设置单元,配置用于预先设置待生成的各条测试日志的级别;
第二确定单元,配置用于根据预先设置的级别,针对所生成的至少一条测试日志中的每条测试日志,确定该测试日志的级别。
10.根据权利要求9所述的装置,其特征在于,第一测试请求是由终端设备发送的且还包括所述终端设备所请求显示的测试日志的级别;以及
所述装置还包括:
选择单元,配置用于从所生成的至少一条测试日志中选择具有与所请求显示的测试日志的级别相同级别的测试日志;
生成单元,配置用于对所选择的测试日志按照所述待测试应用中的各个操作的操作顺序进行排序,生成测试日志序列;
发送单元,配置用于将所述测试日志序列发送至所述终端设备。
11.根据权利要求10所述的装置,其特征在于,测试请求还包括请求标识;以及
所述发送单元还包括:
发送模块,配置用于将所述测试日志序列以及所述测试日志序列中的各条测试日志分别对应的请求标识和会话标识发送至所述终端设备。
12.根据权利要求11所述的装置 ,其特征在于,所述装置还包括:
删除单元,配置用于响应于确定测试结束,删除所述存储器中所存储的测试参数以及测试参数值。
13.一种服务器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN201710933266.5A 2017-10-10 2017-10-10 测试方法和装置 Active CN109656799B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710933266.5A CN109656799B (zh) 2017-10-10 2017-10-10 测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710933266.5A CN109656799B (zh) 2017-10-10 2017-10-10 测试方法和装置

Publications (2)

Publication Number Publication Date
CN109656799A CN109656799A (zh) 2019-04-19
CN109656799B true CN109656799B (zh) 2022-06-07

Family

ID=66108205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710933266.5A Active CN109656799B (zh) 2017-10-10 2017-10-10 测试方法和装置

Country Status (1)

Country Link
CN (1) CN109656799B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110196813B (zh) * 2019-06-06 2023-05-02 北京百度网讯科技有限公司 接口测试方法、装置、设备和介质
TWI760673B (zh) * 2019-12-30 2022-04-11 新唐科技股份有限公司 電子裝置
CN113806212A (zh) * 2020-06-17 2021-12-17 北京字节跳动网络技术有限公司 应用程序异常定位方法、装置以及电子设备
CN113391992B (zh) * 2020-12-03 2024-10-15 腾讯科技(深圳)有限公司 测试数据的生成方法和装置、存储介质及电子设备
CN112882948A (zh) * 2021-03-15 2021-06-01 数字广东网络建设有限公司 一种应用的稳定性测试方法、装置、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339268A (ja) * 2004-05-27 2005-12-08 Nomura Research Institute Ltd 整合性チェックプログラム及び方法
CN104731566A (zh) * 2013-12-19 2015-06-24 华为软件技术有限公司 集成开发环境测试装置、方法及系统
CN104809062A (zh) * 2015-04-22 2015-07-29 北京京东尚科信息技术有限公司 一种人工智能应答系统的测试方法及系统
CN105701002A (zh) * 2014-11-26 2016-06-22 阿里巴巴集团控股有限公司 一种基于测试的执行路径的记录方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339268A (ja) * 2004-05-27 2005-12-08 Nomura Research Institute Ltd 整合性チェックプログラム及び方法
CN104731566A (zh) * 2013-12-19 2015-06-24 华为软件技术有限公司 集成开发环境测试装置、方法及系统
CN105701002A (zh) * 2014-11-26 2016-06-22 阿里巴巴集团控股有限公司 一种基于测试的执行路径的记录方法和装置
CN104809062A (zh) * 2015-04-22 2015-07-29 北京京东尚科信息技术有限公司 一种人工智能应答系统的测试方法及系统

Also Published As

Publication number Publication date
CN109656799A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
CN109656799B (zh) 测试方法和装置
CN108574604B (zh) 测试方法和装置
CN110708346A (zh) 信息处理系统和方法
CN109684188B (zh) 测试方法和装置
CN109359194B (zh) 用于预测信息类别的方法和装置
CN111914262A (zh) 测试方法、装置、系统、电子设备及存储介质
CN113360377B (zh) 一种测试方法和装置
CN114840379A (zh) 日志生成方法、装置、服务器及存储介质
CN112084114B (zh) 用于测试接口的方法和装置
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
CN112965916A (zh) 页面测试方法、页面测试装置、电子设备及可读存储介质
CN112579447A (zh) 一种浏览器测试方法和装置
CN116662193A (zh) 页面测试方法和装置
CN111338928A (zh) 基于chrome浏览器测试的方法及装置
CN112131095A (zh) 压力测试方法和装置
CN110968497A (zh) 基于树形拦截器的请求校验方法、装置、介质及电子设备
CN109889402B (zh) 用于生成信息的方法和装置
CN113535568A (zh) 应用部署版本的验证方法、装置、设备和介质
CN112579428A (zh) 接口测试的方法、装置、电子设备和存储介质
CN113760706B (zh) 网页调试方法及装置
CN111371745B (zh) 用于确定ssrf漏洞的方法和装置
CN113360417B (zh) 测试方法、会话修改器、电子设备以及介质
CN113704080B (zh) 一种自动化测试方法和装置
CN111831531B (zh) 测试方法和装置
CN116701158A (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
TG01 Patent term adjustment
TG01 Patent term adjustment