带有机器人框架的.NET自动化测试

Clayton Neal在软件测试和质量保证方面有超过13年的经验,其中有八年的Windows, web,和移动应用程序的测试自动化经验。他在测试领域的所有等级都工作过。最近他在Bloomberg and Misys担任QA经理。同时他还是Sogeti的自动化测试顾问。Clayton对自动化测试超迷恋,还见识了如何亲自成功实施测试自动化。

?

  测试自动化的好处我们都很清楚,更快地反馈问题,减少手工测试,持续集成就是其中随口可举的。测试团队成员越多,公司使用自动化越多,就越好。为此,我们必须脱离实施测试自动化的技术方面,而去考虑编写和运行自动化测试的非技术员工层面。无论开发团队是否在做敏捷验收测试驱动开发(ATDD),敏捷行为驱动开发(BDD)或使用传统的瀑布方法,团队可用来进行自动化的成员越多,自动化测试覆盖范围就越广。
   关键字驱动测试是一种由自动化工程师开发被测应用程序内可重复使用行为的方法。然后非技术用户就可以用任何输入参数将所得的可重复使用的关键字行为库进行排序,确定测试用例。比如,一个关键字可以是点击按钮(在一个按钮控件上点击)或输入文本(在一个文本框控件中输入文本),然后这些关键字就可以被用来填写一个登录表格并点击 OK按钮。该方法的好处是:自动化工程师集中干他们擅长的,即开发关键字的测试自动化的脚本或编程;非技术测试员和企业用户使用这些关键字并基于他们的领域和产品知识来编写测试用例,最后使得自动化更加有效。
   ?机器人框架是一个一般的基于关键字的测试自动化框架,它不依赖于任何一个特定的自动化工具(如:QTP, Ranorex, TestComplete, Selenium等),却让自动化工程师插入用这类自动化工具的关键字。机器人已经安装了许多关键字并拥有一个非常成熟的功能集,包括:关键字的条件执行 
   ? 测试用例和测试集的[setup]和[teardown] 
   ? 数据驱动关键字文件,目录及流程管理的FOR循环 
   ? HTML测试报告 
   ?詹金斯CI集成将变量变为一个关键字并从测试用例关键字的关键字标注返回 
   ?最后列出的功能即能够在现有关键字上创建关键字,确保如图1所示的“关键字金字塔”的增长。

  金字塔最底层是由自动化工程师开发的技术关键字构成:最顶端是应用程序内进行单个功能行为的功能关键字:最后,我们将基于功能关键字的业务流程关键字总结为在应用程序内构建业务流程。这种分层的一个例子如表1所示。

表1. 关键字分层

  这里,技术关键字是基于运行带有展示控件的自动化行为;功能关键字在应用程序中运行单个功能步骤;更高层的业务流程测试应用程序内端到端的流程。
   即用机器人框架可以从Python和Java库中加载新的关键字;为了使用在.NET中开发的关键字,就要利用远程服务界面。该界面是XMLRPC界面,机器人框架在上面给一个远程服务发送请求,执行一个关键字。当然这种远程服务可以用任何一种支持XMLRPC的语言来开发。尤其是,一个远程服务可以用.NET开发让机器人框架执行关键字装配中的基于.NET的关键字。这个方法如图2所示。

图2. 远程服务结构图

  N机器人远程(见http://code.google.com/p/nrobotremote/)是一个可以建立.NET关键字库并通过XMLRPC协议将之公开给机器人框架的.NET机器人框架远程服务器。结合了N机器人远程的机器人框架可以让最初的自动化工作用来计划哪些测试需要被自动化以及这些测试需要开发什么关键字,而不是在自动化测试计划可以开始前设计编写一个自动化框架。为N机器人远程开发.NET关键字仅仅就是开发一个公开方法的类。每个方法都被视作一个关键字——例如:

  该关键字类公开了两个关键字:ClickButton和EnterText。通过在N机器人远程中创建关键字类并把机器人框架指向XMLRPC地址,这些都可以用选择的自动化测试工具实现且可以通过机器人框架来调用。如图3所示。

图3.使用N机器人远程的机器人框架测试用例

  在上面这个例子里,设置一列告诉机器人框架,http://localhost:8271上有一个远程关键字服务(注意:除了本地主机,也可能是在另一机器上),且来自远程服务器的关键字将有前缀N机器人远程(任何前缀都可以)。测试用例一列则定义了一个叫做管理员登录的测试用例,调用关键字EnterText去输入用户名和密码,关键字ClickButton去点击OK。这样一个测试有可能是在开发早期一个非技术测试员或企业用户所写的。关键字库本身可以被视作被测应用程序的域模型之上的薄薄一层。比如,如果使用selenium页面对象,那么关键字层就可以如图4所示,按顺序调用页面对象和方法。

图4. 关键字和域层

  这种抽象概念在被测应用程序变化时提供了灵活性,经常,当应用程序变化时,只有域模型和关键字实施随之改变。测试用例实施并不需一直不变,因为它建在更高层。使用机器人框架和.NET关键字也可以使不同的自动化工具在测试用例水平彼此整合,让自动化工程师可以灵活地为所需关键字行为选择最佳自动化工具。例如,如果在一家更大的公司,几支自动化团队已经被选去使用针对不同产品模块的不同自动化工具,每队就可以用他们各自的开发语言为其模块开发一个域模型,如机器人框架可以加载Python,Java和(通过N机器人远程).NET关键字。测试用例编写者也同样可以在他们的测试用例里使用来自所有自动化团队的关键字。

  总结
   通过允许非技术用户在开发各个阶段编写测试用例,将自动化行为从抽象变为可以传给非技术测试员和业务用户以减少自动化工程师的瓶颈的可复用关键字。机器人框架,作为一个成熟的一般性的关键字框架,允许自动化项目一开始集中研究自动化测试和所需关键字,而不是设计并实施一个测试框架。使用机器人框架和N机器人远程将关键字测试自动化扩大到.NET,允许关键字利用.NET框架和.NET中自动化工具的优势,并允许把来自Python和Java的关键字与相同的测试用例相结合。

版权声明:本文出自 SPASVO泽众软件测试网:http://www.spasvo.com/news/html/2014101194841.html

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。