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

?

  測试自己主动化的优点我们都非常清楚,更快地反馈问题,降低手工測试,持续集成就是当中随口可举的。測试团队成员越多,公司使用自己主动化越多,就越好。为此,我们必须脱离实施測试自己主动化的技术方面,而去考虑编写和执行自己主动化測试的非技术员工层面。不管开发团队是否在做敏捷验收測试驱动开发(ATDD),敏捷行为驱动开发(BDD)或使用传统的瀑布方法,团队可用来进行自己主动化的成员越多,自己主动化測试覆盖范围就越广。

   keyword驱动測试是一种由自己主动化project师开发被測应用程序内可反复使用行为的方法。然后非技术用户就能够用不论什么输入參数将所得的可反复使用的keyword行为库进行排序,确定測试用例。比方,一个keyword能够是点击button(在一个button控件上点击)或输入文本(在一个文本框控件中输入文本),然后这些keyword就能够被用来填写一个登录表格并点击 OKbutton。该方法的优点是:自己主动化project师集中干他们擅长的,即开发keyword的測试自己主动化的脚本或编程;非技术測试员和企业用户使用这些keyword并基于他们的领域和产品知识来编写測试用例,最后使得自己主动化更加有效。

   ?机器人框架是一个一般的基于keyword的測试自己主动化框架,它不依赖于不论什么一个特定的自己主动化工具(如:QTP, Ranorex, TestComplete, Selenium等),却让自己主动化project师插入用这类自己主动化工具的keyword。机器人已经安装了很多keyword并拥有一个很成熟的功能集,包含:keyword的条件运行 

   ? 測试用例和測试集的[setup]和[teardown] 

   ? 数据驱动keyword文件,文件夹及流程管理的FOR循环 

   ? HTML測试报告 

   ?詹金斯CI集成将变量变为一个keyword并从測试用例keyword的keyword标注返回 

   ?最后列出的功能就可以以在现有keyword上创建keyword,确保如图1所看到的的“keyword金字塔”的增长。

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

表1. keyword分层

  这里,技术keyword是基于执行带有展示控件的自己主动化行为;功能keyword在应用程序中执行单个功能步骤;更高层的业务流程測试应用程序内端到端的流程。

   即用机器人框架能够从Python和Java库中载入新的keyword;为了使用在.NET中开发的keyword,就要利用远程服务界面。该界面是XMLRPC界面,机器人框架在上面给一个远程服务发送请求,运行一个keyword。当然这样的远程服务能够用不论什么一种支持XMLRPC的语言来开发。尤其是,一个远程服务能够用.NET开发让机器人框架运行keyword装配中的基于.NET的keyword。这种方法如图2所看到的。

