自动HTTP用户流模拟器的制作方法

文档序号:17439336发布日期:2019-04-17 04:32阅读:217来源:国知局
自动HTTP用户流模拟器的制作方法

在本发明的一些实施例中,本发明涉及测试自动化,并且更具体地但非排他地涉及对超文本传输协议(http)会话的测试自动化。

在软件测试中,测试自动化是使用通常与被测软件分开的专用软件,以控制测试的执行以及实际结果与预测结果的比较。

今天的许多软件应用作为基于网络的应用而编写以在互联网浏览器或浏览器引擎中运行。在该领域中测试自动化有许多优点。大多数都与测试执行的可重复性和速度有关。有许多商业和开源工具可用于协助开发测试自动化。测试自动化具有提高软件团队测试过程的长期效率的特定优点。



技术实现要素:

根据本发明的一些实施例的一个方面,提供了一种用于自动超文本传输协议(http)测试的测试系统,该系统包括:存储器,其被配置为存储用户请求序列;程序存储设备,其存储用于模拟用户请求序列的代码;以及至少一个处理器,其被耦合到程序存储设备和存储器以用于执行所存储的代码,该代码包括用于以下的指令:基于来自用户请求序列的请求而生成模拟请求,将模拟请求传送到应用,从应用接收对模拟请求的响应,基于所接收的响应的有效性计算调整后的(adapted)模拟序列,并且指示对调整后的模拟序列的传输。

在本发明的一些实施例中,代码还包括用于以下的指令:将所接收的响应与对应的预先记录的响应进行比较并计算所接收的响应与对应的预先记录的响应之间的相似性测度(measure),以及基于有效性测度来判定(decide)所接收的响应是否有效。

在本发明的一些实施例中,代码还包括用于以下的指令:基于所接收的响应的有效性来调整模拟请求并将调整后的模拟请求发送到应用服务器。

在本发明的一些实施例中,代码还包括用于以下的指令:检测用户序列中的请求之间的从属性,以及通过将对模拟请求所从属的至少一个先前请求的响应插入到从属请求信息中,而调整取决于序列的至少一个先前请求的模拟请求。

在本发明的一些实施例中,代码还包括用于以下的指令:在预先记录的用户序列中识别对模拟请求的至少一个先前请求,该至少一个先前请求产生模拟请求所需的至少一个动态数据项;执行先前请求并从对产生所需至少一个动态数据项的至少一个先前请求的响应中提取至少一个动态数据项;以及将该至少一个动态数据项插入到模拟请求。

代码还可以包括用于以下的指令:将至少一个动态数据项插入到模拟请求以代替从对应的预先记录的请求中复制的信息。

在本发明的一些实施例中,测试系统还包括令牌(token)实例存储库,并且其中代码还包括用于以下的指令:监视从应用服务器接收到的对模拟请求的响应,检测所监视的响应中的令牌值,将令牌值存储在令牌实例存储库中,以及通过将令牌值插入到模拟请求以代替所记录的令牌值来调整模拟请求。

在本发明的一些实施例中,代码还包括用于以下的指令:执行客户端代码以便生成令牌值并通过将生成的令牌值插入到模拟请求中以代替所记录的令牌值来调整模拟请求。

在本发明的一些实施例中,代码还包括用于产生测试代理并将测试代理植入在应用服务器中的指令。测试代理可以被配置为:监视所测试的应用中的活动项,将活动项与所访问的应用页面相关联,并存储与相关联的应用页面和对应的用户请求相关的活动项,并基于该关联来识别从属应用页面。

在本发明的一些实施例中,代码还包括用于以下的指令:确定目标结果;识别模拟序列中的从属用户请求;以及通过以下方式产生减少的模拟序列:从模拟序列中排除至少一个独立请求、通过比较响应与目标结果,执行不具有至少一个排除请求的模拟序列并确定响应的有效性、以及在响应有效的情况下从模拟序列中去除至少一个独立请求。

根据本发明的一些实施例的一个方面,提供了一种用于自动http测试的方法,该方法包括:由被配置为模拟用户请求序列的处理器基于来自存储器中存储的用户序列的请求而生成模拟请求;由处理器将模拟请求传送到应用服务器;由处理器从应用服务器接收对模拟请求的响应;由处理器基于所接收的响应的有效性计算调整后的模拟序列;以及指示对调整后的模拟序列的传输。

