RobotFramework + HTTP接口自动化实现
一、 什么是自动化测试?
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 library、IOS library、AppiumLibrary等 。
数据库测试:Database Library、MongoDB 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. 用例设计思路
七、
执行查看
左侧是用例条目,可以添加删除,以及勾选执行。
上方是常用操作,可以进行执行/停止/暂停等操作,执行完毕可以查看报告和日志。
中间是结果版块,打印用例执行情况,以及报告日志文件存放路径。
下方是日志版块,打印用例实时执行日志。
八、
结果分析
- 首先是测试报告,可以查看执行日期时间,以及执行条目,成功条目,失败条目,耗时等
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接口自动化实现的更多相关文章
- RobotFramework做接口自动化(内部接口需要登录token)
背景: 项目中需要做接口自动化测试,使用robot,有一个收货地址列表的接口直接传参数访问时会返回:{"msg":"缺少参数","code" ...
- RobotFramework做接口自动化(post请求)
接口成功时返回: { "reCorde": "SUCCESS", "data": { ", "verify": ...
- RobotFrameWork环境搭建(基于HTTP协议的接口自动化)
1. 前言 接着上一篇<RobotFramework框架系统课程介绍>,本篇主要介绍一下在基于RobotFramework框架开展接口自动化前,前期的环境如何搭建,正所谓”工欲善其事,必先 ...
- robotframework - 框架做接口自动化post请求
1.做get请求之前先安装 Request库,参考github上链接 :https://github.com/bulkan/robotframework-requests/#readme 2.请求&a ...
- 1、大型项目的接口自动化实践记录--robotframework环境搭建
因为人力.团队技术问题,选用robotframework来做自动化,首先说下环境搭建 齐涛道长的入门教程非常棒:http://blog.csdn.net/tulituqi/article/detail ...
- RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9......”
在进行robotframework 接口自动化,在请求体参数中输入中文会报以下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 ...
- 3、大型项目的接口自动化实践记录----开放API练习
开始做实际项目前,先拿个网上的简单API练下手 一.API说明: 接口信息 接口名:京东获取单个商品价格 地址:http://p.3.cn/prices/mgets 入参:skuids=J_商品ID& ...
- 2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介
1.接口测试简介 1)先简单介绍下接口测试,那么什么是接口测试呢? 百科的回答:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 看起来有 ...
- 接口自动化平台搭建(二),搭建django项目与接口自动化平台的由来与功能特征
1.创建django项目 a.使用命令创建,安装完django之后就有django-admin命令了,执行命令创建即可,命令如下: django-admin startproject my_djang ...
随机推荐
- NS2网络模拟(5)-homework01.tcl
1: #NS2_有线部分\homework01.tcl 2: 3: #创建两个结点,深圳到北京的TCP连接,图形将数据显示出来,计算吞吐率,画图分析 4: #tcp上层用ftp 5: #udp上层用c ...
- react学习(6)——关于组件生命周期的问题
在项目开发的过程中,遇到了一个问题: 父组件请求后台数据,收到后将数据以props传给子组件,子组件根据收到数据的不同,显示不同的内容,同时,子组件自身可以根据click操作改变根据父组件的数据显示的 ...
- SignalR QuickStart
原文:SignalR QuickStart SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话. 换句话说,该对话可不受限 ...
- C# HttpWebResponse下载限速
在使用HttpWebResponse请求网络内容的时候,一般如下面这种方法: code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 非生产环境代码,请在实际使用时进行 ...
- .Net Core 中使用PetaPoco ,T4生成模版
话不多说,直接上源码. 1.引用NuGet 2.添加T4 <#@ template debug="true" hostspecific="false" l ...
- seajs教程(一):基本用法
介绍 SeaJS 是一个适用于 Web 浏览器端的模块加载器.使用 SeaJS,可以更好地组织 JavaScript 代码. Sea.js 遵循 CMD 规范,模块化JS代码.依赖的自动加载.配置的简 ...
- Window Features 总览
This overview discusses features of windows such as window types, states, size, and position. Window ...
- Oracle VM VirtualBox ubuntu 共享文件设置
1.创建共享文件 2.在本机上选择共享文件路径,虚拟机设置共享文件名称,注意这里不能选择自动挂载 3. 虚拟机新建文件夹挂载共享文件 sudo mkdir /mnt/sharedsudo mount ...
- mage J和Graphpad如何对Western Blot条带灰度分析
原文 mage J和Graphpad如何对Western Blot条带灰度分析 WB是研究蛋白表达的一个经典方法.对于一些时间点或者是不同组织蛋白表达量的分析就涉及到量的变化.一些凝胶成像软件带有此分 ...
- SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication
原文:SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication 没有截图: 创建可更新订阅,正常创建了发布,在订阅端创建订阅,最后一步提示完成,却出现了警告: ...