zoukankan      html  css  js  c++  java
  • RobotFramework学习-第一篇

    第一部分:适合做自动化的项目

    通常,以查询报表为主的系统,就是以插入,查询,删除,编辑为主的xx管理系统,这种系统不适合做web自动化。一般定位起来也比较麻烦,主要以嵌入式表格为主,层次较深,没有特定属性,很难准确定位,要写又臭又长的xpath。最主要的是不太好断言结果,因为你的数据是查询出来的,今天查询出来“张三”在第一页,后面这个查询数据增加,“张三”跑后第五页了,再后来跑到第170页,你说怎么用固定的信息断言? 没有断言,你怎么知道查询的结果对不对?这种系统的核心就是数据,其后台实现就是各种增删改查询接口。功能可用就好,一般这种系统不讲究用户体验之类的,关键是数据得正确。尤其是针对金融领域相关的系统,那少算一个数、一个零、一个小数点,事可就大了。所以在我看来做web自动化的实际意义并不大,或者说这类系统做web自动化的并不是系统最重要的部分。但是,这类系统非常适合做接口自动化测试,why?因为接口测试关注的就是数据,我们可以通过改变传参,然后断言接口的返回,以及数据入库结果。最后只要数据正确了,功能就做成大半,剩下的无非是如何把这些数据展示在页面上。

    第二部分:自动化测试用例相关

    一、自动化测试用例选择
      自动化测试主要应用于基础功能的验证和回归,对于在项目迭代过程中不断修改的功能来说,手工测试的效率和成本是大大低于自动化测试的。因此,我们在进行自动化之前,要挑选基础功能来进行自动化。在这个过程中,我们可以从手工测试用例中进行挑选,也可以专门为自动化编写一套用例。
      在自动化初期,建议从手工测试用例中进行挑选。一方面手工测试用例的覆盖度最为全面,可以保证测试的全面性;另一方面,也会提高测试效率。我们挑选用例的原则是:清晰、简单、基础、改动小的功能。
      二、自动化测试用例编写
      挑选完合适的用例之后,就是通过代码编写自动化用例的过程。这个过程主要包括数据预置、用例编写和用例后置三个步骤。
      1、数据预置
      在进行用例编写之前,我们需要准备一些数据,保证用例能够真正的执行起来。比如,我们在测试一个网页登录功能,我们需要系统的URL参数、需要一个可以登录的用户名和密码;我们需要测试删除文件的功能,就需要提前上传一个文件,这个文件可以提前预置,也可以在执行删除操作之前,执行一个上传操作;通过哪种方式预置数据,需要根据项目的实际情况选择。我们将数据预置和用例编写分开是为了减少用例之间的耦合度,保证上一个用例执行的结果不会对下一条用例产生影响。此外,有利于用例的维护和修改。
      2、用例编写
      我们准备好测试数据后,就要开始自动化用例的编写,在编写过程中需要注意以下几个方面:
      熟悉业务。自动化测试是为了业务系统服务的,只有充分的了解业务,明确如何将手工测试用例通过自动化实现,才能保证用例质量。
      使用变量。通常,我们需要将变量统一管理,写入配置文件,这样方便统一修改。例如:我们需要测试一个业务系统,这个系统包含测试环境和生产环境,我们需要将自动化脚本灵活的适用于每个环境,这个时候,我们就需要将url等系统参数写入配置文件,方便修改和迁移。
      写明操作过程。在编写操作过程时,代码注释必不可少。每一步都是怎么操作的,需要验证什么功能。
      设置检查点。在编写测试用例的过程中,需要设置合理的检查点,添加断言,判断用例是否执行成功。在用例执行后,将预期结果和实际结果进行对比,输出测试结果,明确功能是否执行成功,是自动化测试的关键。不添加断言的用例执行,是没有任何意义的。
      3、用例后置
      用例后置时指用例执行完成之后的操作,与数据预置相对应,是为了自动化能够循环执行。比如:我们需要测试文件上传功能,在用例执行通过之后,需要将文件删除,便于下一次自动执行。
      此外,我们应该在用例后置之后进行一些合理的检查,比如上个步骤中,我们如果删除文件失败的话,依然会影响下一次的操作。因此,我们需要结合项目实际情况,对一些核心文件进行检查,保证自动化的顺利执行。
      三、用例编写规范
      在用例编写过程中,我们需要遵守一些规范来提高用例质量。主要包括:连续性、独立性、完整性、可重用性、可维护性和逻辑分块。
      1、连续性
      保证用例之间的连续性,保证用例可以批量执行。比如,我们在进行UI自动化时,要保证上一个操作之后进入下一个操作的执行界面。
      2、独立性
      用例之间要相互独立,保证上一个用例的执行结果不会对下一个用例的执行产生影响。这样,才能更清楚的定位到问题。此外,需要保证一个用例的执行不会修改到下一个用例的数据。
      3、完整性
      每一个用例都需要有数据准备、操作过程,断言和用例后置的全部过程,能够根据用例明确具体的测试内容。
      4、可重用性
      类似于开发的公共代码,我们要抽象出自动化测试的原子操作,提供给其他用例调用,这样可以减少开发成本
      5、可维护性
      用例名要清晰,做到见名知意;对每个步骤、每个变量添加明确的注释;对哪些是预置数据、哪些是检查项、预期结果都有明确的说明;用例步骤要简单明了
      6、逻辑分块
      根据一定的规则进行逻辑分块(例如可以根据不同功能划分),保证逻辑块的独立性,可以抽出单个功能用例进行验证
    第三部分:介绍

       简介

             Robot Framework是用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架。 它具有易于使用的表格测试数据语法,并使用关键字驱动的测试方法。 它的测试功能可以通过使用Python或Java实现的测试库进行扩展,用户可以使用与创建测试用例相同的语法,从现有的关键字创建新的更高级别的关键字。

    2.     特点

    • 使用简单

    当你真的要向项目中推广一个技术或工具的时候,其实这点非常重要。对于大多测试团队的测试人员来说,开发技术还是很薄弱的。RF使用非常简单,只要告诉你是这些关键字是做什么用的,你去“填表格”就好的。

    • 支持开发系统关键字

    RF可不是只能写一些死板的操作过程,定义变量,数组、字典,写if判断,for循环都不在话下,甚至调用python所提供的方法。

    • 可以像编程一样写测试用例

    开发系统关键字,或者自己写个自定义库也很简单,用工具,但又不会受制于人工具。

    • 非常丰富的库

    详情参考以下内置库和扩展库说明。

    3.     内置库

      •    Builtin:提供一组经常需要的通用关键字(默认自动引入)。

      •    Collections:提供一组用于处理Python列表和词典的关键字。

      •    DateTime:用于日期和时间转换的库。

      •    Dialogs:提供暂停测试执行和从用户获取输入的方法。

      •    OperatingSystem:用于执行各种与操作系统相关的任务。

      •    Process:用于在系统中运行进程的库。

      •    Remote:可以连接到Telnet服务器并在打开的连接上执行命令。

      •    String:用于生成,修改和验证字符串的库。

      •    Screenshot:提供关键字以捕获桌面的屏幕截图。

      •    Telnet:可以连接到Telnet服务器并在打开的连接上执行命令。

      •    XML:用于生成,修改和验证XML文件的库。

    4.     扩展库

      •    WEB自动化测试:Selenium2Library(Python)、Selenium2Library(Java) 等。

      •    HTTP自动化测试:HTTP library (livetest)、HTTP library (Requests) 等。

      •    移动自动化测试:Android libraryIOS libraryAppiumLibrary等 。

      •    数据库测试:Database LibraryMongoDB library 等。

      •    文件对比测试:Diff Library

      •    Windows-GUI测试:AutoItLibrary

    • 第四部分
    • 环境安装:Python2.7 + wxPython2.8 + RF3.0 + RIDE1.5
     
  • 相关阅读:
    How to use my view helpers in my ActionMailer views?
    大败笔,状态机
    把程序进行上线部署调试了,
    支付接口心得
    rails3 正则路由
    linux下配置Mysql远程访问,不受ip限制
    ActionController::InvalidAuthenticityToken解决办法
    支付宝接口错误
    DHTML 中的绝对定位
    部署备份
  • 原文地址:https://www.cnblogs.com/1792353277lay/p/12967182.html
Copyright © 2011-2022 走看看