除非另外定义,否则本文使用的所有技术和/或科学术语具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。虽然与本文描述的那些类似或等同的方法和材料可以用于实践或测试本发明的实施例,但是下面描述了示例性方法和/或材料。在冲突的情况下,将以包括定义的本专利说明书为准。另外,材料、方法和实施例仅是说明性的,并不旨在必要限制。

附图说明

本文仅通过示例的方式参考附图描述了本发明的一些实施例。现在详细地具体参考附图,强调的是,所示的细节是作为示例并且出于说明性讨论本发明的实施例的目的。在这方面,以附图进行的描述使得本领域技术人员清楚如何实施本发明的实施例。

在附图中:

图1是示出了根据本发明的一些实施例的用于根据所接收的响应的有效性来迭代校正模拟请求的方法的示意性流程图;

图2是示出了根据本发明的一些实施例的用于识别用户请求序列之间的从属性的方法的示意性流程图;

图3是根据本发明的一些实施例的用于自动http测试的系统的示意图;

图4是示出了根据本发明的一些实施例的用于生成减少的模拟用户序列的方法的示意性流程图;并且

图5是根据本发明的一些实施例的减少的用户序列生成的示例性示意图。

具体实施方式

本发明的一些实施例提供了用于软件开发的测试解决方案,例如,安全测试解决方案、质量保证解决方案、或响应于模拟请求来分析被监视应用的行为的任何过程。特别地,由本发明的一些实施例提供的解决方案提供了一种自动测试工具,其高效且可靠地再现预先记录的http用户序列以用于测试一个或多个网站。

在整个本说明书中如本文使用的用户序列是一系列网页或其他应用请求,诸如当用户在诸如网页或网站或任何其他http应用的网络文档中执行一个或多个动作时被执行以模拟由浏览器进行的动作的http请求。如本文所使用的,浏览器是用于在万维网上检索、呈现和遍历信息资源的软件应用(诸如例如,mozillafirefox、internetexplorer、chrome或任何其他网络浏览器)。

在一些情况下,由于用户的动作触发的应用水平中的复杂登录和/或事务处理过程,用户序列可能相对较长,在一些情况下,这可能是用于访问数据或浏览网站的用户水平中的简单动作。

根据本发明的一些实施例,可以由专用测试引擎模拟这种用户序列,以产生有效的模拟用户序列。在整个本说明书中如本文使用的有效用户序列是在执行时产生有效结果的用户序列。

本发明的一些实施例提供了用于自动仿真用户序列使得将实现有效和/或期望的结果的解决方案。通常,用户序列的自动仿真可能面临一些复杂性,如本文所示。例如,一些解决方案重放预先记录的http序列。然而,用户序列通常可以包括一次性令牌和页面之间的从属性,并因此重用相同的记录值并且请求可能产生被测应用的无效响应。在本发明的一些实施例中,可以识别和调整从属请求,使得可以实现有效响应。例如,可以通过以所要求的顺序执行从属请求并将来自先前响应的信息插入到从属请求来调整从属请求。

另外,对完整用户序列的执行有时可能是低效的并且可能包括冗余步骤,这可以不是达到期望结果所必需的。本发明的一些实施例可以提供减少的或最小的用户序列,即包括与原始序列相比而言的减少的和/或最少数量的请求的用户序列,并且能够实现预定的结果。这种减少的/最小的序列可以减少特定测试所需的处理时间和/或功率。

如下文更详细描述的,根据本发明的一些实施例,通过首先在模拟序列中识别独立请求,例如不要求来自其他请求的数据并且不产生其他请求所要求的数据的请求,可以产生最小/减少的用户序列。然后,测试系统尝试从序列中排除独立用户请求。在每次去除之后,系统检查结果的有效性/合意性,并且最终在不要求有效和/或期望结果的情况下去除请求。

另外,根据本发明的一些实施例的解决方案可以提供用于判定应用响应是有效还是无效的方法,以及用于调整和重新提交模拟http请求直到从应用服务器接收到有效和/或期望的响应的方法。

