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
     
  • 相关阅读:
    linux 命令——19 find (转)
    linux 命令——18 locate (转)
    linux 命令——17 whereis(转)
    linux 命令——16 which(转)
    linux 命令——15 tail (转)
    linux 命令——14 head (转)
    Java for LeetCode 038 Count and Say
    Java for LeetCode 037 Sudoku Solver
    Java for LeetCode 036 Valid Sudoku
    Java for LeetCode 035 Search Insert Position
  • 原文地址:https://www.cnblogs.com/1792353277lay/p/12967182.html
Copyright © 2011-2022 走看看