具体实施方式
应用的生命周期可通过在应用开发完成之前启动实体模型测试脚本的创建而缩短。实体模型测试脚本和应用的并发创建可减少关联于应用生命周期的时间。相比于应用的开发和测试按序执行,缩短关联于应用的生命周期的时间可使应用以更短的时间量被开发和测试。
应用的生命周期可定义与应用的创建和部署关联的多个阶段。例如,除其他阶段之外,生命周期可包括设计阶段、开发阶段、测试阶段和/或部署阶段。如本文所使用的,设计阶段可包括应用设计的概念和创建。如本文所使用的,应用设计的概念和创建可包括关联于应用的逻辑概念和图形用户界面(GUI)的设计概念。概念化逻辑和概念化GUI在本文分别称为功能规范和用户界面(UI)规范。功能规范和UI规范可包括在建议的应用中。
关联于应用的逻辑的创建可定义应用做什么。例如,计算器应用的逻辑可执行关联于数学运算的多个操作。计算器应用的逻辑可包括加逻辑、减逻辑、乘逻辑和/或除逻辑,以及其他类型的逻辑。在多种示例中,登录应用的逻辑可具有与验证接收自用户的信息对应于具有多个权限和/或特权的用户的信息相关联的逻辑。
GUI设计的创建可包括标识与GUI关联的多个用户控制。例如,当用户控制显示于GUI时和/或当GUI引用用户控制时,用户控制可关联于GUI。此外,GUI设计的创建还可包括定义与多个用户控制关联的多个属性。例如,按钮用户控制可具有多个属性,其确定按钮是否被显示,按钮是否具有焦点,文本是否关联于按钮和/或多个事件是否关联于按钮,以及其他属性。GUI设计的创建还可包括定义与GUI用户控制关联的多个活动。例如,与按钮用户控制关联的多个活动可包括执行例如与计算器应用关联的加、减、乘的操作。
在先前多个方法中,应用的生命周期的测试阶段直到开发阶段已经终结才开始。测试阶段和开发阶段按序执行。在本公开的多个示例中,测试阶段和开发阶段可并发执行。测试阶段和开发阶段的并发性能可由用于测试的实体模型GUI产生,其使实体模型测试脚本在应用被开发时被创建。
在本公开中,参考形成其一部分的附图,并且其中通过说明示出本公开的多个示例如何被实现。这些示例以足够的细节描述,以使本领域普通技术人员能够实现本公开的示例,并且应当理解,其他示例可被使用,并且可做出过程的、电气的和/或结构上的改变,而不偏离本公开的范围。
本文的附图依照编号惯例,其中第一数字对应于附图号码并且剩余数字标识附图中的元素或组件。本文多个附图中示出的元素可被增加、替换和/或删除,以提供本公开的多个附加示例。此外,图中提供的元素的比例和相对尺度意图说明本公开的示例,并且不应理解为限制意义。
图1说明根据本公开的用于测试脚本创建的方法的示例的流程图。在102,将功能规范和UI规范与建议的应用相关联。
建议应用可以是应用外观如何以及应用将如何工作的计划。应用的外观可由UI规范定义。UI规范可定义多个建议用户控制。功能规范可定义建议应用的核心功能。建议应用的核心功能可以是从UI规范接收输入的功能规范和发送输出至UI规范的功能规范。
如本文所使用的,建议应用可独立于特定编程语言。建议应用定义UI规范、建议用户控制和/或功能规范,总体上因为建议应用不以特定编程语言标识。例如,关于用户控制的一般细节可定义用户控制将为按钮用户控制并且按钮用户控制的属性之一为具有值“登录”的串。然而,建议应用可不在UI规范中定义按钮用户控制的位置和/或可关联于按钮用户控制的多个其他属性。
在104,包括基于UI规范的实体模型GUI的用于测试的实体模型GUI被创建。用于测试的实体模型GUI可在不将功能规范关联于实体模型GUI的情况下被开发。例如,实体模型GUI可从用户接收输入并且不将输入馈送至相关逻辑单元。实体模型GUI可为反映应用GUI的模板。实体模型GUI可包括多个抽象测试用户控制。关联于实体模型GUI的抽象测试用户控制可不同于关联于GUI的用户控制。图3示出了用于测试的实体模型GUI的示例。
用户控制可关联于面向对象的语言中的特定类或属性集合。用户控制可为按钮用户控制、径向按钮用户控制和/或图像用户控制,以及其他类型的用户控制。例如,按钮用户控制可为具有按钮类型的用户控制。该类型可关联于定义与用户控制关联的属性的特定类和/或方法。例如,按钮用户控制可具有标签属性和/或事件属性,以及其他属性。标签属性描述显示于按钮用户控制上的文本。事件属性描述当用户选择(例如,用户点击)按键用户控制时启动的事件。相反,文本域用户控制可具有文本属性。
关联于用户控制和/或类型的方法还可定义由编程语言指定的属性和/或用户控制的命名惯例。例如,第一编程语言的按钮用户控制可遵循第一命名惯例。例如,第一命名惯例可为“按钮(串标签)”,其中“按钮”为用户控制的命名惯例,而“串标签”为标签属性以及其他属性的命名惯例。第二编程语言的按钮用户控制可遵循第二命名惯例。例如,第二命名惯例可为“<control type=’按钮’>点击我</control>”,其中“<control type=’按钮’></control>”为用户控制的命名惯例,而“点击我”为显示于用户控制上的文本。
相反,抽象测试用户控制可为特定类型用户控制的表示,例如按钮、标签、选择框以及其他类型,其中抽象测试用户控制包含全局属性。在多个示例中,抽象测试用户控制可划分为不同的抽象测试用户控制,例如按钮抽象测试用户控制和标签抽象测试用户控制,以及其他类型的抽象测试用户控制。例如,抽象测试用户控制可具有按钮类型、标签类型和/或文本域类型。然而,具有按钮类型的抽象测试用户控制可具有有限属性集合。例如,属于抽象测试用户控制的按钮用户控制可仅具有一个属性,标签属性,而没有其他属性。关联于抽象测试用户控制的有限属性集合可定义与多个不同的编程语言中所有特定类型的用户控制相关的一般属性。例如,关联于具有按钮类型的抽象测试用户控制的有限集合属性可定义与多个不同的编程语言中按钮类型的所有用户控制相关的一般属性。
在多个示例中,抽象测试用户控制可关联于单个类型,并且所有抽象测试用户控制可具有有限属性集合。例如,所有抽象用户控制例如可具有文本属性和/或显示属性或sting属性和/或启用(isEnabled)属性、标签属性和/或事件属性。标签属性可为关联于抽象用户控制类型的文本,而启用属性例如可确定按钮是否可被点击。事件属性可定义当用户与相关抽象测试用户控制交互时采取的动作。其他有限属性集合可关联于抽象测试用户控制。
在106,基于包括基于功能规范的逻辑和基于UI规范的GUI的建议应用的应用可被实现。在多个示例中,可被开发的用于测试的实体模型GUI在时间上小于可被开发的应用,因为用于测试的实体模型GUI不包括功能规范的表示并且因为用于测试的实体模型GUI包括UI规范的有限表示。例如,对用户进行认证的建议登录应用可具有与确定用户是否具有多个特权关联的功能规范。用于测试的实体模型GUI可包括具有与从用户接收信息关联的多个抽象测试用户控制的实体模型GUI,而不包括确定提供自用户的信息是否与具有多个特权的用户所关联的信息相符的功能规范。此外,实体模型GUI可基于UI规范,但不包括与UI规范关联的建议用户控制的全部的表示,然而应用可能包括采用用户控制的形式的建议用户控制的全部的表示。
在108,基于实体模型GUI而非基于逻辑、功能规范和GUI的实体模型测试脚本可被创建。在108实体模型测试脚本的开发可开始,而在106应用正被开发。在多个示例中,实体模型测试脚本的开发可在应用的开发终结之前终结。在多种示例中,实体模型测试脚本的开发可在应用的开发终结之后终结。
实体模型测试脚本和测试脚本可人工创建和/或交互式创建。例如,用户可通过开发可用于与实体模型GUI和/或与应用关联的GUI交互的机器可读指令(MRI)来创建实体模型测试脚本和测试脚本。实体模型测试脚本还可通过记录用户与用于测试的实体模型GUI的交互来创建。测试脚本可通过记录用户与应用的交互来创建。与实体模型GUI交互可提供可用于对应用进行测试的结构。例如,与实体模型GUI交互可与包括一结构的实体模型测试脚本相关联,该结构具有将文本输入第一抽象测试用户控制的第一步骤、将文本输入第二抽象测试用户控制的第二步骤和/或选择第三抽象测试用户控制的第三步骤。
测试脚本和/或实体模型测试脚本可定义与抽象体系结构和/或应用的多个交互。测试脚本和/或实体模型测试脚本还可定义与抽象体系结构和/或应用关联的多个结果。例如,如果被应用于包括期望结果的实体模型GUI,则关联于实体模型测试脚本的结构可具有期望结果,和/或如果被应用于与应用关联的GUI,则测试脚本可具有特定期望结果。
在多个示例中,在测试脚本可对应用执行时,实体模型测试脚本可对用于测试的实体模型GUI执行。测试脚本可通过将实体模型测试脚本中的与用于测试的实体模型GUI相关联的多个抽象测试用户控制转换为与特定编程语言关联的用户控制而对应用执行。
该转换可包括将抽象测试用户控制与对应的用户控制相关联。该关联可基于关联于抽象测试用户控制的属性以及关联于用户控制的属性。例如,具有有“名称”值的文本属性的抽象测试用户控制可关联于具有有“名称”值的标签属性的用户控制,因为在文本属性和标签属性之间进行相关。
多个属性(例如文本属性)的关联可利用用户的输入来增强和/或可被执行而不需要用户的输入。例如,用户可指示哪些抽象测试用户控制与哪些用户控制相关联,或比较可在没有用户输入的情况下执行。在多个示例中,预定义映射,例如属性映射,可将抽象测试用户控制的多个属性映射至由多个支持编程语言定义的用户控制的多个属性。该关联可查找属性映射,并将抽象用户控制的属性与用户控制的对应属性相关联。
转换可包括利用用户控制替换抽象测试用户控制,以使抽象测试用户控制被删除,并且用户控制用在合适的地方。转换还可包括重定义抽象测试用户控制为用户控制,以使抽象测试用户控制不被删除,而是被修改以反映用户控制。
图2为说明根据本公开的测试脚本创建的流程图。图1包括建议应用270的开发、功能体系结构274的开发、用于测试的实体模型GUI 272的开发、实体模型测试脚本276的开发以及测试脚本278的开发。
在图2中,与应用270的开发、用于测试的实体模型GUI 272的开发、应用274的开发、实体模型测试脚本276的开发以及测试脚本278的开发相关联的时间由矩形的长度表示。例如,用于测试的实体模型GUI 272的开发可花费比与应用274的开发相关联的时间更少的时间。
用于测试的实体模型GUI 272的开发和实体模型测试脚本276的开发可与应用274的开发并发执行。开发用于测试的实体模型GUI 272以及实体模型测试脚本276与应用274的开发相并行,可降低与对应用进行多个测试相关联的时间量。实体模型测试脚本可基于用于测试的实体模型GUI而创建。测试脚本278的开发可开始于实体模型测试脚本276的开发和应用274的开发终结之后。
图3为说明根据本公开的用于测试的实体模型GUI的示例的图示。用于测试的实体模型GUI可包括实体模型GUI 300。实体模型GUI 300包括多个抽象测试用户控制312-1、312-2、312-3、312-4和312-5,例如总称为抽象测试用户控制312。
实体模型GUI 300可基于建议应用和/或UI规范。抽象测试用户控制312可基于多个建议用户控制。在图3的示例中,建议应用可为登录应用。
建议用户控制可包括多个文本域、标签、按钮和/或图形。抽象测试用户控制312包括可表示文本域的抽象测试用户控制312-1和312-3。抽象测试用户控制312-1可具有有“名称”值的文本属性以及有例如指示文本属性不显示于抽象测试用户控制312-1上的“假”值的显示属性。抽象测试用户控制312-3可具有有“密码”值的文本属性以及有“假”值的显示属性。
抽象测试用户控制312-2和312-4可表示标签。抽象测试用户控制312-2可具有有“名称”值的文本属性以及有例如指示文本属性显示于抽象测试用户控制312-2上的“真”值的显示属性。抽象测试用户控制312-4可具有有“密码”值的文本属性以及有“真”值的显示属性。抽象测试用户控制312-5可表示按钮。抽象测试用户控制312-5可具有有“登录”值的文本属性以及有“真”值的显示属性。
实体模型GUI 300可接收多个用户交互。例如,实体模型GUI 300可允许用户选择(例如点击)抽象测试用户控制312-5。然而,实体模型GUI 300可能是有限的,因为选择抽象测试用户控制312-5可不具有关联的事件,例如没有功能规范的表示。
实体模型GUI 300可包括建议用户控制的一些而非建议用户控制的全部中采用抽象测试用户控制312的形式的表示。例如,建议应用可定义取消按钮,以及未表示于实体模型GUI 300中的图形。此外,建议应用可定义登录按钮,其包括图像而非如实体模型GUI 300的抽象测试用户控制312-5所描述的“登录”值。
实体模型测试脚本可基于实体模型GUI创建。例如,用户可与实体模型GUI交互。用户的交互可被记录并关联于实体模型测试脚本。用户例如可执行对抽象测试用户控制312-1的第一选择(例如点击)、对抽象测试用户控制312-3的第二选择以及对抽象测试用户控制312-5的第三选择。第一选择可在第二选择之前执行,第二选择在第三选择之前执行。第一选择、第二选择和第三选择可为与实体模型测试脚本和/或抽象测试用户控制312关联的结构,例如事件序列。
在多个示例中,实体模型测试脚本可定义由用户启动的多个事件并可检查来自用户定义事件的期望结果。例如,如果实体模型GUI 300包含动作的结果,则该结构可定义由用户启动的事件并检查那些事件的期望结果。在多个示例中,测试脚本可定义由用户启动的多个事件和多个期望结果。
图4为说明根据本公开的应用的示例的图示。应用可基于建议应用。应用可包括逻辑和GUI 401。GUI 401不同于图3的实体模型GUI 300,因为描述于建议应用中的所有建议用户控制的表示以用户控制的形式包括在GUI 401中。用户控制包括窗口用户控制420、图像用户控制424、文本域用户控制426、密码域用户控制428、标签用户控制430-1和430-2以及按钮用户控制432-1和432-2。
用户控制中的每一个可关联于编程语言特有的类和/或方法。关联于用户控制的类和/或方法可定义特定属性集合。标签用户控制430-1和430-2可具有定义与标签关联的文本中的多个字符的属性。标签用户控制430-1可具有有“用户名”的文本属性,而标签用户控制430-2可具有有“密码”值的文本属性。文本域用户控制426可具有最初可为空(例如“”值)的文本属性。密码域用户控制428可具有最初也可为空的文本属性。按钮用户控制432-1可具有图像属性,其具有有所示箭头的图像。按钮用户控制432-2可具有图像属性,其具有有所示“x”的图像。图像用户控制424可具有有用户图标的图像属性。窗口用户控制420可为矩形,其具有长度属性和宽度属性。每个用户控制可具有比所列的那些更多的属性。例如,每个用户控制可具有位置属性,其定义用户控制在GUI 401中的位置。
基于图3中用于测试的实体模型GUI的实体模型测试脚本可关联于多个抽象测试用户控制,其中抽象测试用户控制被转换为用户控制以创建测试脚本。例如,图3中的抽象测试用户控制312-1可转换为文本域用户控制426,图3中的抽象测试用户控制312-3可转换为密码域用户控制428,图3中的抽象测试用户控制312-2可转换为标签用户控制430-1,图3中的抽象测试用户控制312-4可转换为标签用户控制430-2,而图3中的抽象测试用户控制312-5可转换为按钮用户控制432-1。图3中的每个抽象测试用户控制312可基于与图3中的抽象测试用户控制312和用户控制关联的属性而转换为用户控制。例如,具有有“名称”值标签属性的抽象测试用户控制312-2可关联于具有有“用户名”值的文本属性的标签用户控制430-1,因为标签属性和文本属性可基于其值进行关联。此外,在抽象测试用户控制无法基于其属性关联于用户控制的情况下,用户可提供输入以将特定抽象测试用户控制关联于用户控制。
在抽象测试用户控制被转换之前和/或之后,实体模型测试脚本可进一步被增强。例如,关联于实体模型测试脚本的结构可被修改为包括未以抽象测试用户控制的形式表示于实体模型测试脚本中的用户控制以创建测试脚本。该结构可通过包括按钮432-2的选择来修改。该结构还可通过对结构增加细节来修改,诸如输入文本域426的文本和输入密码域428的文本。实体模型测试脚本还可通过包括关联于该结构的多个期望结果来修改。然后测试脚本可用于对应用进行测试。
图5为说明根据本公开的计算***的示例的图示。计算***556可利用软件、硬件、固件和/或逻辑来执行多个功能。
计算***556可为硬件和被配置为执行多个功能(例如动作)的程序指令的组合。硬件例如可包括一个或多个处理资源554和其他存储器资源544,等。程序指令例如机器可读指令(MRI),可包括存储于存储器资源544上的用于实现特定功能(例如动作,诸如测试脚本创建)的指令。
处理资源554可与存储器资源544通信,存储器资源544存储MRI集,其可由如本文描述的一个或多个处理资源554执行。MRI还可存储于通过服务器管理的远程存储器并表示可被下载、安装和执行的安装包。计算设备556例如服务器可包括存储器资源544,而处理资源554可耦合于在云计算环境中位于远程位置的存储器资源544。
处理资源554可执行可存储于内部或外部非暂存存储器544中的MRI。处理资源554可执行MRI以执行多种功能,例如动作,包括本文描述的功能以及其他功能。
如图5所示,MRI可划分为多个模块,例如建议应用模块546、用于测试的实体模型GUI模块548、应用模块550和测试脚本模块552,这些模块在由处理资源554执行时可执行多个功能。如本文所使用的模块包括被包括以执行特定任务或动作的指令集。多个模块546、548、550和552可为其他模块的子模块。例如,建议应用模块546和用于测试的实体模型GUI模块548可为子模块和/或包含于单个模块内。此外,多个模块546、548、550和552可包含彼此分立且不同的独立模块。
在图5的示例中,建议应用模块546可包括由处理资源554执行以定义建议应用的MRI。建议应用的定义可包括UI规范以及关联于GUI的建议用户控制的定义。定义建议用户控制可包括定义关联于用户控制的多个建议属性和/或关联于建议用户控制的事件。定义建议应用还可包括定义功能规范,其定义应用的多个核心功能。
用于测试的实体模型GUI 548可包括由处理资源554执行以创建实体模型GUI的MRI。用于测试的抽象GUI可包括实体模型GUI和关联于实体模型GUI的抽象测试用户控制。与应用中关联于GUI的用户控制相比较,抽象测试用户控制具有有限数量的属性。抽象测试用户控制与用户控制的不同之处,在于用户控制针对特定编程语言而定义,而抽象测试用户控制可转换为由任意数目的编程语言定义的用户控制。用于测试的实体模型GUI 548可与应用的创建并发创建。
应用模块550可包括由处理资源554执行以创建应用的MRI。应用可包括基于功能规范的逻辑以及基于UI规范的GUI。应用可针对特定编程语言而创建。编程语言可指定与GUI中的用户控制关联的多个属性。
测试脚本模块552可包括由处理资源554执行以创建测试脚本的MRI。实体模型测试脚本可与应用的创建并发创建。实体模型测试脚本可基于用于测试的实体模型GUI。实体模型测试脚本包括结构,例如由用户在与多个抽象测试用户控制关联的实体模型GUI中的抽象测试用户控制上启动的事件。与结构和实体模型测试脚本关联的抽象测试用户控制可转换为用户控制以创建测试脚本。该转换可基于与抽象测试用户控制和用户控制关联的属性。属性可包括可发生于抽象测试用户控制和/或用户控制上的事件、抽象测试用户控制和/或用户控制的特征和/或抽象测试用户控制和/或用户控制的特性,以及其他类型的属性。在转换之后,测试脚本可用于对应用进行测试。
如本文所使用的存储器资源544可包括易失性和/或非易失性存储器。易失性存储器可包括依赖于电力存储信息的存储器,诸如多种类型的动态随机存取存储器(DRAM)以及其他。非易失性存储器可包括不依赖于电力存储信息的存储器。非易失性存储器的示例可包括固态介质,诸如闪存、电可擦除可编程只读存储器(EEPROM)、相变随机存取存储器(PCRAM)、诸如硬盘的磁存储器、磁带驱动、软盘和/或磁带存储器、光盘、数字多功能盘(DVD)、蓝光盘(BD)、压缩盘(CD)和/或固态驱动(SSD)等,以及其他类型的计算机可读介质。
存储器资源544可为整体,或以有线和/或无线方式可通信地联接至计算设备。例如,存储器资源544可为内部存储器、便携式存储器和便携式磁盘,或与使MRI能够在网络诸如互联网上传输和/或执行的另一计算资源关联的存储器。
存储器资源544可经由通信路径560与处理资源554相通信。通信路径560可位于与处理资源554关联的机器(例如计算机)的本地或远程位置。本地通信路径560的示例可包括机器例如计算机内部的电子总线,其中存储器资源544是经由电子总线与处理资源554相通信的易失性、非易失性、固定和/或可移除存储介质之一。这种电子总线的示例可包括工业标准体系结构(ISA)、***组件互联(PCI)、高级技术连接(ATA)、小型计算机***接口(SCSI)、通用串行总线(USB)、以及其它类型的电子总线及其变型。
通信路径560可使存储器资源544位于处理资源(例如处理资源554)的远程位置,诸如在存储器资源544和处理资源(例如处理资源554)之间的网络连接。即,通信路径560可为网络连接。这种网络连接的示例可包括局域网(LAN)、广域网(WAN)、个人局域网(PAN)和互联网,以及其他。在示例中,存储器资源544可关联于第一计算设备,而处理资源554可关联于第二计算设备,例如服务器。例如,处理资源554可与存储器资源544相通信,其中存储器资源544包括指令集,并且其中处理资源554被设计为执行该指令集。
如本文所使用的,“一个”或“多个”事物可指代一个或多个这种事物。例如,“多个微件”可指代一个或多个微件。
上述说明书、示例和数据提供了本公开的方法和应用以及***和方法的使用的描述。由于多个示例可被形成而不偏离本公开***和方法的精神和范围,该说明书仅仅提出了多种可能实施例配置和实现的一部分。