因此,本文描述的方法和系统允许自动生成和执行高效且有效的用户浏览序列。根据对响应的机器学习来再现高效且有效的浏览序列,其中响应被分类为有效或无效。机器学习可以包括在训练阶段期间调整http请求直到实现有效和/或期望的响应的调整机制。

将理解的是,根据本发明实施例的被监视的应用可以是网站、网络服务、网络或移动应用、任何合适的超文本内容或服务源、或任何其他合适的http应用。另外,将理解的是,应用服务器可以包括一个或多个网络节点,诸如服务器和/或虚拟机。

在详细解释本发明的至少一个实施例之前,要理解的是,本发明不一定限于其对以下描述中阐述的和/或在附图和/或示例中说明的构造细节以及组件和/或方法的布置的应用。本发明能够具有其他实施例或者能够以各种方式实践或执行。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质(或多个计算机可读存储介质),其上具有用于使处理器执行本发明的方面的计算机可读程序指令。

计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字通用光盘(dvd)、记忆棒、软盘、机械编码设备诸如具有其上记录的指令的凹槽中的穿孔卡或凸起结构,以及前述的任何合适组合。

如本文使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线传送的电信号。

本文描述的计算机可读程序指令可以经由网络(例如,因特网、局域网、广域网和/或无线网络)从计算机可读存储介质被下载到相应的计算/处理设备,或被下载到外部计算机或外部存储设备。

网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以在相应计算/处理设备内的计算机可读存储介质中存储。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、从属于机器的指令、微代码、固件指令、状态设置数据、或以一种或多种编程语言(包括诸如smalltalk、c++等的面向对象的编程语言以及诸如“c”编程语言或类似编程语言的传统程序化编程语言)的任何组合编写的源代码或目标代码。

计算机可读程序指令可以在用户的计算机上完全执行,在用户的计算机上部分执行,作为独立的软件包,在用户的计算机上部分执行和在远程计算机上部分执行或在远程计算机或服务器上完全执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。

在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令,以使电子电路个性化来执行本发明的方面。

本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的方面。将理解的是,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令实现。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得通过或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图块和/或框图块或块中指定的功能/动作的装置。

这些计算机可读程序指令还可以在计算机可读存储介质中存储,该计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其他设备,以特定方式起作用,使得具有存储在其中的指令的计算机可读存储介质包括一种制品,其包括实现流程图块和/或框图块或块中指定的功能/动作的方面的指令。

计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以致使在计算机、其他可编程装置或其他设备上执行一系列操作步骤,来产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图块和/或框图块或块中指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。

在这方面,流程图或框图中的每个框可以表示模块、段或指令的一部分,其包括用于实现指定的一个或多个逻辑功能的一个或多个可执行指令。在一些可替换的实施方式中,框中提到的功能可以不按图中所示的顺序发生。

例如,连续示出的两个框实际上可以基本同时执行,或者框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图说明的每个框以及框图和/或流程图说明中的框的组合可以由基于专用硬件的系统来实施,基于专用硬件的系统执行特定功能或动作或者实现专用硬件和计算机指令的组合。

如本文所述,根据本发明实施例的测试引擎可以通过迭代学习过程来计算高效、有效和模拟的浏览序列,其中根据从被监视应用服务器所接收的响应的有效性来调整模拟请求。

现在参考图1,其是示出了根据本发明的一些实施例的用于根据所接收的响应的有效性而迭代校正模拟请求的方法300的示意性流程图。方法300可以由根据本发明的一些实施例提供用于测试应用的功能的测试系统执行。测试系统可以执行可以在用户的设备上或在远程服务器上运行的测试引擎。在一些实施例中,一些引擎的操作由远程服务器执行,并且一些在用户的设备和/或应用服务器上执行。

现在进一步参考图3,其是根据本发明的一些实施例的用于自动http测试的系统200的示意图。系统200可以包括测试服务器10和http应用服务器20。测试服务器10可以与服务器20通信。此外,测试服务器10可以执行测试引擎16以监视由服务器20运行和控制的http应用。

测试引擎16可以是软件代码或应用,也称为模块,并且测试服务器10可以是具有计算能力的客户端设备、服务器、虚拟机和/或任何网络节点。