图2. 远程服务结构图

  N机器人远程(见http://code.google.com/p/nrobotremote/)是一个能够建立.NETkeyword库并通过XMLRPC协议将之公开给机器人框架的.NET机器人框架远程server。结合了N机器人远程的机器人框架能够让最初的自己主动化工作用来计划哪些測试须要被自己主动化以及这些測试须要开发什么keyword,而不是在自己主动化測试计划能够開始前设计编写一个自己主动化框架。为N机器人远程开发.NETkeyword只就是开发一个公开方法的类。每一个方法都被视作一个keyword——比如:

  该keyword类公开了两个keyword:ClickButton和EnterText。通过在N机器人远程中创建keyword类并把机器人框架指向XMLRPC地址,这些都能够用选择的自己主动化測试工具实现且能够通过机器人框架来调用。如图3所看到的。

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

  在上面这个样例里,设置一列告诉机器人框架,http://localhost:8271上有一个远程keyword服务(注意:除了本地主机,也可能是在还有一机器上),且来自远程server的keyword将有前缀N机器人远程(不论什么前缀都能够)。測试用例一列则定义了一个叫做管理员登录的測试用例,调用keywordEnterText去输入username和password,keywordClickButton去点击OK。这样一个測试有可能是在开发早期一个非技术測试员或企业用户所写的。keyword库本身能够被视作被測应用程序的域模型之上的薄薄一层。比方,假设使用selenium页面对象,那么keyword层就能够如图4所看到的,按顺序调用页面对象和方法。

图4. keyword和域层

  这样的抽象概念在被測应用程序变化时提供了灵活性,常常,当应用程序变化时,仅仅有域模型和keyword实施随之改变。測试用例实施并不需一直不变,由于它建在更高层。使用机器人框架和.NETkeyword也能够使不同的自己主动化工具在測试用例水平彼此整合,让自己主动化project师能够灵活地为所需keyword行为选择最佳自己主动化工具。比如,假设在一家更大的公司,几支自己主动化团队已经被选去使用针对不同产品模块的不同自己主动化工具,每队就能够用他们各自的开发语言为其模块开发一个域模型,如机器人框架能够载入Python,Java和(通过N机器人远程).NETkeyword。測试用例编写者也相同能够在他们的測试用例里使用来自全部自己主动化团队的keyword。

  总结

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

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

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

带有机器人框架的.NET自己主动化測试的更多相关文章

  1. MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...

  2. 基于QTP的自己主动化測试框架介绍

    继前面用了七章介绍了基于QTP的自己主动化測试框架,以下再用几个视频再补充一下.        视频一:基本框架特点介绍说明 .框架的特点从正反两面进行了分析以及主要思想      http://v. ...

  3. Robot Framework自己主动化測试框架之我见

    一些自己主动化測试现状: 盲目的去做自己主动化,终于以失败告终. 觉得是能提高效率的事情.却推广不下去: 事实上上述问题产生的原因是: 自己主动化測试案例稳定性不高,可维护性比較差: 自己主动化測试工 ...

  4. Windows环境搭建Web自己主动化測试框架Watir(基于Ruby)

    web自己主动化測试一直是一个比較迫切的问题 图1-1 须要安装的工具 http://railsinstaller.org/ 由于安装Ruby还须要用到其它的一些开发工具集.所以建议从站点http:/ ...

  5. Selenium2 Python 自己主动化測试实战学习笔记(五)

    7.1 自己主动化測试用例 无论是功能測试.性能測试和自己主动化測试时都须要编写測试用例,測试用例的好坏能准确的体现了測试人员的经验.能力以及对项目的深度理解. 7.1.1 手工測试用例与自己主动化測 ...

  6. Android自己主动化測试之Monkeyrunner用法及实例

    眼下android SDK里自带的现成的測试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但事实上是完全然全不同的两个工具,应用在不同的測试领域.总的来说,monke ...

  7. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  8. Android 自己主动化測试(3)<monkeyrunner> 依据ID查找对象&touch&type (python)

    我在之前的两篇文章中用java来实现过 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java). 可是本质上都是用mo ...

  9. Mock+Proxy在SDK项目的自己主动化測试实战

    项目背景 广告SDK项目是为应用程序APP开发者提供移动广告平台接入的API程序集合,其形态就是一个植入宿主APP的jar包.提供的功能主要有以下几点: - 为APP请求广告内容 - 用户行为打点 - ...

随机推荐

  1. fragment的切换

    1.视图 1)主视图 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  2. 解决 RichTextBox 文件格式不对问题

    RichTextBox文件格式不对: 原因:富文本框的LoadFile方法只支持RTF格式的文件或者标准的ASCII文本本档,,我们一般的文本文档是ANSI或者UTF-8的格式,所以,报这个错. 解决 ...

  3. 网页制作之html基础学习4-格式与布局

    1.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角弹窗 例: <head> <title>123</title> <sty ...

  4. Union - Find 、 Adjacency list 、 Topological sorting Template

    Find Function Optimization: After Path compression: int find(int x){ return root[x] == x ? x : (root ...

  5. pycURL的内存问题

    pycURL的内存问题 最近用pycURL写了一个工具,注册账号用的.写是写好了,但是发现内存占用超大.40个线程运行一天跑到了3.7G的内存. 于是着手调查这个问题. 调查方法就是用python的g ...

  6. 求 n! (大数问题)----------HDOJ1042

    以下只YY算法,c++实现,java大神绕道..... (1)位数的估计     显然对于大数(比如1000的阶乘)的阶乘我们找不到一个数据类型存放这个数,是在太大啦....     那么现在来估计一 ...

  7. java环境变量配置问题

    你要配置三个环境变量JAVA_HOMECLASSPATHPath你都配置了吗? 系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0) 系统 ...

  8. hdu - 3572 - Task

    题意:有N个作业,M台机器,每个作业1天只能同1台机器运行,每台机器1天只能运行1个作业,第i个作业需要pi天完成,且只能从Si到Ei中选Pi天,问能否完成所有作业(T <= 20, N< ...

  9. Cppcheck 1.54 C/C++静态代码分析工具

    Cppcheck是一个C/C++代码分析工具,只检测那些编译器通常无法检测到的bug类型.   官方上建议让编译器提供尽量多的警告提示:1.使用Visual C++的话,应使用警告等级4 2.使用GC ...

  10. 用lisp来让计算机学会写作

    大部分的代码.思路参考了<Ansi Common Lisp>P138~P141. 问题:给一篇英文文本,如何让计算机依据此文本而生成随机但可读的文本.如: |Venture| The Na ...