CN107431646A - 负载测试 - Google Patents
负载测试 Download PDFInfo
- Publication number
- CN107431646A CN107431646A CN201480084366.XA CN201480084366A CN107431646A CN 107431646 A CN107431646 A CN 107431646A CN 201480084366 A CN201480084366 A CN 201480084366A CN 107431646 A CN107431646 A CN 107431646A
- Authority
- CN
- China
- Prior art keywords
- code line
- code
- subset
- variable
- row
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
- G06F11/3461—Trace driven simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
示例涉及负载测试。本文所公开的示例能够获取在客户端计算设备中执行应用时被记录的代码行,代码行以执行的时间顺序被记录;确定在代码行的各行中是否存在对至少一个变量的依赖性;响应于确定依赖性存在,将依赖性存储在数据储存器中;从代码行中识别包括调用被调用变量的网络调用语句的代码行;并且基于被调用变量和在数据储存器中存储的依赖性消除代码行的第一子集,其中在消除之后剩余的代码行的第二子集包括用户输入的参数数据。
Description
背景技术
负载测试是在模拟诸如通信量的负载条件时,验证应用的完整性和性能的练习。为了执行诸如网页应用的应用的负载测试,可生成用于模拟与应用的执行相关联的通信量行为的测试脚本。
附图说明
下面的具体描述参考附图,其中:
图1是描绘示例环境的框图,在该示例环境中各种示例可被实现为负载测试系统。
图2是描绘示例负载测试系统的框图。
图3是描绘包含处理器可执行的用于负载测试的指令的示例机器可读存储介质的框图。
图4是描绘包含处理器可执行的用于负载测试的指令的示例机器可读存储介质的框图。
图5是描绘用于负载测试的示例方法的流程图。
图6是描绘用于负载测试的示例方法的流程图。
图7是描绘示例控制流图(CFG)的图。
图8是描绘基于第一CFG执行的示例依赖分析和消除分析的图。
图9是描绘基于第二CFG执行的示例依赖分析和消除分析的图。
具体实施方式
以下具体描述参考附图。只要有可能,相同的附图标记在附图和以下描述中用来指代相同或相似的部件。然而,应当明确指出,附图仅是为了说明和描述的目的。尽管在本文中描述了若干个示例,修改、改写和其它实现是可能的。因此,下面的详细描述不限制所公开的示例。相反,所公开的示例的适当范围可由所附的权利要求限定。
测试脚本可包括计算机可读指令和变量,并且可基于应用的记录行为生成测试脚本。脚本可被回放以模拟与应用的执行相关联的行为。在一些示例中,可在服务器计算设备中执行应用。应用可以是可被用户(和相应的客户端计算设备)访问的网页应用或其他类型的应用。
在一些实施方式中,脚本可以是传输脚本(transport script),该传输脚本用于模拟与应用的执行相关联的通信量行为。与应用的执行相关联的通信量可包括动态数据,该动态数据可指随应用的不同执行而改变的数据。为了产生脚本,与在执行期间的应用相关联的通信量可被监控并被分析以识别动态数据。动态数据然后可被用于生成可被回放以执行目标任务的脚本。这样的传输脚本的回放允许包括动态数据行为的、与应用的执行相关联的通信量行为被模拟。
基于回放的脚本可被执行的任务的示例包括测试任务,诸如,负载测试、应用程序接口(API)测试或一些其他类型的测试。
负载测试是在模拟诸如通信量的负载条件时验证应用的完整性和性能的练习。为了执行诸如网页应用的应用的负载测试,可创建脚本以用于模拟与应用的执行相关联的通信量行为。为了提供更健壮的脚本,与应用的多个执行实例相关联的通信量可被监控并且被分析,为了识别在产生脚本中使用的动态数据(例如,相关数据、参数数据和其他类型的动态数据)的目的。应用的“执行实例”可指当被请求者调用时的应用的实例。在一些情况下,可监控应用的大量(例如,100个或更多)执行实例。此外,可监控多个应用的实例。基于所监控的与一个或多个应用的执行实例相关联的通信量,与每个应用相关联的动态数据可被识别,并且这样被识别的动态数据可被使用,出于产生诸如传输脚本的一个脚本(或多个脚本)的目的。
动态数据可包括“相关数据”,该“相关数据”指由服务器计算设备(例如,图1的服务器计算设备130)生成并且在服务器计算设备中的应用与客户端计算设备之间的交互期间被传递至客户端计算设备(例如,图1的客户端计算设备140)的数据。向客户端计算设备提供的该服务器生成数据可以是由服务器计算设备可使用以将特定通信与应用的给定实例相关联的数据。作为示例,相关数据可包括会话标识符,该会话标识符用于标识服务器计算设备中的应用与客户端计算设备之间的特定会话。在其他示例中,可使用与通信流相关的其他标识符。作为又一示例,相关数据可包括认证数据,认证数据由服务器计算设备产生并且被传递至客户端计算设备,以允许客户端计算设备使用认证数据,用于与应用的后续通信。
动态数据可包括“参数数据”,该“参数数据”是指在客户端计算设备处(例如,在客户端计算设备的浏览器处)的用户输入数据。作为示例,用户输入数据可包括输入到搜索引擎的查询框中的搜索词(search term)。例如,应用为搜索应用,该搜索应用可从客户端计算设备被访问以搜索信息。作为其他示例,用户输入数据可包括诸如在注册过程或其他过程期间输入到表格中的数据。用户输入数据从客户端计算设备传递至服务器计算设备。
因此,可通过识别源自客户端计算设备的数据发现参数数据,其中数据的值在同一个应用的不同执行实例之间变化。在一些示例中,可构建字典,其中字典可包括参数和对应的不同值。字典可在以后构建脚本时被访问。
由于针对应用的多个执行实例收集的大量的通信量数据,在通信量数据中精确识别动态数据在技术上可能具有挑战性并且是耗时的。
本文所公开的示例对这些技术挑战提供了技术方案,通过在客户端计算设备中执行应用时记录代码行并且分析所记录的代码行,以消除代码行的不相关部分,允许在代码行中的动态数据更容易识别。本文所公开的示例能够获取在客户端计算设备中执行应用时被记录的代码行,代码行以执行的时间顺序被记录;确定对至少一个变量的依赖性是否存在于代码行的各行中;响应于确定依赖性存在,将依赖性存储在数据储存器中;从代码行中识别包括调用被调用变量的网络调用语句的代码行;以及基于被调用变量和存储在数据储存器中的依赖性消除代码行的第一子集,其中在消除之后剩余的代码行的第二子集包括用户输入的参数数据。
本文中使用的术语仅仅是为了描述具体实施例的目的,而不旨在限制。如在如本文中使用的单数形式“一”、“此”、“该”旨在也包含复数形式,除非上下文明确地表示别的含义。如本文中使用的术语“多个”被限定为两个或两个以上。如本文中使用的术语“另一”被限定为至少第二或第二以上。如本文中使用的术语“耦接”被限定为没有任何中间元件的直接连接或者是具有至少一个中间元件的间接连接,除非另有说明。两个元件可被机械耦接、电气耦接,或者通过通信信道、路径、网络或系统而通信连接。如本文中使用的术语“和/或”是指并且包括所列相关项目中的一个或多个项目的任意可能的组合和所有可能的组合。还将理解的是,虽然本文中可使用术语第一、第二、第三等来描述各种元件,但这些元件不应受这些术语限制,这些术语仅仅用于将一个元件与另一元件区分,除非另外说明或者上下文表示别的含义。
图1是示例环境100,在该示例环境100中各种示例可被实现为负载测试系统110。环境100可包括各种组件,该各种组件包括服务器计算设备130和客户端计算设备140(图示为140A、140B、……、140N)。每个客户端计算设备140A、140B、……、140N可将请求传递到服务器计算设备130,和/或从服务器计算设备130接收响应。服务器计算设备130可接收来自客户端计算设备140的请求,和/或对来自客户端计算设备140的请求作出响应。客户端计算设备140可以是提供用户界面的任何类型的计算设备,通过该用户界面用户可与软件应用交互。例如,客户端计算设备140可包括便携式计算设备、台式计算设备、一体式计算设备、平板计算设备、移动电话、电子书阅读器、诸如“智能”电视的网络使能装置、和/或适合显示用户界面并且用显示的界面处理用户交互的其他电子设备。当服务器计算设备130被描绘为单个计算设备时,服务器计算设备130可包括为至少一个用于被客户端计算设备140消耗的软件应用而服务的任意数量的集成的或分布式的计算设备。
图1中描绘的各种组件(例如,组件129、130和/或140)可通过网络50被耦接到至少一个其它组件。网络50可包括使组件之间的电子通信实现的任何基础设施或基础设施的组合。例如,网络50可包括互联网、内联网、PAN(个人局域网)、LAN(局域网)、WAN(广域网)、SAN(存储区域网)、MAN(城域网)、无线网络、蜂窝通信网络、公用交换电话网络和/或其他网络中的至少一个。根据不同的实施方式,负载测试系统110和本文中描述的各种组件可在硬件和/或硬件与配置硬件的编程的组合中被实现。此外,在本文中描述的图1和其他附图中,可使用与所描述的数量不同的数量的组件或实体。
负载测试系统110可包括代码获取引擎121、控制流引擎122、依赖性分析引擎123、消除分析引擎124、设备专用代码修改引擎125、显示引擎126和/或其他引擎。如本文中使用的术语“引擎”是指执行指定功能的硬件和编程的组合。如参考图3至图4所示,例如,每个引擎的硬件可包括处理器和机器可读存储介质中的一个或两者,而编程是存储在机器可读存储介质上的指令或代码并且由处理器可执行以执行指定功能。
代码获取引擎121可获取在客户端计算设备140中的应用执行期间被记录的代码行。代码获取引擎121可监控和/或记录与应用的执行实例相关联的通信量。例如,可在客户端计算设备140的网页浏览器中执行(例如,驻留在服务器计算设备130中的)网页应用时记录代码行。当用户通过网页浏览器与网页应用交互时,可记录用户行为(例如,点击图形用户界面(GUI)元素、填表格等)和/或对这种用户行为作出响应的任何函数调用。可针对应用的单个执行实例和/或针对应用的多个执行实例记录代码行。本领域已知的任何记录技术可被用来执行如本文中所讨论的记录。代码行可以按执行的时间顺序被记录。所记录的代码行可以按不同的顺序被排列或被另外修改。
在一些实施方式中,所记录的代码行可被规范化为特定的格式(例如,特定编程语言语法)。例如,如果所记录的代码行包括诸如“a=b+c+d”的代码行,根据指定的编程语言语法,规范化可将该代码行拆分成两个独立语句,诸如,“a=b+c”和“a=a+d”。本领域已知的任何规范化技术可被用来执行如本文中所讨论的规范化。
控制流引擎122可确定和/或获取(例如,由代码获取引擎121获取的)代码行的控制流图(CFG)。如本文中使用的“CFG”可指在应用执行期间可遍历应用的所有路径的使用图像符号的表示。示例控制流被图示在图7中。CFG可限定可执行的代码块和/或可执行的代码块之间的关系。在CFG中,图中的每个节点可代表可执行的"块",该可执行的"块"可指不需要任何跳转目标(例如,开始一个块的跳转目标)和目标(例如,结束一个块的目标)的代码的直线片段。CFG中的有向边可用于代表可执行的代码块之间的关系,和/或代表控制流中的跳转。
在图7所示的示例中,块721-725可代表单个可执行代码块,而所记录的代码行可包括图7的行1-8。可执行代码块721-725之间的关系可由图7中所示的有向边表示(例如,连接可执行的块的直线箭头)。
在一些实施方式中,控制流引擎122可基于用户与应用的交互历史确定CFG的子集。换句话说,可基于用户过去与应用的交互修改CFG。例如,如果用户(或用户组)在通过网页浏览器与网页应用交互时没有点击或者没有频繁地点击(例如,点击的频率低于预定阈值频率值)特定的GUI元素,对应的代码行、可执行代码块和/或有向边可从CFG移除,留下CFG的子集。使用图7所示的示例,假设可执行块723代表“IF”语句,该“IF”语句需要用户点击特定的GUI按钮来执行代码的行5。用户与应用的交互(和/或多个用户与应用的交互)的历史(例如,特定时间期间)可指示GUI按钮还没有被点击(或根据控制流引擎122设置的预定条件没有被频繁地点击)。在该示例中,控制流引擎122可通过从CFG移除可执行块723(和连接到可执行块723的有向边)修改CFG,留下可执行块721、722、724和725以及连接这些剩余块的对应的有向边。
如被控制流引擎122确定和/或获取的CFG(或CFG的子集)可被用来执行依赖性分析和/或消除分析,正如本文中关于依赖性分析引擎123和消除分析引擎124所讨论的。
依赖性分析引擎123可通过在时间顺序的第一方向上移动来执行依赖性分析,以确定在代码行的每行中是否存在对至少一个变量的依赖性。第一方向可代表执行的时间顺序的升序方向。
图8所示的示例示出了命名为“sendUser”的函数。依赖性分析引擎123可从可执行块810的顶部行移动到可执行块810的底部行,以确定对于各行是否存在对至少一个变量的依赖性。在该示例中,依赖性分析引擎123可确定在最初的三行“user={name:'Joe'}”、“a=5”和“b=getUIValue('usernameField')”中不存在依赖性。例如,这些行仅表示变量“user”具有‘Joe’的“name”值,变量“a”具有5的值,以及变量“b”具有来自被称为‘usernameField’的UI字段的值。依赖性分析引擎123可移动到下一行和/或确定变量“user2”依赖于变量“user”。响应于确定依赖性存在,依赖性分析引擎123可将依赖性(例如,变量“user2”依赖于变量“user”)存储在数据储存器(例如,数据储存器129)中。类似地,依赖性分析引擎123可移动到下一行和/或确定变量“user”的“name”依赖于变量“b”。该依赖性可被存储在数据储存器129中。类似地,依赖性分析引擎123可移动到下一行和/或确定变量“user3”依赖于变量“user2”,该依赖性可被存储在数据储存器129中。
在一些实施方式中,可通过在CFG(或如本文中关于控制流引擎122所讨论的CFG的子集)的第一方向上移动来执行依赖性分析。图8图示了基于第一CFG执行的示例依赖性分析,在该第一CFG中存在单个可执行块(例如,块810)。图9图示了基于不同的(或第二)CFG执行的示例依赖性分析,在该不同的CFG中存在包含if-else语句的三个可执行块(例如,块910-912)。在一些实施方式中,可通过从块910中的代码行的第一子集移动到块911的代码行的第二子集,和/或从块910中的代码行的第一子集移动到块912中的代码行的第三子集来执行依赖性分析。
消除分析引擎124可通过在时间顺序的第二方向上移动来执行消除分析,以基于在数据储存器129中存储的依赖性确定是否消除代码行的每行。第二方向可表示执行的时间顺序的降序方向。
在一些实施方式中,可基于代码行中的网络调用语句触发消除分析。当通过在时间顺序的第一方向上移动来执行依赖性分析时,可识别网络调用语句。当网络调用语句被识别时,消除分析引擎124可在相反方向(例如,第二方向)上从包含所识别的网络调用语句的代码行开始移动,并且执行消除分析。
使用图8所示的示例,网络调用语句可在包含“sendToServer(user2)”的行中被找到。消除分析引擎124可分析所识别的网络调用语句,和/或确定变量“user2”被网络调用语句调用。可通过在第二方向上从具有“sendToServer(user2)”的代码行移动来执行消除分析。这样做时,消除分析引擎124可基于在数据储存器129中存储的依赖性,确定被调用变量“user2”是否依赖于代码行的每行中的至少一个变量。
图8的可执行块820图示了消除之后的代码行,其中所消除的行带删除线。行“user3=user2”已经被消除,因为被调用变量“user2”不依赖于该行中的任何变量。换句话说,该行不改变或影响被调用变量“user2”。另一方面,行“user.name=b”不被消除,因为根据在数据储存器129中存储的依赖性,被调用变量“user2”依赖于变量“user.name”和变量“b”。例如,依赖性指示基于变量“user.name”具有的值和/或变量“b”具有的值(例如,“user2=user”其中“user={name:'Joe'}”并且“user.name=b”),被调用变量“user2”将会改变。行“user2=user”未被消除,因为被调用变量“user2”依赖于该行中的变量“user”。行“b=getUIValue('usernameField')”未被消除,因为被调用变量“user2”依赖于变量“b”(例如,“user2=user”其中“user={name:'Joe'}”并且“user.name=b”)。然而,行“a=5”被消除,因为根据在数据储存器129中存储的依赖性,被调用变量“user2”不依赖于变量“a”。行“user={name:'Joe'}”未被消除,因为被调用变量“user2”依赖于变量“user”,正如与行“user2=user”相关联的依赖性中所示。
在一些实施方式中,可通过在CFG(或正如本文中关于控制流引擎122所讨论的CFG的子集)的第二方向上移动来执行消除分析。图8图示了基于第一CFG执行的示例消除分析,在该第一CFG中存在单个可执行块(例如,块820)。图9图示基于不同的(或第二)CFG执行的示例消除分析,在该不同的CFG中存在包含if-else语句的三个可执行块(例如,块920-921)。可通过从块922中的代码行的第三子集移动到块920中的代码行的第一子集,和/或从块921中的代码行的第二子集移动到块920中的代码行的第一子集来执行消除分析。注意,在图8的示例中被消除的行“a=5”在图9的示例中没有被消除。这是因为在数据储存器129中存储的依赖性指示,如果满足条件“x”,被调用变量“user2”依赖于变量“a”(参见块921)。
设备专用代码修改引擎125可修改包括专用于客户端计算设备140和/或客户端计算设备140的浏览器的代码语句的代码行。例如,任何浏览器或设备专用代码语句都可被修改和/或从代码行移除。以这种方式,所产生的测试脚本可在没有任何浏览器和/或设备依赖性的情况下运行(例如,没有网络标记(cookie)、缓存、表单和超链接等),这意味着在负载测试期间不需要启动浏览器。
通过依赖性分析和消除分析,代码行的不相关部分可被消除,允许动态数据(例如,相关数据、参数数据等)更容易识别。
显示引擎126可引起消除分析之后剩余的代码行的子集的显示。代码行的子集可包括动态数据。在一些实施方式中,代码行的子集可被参数化以产生最终测试脚本。例如,用户输入参数可被参数化,使得参数被替换为预定义的值列表。在一些实例中,可构建字典,其中字典可包括参数和对应的不同值。字典以后可被访问,以获取针对参数的预定义的值列表。使用图8至图9所示的示例,诸如“getUIValue('usernameField')”的用户输入参数可被替换为包含针对用户名的不同值的预定义的值列表。
为了便于识别在代码行的子集中的这种用户输入参数,显示引擎126可呈现代码行的子集,使得用户输入参数(例如,“getUIValue('usernameField')”和/或包括用户输入参数的代码行)与代码行的子集的其余部分在视觉上不同地被显示。例如,用户输入的参数数据可被高亮、以不同的颜色显示、以不同的字体显示和/或另外使用户输入参数更容易被识别。
在执行它们各自的函数时,引擎121-126可访问数据储存器129和/或其他合适的数据库。数据储存器129可代表能被用来存储和获取数据的、负载测试系统110可访问的任何存储器。数据储存器129和/或其他数据库可包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、高速缓冲存储器、软盘、硬盘、光盘、磁带、固态驱动器、闪存驱动器、便携式光盘和/或用于存储计算机可执行指令和/或数据的其它存储介质。负载测试系统110可本地地访问数据储存器129,或者通过网络50或其他网络远程地访问数据储存器129。
数据储存器129可包括用于组织和存储数据的数据库。数据库129可以是、包括或接口至,例如,甲骨文公司(Oracle Corporation)商业销售的OracleTM关系数据库。其他数据库(诸如InformixTM、DB2(Database 2)或基于文件(例如,逗号或制表符分隔文件)的其他数据储存器),或者查询格式、平台或资源(诸如,OLAP(联机分析处理)、SQL(结构化查询语言)、SAN(存储区域网)、Microsoft AccessTM、MySQL、PostgreSQL、HSpace、ApacheCassandra、MongoDB、Apache CouchDBTM,或其他)可被使用、集成或访问。数据库可驻留在单个或多个物理设备中并且在单个或多个物理位置中。数据库可存储多种类型的数据和/或文件以及相关联的数据或文件描述、管理信息或任何其他数据。
图2是描绘示例负载测试系统210的框图。负载测试系统210可包括代码获取引擎221、依赖性分析引擎222、消除分析引擎223、显示引擎224和/或其他引擎。引擎221-224分别代表引擎121、123、124和126。
图3是描绘包含处理器可执行的用于负载测试的指令的示例机器可读存储介质310的框图。
上述讨论中,引擎121-126被描述为硬件和编程的组合。引擎121-126可以以多种方式实现。参考图3,编程可以是在机器可读存储介质310上存储的处理器可执行指令321-326,并且硬件可包括用于执行这些指令的处理器311。因此,机器可读存储介质310可以说是用于存储当由处理器311执行时实现图1的负载测试系统110的程序指令或代码。
在图3中,在机器可读存储介质310中的可执行程序指令被描绘为代码获取指令321、控制流获取指令322、依赖性分析执行指令323、消除分析执行指令324、设备专用代码修改指令325和显示指令326。指令321-326代表当执行时使处理器311分别实现引擎121-126的程序指令。
图4是描绘包含处理器可执行的用于负载测试的指令的示例机器可读存储介质410的框图。
上述讨论中,引擎121-126被描述为硬件和编程的组合。引擎121-126可以以多种方式实现。参考图4,编程可以是存储在机器可读存储介质410上的处理器可执行指令421-424,并且硬件可包括用于执行这些指令的处理器411。因此,机器可读存储介质410可以说是用于存储当由处理器411执行时实现图1的负载测试系统110的程序指令或代码。
在图4中,在机器可读存储介质410中的可执行程序指令被描绘为代码获取指令421、控制流获取指令422、依赖性分析执行指令423和消除分析执行指令424。指令421-424代表当执行时使处理器411分别实现引擎121-124的程序指令。
机器可读存储介质310(或机器可读存储介质410)可以是包含或存储可执行指令的任何电子存储设备、磁性存储设备、光存储设备或其它物理存储设备。在一些实施方式中,机器可读存储介质310(或机器可读存储介质410)可以是非暂时性存储介质,其中术语“非暂时性”不包括暂时性传播信号。机器可读存储介质310(或机器可读存储介质410)可在单个设备中实现或跨多个设备分布。同样地,处理器311(或处理器411)可代表能够执行机器可读存储介质310(或机器可读存储介质410)存储的指令的任何数量的处理器。处理器311(或处理器411)可被集成在单个设备中或者跨多个设备分布。此外,机器可读存储介质310(或机器可读存储介质410)可完全或部分地集成在与处理器311(或处理器411)相同的设备中,或者可以是单独的,但对设备和处理器311(或处理器411)是可访问的。
在一个示例中,程序指令可以是安装包的一部分,当被安装时,安装包可由处理器311(或处理器411)执行以实现负载测试系统110。在此情形下,机器可读存储介质310(或机器可读存储介质410)可以是便携式介质,诸如软盘、CD、DVD或闪存驱动器,或者是由服务器维护的存储器,可从该存储器中下载和安装安装包。在另一示例中,程序指令可以是应用或已安装应用的一部分。这里,机器可读存储介质310(或机器可读存储介质410)可包括硬盘、光盘、磁带、固态驱动器、RAM、ROM、EEPROM等。
处理器311可以是至少一个中央处理单元(CPU)、微处理器和/或适合获取和执行在机器可读存储介质310中存储的指令的其它硬件设备。处理器311可以提取、解码和执行程序指令321-326和/或其他指令。作为获取和执行指令的替代或除获取和执行指令以外,处理器311可包括至少一个电子电路,该至少一个电子电路包含用于执行指令321-326和/或其他指令中的至少一个的功能的多个电子组件。
处理器411可以是至少一个中央处理单元(CPU)、微处理器和/或适合获取和执行在机器可读存储介质410中存储的指令的其它硬件设备。处理器411可以提取、解码和执行程序指令421-424和/或其他指令。作为获取和执行指令的替代或除获取和执行指令以外,处理器411可包括至少一个电子电路,该至少一个电子电路包含用于执行指令421-424和/或其他指令中的至少一个的功能的多个电子组件。
图5是描绘用于负载测试的示例方法500的流程图。这里更详细地描述图5(和诸如图6的其他附图)中描绘的各种处理块和/或数据流。所描述的处理块可使用以上详细描述的一些或全部的系统组件来实现,并且在一些实施方式中,可以以不同的顺序执行各种处理块,并且可忽略各种处理块。附加的处理块可与所描绘的流程图中示出的一些或全部处理块一起被执行。一些处理块可被同时执行。因此,如图示的(和下面更具体描述的)方法500意味着示例,并且因此不应当被视为限制。方法500可以以在机器可读存储介质(诸如存储介质310)上存储的可执行指令的形式和/或以电子电路的形式来实现。
方法500可在块521中开始,其中方法500可在客户端计算设备(例如,客户端计算设备140)中执行应用时获取被记录的代码行。方法500可监控和/或记录与应用的执行实例相关联的通信量。例如,可在客户端计算设备140的网页浏览器中执行(例如,存在于服务器计算设备130中)网页应用时记录代码行。当用户通过网页浏览器与网页应用交互时,用户行为(例如,点击图形用户界面(GUI)元素、填表格等)和/或对这种用户行为作出响应的任何函数调用可被记录。代码行可以以执行的时间顺序被记录。所记录的代码行可以以不同的顺序被排列或被另外修改。
在块522中,方法500可确定在代码行的各行中是否存在对至少一个变量的依赖性。例如,方法500可通过在执行的时间顺序的升序方向上移动来执行依赖性分析,以基于依赖性分析的结果确定是否消除代码行的各行。响应于确定依赖性存在,在块523中,方法500可将依赖性存储在数据储存器(例如,图1的数据储存器129)中。图8所示的示例示出了命名为“sendUser”的函数。方法500可从可执行块810的顶部行移动到可执行块810的底部行,以确定针对各行是否存在对至少一个变量的依赖性。在该示例中,方法500可确定在最初的三行“user={name:'Joe'}”、“a=5”和“b=getUIValue('usernameField')”中不存在依赖性。例如,这些行仅表示变量“user”具有‘Joe’的“name”值,变量“a”具有5的值,以及变量“b”具有来自被称为‘usernameField’的UI字段的值。方法500可移动到下一行和/或确定变量“user2”依赖于变量“user”。响应于确定依赖性存在,方法500可将依赖性(例如,变量“user2”依赖于变量“user”)存储在数据储存器中。类似地,方法500可移动到下一行和/或确定变量“user”的“name”依赖于变量“b”。该依赖性可被存储在数据储存器中。类似地,方法500可移动到下一行和/或确定变量“user3”依赖于变量“user2”,该依赖性可被存储在数据储存器中。
在块524中,方法500可从代码行中识别包括调用被调用变量的网络调用语句的代码行。在一些实施方式中,可在执行块522的依赖性分析时识别网络调用语句。使用图8所示的示例,网络调用语句可在包含“sendToServer(user2)”的行中被找到。方法500可分析所识别的网络调用语句,和/或确定变量“user2”被网络调用语句调用。当网络调用语句被识别时,方法500可进行到块525。
在块525中,方法500可基于被调用变量和在数据储存器中存储的依赖性消除代码行的第一子集。例如,方法500可通过在执行的时间顺序的降序方向上从包含网络调用语句的代码行移动来执行消除分析,以基于依赖性分析(例如,数据储存器129中存储的依赖性)的结果确定是否消除代码行的各行。使用图9图示的示例,可通过在执行的时间顺序的降序方向上从具有“sendToServer(user2)”的代码行移动来执行消除分析。这样做时,方法500可基于在数据储存器129中存储的依赖性,确定被调用变量“user2”是否依赖于代码行的每行中的至少一个变量。
通过依赖性分析和消除分析,代码行的不相关部分可被消除,允许动态数据(例如,相关数据、参数数据等)更容易识别。在消除之后剩余的代码行的第二子集可包括用户输入的参数数据。在一些实施方式中,代码行的第二子集可被参数化以产生最终测试脚本。例如,用户输入参数可被参数化,使得参数被替换为预定义的值列表。在一些实例中,可构建字典,其中字典可包括参数和对应的不同值。字典以后可被访问,以获取针对参数的预定义的值列表。使用图8至图9所示的示例,用户输入参数诸如“getUIValue('usernameField')”可被替换为包含用户名的不同值的预定义的值列表。
返回参考图1,代码获取引擎121可负责实现块521。依赖性分析引擎123可负责实现块522-524。消除分析引擎124可负责实现块525。
图6是描绘用于负载测试的示例方法600的流程图。如图示的(和下面更具体描述的)方法600意味着示例,并且因此不应当被视为限制。方法600可以以在机器可读存储介质(诸如存储介质210)上存储的可执行指令的形式和/或以电子电路的形式实现。
方法600可在块621中开始,其中方法600可在客户端计算设备(例如,客户端计算设备140)中执行应用时获取被记录的代码行。方法600可监控和/或记录与应用的执行实例相关联的通信量。例如,可在客户端计算设备140的网页浏览器中执行(例如,存在于服务器计算设备130中)网页应用时记录代码行。当用户通过网页浏览器与网页应用交互时,用户行为(例如,点击图形用户界面(GUI)元素、填表格等)和/或对这种用户行为作出响应的任何函数调用可被记录。代码行可以以执行的时间顺序被记录。所记录的代码行可以以不同的顺序被排列或被另外修改。
在块622中,方法600可获取(例如,块621中获取的)代码行的控制流图(CFG)。CFG可限定可执行代码块和/或可执行代码块之间的关系。在图7所示的示例CFG中,块721-725可代表单个可执行代码块,而所记录的代码行可包括图7的行1-8。可执行代码块721-725之间的关系可由图7中所示的有向边表示(例如,连接可执行的块的直线箭头)。
在一些实施方式中,可基于用户与应用的交互历史修改CFG。例如,如果用户(或用户组)在通过网页浏览器与网页应用交互时没有点击或者没有频繁地(例如,低于预定阈值频率值)点击特定的GUI元素,对应的代码行、可执行代码块和/或有向边可从CFG移除。使用图7所示的示例,假设可执行块723代表“IF”语句,该“IF”语句需要用户点击特定的GUI按钮来执行代码的行5。用户与应用的交互(和/或多个用户与应用的交互)的历史(例如,特定时间期间)可指示GUI按钮还没有被点击(或根据控制流引擎122设置的预定条件没有被频繁地点击)。在该示例中,可通过从CFG移除可执行块723(和连接到可执行块723的有向边)修改CFG,留下可执行块721、722、724和725以及连接这些剩余块的对应的有向边。
在块623中,方法600可通过在CFG(或修改的CFG)的第一方向上移动来执行依赖性分析,以确定在代码行的各行中是否存在对至少一个变量的依赖性。第一方向可代表执行的时间顺序的升序方向。图8图示了基于第一CFG执行的示例依赖性分析,在该第一CFG中存在单个可执行块(例如,块810)。在图8中,方法600可从可执行块810的顶部行移动到可执行块810的底部行,以针对各行确定是否存在对至少一个变量的依赖性。图9图示基于不同的(或第二)CFG执行的示例依赖性分析,在该不同的CFG中存在包含if-else语句的三个可执行块(例如,块910-912)。在一些实施方式中,可通过从块910中的代码行的第一子集移动到块911中的代码行的第二子集,和/或从块910中的代码行的第一子集移动到块912中的代码行的第三子集执行依赖性分析。
在块624中,方法600可从代码行中识别包括调用被调用变量的网络调用语句的代码行。在一些实施方式中,当通过在CFG(或修改的CFG)的第一方向上移动来执行依赖性分析时,可识别网络调用语句。使用图8所示的示例,网络调用语句可在包含“sendToServer(user2)”的行中被找到。方法600可分析所识别的网络调用语句,和/或确定变量“user2”被网络调用语句调用。当网络调用语句被识别时,方法600可在CFG(或修改的CFG)的相反方向(例如,第二方向)上从包含所识别的网络调用语句的代码行开始移动,并且执行消除分析。第二方向可代表执行的时间顺序的降序方向。
在块625中,方法600可通过在CFG(或修改的CFG)的第二方向上从包含网络调用语句的代码行移动来执行消除分析,以基于依赖性分析(例如,数据储存器129中存储的依赖性)的结果确定是否消除代码行的每行。使用图9图示的示例,可通过从块922中的代码行的第三子集移动到块920中的代码行的第一子集,和/或从块921中的代码行的第二子集移动到块920中的代码行的第一子集来执行消除分析。在该示例中,可通过在第二方向上从具有“sendToServer(user2)”的代码行移动来执行消除分析。这样做时,方法600可基于在数据储存器129中存储的依赖性,确定被调用变量“user2”是否依赖于代码行的每行中的至少一个变量。
在块626中,方法600可获取消除之后剩余的代码行的子集。通过依赖性分析和消除分析,代码行的不相关部分可被消除,允许动态数据(例如,相关数据、参数数据等)更容易识别。
在块627中,方法600可修改包括专用于客户端计算设备140和/或客户端计算设备140的浏览器的代码语句的代码行。例如,任何浏览器或设备专用代码语句都可被修改和/或从代码行移除。以这种方式,所产生的测试脚本可在没有任何浏览器和/或设备依赖性的情况下运行(例如,没有网络标记(cookie)、缓存、表单和超链接等),这意味着在负载测试期间不需要启动浏览器。
代码行的子集可包括动态数据。在一些实施方式中,代码行的子集可被参数化以产生最终测试脚本。例如,用户输入参数可被参数化,使得参数被替换为预定义的值列表。在一些实例中,可构建字典,其中字典可包括参数和对应的不同值。字典以后可被访问,以获取针对参数的预定义的值列表。使用图8至图9所示的示例,诸如“getUIValue('usernameField')”的用户输入参数可被替换为包含针对用户名的不同值的预定义的值列表。
为了便于识别在代码行的子集中的这种用户输入参数,方法600可检测在消除(块628)之后剩余的代码行的子集中的用户输入的参数数据,并且呈现代码行的子集,使得用户输入参数(例如,“getUIValue('usernameField')”和/或包括用户输入参数的代码行)与代码行的子集的其余部分在视觉上不同地被显示(块629)。例如,用户输入的参数数据可被高亮、以不同的颜色显示、以不同的字体显示和/或另外使用户输入的参数更容易被识别。
返回参考图1,代码获取引擎121可负责实现块621。控制流引擎122可负责实现块622。依赖性分析引擎123可负责实现块623-624。消除分析引擎124可负责实现块625-626。设备专用代码修改引擎125可负责实现块627。显示引擎126可负责实现块628-629。
在本文中参考图1至图6讨论图7至图9。
前面的公开描述了用于负载测试的多个示例实施方式。所公开的示例可包括用于负载测试的系统、设备、计算机可读存储介质和方法。为了说明的目的,某些示例是参考图1至图4所示的组件描述的。然而,所示组件的功能可重叠,并且可存在于更少或更多数量的元件和组件中。
此外,所示元件的功能的全部或一部分可共存或可分布在若干个地理上分散的位置当中。而且,所公开的示例可在各种环境中实现,并不限于所示示例。此外,结合图5至图6描述的操作的顺序是示例,并不旨在限定。在不脱离所公开的示例的范围内,可使用或多或少的操作或者操作的组合,或可改变。此外,与所公开的示例一致的实施方式不需要以任何特定的顺序执行一系列操作。因此,本公开仅仅陈述实施方式的可能示例,并且可对所描述的示例做出许多变型和修改。所有这些修改和变型旨在包含在本公开的范围内并且由下面的权利要求保护。
Claims (15)
1.一种用于负载测试的方法,所述方法包括:
在客户端计算设备中执行应用时获取被记录的代码行,所述代码行以所述执行的时间顺序被记录;
确定在所述代码行的各行中是否存在对至少一个变量的依赖性;
响应于确定所述依赖性存在,将所述依赖性存储在数据储存器中;
从所述代码行中识别包括调用被调用变量的网络调用语句的代码行;并且
基于所述被调用变量和在所述数据储存器中存储的依赖性,消除所述代码行的第一子集,其中在所述消除之后剩余的所述代码行的第二子集包括用户输入的参数数据。
2.根据权利要求1所述的方法,进一步包括:
通过在所述执行的时间顺序的升序方向上移动来执行依赖性分析,以确定在所述代码行的所述各行中是否存在所述依赖性;并且
通过在所述执行的时间顺序的降序方向上从包括所述网络调用语句的所述代码行移动来执行消除分析,以基于所述依赖性分析的结果确定是否消除所述代码行的所述各行。
3.根据权利要求2所述的方法,进一步包括:
获取所述代码行的控制流图(CFG),所述CFG限定可执行代码块和所述可执行代码块之间的关系;并且
基于用户与所述应用的交互的历史确定所述CFG的子集,其中根据所述CFG的所述子集执行所述依赖性分析和所述消除分析。
4.根据权利要求1所述的方法,其中基于所述被调用变量和在所述数据储存器中存储的所述依赖性消除所述代码行的所述第一子集进一步包括:
基于在所述数据储存器中存储的所述依赖性,确定所述被调用变量是否依赖于所述代码行的第一行中的至少一个变量;
响应于确定所述被调用变量不依赖于所述第一行中的至少一个变量,消除所述第一行;
基于在所述数据储存器中存储的所述依赖性,确定所述被调用变量是否依赖于所述代码行的第二行中的至少一个变量;以及
响应于确定所述被调用变量不依赖于所述第二行中的至少一个变量,消除所述第二行。
5.根据权利要求1所述的方法,进一步包括:
呈现所述代码行的所述第二子集,使得所述用户输入的参数数据与所述代码行的所述第二子集的其余部分在视觉上不同地被显示。
6.根据权利要求1所述的方法,其中所述代码行基于编程语言语法被规范化。
7.一种非暂时性机器可读存储介质,包括计算设备的处理器可执行的用于负载测试的指令,所述机器可读存储介质包括:
用于在客户端计算设备中的应用的执行期间获取被记录的代码行的指令;
用于获取所述代码行的控制流图(CFG)的指令;
用于通过在所述CFG的第一方向上移动来执行依赖性分析以确定在所述代码行的各行中是否存在对至少一个变量的依赖性的指令;和
用于通过在所述CFG的第二方向上移动来执行消除分析以基于所述依赖性分析的结果确定是否消除所述代码行的各行的指令。
8.根据权利要求7所述的非暂时性机器可读存储介质,进一步包括:
用于监控用户与所述应用的交互的指令;和
用于基于所监控的用户交互计算所述CFG的指令。
9.根据权利要求7所述的非暂时性机器可读存储介质,进一步包括:
用于在执行所述依赖性分析时从所述代码行识别调用被调用变量的网络调用语句的指令;和
用于基于所述网络调用语句触发所述消除分析的指令。
10.根据权利要求9所述的非暂时性机器可读存储介质,其中用于执行所述消除分析的所述指令包括:
用于基于所述依赖性分析的结果确定所述被调用变量是否依赖于所述代码行的给定行中的至少一个变量的指令;和
用于响应于确定所述被调用变量不依赖于所述给定行中的至少一个变量而消除所述给定行的指令。
11.根据权利要求7所述的非暂时性机器可读存储介质,进一步包括:
用于修改包括专用于所述客户端计算设备或所述客户端计算设备的浏览器的语句的代码行的指令。
12.一种用于负载测试的系统,包括:
处理器,所述处理器:
在客户端计算设备中的应用的执行期间获取被记录的代码行,所述代码行以所述执行的时间顺序被记录;
通过在所述顺序的第一方向上移动来执行依赖性分析,以确定在所述代码行的各行中是否存在对至少一个变量的依赖性;
响应于确定所述依赖性存在,将所述依赖性存储在数据储存器中;
通过在所述顺序的第二方向上移动来执行消除分析,以基于在所述数据储存器中存储的依赖性确定是否消除所述代码行的各行;并且
引起所述消除分析之后剩余的所述代码行的子集的显示,所述代码行的所述子集包括用户输入的参数数据,所述用户输入的参数数据与所述代码行的所述子集的其余部分在视觉上不同地被显示。
13.根据权利要求12所述的系统,其中引起所述代码行的所述子集的所述显示进一步包括:
检测所述代码行的所述子集中的所述用户输入的参数数据;并且
高亮所述代码行的所述子集的部分,所述部分指示检测到的用户输入的参数数据。
14.根据权利要求12所述的系统,所述处理器:
确定所述代码行的控制流图(CFG),所述CFG限定可执行代码块,所述可执行代码块包括连接到第二可执行代码块的第一可执行代码块,其中基于所述CFG执行所述依赖性分析和所述消除分析。
15.根据权利要求14所述的系统,其中所述第一可执行代码块包括代码行的第一子集并且所述第二可执行代码块包括代码行的第二子集,所述处理器:
通过从所述代码行的第一子集移动到所述代码行的第二子集来执行所述依赖性分析;并且
通过从所述代码行的第二子集移动到所述代码行的第一子集来执行所述消除分析。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2014/072061 WO2016105366A1 (en) | 2014-12-23 | 2014-12-23 | Load testing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107431646A true CN107431646A (zh) | 2017-12-01 |
Family
ID=56151172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480084366.XA Pending CN107431646A (zh) | 2014-12-23 | 2014-12-23 | 负载测试 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11599340B2 (zh) |
EP (1) | EP3238381A1 (zh) |
JP (1) | JP2018502390A (zh) |
CN (1) | CN107431646A (zh) |
WO (1) | WO2016105366A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540254B2 (en) * | 2015-11-05 | 2020-01-21 | Intel Corporation | Technologies for analyzing persistent memory programs |
US10198250B1 (en) * | 2018-01-04 | 2019-02-05 | Accenture Global Solutions Limited | Partitioning based migration of systems to container and microservice based platforms |
US20230315862A1 (en) * | 2022-03-30 | 2023-10-05 | WhiteSource Ltd. | Method and apparatus for identifying dynamically invoked computer code using literal values |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654952B1 (en) * | 2000-02-03 | 2003-11-25 | Sun Microsystems, Inc. | Region based optimizations using data dependence graphs |
US20050138104A1 (en) * | 2003-10-20 | 2005-06-23 | Henry Houh | Computer language interpretation and optimization for server testing |
US7051322B2 (en) * | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US20100115496A1 (en) * | 2008-10-30 | 2010-05-06 | Nitsan Amichai | Filter generation for load testing managed environments |
US8949797B2 (en) * | 2010-04-16 | 2015-02-03 | International Business Machines Corporation | Optimizing performance of integrity monitoring |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145121A (en) * | 1997-04-17 | 2000-11-07 | University Of Washington | Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications |
US6507947B1 (en) * | 1999-08-20 | 2003-01-14 | Hewlett-Packard Company | Programmatic synthesis of processor element arrays |
US6901438B1 (en) * | 1999-11-12 | 2005-05-31 | Bmc Software | System selects a best-fit form or URL in an originating web page as a target URL for replaying a predefined path through the internet |
US7290048B1 (en) * | 2002-03-29 | 2007-10-30 | Hyperformix, Inc. | Method of semi-automatic data collection, data analysis, and model generation for the performance analysis of enterprise applications |
EP1387271A1 (en) * | 2002-07-29 | 2004-02-04 | Sun Microsystems, Inc. | Method and apparatus for generating an operational processing load |
US8682636B2 (en) * | 2002-08-30 | 2014-03-25 | Sap Ag | Non-client-specific testing of applications |
US8095920B2 (en) * | 2002-09-17 | 2012-01-10 | Intel Corporation | Post-pass binary adaptation for software-based speculative precomputation |
WO2004036366A2 (en) * | 2002-10-16 | 2004-04-29 | Synthetic Networks, Inc. | Load testing methods and systems with transaction variability andconsistency |
US7877681B2 (en) | 2002-12-05 | 2011-01-25 | Borland Software Corporation | Automatic context management for web applications with client side code execution |
US7680668B2 (en) * | 2003-12-22 | 2010-03-16 | Oracle International Corporation | Method for generating a language-independent regression test script |
US7581212B2 (en) * | 2004-01-13 | 2009-08-25 | Symphony Services Corp. | Method and system for conversion of automation test scripts into abstract test case representation with persistence |
JP2006031178A (ja) * | 2004-07-13 | 2006-02-02 | Hitachi Ltd | 負荷テスト実施装置、負荷テスト実施方法、負荷テスト実施プログラム |
US8112384B2 (en) * | 2004-10-27 | 2012-02-07 | Actus Potentia, Inc. | System and method for problem solving through dynamic/interactive concept-mapping |
JP2006155047A (ja) * | 2004-11-26 | 2006-06-15 | Nec Electronics Corp | 検証システム及び検証方法 |
US7669187B2 (en) * | 2006-03-22 | 2010-02-23 | Sun Microsystems, Inc. | Pluggable debugging interface for graphical notation diagrams |
US7890936B2 (en) * | 2006-07-31 | 2011-02-15 | International Business Machines Corporation | Method of reverse read code to locate useful information |
US20080196012A1 (en) * | 2007-02-12 | 2008-08-14 | Panaya Ltd. | System and methods for static analysis of large computer programs and for presenting the results of the analysis to a user of a computer program |
US7979847B2 (en) * | 2007-09-28 | 2011-07-12 | Microsoft Corporation | Visual debugger for declarative/data-flow applications |
US20090089039A1 (en) * | 2007-10-01 | 2009-04-02 | Ilan Shufer | System and method of emulating functionality of a web service |
JP5547208B2 (ja) * | 2008-11-24 | 2014-07-09 | インテル コーポレイション | シーケンシャル・プログラムを複数スレッドに分解し、スレッドを実行し、シーケンシャルな実行を再構成するシステム、方法および装置 |
EP2261802A1 (en) * | 2009-06-10 | 2010-12-15 | ITI Scotland Limited | Automated debugging system and method |
US8443343B2 (en) * | 2009-10-28 | 2013-05-14 | Intel Corporation | Context-sensitive slicing for dynamically parallelizing binary programs |
WO2011062597A1 (en) * | 2009-11-23 | 2011-05-26 | Hewlett-Packard Development Company, L.P. | System and method for object relationship identification in a user interface |
US8549478B2 (en) * | 2009-12-02 | 2013-10-01 | Hewlett-Packard Development Company, L.P. | Graphical user interface input element identification |
US8479171B2 (en) * | 2010-05-24 | 2013-07-02 | Fujitsu Limited | Generating test sets using intelligent variable selection and test set compaction |
US20110314337A1 (en) * | 2010-06-18 | 2011-12-22 | International Business Machines Corporation | Method and Apparatus for Locating Input-Model Faults Using Dynamic Tainting |
US8762113B2 (en) | 2011-06-03 | 2014-06-24 | Sony Computer Entertainment America Llc | Method and apparatus for load testing online server systems |
JP5648186B2 (ja) * | 2011-08-22 | 2015-01-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | トランザクションを再生するためのデータを生成する装置及び方法 |
US8955114B2 (en) * | 2011-12-14 | 2015-02-10 | Microsoft Corporation | Application monitoring through collective record and replay |
US8977904B2 (en) | 2012-02-17 | 2015-03-10 | Hewlett-Packard Development Company, L.P. | Generating a replayable testing script for iterative use in automated testing utility |
GB2503893A (en) * | 2012-07-10 | 2014-01-15 | Ibm | Selecting data from a database using data representing a sequence of operations |
US20130290939A1 (en) | 2012-04-30 | 2013-10-31 | Ofer Eliassaf | Dynamic data for producing a script |
US20130326202A1 (en) * | 2012-05-30 | 2013-12-05 | Roi Rosenthal | Load test capacity planning |
US9251045B2 (en) * | 2013-12-27 | 2016-02-02 | International Business Machines Corporation | Control flow error localization |
US9419991B2 (en) * | 2014-09-30 | 2016-08-16 | Juniper Networks, Inc. | De-obfuscating scripted language for network intrusion detection using a regular expression signature |
US9430240B1 (en) * | 2015-12-10 | 2016-08-30 | International Business Machines Corporation | Pre-computation slice merging for prefetching in a computer processor |
US10671361B2 (en) * | 2016-10-25 | 2020-06-02 | Paypal, Inc. | Automatically determining data dependencies to facilitate code execution |
US10248536B2 (en) * | 2016-10-31 | 2019-04-02 | International Business Machines Corporation | Method for static and dynamic configuration verification |
US10379825B2 (en) * | 2017-05-22 | 2019-08-13 | Ab Initio Technology Llc | Automated dependency analyzer for heterogeneously programmed data processing system |
-
2014
- 2014-12-23 WO PCT/US2014/072061 patent/WO2016105366A1/en active Application Filing
- 2014-12-23 JP JP2017533406A patent/JP2018502390A/ja active Pending
- 2014-12-23 US US15/504,011 patent/US11599340B2/en active Active
- 2014-12-23 EP EP14909216.5A patent/EP3238381A1/en not_active Withdrawn
- 2014-12-23 CN CN201480084366.XA patent/CN107431646A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654952B1 (en) * | 2000-02-03 | 2003-11-25 | Sun Microsystems, Inc. | Region based optimizations using data dependence graphs |
US7051322B2 (en) * | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US20050138104A1 (en) * | 2003-10-20 | 2005-06-23 | Henry Houh | Computer language interpretation and optimization for server testing |
US20100115496A1 (en) * | 2008-10-30 | 2010-05-06 | Nitsan Amichai | Filter generation for load testing managed environments |
US9465718B2 (en) * | 2008-10-30 | 2016-10-11 | Hewlett Packard Enterprise Development Lp | Filter generation for load testing managed environments |
US8949797B2 (en) * | 2010-04-16 | 2015-02-03 | International Business Machines Corporation | Optimizing performance of integrity monitoring |
Also Published As
Publication number | Publication date |
---|---|
JP2018502390A (ja) | 2018-01-25 |
WO2016105366A1 (en) | 2016-06-30 |
EP3238381A1 (en) | 2017-11-01 |
US20170277523A1 (en) | 2017-09-28 |
US11599340B2 (en) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314576B2 (en) | System and method for automating fault detection in multi-tenant environments | |
US10942721B2 (en) | Context-based analytical engine for extending application functionality | |
US20210081308A1 (en) | Generating automated tests based on user interaction with an application | |
AU2018201941A1 (en) | Automated program code analysis and reporting | |
US10990370B1 (en) | System, apparatus and method for deploying infrastructure to the cloud | |
Pravilovic et al. | Process mining to forecast the future of running cases | |
US10956664B2 (en) | Automated form generation and analysis | |
KR101588027B1 (ko) | 소프트웨어 현지화를 위한 테스트 케이스 생성 장치 및 방법 | |
KR101312446B1 (ko) | 사용자의 행위 로그를 이용한 모바일 어플리케이션의 사용성 분석 장치 및 방법 | |
US10931674B2 (en) | Detecting whether to implement one or more security measures on a shared resource | |
US11422783B2 (en) | Auto-deployment of applications | |
US20150378875A1 (en) | Generating an optimized test suite from models for use in a software testing environment | |
US20230281249A1 (en) | Computer-implemented methods, systems comprising computer-readable media, and electronic devices for enabled intervention into a network computing environment | |
US9910487B1 (en) | Methods, systems and computer program products for guiding users through task flow paths | |
KR102307380B1 (ko) | 자연어 처리 기반 콜센터 지원 시스템 및 방법 | |
Baek et al. | Dynamic reconfiguration based on goal-scenario by adaptation strategy | |
US20230273959A1 (en) | Computer-implemented methods, systems comprising computer-readable media, and electronic devices for narrative representation of a network computing environment | |
AU2017265080A1 (en) | Platform for supporting multiple virtual agent applications | |
US12105756B2 (en) | Computer-implemented methods, systems comprising computer-readable media, and electronic devices for narrative representation of a network computing environment | |
WO2022140650A2 (en) | Systems and methods for building and deploying machine learning applications | |
CN107431646A (zh) | 负载测试 | |
US12056469B2 (en) | Autonomous generation of GRC programs | |
RU2640637C2 (ru) | Способ и сервер проведения контролируемого эксперимента с использованием прогнозирования будущего пользовательского поведения | |
US20170019490A1 (en) | Mirrored visualization of user activity in user interface | |
Omori et al. | Comparing concept drift detection with process mining software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Utah, USA Applicant after: Weifosi Co., Ltd Address before: California, USA Applicant before: Antiy Software Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171201 |
|
RJ01 | Rejection of invention patent application after publication |