测试服务器10可以包括存储器12和处理器14,其可以执行测试引擎16。存储器12可以存储预先记录的用户序列,其可以包括用户http请求的集合,例如用于访问多个超文本内容文档。所存储的预先记录的用户序列还可以包括响应于预先记录的请求而从被监视应用接收到的预先记录的接收响应。如本文所指示的,预先记录的序列可以包括由用户手动记录的序列,和/或由浏览器或任何其他合适的http应用运行的预配置脚本自动记录的序列。

在本发明的一些实施例中,预先记录的用户序列可以包括实时手动输入的序列和/或脚本生成的序列。

测试引擎16可以通过再现预先记录的http请求(例如通过模拟预先记录的请求)来执行测试。引擎16可以将模拟请求发送到应用服务器20,并且从应用服务器20接收对模拟请求的响应。然后,测试引擎16可以检查所接收的响应是有效的响应还是无效的响应。在响应无效的情况下,引擎16可以执行对模拟请求的校正或调整,例如通过执行调整机制,如本文更详细描述。然后,引擎16可以发送校正后的模拟请求并接收响应等等,直到例如实现有效响应为止。

因此,如框310所示,测试引擎16可以基于预先记录的用户序列的预先记录的请求而生成模拟请求,并将模拟请求发送到应用服务器。预先记录的序列可以包括,例如由用户手动记录的序列,和/或由浏览器或任何其他合适的http应用运行的预配置脚本自动记录的序列。

在本发明的一些实施例中,预先记录的用户序列可以包括例如通过用户输入设备(诸如例如键盘)手动输入的序列,和/或脚本生成的序列。

如框320所示,测试引擎16可以从应用服务器20接收对模拟请求的响应,并将所接收的响应与来自预先记录的用户序列的对应的预先记录的响应进行比较。例如,处理器14可以执行文本比较算法,其将预先记录的响应的文本与所接收的响应的文本进行比较。基于该比较,处理器14可以例如计算相似性测度,并判定事务处理是否成功,即所接收的响应是有效的还是失败的(即所接收的响应是无效的)。

为了判定所接收的响应是否有效,测试引擎16可以设置所接收的响应与预先记录的响应的相似性百分比的阈值,高于该阈值,所接收的响应被标记为有效,或者低于该阈值,所接收的响应被标记为无效。可以设置阈值以便允许预先记录的响应和所接收的响应之间的微小的变化,使得所接收的响应的文本可以与预先记录的响应的文本不同。例如,阈值可以被设置为所接收的响应和预先记录的响应之间的文本相似性的70%、75%、80%、或者任何其他合适的百分比值。

在一些情况下,可以在所接收的响应和预先记录的响应的部分之间执行比较。例如,为了比较,可以去除所接收的响应和/或预先记录的响应的一些部分,例如被识别为冗余和/或动态部分的部分,诸如例如动态令牌,其在响应的实例之间变化并因此可能使比较结果扭曲。另外,冗余/动态部分的去除可以使比较过程更高效,例如,通过节省时间和计算资源。

如框350所示,在所接收的响应有效的情况下,测试引擎16可以将事务处理识别为成功。如框360所示,在所接收的响应无效的情况下,测试引擎16可以调整或校正模拟请求并将调整后/校正后的模拟请求发送到应用服务器20,并且该方法从框320重复。

如本文所述,在本发明的一些实施例中,引擎16检测特定请求何时要求在对先前请求的先前响应中接收到的令牌,或者先前请求何时启用过程持续。例如,应用服务器20可以使用请求中包括的信息来确保已经执行了先前要求的步骤。在这种情况下,模拟请求可以被调整为包括成功事务处理(例如,导致有效响应的事务处理)所要求的信息。

因此,本发明的一些实施例提供了一种用于检测请求之间的从属性的方法。现在参考图2,其是示出了根据本发明的一些实施例的用于识别用户序列的请求之间的从属性的方法600的示意性流程图。如框610所示,测试引擎16可以将被测模拟请求发送到应用服务器20。在从应用服务器20接收到有效响应的情况下,如框620所示,处理器可以继续进行,例如,测试预先记录的序列。在接收到无效响应的情况下,处理器14可以执行调整过程以产生被测模拟请求的调整版本。

