CN105630669A - 基于web的应用的自动化测试 - Google Patents
基于web的应用的自动化测试 Download PDFInfo
- Publication number
- CN105630669A CN105630669A CN201510799846.0A CN201510799846A CN105630669A CN 105630669 A CN105630669 A CN 105630669A CN 201510799846 A CN201510799846 A CN 201510799846A CN 105630669 A CN105630669 A CN 105630669A
- Authority
- CN
- China
- Prior art keywords
- order
- browser
- user
- web
- module
- 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.)
- Granted
Links
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
- G06F11/3672—Test management
-
- 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
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
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)
- Stored Programmes (AREA)
Abstract
本申请的各实施例涉及基于WEB的应用的自动化测试。描述了实现web应用的自动化测试的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。技术包括接收web应用和包括用于测试web应用的用户指定的指令的测试脚本。用户指定的指令被转换成命令,这些命令包括可由浏览器自动化模块执行的、用于控制web浏览器的操作的第一类型命令和不可由浏览器自动化模块执行的第二类型命令,其中命令的总数超过测试脚本中的指令的数目。向浏览器自动化模块提供第一类型命令以用于执行以控制web浏览器的操作,并且执行第二类型命令以控制至少一个计算机的、不能由浏览器自动化模块控制的操作。基于执行第一类型命令和第二类型命令输出报告。
Description
技术领域
本说明书总体上描述了用于web应用的自动化测试的系统和过程。
背景技术
基于web的应用(web应用)是在因特网web浏览器中执行的软件应用。web应用通常包括在远程服务器中存储和维持的软件代码。在用户从web浏览器访问web应用时,用于web应用的软件代码从服务器向用户的计算机被传输并且在用户的web浏览器上被执行。web应用经常由用户下载作为更大web文档的部分(例如,作为在网页内嵌入的软件代码)并且通常在网页内提供动态内容,该动态内容可以改变而网页本身未被重载。按照各种编程语言使用各种技术来实施不同web应用。在一些场景中,web应用利用在远程服务器上执行的服务器侧软件代码(例如,活跃服务器页面(ASP)、PHP等)和由用户的web浏览器执行的客户端侧软件代码(例如,超文本标记语言(HTML)、JavaScript、层叠样式表(CSS)、Flash插件、Java小应用程序等)的组合。在这样的场景中,客户端侧软件通常实现信息的前端呈现并且经由用户的web浏览器与用户交互,而服务器侧软件通常实现信息的后端存储和取回。web应用在多种不同类型的网页中用来使得用户除了查看网页上的静态内容之外还能够与网页动态地交互。
发明内容
在一个方面中,一种计算机实施的方法由至少一个计算机执行,并且该方法包括接收待测试的web应用以及接收包括用于测试web应用的多个用户指定的指令的测试脚本。该方法还包括将来自测试脚本的多个用户指定的指令转换成多个命令,这多个命令包括可由浏览器自动化模块执行的、用于控制web浏览器的操作的第一类型命令和不可由浏览器自动化模块执行的第二类型的命令。多个命令中的命令的数目超过测试脚本中的指令的数目。该方法还包括在web应用在web浏览器上执行之时执行多个命令。执行多个命令包括向浏览器自动化模块提供第一类型命令以控制web浏览器的操作以及执行第二类型命令以控制至少一个计算机的无法由浏览器自动化模块控制的操作。该方法还包括至少基于执行第一类型命令和第二类型命令输出报告。
实现方式可以包括以下特征中的一个或者多个特征。在一些实现方式中,将来自测试脚本的多个用户指定的指令转换成多个命令包括将来自测试脚本的单个用户指定的指令扩展成至少一个第一类型命令和至少一个第二类型命令。
在一些实现方式中,执行多个命令包括执行命令序列,包括相互混合多个第一类型命令与多个第二类型命令。
在一些实现方式中,该方法还包括确定一个或者多个用户指定的参数,向浏览器自动化模块提供一个或者多个用户指定的参数与第一类型命令,并且由浏览器自动化模块执行第一类型命令以基于一个或者多个用户指定的参数控制web浏览器的操作。
在一些实现方式中,由浏览器自动化模块执行第一类型命令以控制web浏览器的操作包括以下各项中的至少一项:打开新web浏览器窗口、导航到不同网页或者操作网页中的交互部件。
在一些实现方式中,由浏览器自动化模块执行第一类型命令以控制web浏览器的操作包括将第一类型命令转换成web浏览器原生的、并且执行web浏览器的操作的命令。
在一些实现方式中,第一类型的命令按照与web浏览器原生的命令的编程语言不同的第一编程语言。
在一些实现方式中,web浏览器原生的命令包括使用用于web浏览器的软件驱动对web浏览器的直接调用。
在一些实现方式中,执行第二类型命令包括执行第二类型命令而未利用浏览器自动化模块,以及通过执行第二类型命令而被控制的操作包括以下各项中的至少一项:选择用于web浏览器的软件驱动、取回在网页的元素中包含的数据或者取得网页的屏幕截图。
在一些实现方式中,该方法还包括确定由浏览器自动化模块执行至少一个第一类型命令的结果,其中执行第二类型命令包括基于由浏览器自动化模块执行至少一个第一类型的命令结果执行至少一个第二类型命令。
在一些实现方式中,基于由浏览器自动化模块执行至少一个第一类型命令的结果执行至少一个第二类型命令包括:比较执行至少一个第一类型命令的结果与用户指定的条件;以及基于比较结果与用户指定的条件执行至少一个第二类型命令。
在一些实现方式中,由浏览器自动化模块执行至少一个第一类型命令的结果包括在网页的内容中或者在网页的URL中包括的文本,并且其中比较结果与用户指定的条件包括比较文本与用户指定的文本串。
在一些实现方式中,由浏览器自动化模块执行至少一个第一类型命令的结果包括在web浏览器中加载网页的内容的测量的时间延迟,并且其中比较输出与用户指定的条件包括比较测量的时间延迟与用户指定的阈值。
在一些实现方式中,基于比较由浏览器自动化模块执行至少一个第一类型命令与用户指定的条件的结果执行至少一个第二类型命令包括基于确定加载网页的内容的测量的时间延迟大于用户指定的阈值,确定网页的内容的一部分是否已经加载。
在一些实现方式中,该方法还包括操作至少一个计算机的通信部件以从位于至少一个计算机外部的数据库中的存储器部件访问用户指定的条件。
在一些实现方式中,可由浏览器自动化模块执行的第一类型命令和不可由浏览器自动化模块执行的第二类型命令均按照相同编程语言被编写。
在一些实现方式中,该方法还包括基于执行web应用的自动化测试的结果确定web应用是否满足至少一个用户指定的性能标准。
在一些实现方式中,基于执行web应用的自动化测试的结果输出报告包括:至少基于至少一个第二类型命令确定报告格式;以及根据确定的报告格式生成HTML文档。
贯穿本申请描述的特征的所有或者部分特征可以被实施为一种用计算机程序编码的计算机存储介质,该计算机程序包括可由一个或者多个处理器执行的指令。贯穿本申请描述的特征的所有或者部分特征可以被实施为一种可以包括一个或者多个处理设备和用于存储用于实施陈述的功能的可执行指令的存储器的装置、方法或者电子系统。
在附图和以下描述中阐述一个或者多个实现方式的细节。其他特征将从描述和附图以及从权利要求中变清楚。
附图说明
图1是图示了可以执行本公开内容的实现方式的系统的示例的框图;
图2是图示了执行web应用的自动化测试的系统的部件的示例的框图;
图3是图示了执行自动化测试web应用的示例的略图;以及
图4至图6是图示执行web应用的自动化测试的示例的流程图。
在下文中,将参照附图给出对示例的具体描述。应当理解,可以做出对示例的各种修改。特别地,一个示例的单元可以在其他示例中被组合和使用以形成新示例。各种附图中的相似标号指示相似单元。
具体实施方式
web应用通常被设计为在许多不同类型的使用场景之下操作,这些不同类型的使用场景包括其中渲染web应用的不同类型的网页、不同类型的web浏览器、不同用户导航行为和不同类型的计算设备。在特定使用场景之下未能恰当地操作的web应用可能不仅影响web应用本身,而且还影响在主控web应用的周围网页中的内容。测试web应用的过程通常是涉及测试许多不同场景和模拟许多不同用户行为的复杂过程。
根据本公开内容的系统实现了对在web浏览器上运行的web应用的自动化测试。在一些实现方式中,系统使得用户能够使用比原本可能的指令集更简单的指令集来对web应用执行更全面的测试。系统可以使得用户能够使用简单指令以执行复杂测试操作。在一些实现方式中,系统也可以有助于使用参数化以定制测试操作。系统可以提供使得用户能够对web应用的测试执行多种测试的逻辑测试功能。基于测试的结果,系统可以提供可定制报告。例如,系统可以在报告中提供屏幕截图或者其他类型的数据。
在一些实现方式中,系统包括控制web浏览器和计算系统的其他部件以测试web应用的操作的web应用测试模块。web应用测试模块在一些实现方式中可以将用户输入的指令转换成控制web浏览器以及测试系统的用来执行web应用的其他部件的更复杂低级命令。这样,web应用测试模块可以提供用于测试web应用的统一、全面和易用的框架。
在一些实现方式中,web应用测试模块可以利用浏览器自动化模块。浏览器自动化模块可以在网页中对用户的动作进行自动化。例如,浏览器自动化模块可以使得用户能够指定命令集并且可以基于命令控制对web浏览器的一系列操作,比如加载特定网页、填写网页上的表(例如,文本框)、点击按钮等。
然而,可以限制浏览器自动化模块。例如,在一些情况下,浏览器自动化模块可能不能执行由测试场景指定的更高级的操作。这样的操作例如可以包括高级功能,比如比较网页内的文本与用户指定的文本串、测量用于加载网页的时间延迟、取得网页的屏幕截图、与远程数据库连接以存储/取回信息等。在这样的情况下,可以要求实施测试场景的用户直接地控制测试系统的部件以执行这样的操作,这可以需要为了与那些部件对接而需要的特定编程语言的知识。
这样的困难可以由web应用测试模块克服,该web应用测试模块提供更全面的测试环境以不仅控制web浏览器的可以由浏览器自动化模块操作的那些操作,而且还控制参与对web应用进行测试的测试系统的其他操作。web应用测试模块可以在允许用户执行比单独使用浏览器自动化模块而原本可能的对web应用的更全面的测试的单个统一框架之下与web浏览器自动化模块的功能一起提供这一附加功能。
例如,web应用测试模块可以接收包含用户指定的指令的测试脚本作为输入。web应用测试模块可以将测试脚本转换成一系列命令以控制测试系统的各种部件的操作。将用户指定的测试脚本转换成一系列命令可以完全地出现在执行命令之前或者可以至少部分地出现在执行命令中的一些命令期间。在一些实现方式中,一系列命令可以包括可以按照特定顺序相互混合的两个不同类型的命令。系统可以通过向浏览器自动化模块提供第一类型的命令以控制web浏览器并且执行第二类型的命令以控制未被浏览器自动化模块控制的部件(例如,非浏览器部件)的操作,来按照指定的顺序执行该一系列命令。
此外,在一些实现方式中,web应用测试模块可以使得用户能够指定简单的高级指令,并且可以将那些用户指令转换成控制参与对web应用进行测试的计算机的不同操作的更复杂的低级命令。测试模块也可以在测试中实现条件转移,从而使得一些低级命令由测试模块基于执行先前低级命令的结果而被动态地生成。在一些实现方式中,web应用测试模块也可以有助于参数化,从而使得用户能够定制测试以包括不同测试场景。
这样,web应用测试系统除了提供更全面的测试环境之外还可以有助于对web应用的更快和更高效的测试。
图1描绘了其中可以实施本公开内容的实现方式的示例系统100。在图1的示例系统100中,由用户104操作的客户端设备102可以执行web应用。此外,可以存在也执行相同web应用的其他设备,比如由用户108操作的设备106。
web应用可以由远程系统(比如图1中的主机系统110)主控。在一些实现方式中,主机系统110可以提供由客户端设备102和106下载并且在由客户端设备102和106渲染的web浏览器上执行的客户端侧信息。web应用主控系统(例如,主机系统110)可以包括一个或者多个服务器(例如,服务器112)和存储计算机可读指令的一个或者多个存储设备(例如,存储设备114)。服务器112可以如需要的那样与执行web应用的客户端设备102和106通信。例如,在一些实现方式中,主机系统110除了提供用于由客户端设备102和106下载的客户端侧软件之外,还可以附加地存储由web应用使用的服务器侧信息。系统可以使用服务器侧信息以在客户端侧软件在web浏览器上由用户104和108执行时与客户端设备102和106交互(例如,实时地)。主机系统110可以通过任何适当通信介质(比如通信网络116)与客户端设备102和106通信。
在一些实现方式中,可以存在一个或者多个用户(例如,图1中的管理用户120)操作的一个或者多个测试系统(例如,图1中的测试系统118),该一个或者多个用户对web应用执行测试以保证web应用正确地操作。这样的管理用户可以例如是web应用的开发员或者与测试web应用关联的其他人。这样的管理用户可以利用一个或者多个计算机以实施用于测试web应用的web应用测试系统。
在图1的示例中,web应用测试系统118由管理用户120操作以测试由主机系统110主控的web应用。在一些示例中,web应用测试系统可以包括由参与测试web应用的一个或者多个用户操作的一个或者多个计算机。附加地或者备选地,在一些实现方式中,web应用测试系统可以直接地在主控web应用的计算系统(例如,主机系统110)上和/或由对测试web应用有贡献的其他用户(例如,用户104和108)执行。这样,web应用测试系统可以在多种不同计算系统中被实施并且由多种不同用户用来测试web应用。
在图1的示例中,web应用测试系统118可以执行由管理用户120指定的一个或者多个指令以对由主机系统110主控的web应用执行用户定义的测试。例如,web应用测试系统118可以使管理用户120能够模拟各种测试情况(包括对不同类型的web浏览器的不同web浏览行为),并且在各种测试情况下测试web应用的操作。这样,web应用测试系统(例如,web应用测试系统118)可以使一个或者多个用户(例如,管理用户120)能够对web应用执行用户指定的测试以帮助保证web应用的恰当操作。
在一些实现方式中,计算设备102、106、110和118是计算设备,比如膝上型或者台式计算机、智能电话、个人数字助理、可穿戴计算机、便携媒体播放器、平板计算机或者可以用来与电子通信网络通信的其他适当计算设备。此外,计算设备102、106、110和118中的一个或者多个计算设备可以执行如这里进一步具体讨论的客户端侧操作。计算系统110也可以包括一个或者多个计算设备,比如计算机服务器。另外,计算系统110可以代表一起工作以执行如这里进一步具体讨论的服务器侧操作的多于一个计算设备。
在一些实现方式中,网络116是公共通信网络(例如,因特网、蜂窝数据网络、在电话网络之上的拨号调制解调器)或者私有通信网络(例如,私有LAN、租赁的线路)。网络108可以包括一个或者多个网络。网络可以提供在各种模式或者协议(比如全球移动通信系统(GSM)语音呼叫、短消息服务(SMS)、增强的消息接发服务(EMS)或者多媒体消息接发服务(MMS)消息接发、码分多址(CDMA)、时分多址(TDMA)、个人数字蜂窝(PDC)、宽带码分多址(WCDMA)、CDMA2000、通用分组无线电系统(GPRS)或者一个或者多个电视或者有线网络以及其他模式或者协议)之下的通信。例如,通信可以通过射频收发器而出现。此外,短程通信可以比如使用BLUETOOTH、Wi-Fi或者其他这样的收发器而出现。
图2图示了执行web应用的自动化测试的系统的示例部件。可以例如在图1中的web应用测试系统118的具体配置中实施图2中的web应用测试系统200。
在图2的示例中,web应用测试系统200包括web应用测试模块202。web应用测试模块202可以包括被配置为实施用于web应用的自动化测试的一个或者多个处理器和一个或者多个存储设备。web应用测试模块202可以从用户接收用于测试在系统200的web浏览器上执行的web应用的指令。例如,web应用测试模块202可以从用户接收包括用于测试web应用的用户指定的指令的测试脚本。
web应用测试系统200可以取得用户定义的测试脚本并且将测试脚本转换成一系列更低级命令。在一些实现方式中,web应用测试模块202可以将用户定义的测试脚本转换成控制测试系统200的不同部分的不同类型的命令。例如,web应用测试模块202可以将用户定义的测试脚本转换成用于控制web浏览器的操作的命令以及用于控制系统200的未与web浏览器关联的其他操作。这样,通过控制系统200的浏览器操作和非浏览器操作二者,web应用测试模块202提供用于web应用的比通过单独控制浏览器操作而原本可能的测试环境更完整的测试环境。
作为示例,web应用测试模块202可以是向通用计算机添加的用于创建修改的计算机的模块,该修改的计算机实现描述的功能。在一些实现方式中,web应用测试模块202包括专门化的硬件,该专门化的硬件被设计为控制测试系统200的其他部件的操作。web应用测试模块202可以与一个或者多个其他专门化的部件(可以包括专门化的硬件)交互以实现描述的功能。
例如,web应用测试模块202可以利用浏览器自动化模块204以控制在测试系统200上执行的web浏览器的操作。在这一示例中,浏览器自动化模块204可以控制web浏览器的操作,比如打开新web浏览器窗口、导航到不同网页或者操作网页中的交互部件(例如,按钮、交互表或者可选择链接)。在一些实现方式中,浏览器自动化模块204可以通过将由web应用测试模块202提供的命令转换成web浏览器原生的命令来控制web浏览器的操作。可以按照与由web应用测试模块202提供的命令不同的编程语言编写这样的原生浏览器命令。由浏览器自动化模块204使用的原生浏览器命令可以包括使用用于web浏览器的软件驱动206对web浏览器的直接调用。
然而,可以存在不能使用浏览器自动化模块204来控制的一些操作。这样的操作可以例如包括控制测试系统200的其他部件(比如显示单元、通信接口、存储器设备等)的特定操作和/或可以包括与web浏览器有关的高级操作(比如取回在网页的具体元素内的信息、取得网页的屏幕截图、在数据库(例如,远程数据库)中取回/存储信息或者浏览器自动化模块204不能执行的其他操作)。
这样的困难可以由web应用测试模块(例如,图2中的web应用测试模块202)克服,该web应用测试模块使得用户能够控制测试系统200的任何适当操作以实施用于web应用的更完整测试环境。为了实现这一点,在一些实现方式中,web应用测试模块202可以将用户定义的测试脚本转换成第一命令集和第二命令集。可以向浏览器自动化模块204提供第一命令集以控制web浏览器的操作。第二命令集可以由web应用测试模块202用来控制系统200的不能由浏览器自动化模块204控制的其他操作。在一些实现方式中,按照相同编程语言(例如,Java)编写可以由浏览器自动化模块204执行的第一命令和不能由浏览器自动化模块204执行的第二命令二者。
web应用测试模块202因此可以利用浏览器自动化模块204以控制低级浏览器驱动操作(经由web浏览器驱动206)而同时通过使得用户能够控制测试系统200的单独使用浏览器自动化模块204原本不可控制的其他操作来提供更完整测试环境。例如,这样的其他操作可以包括浏览器自动化模块204不能执行的对web浏览器的高级操作。附加地或者备选地,这样的其他操作可以包括控制系统200的非浏览器部件208,比如通信接口210、显示单元212、存储器214和/或系统200的其他非浏览器部件。
web应用测试模块202因此可以将多个用户指定的指令转换成用于浏览器自动化模块204的第一命令集和用于控制测试系统200的其他操作的第二命令集。在一些实现方式中,单个用户指定的指令可以映射到可以包括第一和第二类型二者的命令的多个命令。两个类型的命令也可以被相互混合或者相关,从而使得执行测试脚本涉及执行来自第一命令集的一个或者多个命令,并且然后执行来自第二命令集的一个或者多个命令,继而再次执行来自第一集合的一个或者多个命令等。在一些实现方式中,可以同时执行第一和第二类型二者的命令。
这样,执行的命令(第一和第二类型二者)的总数可以超过测试脚本中的用户指定的指令的数目。这可以使web应用测试模块202能够将多个命令的功能组合成单个用户可指定指令,因此向用户提供可以使得用户能够更高效地和快速地开发用于不同测试场景的测试脚本的更简单和更紧凑的指令集。
在一些实现方式中,web应用测试系统200可以基于由浏览器自动化模块204执行来自第一命令集的命令的结果来执行来自第二命令集的命令。例如,web应用测试模块202可以比较执行第一命令的结果与用户指定的条件,并且基于比较来执行第二命令。用户指定的条件可以由来自用户的直接输入确定和/或可以通过从存储器部件(例如,位于至少一个计算机外部的数据库中)访问用户指定的条件来确定。
在一些实现方式中,可以基于先前测试结果动态地生成由web应用测试模块202生成的命令。例如,web应用测试模块202可以使得用户定义的测试脚本能够指定测试场景的条件转移,从而使得实时测试结果确定由测试模块202生成的将来测试命令。
作为具体示例,用户定义的测试脚本可以包括用于加载包含web应用的具体网页并且确定用户指定的文本串是否出现在网页的内容中(或者在网页的URL中)的指令。在一些场景中,浏览器自动化模块204可以能够加载和渲染网页,但是它可能不能执行用户希望的用于测试web应用的更高级的操作,比如比较或者其他过滤操作。在这样的场景中,web应用测试模块202可以控制系统200的其他操作以便比较在网页中显示的文本与用户指定的文本串并且输出比较的结果。
作为可以由web应用测试模块202执行的测试操作的另一示例,用户定义的测试脚本可以包括用于测量用于加载用于具体网页的内容的延迟的指令。同样,浏览器自动化模块204可以能够加载和渲染希望的网页,但是它可能不能执行更高级的操作,比如测量用于加载网页的内容或者用于加载网页中的具体元素的时间。在这样的场景中,web应用测试模块202可以控制系统200的操作以测量在web浏览器中加载网页的内容的时间延迟并且比较测量的时间延迟与用户指定的阈值。如果测量的加载网页的延迟超过用户指定的阈值(例如,从而指示希望的网页渲染的缓慢),则web应用模块202可以采取补救步骤,比如确定网页的内容的某些部分是否已经加载了用户定义的阈值时间。
web应用测试模块202也可以使得用户能够指定用于控制测试的一个或者多个参数。这样的参数可以与第一命令一起被提供给浏览器自动化模块204和/或在执行第二命令期间用来控制系统200的不可由浏览器自动化模块204控制的操作。用户指定的参数可以通过输入从用户直接地被接收和/或可以通过从数据库访问参数而被确定。例如,web应用测试模块202可以确定存储一个或者多个用户指定的参数的数据库的网络地址并且从在网络地址处的数据库获得参数。
在一些实现方式中,web应用测试模块202可以使得用户能够使用在比如果用户与浏览器自动化模块204或者测试系统200的其他部件直接地交互则原本可能的格式和/或语言更简单的格式和/或语言的用户定义的指令来对web应用执行测试。这样,系统可以使得用户能够使用简单指令来按照用户友好的语言定义测试脚本,并且可以将那些指令转换成低级命令(例如,用于控制浏览器自动化工具204的操作的第一命令和用于控制其他操作的第二命令)。
这样,web应用测试模块202与单独由浏览器自动化模块204原本提供的用户接口和总测试环境相比,不仅可以提供用于控制web浏览器的更简单和更易用的用户接口,而且还提供用于web应用的更可定制(经由用户定义的脚本和参数)和更全面的总测试环境。
现在参照图3,图示了执行web应用的自动化测试的示例。示例过程300可以例如由web应用测试系统(例如,图2中的系统200或者图1中的系统118)执行。在示例过程300中,可以向web应用测试系统200提供各种输入和软件包。例如,输入302可以包括待测试的web应用以及用户定义的测试脚本和场景。此外,可以安装一个或者多个软件档案304,比如浏览器自动化工具(例如,图2中的浏览器自动化模块204,比如Selenium单独服务器)、集成软件开发环境(例如,Eclipse集成开发环境(IDE))和软件开发工具箱(例如,Java开发工具箱(JDK))。在一些实现方式中,也可以安装用于web应用测试模块(例如,图2中的web应用测试模块202)的软件为软件包。
测试执行循环可以包括可以被划分成各种测试阶段的操作,但是这样的分类不是实施web应用测试系统而必需的。在图3的示例中,测试包括测试管理阶段306、测试自动化阶段308和测试执行阶段310。在图3的示例中,在测试管理阶段306中,可以安装一个或者多个软件包(312)。接着,在测试自动化阶段308中,可以创建用于测试web应用的一个或者多个测试场景和脚本(314)。可以例如使用浏览器自动化工具(例如,图2中的浏览器自动化模块204)来开发测试自动化脚本(316)。测试自动化脚本可以经历可操作性测试(318)和进一步的开发(316),直至确定测试自动化脚本工作。接着,在测试执行阶段310中,可以执行工作测试自动化脚本(320)。这可以涉及控制测试系统(例如,图2中的系统200或者图1中的系统118)的各种操作以测试web应用。一旦测试场景完成(322),系统就可以输出测试的结果(324)并且基于测试结果签退测试场景(326)。
系统可以提供关于测试结果的各种类型的输出328。例如,系统可以例如基于测试结果是否满足至少一个用户指定的性能标准输出通过/失败测试结果。在一些实现方式中,系统可以提供显示操作web应用的结果的相关网页的屏幕截图。
基于来自测试的测试结果和/或其他输出,测试系统可以确定报告格式并且根据确定的报告格式生成文档(例如,HTML文档)以提供用于用户的、概括测试web应用的结果的报告。报告可以通过任何适当技术(例如,通过在显示单元上显示、发电邮、打印或者其他适当输出)提供给任何适当用户。
图4至图6图示了执行web应用的自动化测试的示例。图4至图6中的示例过程可以由web应用测试系统(例如,图1中的系统118或者图2中的系统200)执行。
现在参照图4和执行web应用的自动化测试的示例过程400,测试系统接收待测试的web应用(402)并且还接收包括用于测试web应用的多个由用户指定指令的测试脚本(404)。系统将多个用户指定的指令转换成包括两个不同类型的命令的多个命令(406)。第一类型命令可由浏览器自动化模块(例如,图2中的浏览器自动化模块204)执行以控制web浏览器的操作。第二类型命令不可由浏览器自动化模块204执行而待之以由web应用测试模块本身处置。在一些实现方式中,多个命令(包括第一类型命令和第二类型命令二者)中的命令的总数超过测试脚本中的由用户指定的指令的数目。
测试系统然后在web应用在web浏览器上执行之时执行从测试脚本生成的多个命令(408)。测试系统因此能够测试web应用。特别地,测试系统通过向浏览器自动化模块(例如,图2中的浏览器自动化模块204)提供第一类型的命令以控制web浏览器的操作来执行多个命令(410)。测试系统还执行第二类型的命令以控制至少一个计算机的不能由浏览器自动化模块204控制的操作(412)。尽管图4中的示例例示了第二类型命令的执行在第一类型命令的执行之后出现,但是可以按照任何适当顺序执行(或者按照相互混合顺序执行)两个类型的命令。
基于执行第一命令和第二命令,测试系统然后可以至少部分基于执行第一类型命令和第二类型命令来输出报告(414)。另外,尽管图4的示例例示了当在测试期间执行命令之前基于测试脚本生成命令,但是测试系统可以在任何时间(比如在测试期间)从测试脚本生成命令。例如,在一些实现方式中,一个或者多个命令可以在测试期间由web应用测试模块202动态地生成,而不是初始地基于测试脚本被一次全部生成。测试模块202对测试命令的动态生成可以用来在用户定义的测试脚本中实施条件转移,其中未来测试命令基于执行先前测试命令的结果。
现在参照图5,测试系统可以确定一个或者多个用户指定的参数(500)。虽然图5中的示例例示了这一确定在接收测试脚本之后并且在将测试脚本转换成第一类型命令和第二类型命令之前出现,但是测试系统可以在任何适当时间确定用户指定的参数(例如,作为在接收测试脚本之前的初始步骤、在将测试脚本转换成第一命令和第二命令之后、在测试的执行期间等)。
在图5的示例中,测试系统向浏览器自动化模块(例如,图2中的浏览器自动化模块204)提供一个或者多个用户指定的参数与第一类型命令,并且由浏览器自动化模块204执行第一类型命令以基于一个或者多个用户指定的参数控制web浏览器的操作(502)。附加地,在一些实现方式中,测试系统可以在第二类型命令的执行期间使用用户定义的参数以控制计算机的不可由浏览器自动化模块204控制的操作。用户指定的参数可以按照任何适当方式由测试系统利用以使得用户能够定制对web应用的测试。
图6示出了由浏览器自动化模块(例如,图2中的浏览器自动化模块204)执行第一类型命令以及浏览器自动化模块204不能执行的第二类型命令的附加细节。在这一示例中,在第一类型命令由浏览器自动化模块204执行之后,web应用测试模块(例如,图2中的web应用测试模块202)确定由浏览器自动化模块204执行至少一个第一类型命令的结果(600)。这一结果可以例如包括确定用户指定的文本串是否出现在网页的内容中,或者确定用于加载网页的内容的延迟是否超过了用户指定的阈值,或者来自由浏览器自动化模块204执行web浏览器的操作的其他适当结果。
基于这一结果,web应用测试模块202可以基于由浏览器自动化模块204执行至少一个第一类型命令的结果执行至少一个第二类型命令(602)。例如,由web应用测试模块202执行的第二命令可以包括捕获在已经由浏览器自动化模块204渲染的web浏览器中显示的内容的屏幕截图、过滤网页内的内容、测量加载网页中的内容的时间延迟、在数据库(例如,远程数据库或者本地存储器设备)中取回/存储数据等。
测试脚本中的用户定义的指令的示例
接着提供在由web应用模块执行的测试脚本中包括的用户定义的指令的一些具体非限制示例。
以下示例示出了包括八个用户定义的指令的简单测试脚本。
SelectDriver.setDriver();
WebAction.open("http://www.google.com");
WebAction.fillName("q","TestAutomation"+Keys.ENTER);
WebAction.wait(5000);
WebAction.clickLink("Testautomation-Wikipedia,thefreeencyclopedia");
WebAction.wait(5000);
ScreenShot.screenShot();
WebAction.clickLink("Mainpage");
在这一示例中,可以在测试脚本中包括的以上八行由用户指定的指令由web应用测试模块(例如,web应用测试模块202)转换以执行以下八个操作:
1.加载和打开Firefox驱动和浏览器。
2.打开URL“https://www.google.com”。
3.向Google搜索框填充文本“测试自动化”并且点击回车。
4.等待5000毫秒以加载显示搜索结果的请求的网页。
5.发现和点击在加载的网页中显示的搜索结果内的链接“Testautomation-Wikipedia,thefreeencyclopedia”。
6.等待附加的5000毫秒以提供缓冲时间以用于取得显示搜索结果的网页的屏幕截图。
7.取得显示搜索结果的网页的屏幕截图。
8.通过点击在网页中显示的“主页”链接文本来导航到Wikipedia站点的主页。
以上操作包括可以由浏览器自动化模块执行的第一命令(例如,打开和导航到不同URL)以及浏览器自动化模块不能执行的第二命令(例如,等待指定的时间量、发现网页的内容内的用户指定的文本和取得屏幕截图)二者。web应用测试模块202自动地在第一命令与第二命令之间区分,而未必需要用户了解这样的区别。取而代之,系统使得用户能够利用更简单的高级指令以执行比通过单独使用浏览器自动化工具204而原本可能的web应用测试更全面的web应用测试。
在一些实现方式中,web应用测试模块202可以在一个或者多个类中组织不同的可能的用户指定的指令(例如,使用面向对象编程)。这样的类的一些示例包括:
SelectDriver-用来选择浏览器驱动。它可以默认选择用于特定类型的浏览器的驱动。例如,SelectDriver类可以包括用于打开用于默认浏览器的驱动的指令:
SelectDriver.setDriver();
为了使用除了默认浏览器之外的浏览器,用户可以显式地传递参数,该参数指定浏览器的驱动:
SelectDriver.setDriver(BrowserDriver);
以上指令使得用户能够使用用于web浏览器的任何适当驱动。
WebAction-用来对网页的元素和事件执行动作(例如,点击、录入数据等)。例如,WebAction类可以包括用于在web浏览器中打开URL的指令。为了执行这一动作,用户可以指定指令:
ClassName.commandName(参数);
WebAction.open(URL);
在这一示例中,“URL”是向“open”指令传递的、用于指定用户正试图打开的特定网页的地址的参数。
作为另一示例,WebAction类可以包括用于在某个web元素中填入数据的填充指令:
WebAction.fill(“WebElement”,“Data”);//引用元素和数据。
如果用户知道元素的不同属性则也可以在复数形式中使用这一指令。
WebAction.fillId(“Id”,“Data”);//向其id=“Id”的元素填充“Data”;
WebAction.fillName(“Name”,“Data”);//按照其名称属性填充元素
WebAction.fillXpath(“Xpath”,“Data”);//按照其Xpath填充元素。
WebAction.fillClassName(“ClassName”,“Data”);//查看所有命令
作为另一示例,WebAction类可以包括用于点击网页中的元素的点击指令:
WebAction.click(“WebElement”);//引用WebElement以点击。
这一指令也可以用作:
WebAction.clickId(“Id”);//按照其ID点击元素。
WebAction.clickName(“Name”);//按照其名称点击元素。
WebAction.clickXpath(“Xpath”);//按照其Xpath点击元素。
WebAction.clickLink(“link”);//按照其链接文本点击元素。
WebAction.clickClassName(“ClassName”);//等等。
作为另一示例,WebAction类可以包括用于将网页的执行停止指定的时间段的等待指令。例如:
WebAction.wait(5000);//5000ms=5秒
以上指令将使下一步骤的执行停止接下来的5秒。
WebAction.wait(5000,“id”);
以上指令将停止下一步骤的执行直至发现具有与用户指定的“id”参数匹配的ID属性的元素或者5秒等待,无论二者中的哪一个先发生。也可以存在系统可以用来设置等待命令的其他属性。
WebData-用来从网页的元素取回数据(例如,在元素的标签或者它的属性值以内的数据)。例如,这一类可以包括用于取回在网页中的元素的标签内的数据的指令:
WebData.get(“WebElement”);//引用WebElement。
或者元素的已知属性可以用来得到它的数据:
WebData.getId(“id”);//按照id
WebData.getName(“name”);//按照名称
为了取回属性的数据值,可以使用以下指令中的任一指令:
WebData.getAttribute(“WebEement”,“AttributeName”);
WebData.getAttribute(“id”,“AttributeName”);//等。
WebSelection–用来选择网页的元素。例如,这一类可以包括用于通过按照标识符选择web元素来获得该web元素的引用的指令:
WebSelection.findId(“id”);//选择具有其“ID”属性的元素
ScreenShot–用来取得在应用时的网页的屏幕截图。屏幕截图指令可以用来取得完整网页的屏幕截图、甚至覆盖在滚动之下隐藏的部分,因此捕获完整网页的每个部分。它可以用来按照JPEG格式将屏幕截图保存为文件,其中默认名称为以毫秒为单位表示屏幕截图的时间的数。
ScreenShot.screenShot();
以上指令将取得当前网页的屏幕截图并且在特定文件夹中保存它。用户可以具有用于通过在参数中传递文件的名称来选择名称的选项。
ScreenShot.screenShot(“FileName”);
用户可以能够判定用于在希望的文件夹中存储屏幕截图的路径。
ScreenShot.setDirectory(“Path”);
ParamAction–用来通过使用CSV文件来对动作进行参数化。为了开始参数化,可以对于包含参数数据的源CSV文件设置文件路径:
ParamAction.setDirectory(“FilePath”);
CSV文件可以存储在测试脚本中使用的元素的ID或者名称或者其他标识符。例如:
打开登录页面-http://www.login.com
在具有id-“user”的元素中填充用户名
在具有id-“pass”的元素中填充口令
点击具有id-“sub”的提交按钮
对于具有用户名和口令的三个用户重复这些步骤如下:
User1Pass1
User2Pass2
User3Pass3
CSV文件可以如下所示:
一旦已经构建了CSV文件,就可以创建测试脚本:
第一行用来设置源文件的路径。
第二行用来启动具有值1(即,行1)的变量。
第三行是从第一行(CSV的第二行,CSV的第一行等于0)开始并且在具有数据的末行结束的循环的开始。指令ParamAction.rows();用来递送CSV文件具有的排除包含标识符的最高行的数据行的数目。
第四行用来打开URL。
第五行用来等待(Failsafe)最大等待=15秒以加载数据。
第六行用来从CSV文件数据填充具有ID=‘user’的元素。
第七行用来从CSV文件数据填充具有ID=‘pass’的元素。
第八行用来点击提交按钮。
第九行用来递增行。
第十行代表参数化的结束。
以上示例示出了如何设计用于创建参数化的回归登录测试的简单框架。可以存在由ParamAction类提供的例如用于在表中填充数据的其他指令。
由ParamAction类提供的另一指令是:
ParamAction.getData(“ColumnName”,“RowNumber”);
这将校验行“RowNumber”上的列“ColumnName”中的数据并且将数据返回为串。这帮助从CSV文件中的表格访问来自指定的位置的数据。
从以上示例,为了从第二行中的“user”列获得用户名的值:
ParamAction.getData(“user”,”2”);//”2”实际上是CSV中的行3。
这将返回串“user2”。//行2(CSV中的行3)的列“user”中的值(csv的行0的列值)。
因此简言之,用户可以在CSV文件中保存数据并且可以借助‘Headerrow’中的值(例如,CSV文件的‘第一行’或者‘行0’)取回它。
这使得用户能够根据他/她自己的规范定义测试脚本并且一旦设置了路径就用仅一个命令取回数据。
WebTest-用来测试网页的元素包含的数据的有效性并且用来生成测试结果。WebTest指令的示例是:
WebTest.test(WebElement,“DataToCompare”);
这里,系统比较WebElement的值与预计的数据“DataToCompare”。然后可以在具有表格的HTML格式中输出这一测试的结果,该表格包含测试编号、预计的结果、实际结果和结果作为列。
其他指令包括:
WebTest.testId(“id”,“DataToCompare”);
WebTest.testName(“name”,“DataToCompare”);
为了生成在任何时间执行的测试的按照HTML格式的结果,可以使用以下指令:
WebTest.createHTML();//或者
WebTest.createHTML(“filename”);//HTML文件的名称。
系统也可以提供用于设置目录以存储HTML文件并且用于以后取回它的指令:
WebTest.setDirectory(path);
WebTest.getDirectory();
在一些实现方式中,系统也可以使得用户能够指定高级指令。高级指令可以例如用来执行高级操作,比如选择在网页中的另一元素以内的元素、打开窗口、关闭窗口或者标签页、从一个窗口向另一窗口、一个标签页向另一标签页或者在框之间移动执行。
在一些实现方式中,高级指令也可以用来对测试脚本进行参数化、创建测试日志、保存快照等。
例如,基于浏览器的高级指令可以包括打开和执行:
WebAction.newWindow();//打开新窗口。
WebAction.openWindow(“Handle”);//向打开窗口移动。
高级指令也可以包括发现:
WebData.getWindow();//返回打开窗口句柄。
WebData.getWindows();//返回所有打开窗口句柄的ArrayList。
WebData.newWindow(“Handle”);//返回新打开第二窗口。
WebData.newWindow(ArrayList<Handles>);/返回新打开窗口。
高级指令也可以包括关闭:
WebAction.closeWindow();//关闭当前窗口。
作为具体示例,用户可以让两个浏览器窗口打开并且测试脚本中的下一事件(点击具有ID="elem"的元素)可以被设计为打开新窗口。为了向新窗口移动执行,系统首先找出新窗口的句柄,该句柄是唯一地标识窗口的串。
ArrayList<String>handle=WebData.getWindows();//保存现有句柄
WebAction.clickId(“elem”);//开启新窗口的事件。
StringnewWindow=WebData.getnewWindow(handle);//在命令中传递旧列表以校验新窗口并且保存它
WebAction.openWindow(newWindow);//在新窗口中聚焦。
可以提供相似高级指令以与标签一起工作。
可以提供其他高级指令以与框和提醒一起工作:
WebAction.chooseFrame(“frame”);//“frame”可以是ID、Name、Order。
WebAction.alertAccept();//接受提醒。
WebAction.alertDecline();//拒绝提醒。
可以提供其他高级指令以控制移动:
WebAction.back();//移回到先前页面。
WebAction.forward();//移回到下一页面。
WebAction.refresh();//刷新页面。
可以提供其他高级指令以控制URL:
WebAction.baseURL();//返回本地主机名称。
WebAction.path();/返回页面的路径而无第一‘/’符号。
在一些场景中,特定网页可以使得难以唯一地选择可以用来实施高级指令的元素。例如,假设网页具有两行按钮,一行在顶部中而一行在底部中。两行包含具有相似属性的相似按钮并且不能被唯一地标识。在以下HTML代码中提供示例。
在以上示例中,假设用户指定用于点击以上保存按钮的指令:
WebAction.clickName(“save”)。
这一指令将不工作,因为在网页中有两个具有名称“save”的元素。为了解决这一问题,系统可以利用附加属性以在元素之间区分。例如,系统可以在以上示例中首先选择仅保持第一‘Save’按钮并且可以被唯一地标识为DivTag的元素。这可以通过以下指令来完成:
WebAction.clickInName(“topRow”,“save”);
这里,第一参数是外部元素的ID并且第二参数可以是唯一地标识外部元素以内的内部元素的任何属性。
同样地,系统可以找到在名称的中间具有“In”的多个指令以将它们标识为与‘Inner’元素一起工作的指令。
已经描述了多个实现方式。然而,将理解,可以进行各种修改而未脱离公开内容的精神实质和范围。例如,可以使用以上示出的流程的各种形式,其中步骤被重新排序、添加或者去除。因而,其他实现方式在所附权利要求的范围内。
可以在数字电子电路中或者在计算机软件、固件或者硬件(包括在本说明书中公开的结构及其结构等效物)中或者在它们中的一项或者多项的组合中实现在本说明书中描述的实现方式和所有功能操作。可以使用一个或者多个计算机程序产品(即,在计算机可读介质上编码的用于由数据处理装置执行或者用来控制数据处理装置的操作的计算机程序指令的一个或者多个模块)来提供实现方式。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的物质组成或者它们中的一项或者多项的组合。术语“计算系统”涵盖用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或者多个处理器或者计算机。装置除了硬件之外还可以包括为讨论的计算机程序创建执行环境的代码(例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一项或者多项的组合的代码)。
可以按照包括编译或者解译语言的任何适当形式的编程语言编写计算机程序(也被称为程序、软件、软件应用、脚本或者代码),并且可以按照任何适当形式部署它(包括被部署为单独程序或者被部署为适合用于在计算环境中使用的模块、部件、子例程或者其他单元)。计算机程序未必对应于文件系统中的文件。程序可以被存储于保持其他程序或者数据的文件(例如,存储于标记语言文档中的一个或者多个脚本)的一部分中、专用于讨论的程序的单个文件中或者多个协调的文件(例如,存储一个或者多个模块、子程序或者代码的部分的文件)中。计算机程序可以被部署为在一个计算机上或者在位于一个地点或者分布于多个地点并且由通信网络互连的多个计算机上执行。
在本说明书中描述的过程和逻辑流程可以由一个或者多个可编程处理器执行,该一个或者多个可编程处理器执行一个或者多个计算机程序以通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)执行)并且也可以将装置实施为该专用逻辑电路。
举例而言,适合用于计算机程序的执行的处理器包括通用和专用微处理器以及任何适当种类的数字计算机的任何一个或者多个处理器。一般而言,处理器将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的基本单元是用于执行动作的处理器以及用于存储指令和数据的一个或者多个存储器设备。一般而言,计算机也将包括用于存储数据的一个或者多个海量存储设备(例如,磁盘、光磁盘或者光盘)或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备传送数据或者二者。然而,计算机无需具有这样的设备。另外,可以在另一设备(聊举数例,例如,移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器)中嵌入计算机。适合用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言包括半导体存储器设备(例如,EPROM、EEPROM和闪存设备);磁盘(例如,内部硬盘或者可拆卸盘);磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路装置补充或者并入于专用逻辑电路装置中。
为了提供与用户的交互,可以在计算机上提供实现方式,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器)以及用户可以用来向计算机提供输入的键盘和指点设备(例如,鼠标或者轨迹球)。其他种类的设备也可以用来提供与用户的交互;例如,向用户提供的反馈可以是任何适当形式的感官反馈,例如,视觉反馈、听觉反馈或者触觉反馈;并且可以按照包括声音、话音或者触觉输入的任何形式接收来自用户的输入。
可以在计算系统中提供实现方式,该计算系统包括后端部件(例如,作为数据服务器)或者包括中间件部件(例如,应用服务器)或者包括前端部件(例如,具有图形用户界面或者web浏览器(用户可以通过该图形用户界面或者web浏览器与实现方式交互)的客户端计算机)或者一个或者多个这样的后端、中间件或者前端部件的任何适当组合。系统的部件可以由任何适当数字数据通信形式或者介质(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。
计算系统可以包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序产生客户端和服务器的关系。
尽管本说明书包含许多细节,但是不应将这些解释为限制公开内容的或者可以要求保护的内容的范围,而是对特定实现方式所特有的特征的描述。也可以在单个实现方式中组合提供在本说明书中在分离实现方式的上下文中描述的某些特征。反言之,也可以在多个实现方式中分离地或者在任何适当子组合中提供在单个实现方式的上下文中描述的各种特征。另外,虽然以上可以将特征描述为在某些组合中动作并且甚至起初这样要求保护,但是来自要求保护的组合的一个或者多个特征可以在一些情况下从该组合被删除,并且要求保护的组合可以涉及子组合或者子组合的变化。
相似地,尽管在附图中按照特定顺序描绘操作,但是这不应理解为要求按照所示特定顺序或者按照依次顺序执行这样的操作或者执行所有所示操作以实现希望的结果。在某些境况中,多任务和并行处理可以是有利的。另外,在以上描述的实现方式中的各种系统部件的分离不应被理解为在所有实现方式中要求这样的分离,并且应当理解,描述的程序部件和系统一般可以一起被集成于单个软件产品中或者封装成多个软件产品。
因此,已经描述了特定实现方式。其他实现方式在所附权利要求的范围内。例如,在权利要求中记载的动作可以按照不同顺序而被执行而仍然实现希望的结果。
Claims (20)
1.一种由至少一个计算机执行的计算机实施的方法,所述方法包括:
接收待测试的web应用;
接收包括用于测试所述web应用的多个用户指定的指令的测试脚本;
将来自所述测试脚本的所述多个用户指定的指令转换成多个命令,所述多个命令包括可由浏览器自动化模块执行的、用于控制web浏览器的操作的第一类型命令和不可由所述浏览器自动化模块执行的第二类型命令,其中所述多个命令中的命令的数目超过所述测试脚本中的指令的数目;
在所述web应用在所述web浏览器上执行之时执行所述多个命令,其中执行所述多个命令包括:
向所述浏览器自动化模块提供所述第一类型命令以控制所述web浏览器的操作;以及
执行所述第二类型命令以控制所述至少一个计算机的无法由所述浏览器自动化模块控制的操作;
至少基于执行所述第一类型命令和所述第二类型命令输出报告。
2.根据权利要求1所述的方法,其中将来自所述测试脚本的所述多个用户指定的指令转换成多个命令包括:
将来自所述测试脚本的单个用户指定的指令扩展成至少一个第一类型命令和至少一个第二类型命令。
3.根据权利要求1所述的方法,其中执行所述多个命令包括:
执行命令序列,包括相互混合多个第一类型命令与多个第二类型命令。
4.根据权利要求1所述的方法,还包括:
确定一个或者多个用户指定的参数;以及
向所述浏览器自动化模块提供所述一个或者多个用户指定的参数与所述第一类型命令,并且由所述浏览器自动化模块执行所述第一类型命令以基于所述一个或者多个用户指定的参数控制所述web浏览器的操作。
5.根据权利要求1所述的方法,其中由所述浏览器自动化模块执行所述第一类型命令以控制所述web浏览器的操作包括以下各项中的至少一项:
打开新web浏览器窗口、导航到不同网页或者操作网页中的交互部件。
6.根据权利要求1所述的方法,其中由所述浏览器自动化模块执行所述第一类型命令以控制所述web浏览器的操作包括:
将所述第一类型命令转换成所述web浏览器原生的、并且执行所述web浏览器的所述操作的命令。
7.根据权利要求6所述的方法,其中所述第一类型命令按照与所述web浏览器原生的所述命令的编程语言不同的第一编程语言。
8.根据权利要求6所述的方法,其中所述web浏览器原生的所述命令包括使用用于所述web浏览器的软件驱动对所述web浏览器的直接调用。
9.根据权利要求1所述的方法,其中:
执行所述第二类型命令包括执行所述第二类型的命令而未利用所述浏览器自动化模块,以及
通过执行所述第二类型命令而被控制的所述操作包括以下各项中的至少一项:选择用于web浏览器的软件驱动、取回在网页的元素中包含的数据或者取得网页的屏幕截图。
10.根据权利要求1所述的方法,还包括:
确定由所述浏览器自动化模块执行至少一个第一类型命令的结果,
其中执行所述第二类型命令包括基于由所述浏览器自动化模块执行所述至少一个第一类型命令的所述结果执行至少一个第二类型命令。
11.根据权利要求10所述的方法,其中基于由所述浏览器自动化模块执行所述至少一个第一类型命令的所述结果执行所述至少一个第二类型命令包括:
比较执行所述至少一个第一类型命令的所述结果与用户指定的条件;以及
基于比较所述结果与所述用户指定的条件执行所述至少一个第二类型的命令。
12.根据权利要求11所述的方法,其中由所述浏览器自动化模块执行所述至少一个第一类型命令的所述结果包括在网页的内容中或者在网页的URL中包括的文本,并且其中比较所述结果与用户指定的条件包括比较所述文本与用户指定的文本串。
13.根据权利要求11所述的方法,其中由所述浏览器自动化模块执行所述至少一个第一类型命令的所述结果包括在所述web浏览器中加载网页的内容的测量的时间延迟,并且其中比较所述输出与用户指定的条件包括比较所述测量的时间延迟与用户指定的阈值。
14.根据权利要求13所述的方法,其中基于比较由所述浏览器自动化模块执行所述至少一个第一类型命令的所述结果与所述用户指定的条件执行所述至少一个第二类型命令包括:
基于确定加载所述网页的所述内容的所述测量的时间延迟大于所述用户指定的阈值,确定所述网页的所述内容的一部分是否已经加载。
15.根据权利要求11所述的方法,还包括:
操作所述至少一个计算机的通信部件以从位于所述至少一个计算机外部的数据库中的存储器部件访问所述用户指定的条件。
16.根据权利要求1所述的方法,其中可由所述浏览器自动化模块执行的所述第一类型命令和不可由所述浏览器自动化模块执行的所述第二类型命令均按照相同编程语言被编写。
17.根据权利要求1所述的方法,还包括:
基于执行所述web应用的自动化测试的结果确定所述web应用是否满足至少一个用户指定的性能标准。
18.根据权利要求1所述的方法,其中基于执行所述web应用的自动化测试的结果输出报告包括:
至少基于至少一个第二类型命令确定报告格式;以及
根据确定的所述报告格式生成HTML文档。
19.一种系统,包括:
一个或者多个计算机;以及
耦合到所述一个或者多个计算机的计算机可读介质,所述计算机可读介质具有在其上存储的指令,所述指令在由所述一个或者多个计算机执行时,使得所述一个或者多个计算机执行操作,所述操作包括:
接收待测试的web应用;
接收包括用于测试所述web应用的多个用户指定的指令的测试脚本;
将来自所述测试脚本的所述多个用户指定的指令转换成多个命令,所述多个命令包括可由浏览器自动化模块执行的、用于控制web浏览器的操作的第一类型命令和不可由所述浏览器自动化模块执行的第二类型命令,其中所述多个命令中的命令的数目超过所述测试脚本中的指令的数目;
在所述web应用在所述web浏览器上执行之时执行所述多个命令,其中执行所述多个命令包括:
向所述浏览器自动化模块提供所述第一类型命令以控制所述web浏览器的操作;以及
执行所述第二类型命令以控制所述至少一个计算机的、无法由所述浏览器自动化模块控制的操作;
至少基于执行所述第一类型命令和所述第二类型命令输出报告。
20.一种用计算机程序编码的计算机存储介质,所述计算机程序包括在由一个或者多个处理器执行时使得所述一个或者多个处理器执行操作的指令,所述操作包括:
接收待测试的web应用;
接收包括用于测试所述web应用的多个用户指定的指令的测试脚本;
将来自所述测试脚本的所述多个用户指定的指令转换成多个命令,所述多个命令包括可由浏览器自动化模块执行的、用于控制web浏览器的操作的第一类型命令和不可由所述浏览器自动化模块执行的第二类型命令,其中所述多个命令中的命令的数目超过所述测试脚本中的指令的数目;
在所述web应用在所述web浏览器上执行之时执行所述多个命令,其中执行所述多个命令包括:
向所述浏览器自动化模块提供所述第一类型命令以控制所述web浏览器的操作;以及
执行所述第二类型命令以控制所述至少一个计算机的无法由所述浏览器自动化模块控制的操作;
至少基于执行所述第一类型命令和所述第二类型命令输出报告。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/549,179 | 2014-11-20 | ||
US14/549,179 US9753843B2 (en) | 2014-11-20 | 2014-11-20 | Automated testing of web-based applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630669A true CN105630669A (zh) | 2016-06-01 |
CN105630669B CN105630669B (zh) | 2020-12-25 |
Family
ID=54359904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510799846.0A Active CN105630669B (zh) | 2014-11-20 | 2015-11-19 | 基于web的应用的自动化测试 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9753843B2 (zh) |
EP (1) | EP3026565B1 (zh) |
CN (1) | CN105630669B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411633A (zh) * | 2016-08-23 | 2017-02-15 | 国家电网公司 | 一种基于openstack的Web应用兼容性测试方法及其系统 |
CN108347358A (zh) * | 2017-01-23 | 2018-07-31 | 埃森哲环球解决方案有限公司 | 云连接的自动化测试 |
CN109669876A (zh) * | 2018-12-30 | 2019-04-23 | 艾普阳科技(深圳)有限公司 | 一种javascript代码的调试控制方法及系统 |
CN110430976A (zh) * | 2017-01-27 | 2019-11-08 | 隆萨有限公司 | 动态控制自动化系统 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703679B2 (en) | 2013-03-14 | 2017-07-11 | International Business Machines Corporation | Probationary software tests |
US9575873B2 (en) * | 2013-09-13 | 2017-02-21 | Sap Se | Software testing system and method |
US11182280B2 (en) | 2014-10-13 | 2021-11-23 | Microsoft Technology Licensing, Llc | Application testing |
US10284664B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Application testing |
US10198348B2 (en) * | 2015-08-13 | 2019-02-05 | Spirent Communications, Inc. | Method to configure monitoring thresholds using output of load or resource loadings |
US10044588B2 (en) * | 2015-03-31 | 2018-08-07 | Zuora, Inc. | Systems and methods for live testing performance conditions of a multi-tenant system |
US20160352804A1 (en) * | 2015-05-28 | 2016-12-01 | Blue Triangle Technologies, Inc. | Decreasing website load times to increase e-commerce conversion |
US10310965B2 (en) * | 2016-02-25 | 2019-06-04 | Dell Products, Lp | Dynamic virtual testing environment for webpages |
US10509717B1 (en) * | 2016-10-05 | 2019-12-17 | Amdocs Development Limited | System, method, and computer program for automatically testing software applications including dynamic web pages |
US10489287B2 (en) * | 2017-05-15 | 2019-11-26 | Bank Of America Corporation | Conducting automated software testing using centralized controller and distributed test host servers |
US10984438B2 (en) * | 2017-07-28 | 2021-04-20 | Ingram Micro Inc. | Technologies for automatically validating the functionality of offers in a cloud service brokerage system |
US10613971B1 (en) * | 2018-01-12 | 2020-04-07 | Intuit Inc. | Autonomous testing of web-based applications |
US10599426B2 (en) * | 2018-03-05 | 2020-03-24 | Bank Of America Corporation | Automated validation tool |
CN109684192B (zh) * | 2018-08-21 | 2024-03-01 | 天航长鹰(江苏)科技有限公司 | 基于数据处理的本地测试方法、设备、存储介质及装置 |
CN109669851A (zh) * | 2018-12-25 | 2019-04-23 | 上海新炬网络技术有限公司 | 基于Selenium自动化的性能测试脚本录制方法 |
US10698803B1 (en) | 2019-01-09 | 2020-06-30 | Bank Of America Corporation | Computer code test script generating tool using visual inputs |
US11456981B2 (en) * | 2019-05-15 | 2022-09-27 | Nextiva, Inc. | System and method for capturing, storing, and transmitting presentations |
US11200157B1 (en) * | 2019-09-17 | 2021-12-14 | Amazon Technologies, Inc. | Automated execution reporting for container builds |
CN110765012A (zh) * | 2019-10-15 | 2020-02-07 | 北京信安世纪科技股份有限公司 | 一种自动化测试脚本生成及解析执行方法 |
CN110888709A (zh) * | 2019-12-04 | 2020-03-17 | 中山市凯能集团有限公司 | 监控屏的智能操作方法、装置、计算机设备和存储介质 |
US11301367B2 (en) * | 2020-03-02 | 2022-04-12 | BugPoC, LLC | Automated fix verification and regression testing method derived from proof-of-concepts |
US11200155B2 (en) | 2020-04-09 | 2021-12-14 | The Toronto-Dominion Bank | System and method for automated application testing |
WO2021237394A1 (en) * | 2020-05-25 | 2021-12-02 | Microsoft Technology Licensing, Llc | A crawler of web automation scripts |
CN113835993A (zh) * | 2020-06-23 | 2021-12-24 | 网神信息技术(北京)股份有限公司 | 自动化测试方法、装置、测试平台、电子设备和存储介质 |
CN112527435B (zh) * | 2020-12-08 | 2024-02-13 | 建信金融科技有限责任公司 | 浏览器操作方法及系统 |
CN112612710B (zh) * | 2020-12-28 | 2022-02-25 | 上海安畅网络科技股份有限公司 | 一种自动测试方法和系统 |
US11520690B2 (en) | 2021-02-08 | 2022-12-06 | Walkme Ltd. | Automated testing of walkthroughs |
TWI811663B (zh) * | 2021-04-14 | 2023-08-11 | 國立臺灣大學 | 軟體測試報告產生方法及裝置 |
CN113176979B (zh) * | 2021-05-24 | 2022-11-04 | 深圳赛安特技术服务有限公司 | 应用程序异常监控方法、装置、计算机设备及存储介质 |
JP2023000907A (ja) * | 2021-06-18 | 2023-01-04 | 株式会社日立製作所 | ソースコード修正支援装置及びソースコード修正支援方法 |
CN113688043B (zh) * | 2021-08-25 | 2022-07-26 | 北京三快在线科技有限公司 | 应用程序测试方法、装置、服务器、iOS设备及介质 |
US11829788B2 (en) | 2021-12-03 | 2023-11-28 | International Business Machines Corporation | Tracking computer user navigations to generate new navigation paths |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002871A (en) * | 1997-10-27 | 1999-12-14 | Unisys Corporation | Multi-user application program testing tool |
US20050066018A1 (en) * | 2003-08-29 | 2005-03-24 | Whittle Derrick Wang | Event notification |
CN101089826A (zh) * | 2006-06-12 | 2007-12-19 | 国际商业机器公司 | 创建容错和自适应图形用户接口测试自动化的方法和系统 |
CN101135989A (zh) * | 2006-08-31 | 2008-03-05 | 中国银联股份有限公司 | 一种Web应用系统的自动化测试的方法和装置 |
US20080092119A1 (en) * | 2006-10-17 | 2008-04-17 | Artoftest, Inc. | System, method, and computer readable medium for universal software testing |
US20090037881A1 (en) * | 2007-07-31 | 2009-02-05 | Caterpillar Inc. | Systems and methods for testing the functionality of a web-based application |
CN102511037A (zh) * | 2010-08-10 | 2012-06-20 | 国际商业机器公司 | 用于自动测试web应用的方法和系统 |
CN103678105A (zh) * | 2012-09-17 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种页面代码的测试方法和装置 |
US20140317600A1 (en) * | 2013-03-15 | 2014-10-23 | Digital River, Inc. | Functional software testing framework for determinate level testing |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7231606B2 (en) | 2000-10-31 | 2007-06-12 | Software Research, Inc. | Method and system for testing websites |
US8726173B2 (en) * | 2004-10-26 | 2014-05-13 | International Business Machines Corporation | Enabling browser based applications through customized temporary browser profiles |
JP4148527B2 (ja) * | 2006-06-05 | 2008-09-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 機能テスト・スクリプト生成装置 |
US8392890B2 (en) * | 2007-10-15 | 2013-03-05 | Software Research, Inc. | Method and system for testing websites |
US8875102B1 (en) | 2009-03-12 | 2014-10-28 | Google Inc. | Multiple browser architecture and method |
US8745641B1 (en) * | 2011-07-14 | 2014-06-03 | Google Inc. | Automatic verification and anomaly detection in a representational state transfer (REST) application programming interface |
US9053238B2 (en) * | 2013-01-25 | 2015-06-09 | International Business Machines Corporation | Tool-independent automated testing of software |
US9021442B2 (en) * | 2013-02-13 | 2015-04-28 | Sap Se | Dynamic scenario testing of web application |
US9021438B2 (en) * | 2013-06-20 | 2015-04-28 | Sap Portals Israel Ltd | Automatic framework for parallel testing on multiple testing environments |
US9098636B2 (en) * | 2013-12-18 | 2015-08-04 | Software Ag | White-box testing systems and/or methods in web applications |
-
2014
- 2014-11-20 US US14/549,179 patent/US9753843B2/en active Active
-
2015
- 2015-10-20 EP EP15190521.3A patent/EP3026565B1/en active Active
- 2015-11-19 CN CN201510799846.0A patent/CN105630669B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6002871A (en) * | 1997-10-27 | 1999-12-14 | Unisys Corporation | Multi-user application program testing tool |
US20050066018A1 (en) * | 2003-08-29 | 2005-03-24 | Whittle Derrick Wang | Event notification |
CN101089826A (zh) * | 2006-06-12 | 2007-12-19 | 国际商业机器公司 | 创建容错和自适应图形用户接口测试自动化的方法和系统 |
CN101135989A (zh) * | 2006-08-31 | 2008-03-05 | 中国银联股份有限公司 | 一种Web应用系统的自动化测试的方法和装置 |
US20080092119A1 (en) * | 2006-10-17 | 2008-04-17 | Artoftest, Inc. | System, method, and computer readable medium for universal software testing |
US20090037881A1 (en) * | 2007-07-31 | 2009-02-05 | Caterpillar Inc. | Systems and methods for testing the functionality of a web-based application |
CN102511037A (zh) * | 2010-08-10 | 2012-06-20 | 国际商业机器公司 | 用于自动测试web应用的方法和系统 |
CN103678105A (zh) * | 2012-09-17 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种页面代码的测试方法和装置 |
US20140317600A1 (en) * | 2013-03-15 | 2014-10-23 | Digital River, Inc. | Functional software testing framework for determinate level testing |
Non-Patent Citations (2)
Title |
---|
路晓丽: ""Web应用软件的测试技术研究"", 《中国优秀博硕士学位论文全文数据库(博士) 信息科技辑》 * |
陈磊 等: ""基于Selenium WebDriver的Web应用自动化测试"", 《HTTPS://WWW.IBM.COM/DEVELOPERWORKS/CN/WEB/1306_CHENLEI_WEBDRIVER/INDEX.HTML》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411633A (zh) * | 2016-08-23 | 2017-02-15 | 国家电网公司 | 一种基于openstack的Web应用兼容性测试方法及其系统 |
CN108347358A (zh) * | 2017-01-23 | 2018-07-31 | 埃森哲环球解决方案有限公司 | 云连接的自动化测试 |
CN108347358B (zh) * | 2017-01-23 | 2022-12-06 | 埃森哲环球解决方案有限公司 | 云连接的自动化测试的方法和系统 |
CN110430976A (zh) * | 2017-01-27 | 2019-11-08 | 隆萨有限公司 | 动态控制自动化系统 |
CN110430976B (zh) * | 2017-01-27 | 2024-02-06 | 隆萨有限公司 | 动态控制自动化系统 |
CN109669876A (zh) * | 2018-12-30 | 2019-04-23 | 艾普阳科技(深圳)有限公司 | 一种javascript代码的调试控制方法及系统 |
CN109669876B (zh) * | 2018-12-30 | 2022-03-08 | 艾普阳科技(深圳)有限公司 | 一种javascript代码的调试控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3026565B1 (en) | 2018-11-28 |
US9753843B2 (en) | 2017-09-05 |
CN105630669B (zh) | 2020-12-25 |
EP3026565A1 (en) | 2016-06-01 |
US20160147645A1 (en) | 2016-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630669A (zh) | 基于web的应用的自动化测试 | |
CN108347358B (zh) | 云连接的自动化测试的方法和系统 | |
US11188310B2 (en) | Automatically generating an interface description in an interface description language | |
US10628132B2 (en) | Inversion of control framework for multiple behaviors of a process | |
US9164870B2 (en) | Integrated fuzzing | |
US8104020B2 (en) | Method and system to automate software testing using sniffer side and browser side recording and a toolbar interface | |
US20130338995A1 (en) | Practical natural-language human-machine interfaces | |
CN104199767B (zh) | 测试方法和装置 | |
US11294799B2 (en) | Plugin for multi-module code coverage in web applications | |
US11714625B2 (en) | Generating applications for versatile platform deployment | |
Fursin | Collective knowledge: organizing research projects as a database of reusable components and portable workflows with common interfaces | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
US11640307B2 (en) | Process initiation | |
JP7280388B2 (ja) | カスタマイズされた人工知能生産ラインを実行する装置及び方法、機器及び媒体 | |
Prescott et al. | EMRALD, dynamic PRA for the traditional modeler | |
US20150169433A1 (en) | Automated Generation of Semantically Correct Test Data for Application Development | |
Amatya | Cross-platform mobile development: An alternative to native mobile development | |
US10324692B2 (en) | Integration for next-generation applications | |
US11294644B2 (en) | Inversion of control framework for multiple behaviors on top of a process | |
US9274760B2 (en) | Adaptive developer experience based on project types and process templates | |
Liu | Decentralized application-a news forum based on react and solid | |
Sandhi | Quick Start to become QA Engineer | |
Coelho et al. | Quickframe-a fast development tool for mobile applications | |
CN118012427A (zh) | 组件编辑方法、装置、电子设备及存储介质 | |
CN117667740A (zh) | 自动化测试方法、设备、存储介质及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |