一、          什么是自动化测试?

1.      定义

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,也可以说是软件测试的一种技术手段。

2.      常见工具

    • Appium: AppUI自动化测试,一个移动端自动化测试开源工具。
    • Selenium: WebUI自动化测试 ,一个用于Web应用程序测试的工具。
    • QTP : WebUI自动化测试,提供符合所有主要应用软件环境的功能测试和回归测试的自动化。
    • Robot: 多功能自动化测试,是一款python编写的功能自动化测试框架。
    • Loadrunner: 性能测试,一种预测系统行为和性能的负载测试工具。
    • Jmeter: 接口性能测试,用于测试静态或者动态资源的性能。
    • GT: App性能测试,一个直接运行在手机上的“集成调测环境”,可对APP进行快速的性能测试。
    • Monkey: 稳定性测试, 适用于android和ios,通过adb shell,生成用户或系统的伪随机事件,
    • Appscan:  安全测试,一个适合安全专家的 Web 应用程序和 Web 服务渗透测试解决方案。
    • Jenkins: 持续集成 ,用于自动化构建,编译,部署,任务执行,测试报告,邮件通知等。

3.      常见误区

    • 自动化测试找不到bug?

自动化测试不直接找bug,而是通过自动化测试解放出测试人员的时间和精力,来间接地找到更多、更深层次的新bug,将产品质量再提高一个档次,还有就是用于快速迭代中的回归测试。

    • 自动化测试一定会马上大量减少测试人员数量?

自动化测试不会马上大量减少测试人员数量。因为开展自动化测试初期需要投入一定的人力进行自动化测试脚本开发,并逐渐将自动化测试脚本用于日常的测试中,逐步减少手工测试人员从事重复劳动的时间和人数。

    • 自动化测试能提供百分百的测试覆盖率?

并非所有内容都可以被自动化地测试到。不可能覆盖所有可能的输入,所有可能的组合和路径。自动化测试可以增加测试的广度和深度,但是仍然无法达到100%的测试覆盖率,因为没有足够的时间或资源。

二、         
什么项目适合自动化?

       通常,以查询报表为主的系统,就是以插入,查询,删除,编辑为主的xx管理系统,这种系统不适合做web自动化。why? 因为这种系统一般定位起来也比较麻烦,主要以嵌入式表格为主,层次较深,没有特定属性,很难准确定位,要写又臭又长的xpath。最主要的是不太好断言结果,因为你的数据是查询出来的,今天查询出来“张三”在第一页,后面这个查询数据增加,“张三”跑后第五页了,再后来跑到第170页,你说怎么用固定的信息断言? 没有断言,你怎么知道查询的结果对不对?

这种系统的核心就是数据,其后台实现就是各种增删改查询接口。功能可用就好,一般这种系统不讲究用户体验之类的,关键是数据得正确。尤其是针对金融领域相关的系统,那少算一个数、一个零、一个小数点,事可就大了。所以在我看来做web自动化的实际意义并不大,或者说这类系统做web自动化的并不是系统最重要的部分。但是,这类系统非常适合做接口自动化测试,why?因为接口测试关注的就是数据,我们可以通过改变传参,然后断言接口的返回,以及数据入库结果。最后只要数据正确了,功能就做成大半,剩下的无非是如何把这些数据展示在页面上。

三、         
Robot Framework

1.     简介

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

.

四、         
环境搭建

1. 开发语言

Python2.7,对RIDE版本兼容性较好。

2. 自动化框架

Robot Framework,不再多说。

3. 编辑器

RIDE,用于测试数据的轻量级直观编辑器。

4. 引用库

HttpLibrary.HTTP,用于接口测试。

DatabaseLibrary,用于数据库查询验证。

5. 必要插件

wxPython,编辑器RIDE的 GUI开发库。

6. 安装说明

个人建议:Python2.7 + wxPython2.8 + RF3.0 + RIDE1.5

详情参考附件及文档说明:

链接: https://pan.baidu.com/s/1KKVTqLzbtMciHINMqc6ELA 提取码: 59de

五、         
工程架构

 1.      
项目主目录 

CRJM,用于存放系统各模块的测试用例集,测试用例。

2.      
基础关键字 

BasicResoure.txt,用于存放公共关键字。

3.      
配置文件 

config.ini,用于存放系统地址,数据地址,用户信息等。

4.      
数据文件

cr_api_info,用于存放接口url和请求体。

5.      
自定义库

MyLibrary,存放我们自己开发的一些关键字。

 

六、         
用例编写

1.  预制/清理数据

测试前的数据预制,以及数据清理。

比如,测试建卡成功,那么就要确保数据库不存在这条数据,需要提前清理数据;

反之,测试建卡重复,那么就要确保数据库已存在这条数据,需要提前预制数据。

2.      
设置请求体

根据测试点的不同,设置不同的请求体,达到测试的覆盖。

3.      
发送请求

根据接口的不同(如post、get),调用不同关键字。

4.      
验证响应体

获取响应体进行校验,如果响应体固定不变,可以整体校验;反之动态变化,请拆分进行校验。

5.      
验证数据库

根据数据实际入库情况,编写不同SQL语句进行校验。

6.      
数据清理

为了防止数据库太多冗余数据,测试完最好清理掉。

7.      用例设计思路

七、         
执行查看

  1. 左侧是用例条目,可以添加删除,以及勾选执行。

  2. 上方是常用操作,可以进行执行/停止/暂停等操作,执行完毕可以查看报告和日志。

  3. 中间是结果版块,打印用例执行情况,以及报告日志文件存放路径。

  4. 下方是日志版块,打印用例实时执行日志。

八、         
结果分析

  1.   首先是测试报告,可以查看执行日期时间,以及执行条目,成功条目,失败条目,耗时等

  2.  再者是执行日志,可以查看到测试用例详细执行情况,并且可以根据失败用例集>>失败用例>>失败步骤>>错误日志,最终定位到具体问题。

  

  

九、         更多资料

  https://www.cnblogs.com/leozhanggg/p/9675263.html

      

Reference:    https://www.cnblogs.com/fnng/p/5370433.html,    https://www.cnblogs.com/fnng/p/4333977.html

 

RobotFramework + HTTP接口自动化实现的更多相关文章

  1. RobotFramework做接口自动化(内部接口需要登录token)

    背景: 项目中需要做接口自动化测试,使用robot,有一个收货地址列表的接口直接传参数访问时会返回:{"msg":"缺少参数","code" ...

  2. RobotFramework做接口自动化(post请求)

    接口成功时返回: { "reCorde": "SUCCESS", "data": { ", "verify": ...

  3. RobotFrameWork环境搭建(基于HTTP协议的接口自动化)

    1. 前言 接着上一篇<RobotFramework框架系统课程介绍>,本篇主要介绍一下在基于RobotFramework框架开展接口自动化前,前期的环境如何搭建,正所谓”工欲善其事,必先 ...

  4. robotframework - 框架做接口自动化post请求

    1.做get请求之前先安装 Request库,参考github上链接 :https://github.com/bulkan/robotframework-requests/#readme 2.请求&a ...

  5. 1、大型项目的接口自动化实践记录--robotframework环境搭建

    因为人力.团队技术问题,选用robotframework来做自动化,首先说下环境搭建 齐涛道长的入门教程非常棒:http://blog.csdn.net/tulituqi/article/detail ...

  6. RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9......”

    在进行robotframework  接口自动化,在请求体参数中输入中文会报以下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 ...

  7. 3、大型项目的接口自动化实践记录----开放API练习

    开始做实际项目前,先拿个网上的简单API练下手 一.API说明: 接口信息 接口名:京东获取单个商品价格 地址:http://p.3.cn/prices/mgets 入参:skuids=J_商品ID& ...

  8. 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介

    1.接口测试简介 1)先简单介绍下接口测试,那么什么是接口测试呢? 百科的回答:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 看起来有 ...

  9. 接口自动化平台搭建(二),搭建django项目与接口自动化平台的由来与功能特征

    1.创建django项目 a.使用命令创建,安装完django之后就有django-admin命令了,执行命令创建即可,命令如下: django-admin startproject my_djang ...

随机推荐

  1. Cocos2d-x 3.1 一步一步地做改编

    本文并不想谈论的屏幕改编或真理的概念.假设不知道cocos2d-x的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/8451.ht ...

  2. java堆 (转)

     Java栈和堆 ----这两个概念未知很长一段时间,终于找到了一个很好的文本.使用和共享 1. 堆(stack)堆(heap)他们是Java使用Ram本地存储的数据. 与C++不同,Java主动管理 ...

  3. 编写可移植C/C++程序的要点(12条)

    1.分层设计,隔离平台相关的代码.就像可测试性一样,可移植性也要从设计抓起.一般来说,最上层和最下层都不具有良好的可移植性.最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC.最 ...

  4. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  5. glibc 内存申请和释放及堆连续检查

    C语言有两种内存申请方式: 1.静态申请:当你声明全局或静态变量的时候,会用到静态申请内存.静态申请的内存有固定的空间大小.空间只在程序开始的时候申请一次,并且不再释放(除非程序结束). 2.自动申请 ...

  6. Call asynchronous method in constructor

    using System; using System.ComponentModel; using System.Threading.Tasks; public sealed class NotifyT ...

  7. sql分组统计多列值

    select BQDM,sum(case when HFBZ='0' then 1 ELSE 0 end) bxschf,sum(case when HFBZ='1' then 1 ELSE 0 en ...

  8. WPF 中style文件的引用

    原文:WPF 中style文件的引用 总结一下WPF中Style样式的引用方法: 一,内联样式: 直接设置控件的Height.Width.Foreground.HorizontalAlignment. ...

  9. wpf中防止界面卡死的写法

    原文:wpf中防止界面卡死的写法 ); this.Dispatcher.BeginInvoke(new Action(() => { this.button1.Content = "计 ...

  10. 【Linux】PuTTY----------windows访问Linux 快捷方便

    第一步:百度PuTTY,下载好后直接运行,界面如下: 第二步:后输入IP:10.45.XX.XX,直接点击open按钮 第三步:输入用户名: 第四步:密码~ 现在,您就可以对你访问的linux设备进行 ...