例如,如框640所示,处理器14可以执行文本分析以识别序列中的一个或多个先前请求,该一个或多个先前请求产生正确执行测试请求所要求的一个或多个动态数据项。例如,动态数据项可以包括可以在对类似/相同请求的响应的不同实例之间变化的动态令牌或任何一条信息。在一次使用或某个预定次数的使用之后,或在某个预定的时间量之后,这种动态数据项可能变得无效。例如,测试请求可以要求需要来自另一页面的信息的页面,或者测试请求可能需要由先前请求获取的动态令牌。

因此,处理器14在执行测试请求之前可以执行所识别的先前请求以获取另一页面或动态令牌。然后,如框650所示,处理器14可以从对先前请求的响应中提取一个或多个动态数据项,并将一个或多个动态数据项插入到被测模拟请求中。

在一些实施例中,可以通过向一条代码插入指令来修改被测模拟请求,该代码创建了从其他请求获取值的请求并将获取到的值插入被测请求代码中以代替从对应的预先记录的请求中复制的值。因此,例如,当执行模拟请求时,可以从先前请求中自动提取动态数据项并将其插入到被测模拟请求中。

然后,测试引擎16可以返回到将被测模拟请求发送到应用服务器20,如框610所示,等等,例如直到接收到有效和/或期望的响应为止。

因此,引擎16可以监视对模拟请求的http响应,并计算以某个确定顺序提交模拟http请求的指令。

如本文所述,引擎16可以从http响应中提取令牌,并将所提取的令牌嵌入到其他(例如,稍后的)模拟http请求中。可以通过组合来自多个响应的数据或基于来自单个响应的数据来提取令牌。通过将先前提取的令牌嵌入以后的模拟请求中,引擎16可以从应用服务器20获取有效响应,如本文详细描述的。

本发明的一些实施例可以包括可以存储程序指令的非暂时性计算机可读存储介质,存储程序指令在由处理器执行时实现本文所述的方法300、600和/或其他过程。

更详细地,处理器14可以接收预先记录的用户序列40,并且例如将它们存储在存储器12中。每个预先记录的用户序列40可以包括多个http请求42,例如具有将请求以预定义的顺序传送到应用服务器的指令。预先记录的用户序列40还可以包括响应于预先记录的请求42而接收到的预先记录的响应44。如本文所述,处理器14可以模拟来自预先记录的用户序列40的http请求42,以创建模拟请求42a。然后,引擎16可以将模拟请求42a发送到应用服务器20。

引擎16可以从应用服务器20接收对模拟http请求42a的响应52,和/或监视响应52。如上所述,引擎16然后可以分析响应52以检测http响应当中的包括令牌的http响应和/或承载http请求当中的https请求的令牌。例如,引擎16可以在预先记录的请求42中识别可以构成令牌的文本片段,和/或可以执行预先记录的请求42和先前的预先记录的响应44之间的文本比较以找到匹配的识别出可能构成令牌的文本片段。例如在发送对应的模拟请求42a时将从应用服务器接收到无效响应的情况下,识别出的文本片段可以被标记为潜在令牌。

在一些其他实施例中,引擎16可以执行预先记录的响应44和被监视的响应52之间的文本比较,并且通过识别预先记录的响应44和被监视的响应52之间的不相似性来识别包括令牌的http响应。

如上所述,在一些情况下,例如当成功事务处理需要一次性令牌时,包括所记录令牌的预先记录的序列的再现可能使事务处理失败。例如在响应无效的情况下,测试引擎16可以调整模拟请求。引擎16可以分析预先记录的用户场景并识别预先记录的场景内的一次性令牌。

例如,引擎16可以解析模拟请求和/或对应的所接收的响应,并搜索令牌值17,诸如例如httppost/get参数名和/或值、http头名(诸如例如,httpcookie)和/或值、和/或可解析的http主体(诸如例如json、soap、xml、gwt等)中的任何其他令牌值。引擎16可以将找到的令牌值17存储在令牌实例存储库13中,例如,在存储器12中。然后,引擎16可以通过将存储的令牌值17(例如,代替在模拟请求42a中包括的记录值)中的一个添加到模拟请求42a中来再现校正后的模拟请求42a。

然后,引擎16可以将校正后的模拟请求42a提交给应用服务器20并检查响应52的有效性,例如,如上面本文参考图1详细描述的。以这种方式,在随后的迭代中使用所提取的和被嵌入的值,直到实现有效的模拟请求序列为止。

在本发明的一些实施例中,客户端代码也可以由引擎16执行,以便得到在客户端上分配的参数值,并且例如将这些值和参数嵌入到模拟请求中。例如,所接收的响应可以包括客户端代码,诸如例如javascript或flash代码,其在被执行时可以生成有效的令牌值。因此,引擎16可以使用客户端代码以生成令牌值并将生成的令牌值嵌入到模拟请求中。

在本发明的一些实施例中,应用服务器20可以包括应用存储设备24。应用存储设备24可以包括例如在用户会话期间在应用存储设备24中存储和/或从应用存储设备24检索到的项目的用户会话存储设备22。用户会话存储设备22尤其可以存储活动项19。例如,活动项19可以包括会话活动、数据库和/或文件系统活动项,例如插入/选择和/或读/写活动,诸如在用户会话期间从应用存储设备24读取和写入应用存储设备24的操作和/或尝试。

测试引擎16可以在由服务器20执行的被监视应用中检测页面(诸如例如,需要以特定顺序激活的页面)之间的从属性。这种从属性可以通过一次性令牌(例如,一次使用后可以丢弃的令牌)来执行。例如,第一页面可以产生激活第二页面所需的一次性令牌。在这种情况下,预先记录的序列的再现可能产生不成功的事务处理。

引擎16可以识别由预先记录的http请求所请求的不同页面之间的从属性,例如以便将模拟请求调整到检测到的从属性,如本文详细描述的。

为了检测页面之间的从属性,引擎16可以在应用服务器20中和/或在被监视应用的各个位置中产生和植入测试代理15。代理15可以包括,例如,利用软件性能分析(profiling)和/或调试技术的软件组件,以便在应用代码中植入挂钩,诸如例如,可以监视应用的各种活动和行为的仪器软件工具。

例如,引擎16可以指示应用服务器20在应用代码中植入这种代理15。例如,测试代理15可以被添加到被监视应用代码中和/或可以被设置为拦截被监视应用的软件组件之间的函数调用和/或消息和/或事件传递。测试代理15可以监视被监视应用21中的事件和数据元素,和/或可以检测用户会话存储设备22中的活动项19。引擎16可以将由测试代理15监视的数据与被访问的应用页面相关联,并且可以存储由测试代理15监视的与相关联的应用页面和对应的测试http请求以及接收到的http响应相关的数据。

在由代理15监视的数据与被访问的应用页面之间的关联过程中,代理15可以与引擎16通信。引擎16可以向在应用服务器20中植入的一个或多个代理15发送请求以监视由应用服务器20运行的应用21。当应用服务器20处理请求42a时,代理15可以从应用21收集信息,诸如活动项19,其可以在用户会话存储设备22中存储。

当应用服务器20将响应52发送回测试引擎16时,测试引擎可以请求在处理请求42a期间接收由代理15收集到的信息和/或从代理15接收所请求的信息,并且例如,检测请求和/或页面之间的从属性,如本文详细描述的。

引擎16可以将例如一个或多个活动项19归属于对应页面,在该活动期间,发生诸如读/写操作和/或尝试的所归属的一个或多个项目19。基于该归属,引擎16可以识别使用相同项目19和/或对应数据域和/或存储器地址的不同页面,和/或可以识别如何使用项目、数据域和/或地址,并且因此可以将页面识别为从属的和/或从属类型。

例如,引擎16可以发送与相应页面a,b,c,......,x相关的顺序页面请求a,b,c,...,x。响应于请求a,引擎16可以从服务器20接收响应ar。响应于请求b,引擎16可以从服务器20接收响应br,并且从一个或多个代理15接收与页面b相关的写操作项19。响应于请求x,引擎16可以从服务器20接收响应xr,并且从一个或多个代理15接收与页面x相关的读操作项19。引擎16可以识别接收到的与页面x相关的读操作对应于接收到的与页面b相关的写操作。

例如,可以基于在会话存储设备22中执行写操作和读操作的位置(例如,与相同会话相关的位置)来识别对应性。也就是说,当应用服务器20处理页面b的请求b时,它在会话存储设备22中执行写活动项19,其稍后在处理页面x的请求x期间被读取,并且因此在相关位置执行读活动项19。因此,引擎16可以识别页面x从属于页面b,和/或请求x从属于请求b,并且包括在相同模拟序列(例如要求获得页面x的模拟序列)中的请求b和x。

引擎16可以使用检测到的从属性以用于将若干http请求归属于相同的http用户序列或模拟用户序列,和/或识别对于进行有效的浏览场景必不可少的http请求。由引擎16识别为对于有效的浏览序列必不可少的模拟请求可以具有更高的优先级和/或可以在其他请求之前由引擎16进行测试和/或校正过程,以便通过使用减少/最少的资源来产生有效的浏览序列。

如本文详细描述的,引擎16可以计算高效的有效模拟浏览序列,即实现有效和/或期望结果的模拟浏览序列,其还可以包括(与对应的预先记录的浏览序列相比较)最小的模拟http请求集或减少的模拟http请求集。

基于本文详细描述的方法,引擎16可以产生和/或实现用于执行有效和/或期望的模拟浏览序列(例如,执行由对应的预先记录的浏览序列执行的动作的模拟浏览序列)的指令。

有效的模拟浏览序列可以由引擎16推断出,例如,通过基于预先记录的浏览序列的迭代过程。在迭代期间,引擎16可以检查被测模拟浏览序列的结果是否是有效的和/或期望的。有效浏览序列的有效和/或期望结果可以包括,例如,某些执行的动作,诸如例如,媒介的加载、对某些内容的下载或访问、登录、数据的提交、和/或任何其他合适的执行动作。

在本发明的一些实施例中,引擎16可以产生达到期望结果所需的最小的模拟请求集。现在参考图4,其是示出了根据本发明的一些实施例的用于生成减少的模拟用户序列的方法700的示意性流程图。如框710所示,引擎16可以确定目标结果,诸如例如,要到达的某个应用页面、要获得的某些信息、和/或http用户序列执行的任何其他合适的结果。如框720所示,引擎16可以识别模拟用户序列中的从属用户请求。

例如,引擎16可以识别需要包括从先前响应获取到的信息的请求、和/或与共同的应用页面相关的请求、和/或请求之间的任何其他从属性相关的请求,如本文详细描述的。基于对从属请求的识别,引擎16可以产生减少的模拟用户序列,例如通过如下的迭代尝试。如框730所示,引擎16可以从模拟序列中排除独立请求,例如,没有从属于其的请求和/或对另一请求的从属性的请求。

引擎16可以在没有排除请求的情况下执行模拟序列,并且通过比较对目标结果的响应(例如通过执行文本比较)来确定响应的有效性,即模拟序列执行的结果。如框750所示,在响应有效的情况下,引擎16可以从模拟序列中去除独立请求,并且因此例如生成可以提供有效和/或期望结果的减少的模拟序列。

如框760所示,在响应无效的情况下,引擎16可以将独立请求保持在模拟序列中。在存在附加独立请求的情况下,引擎16可以执行附加的尝试迭代以减少模拟序列。

参考图5示出了根据本发明的一些实施例的减少的用户序列生成的示例性示意图。例如,引擎16可以判定接收某个页面x是期望的结果,例如基于预先记录的序列60。例如,在预先记录的序列60中,例如通过一系列相应的请求45-48,用户可以在接近(approach)页面x之前接近一系列页面,例如,页面a,b和c。然而,例如,为了接近页面x,仅要求一系列页面中的一个或一些,例如仅页面a和c,并且因此仅需要预先记录的序列60的子集来接近页面x。

例如,请求47可以要求来自页面a的信息,并且请求48可以要求来自页面c的信息。因此,减少的序列62可以足以到达页面x。引擎16可以生成最小/减少的模拟序列62a,其仅包括访问页面x所要求的请求。例如,引擎16可以通过从预先记录的序列的完整模拟60a开始并通过逐渐排除请求而逐渐减少模拟序列来产生最小模拟序列。

例如,完整的模拟序列60a可以包括模拟请求45a、46a、47a和48a,其可以分别从请求45、46、47和48再现。引擎16可以尝试通过消除未被识别为引导包括令牌的http响应(例如,一次或在多次迭代期间)的模拟浏览序列的一个或多个模拟http请求来减少模拟http序列60a。在减少的模拟序列62a实现有效和/或期望的结果的情况下,可以去除被消除的模拟请求。在该消除的结果无效和/或不期望的情况下,被消除的模拟请求被返回和/或保持在模拟序列中。

因此,在每个排除之后,或者在一次性一系列排除之后,引擎16可以执行模拟序列60a/62a,并且可以检查减少序列的结果的有效性和/或合意性。引擎16可以继续进行对模拟序列60a/62a的减少尝试(直到例如以减少和/或最小的模拟序列62a达到有效和/或期望的结果为止),或者可以在没有冗余请求的情况下保持完整的模拟序列60a。例如,有效的减少的模拟序列62a可以包括模拟请求45a、47a和48a,其一旦被执行,就可以根据需要导致接收页面x。

如上所述的方法用于制造集成电路芯片。

已经出于说明的目的而呈现了对本发明的各种实施例的描述,但是不旨在穷举或限制于所公开的实施例。

在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。本文使用的术语被选择为最好地解释实施例的原理、实际应用或对市场中发现的技术的技术改进,或者使本领域普通技术人员能够理解本文公开的实施例。

预计在从该申请成熟为专利的过程期间,将开发许多相关的系统和方法,并且术语单元、系统、网络应用、网站和网页的范围旨在先验性地包括所有这种新技术。

如本文所使用的,术语“约”是指±10%。

术语“包含”、“含有”、“包括”、“包括”、“具有”和它们的同源词意为“包括但不限于”。该术语包括术语“由......组成”和“基本上由......组成”。

短语“基本上由......组成”意为组合物或方法可以包括附加成分和/或步骤(但仅如果附加成分和/或步骤不实质上改变要求保护的组合物或方法的基本和新颖特性的话)。

如本文所使用的,单数形式“一”、“一个”和“该”包括复数引用,除非上下文另有明确说明。例如,术语“化合物”或“至少一种化合物”可以包括多种化合物,包括其混合物。

词语“示例性”在本文中用于意为“用作示例、实例或说明”。被描述为“示例性”的任何实施例不必被解释为比其他实施例优选或有利和/或排除结合其他实施例的特征。

词语“可选地”在本文中用于意为“在一些实施例中提供和在其他实施例中未提供”。除非这些特征冲突,否则本发明的任何特定实施例可以包括多个“可选的”特征。

在整个该申请中,本发明的各种实施例可以以范围格式呈现。应当理解的是,对范围格式的描述仅仅是为了方便和简洁,并且不应该被解释为对本发明范围的不灵活限制。因此,应该认为对范围的描述已经具体公开了所有可能的子范围以及该范围内的各个数值。

例如,应该认为对诸如1至6的范围的描述具有具体公开的子范围,诸如从1至3、从1至4、从1至5、从2至4、从2至6、从3至6等,以及在该范围内的个别数字,例如,1、2、3、4、5和6。无论范围的广度如何,这都适用。

无论何时在本文中指示数值范围,其意为包括在所指示范围内的任何引用的数字(分数或整数)。短语“范围/范围在第一指示数字和第二指示数字之间”和“范围/范围从第一指示数字到第二指示数字”在本文中可互换使用并且意为包括第一指示数字和第二指示数字以及它们之间的所有分数数字和整数数字。

应当理解的是,为了清楚起见,在单独的实施例的上下文中描述的本发明的某些特征也可以在单个实施例中组合提供。

相反,为了简洁起见,在单个实施例的上下文中描述的本发明的各种特征也可以单独提供或以任何合适的子组合提供或者在本发明的任何其他描述的实施例中合适提供。在各种实施例的上下文中描述的某些特征不被认为是那些实施例的必要特征,除非该实施例在没有这些元素的情况下不起作用。

虽然已经结合本发明的具体实施例描述了本发明,但是显然许多替代、修改和变化对于本领域技术人员来说将是显而易见的。因此,旨在涵盖落入所附权利要求的精神和广泛范围内的所有这种替代、修改和变化。

本说明书中提及的所有出版物、专利和专利申请在本文中均通过引用以其整体并入本说明书中,其程度如同每个单独的出版物、专利或专利申请被具体和单独地指出通过引用并入本文。另外,本申请中任何参考文献的引用或标识不应被解释为承认这种参考文献可用作本发明的现有技术。在使用章节标题的范围内,它们不应被解释为必然的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1