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

时间:2021-11-10 08:56:33

1、接口测试简介

  1)先简单介绍下接口测试,那么什么是接口测试呢?

    百科的回答:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

    看起来有点拗口,我们试着用通俗一点的方式说明下,把系统比作一家公司,那么使用系统的好比是个人或者其他公司。

    对外接口(我们常说的接口测试指的是对外接口):

    那么使用方想要找公司办事情的时候,通过邮箱、电话、聊天工具之类的,通过公司对外提供的渠道,如应聘找HR,有问题找客服,商务合作找销售,而不能直接找到公司内具体事情处理人。因为一家公司人那么多,谁负责什么让使用方记住显然不现实;使用方要求的事情是否合理,需要通过接口人先过滤;同时暴露给使用方谁负责什么,也容易把人挖走。

    那么这跟系统接口测试有什么关系呢?

    邮箱、电话、聊天工具之类,好比各种浏览器(客户端),HR、客服、销售等渠道就可以理解成是系统对外提供的接口,使用方要做什么事情,找对应的接口请求就可以,接口在找对应的代码执行,再把结果告诉使用方。如此一来,使用方不需要知道具体的代码实现,通过接口就能做到想做的事情,而系统提供方,也不用担心代码被人看到。而接口测试,就是测试这些接口。

    系统内接口(一般是单元测试做):

    上面解释了对外的接口,那么对内的接口是什么呢?

    一家公司,当人多的时候,就会有很多的细分部门,部门之间的交互,就跟公司跟公司之间交互一样,有什么事情就通过部门接口人来对接。

    所以系统内接口与对外接口类似,当然因为是一家公司的,故意捣乱的行为就比较少,这块的测试就不需要像对外的接口那么严谨。

  2)接口测试测什么

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

  如图,系统的前端,在我们操作控件时,如点击登录按钮,点击购买按钮,会携带着数据,通过http之类的协议,向后端发起请求,后端处理后,返回结果对象,前端收到结果对象后,解析渲染后,在浏览器展示给我们看。

  而接口测试,则是跳过前端,模拟前端请求后端,获取对应的结果对象,验证结果对象是否符合预期。

    我们以游戏商城购买物品为例,场景:用户登录,提交购买物品+购买数量的信息给服务端,服务端处理信息后返回结果。

    用户在前端填写用户名、密码,点击登录按钮->点击按钮时,会请求登录接口,带着用户名、密码、客户端信息等数据,数据正确则登录成功

    用户选择购买的物品,输入数量,点击购买按钮->点击按钮时,会请求购买接口,带着用户信息、购买物品、购买数量数据,处理后返回结果

  那么购买物品的接口,要测试什么呢?

    ①常规功能测试,同前端功能测试。

    既然在前端都可以测试了,为什么要测试这块呢?

    主要是为了测试左移,更快的介入测试,且相对于前端测试而言,更准确的定位问题(排除了前端的因素)。

    ②非常规功能测试(业务安全)。

    后端校验:如上面的购买物品,前端一般都会限制购买数量不能<=0,如果后端没有校验,那么购买负数数量,则就变成获得金钱。

         还有有的物品,会需要VIP达到N级才可购买,前端一般会置灰无法选择,而后端如果没有校验,则可以跨VIP等级购买。

         没有展示在前端的物品,如做活动时才打折出售的物品,他们的ID与普通商品不一样,也需要校验后端是否有校验。

         必要参数不填。

    敏感信息是否暴露:在返回值中,是否携带了如用户密码之类的敏感信息

    测试以上各种情况下,后端处理后返回的结果是否预期的。

    性能测试、安全测试

    这两块属于专项测试,不属于接口测试,接口测试需要测试,但是前端、数据库等也是需要测试的。

2、关键字简单介绍

在suite中引用RequestsLibrary后,F5,点击Source,看一下库RequestsLibrary有哪些方法

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

下面以接口http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1,来对关键字做下说明

Create Session系列:与服务器建立连接,你想找人办事,但是对方不认识你,所以你要先跟他打个招呼,他回应你了,你才能继续跟他说具体事情。

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

参数如上图,这里就对alias、url、headers{}做下说明,其他不一定用的上,先不介绍

alias:随便写,对于新建的这个session的别名,后续请求时用。

url:请求的域名,如例子中为http://p.3.cn,如果有端口号则包括端口号。

headers:请求头,告诉服务端是以什么样的方式来请求它的,如要告诉它请求方式、数据类型、客户端信息等,数据格式是dict。一般主要传x-requested-with、Content-Type,其他根据项目情况传值

cookies:如果对方认识你了,则可以带上你的身份(登录后,在服务器上会存储你的身份信息)。

Delete All Sessions:与建立连接对应的,你跟他说没事了,我先走了

Get、Post、Put、Delete Request:请求系列,即具体要做的事情。

这里以Get Request做下说明

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

参数如上图,这里就对alias、uri、headers、params做下说明,其他不一定用的上,先不介绍

alias:前面Create Session起的别名

uri:具体的路径,如例子中是/prices/mgets,如果访问的是根目录,则为/

headers:请求头,如果跟session一致,则不需要再赋值

params:请求的body,如例子中可以是skuIds=954086 type=1

To Json:服务器收到接口请求后会返回response,可通过该方法,将response.content转为json

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

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

2、大型项目的接口自动化实践记录--接口测试简介及RequestsLibrary关键字简介的更多相关文章

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

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

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

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

  3. 9-2、大型项目的接口自动化实践记录----递归判断两个json串是否相等

    1.已知json串构成的情况下判断 先构造一下场景,假设已经把各个数据都移除掉不对比的字段 图1 预期.实际结果,复杂接口返回多层嵌套json时,同下 图2 预期.实际结果值为:{child_json ...

  4. 9-1、大型项目的接口自动化实践记录----数据库结果、JSON对比

    上一篇写了如何从DB获取预期.实际结果,这一篇分别对不同情况说下怎么进行对比. PS:这部分在JSON对比中也适用. 1.结果只有一张表,只有一条数据 数据格式:因为返回的是dicts_list的格式 ...

  5. 8、大型项目的接口自动化实践记录----DB分别获取预期结果、实际结果

    上一篇实现数据分离升级版--从DB获取数据,以及对应的请求实现,作为一个case,还缺少了预期结果与实际结果的获取及对比.因为前面的文章已经说过接口返回值的获取及对比,所以这篇不说这块了,这篇说一下D ...

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

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

  7. python入门以及接口自动化实践

    一.Python入门必备基础语法# 标识符:python中我们自己命名的都是标识符# 项目名 包名 模块名# 变量名 函数名 类名# 1:字母 下划线 数字组成 命名的时候不能以数字开头# 2:见名知 ...

  8. 19 &vert; 真实的战场:如何在大型项目中设计GUI自动化测试策略

  9. 关于接口自动化的那些事 - 基于 Python

    网络请求模拟小技巧 在学习了一段时间的Python语言后,咱也大概对Python的语法和逻辑有了一定的积累,接下来,可以为接口自动化测试开始尝试做一些比较简单的准备工作啦~跟着我一起来来来~ 扩展库r ...

随机推荐

  1. Python框架之Tornado(三)请求

    概述 本篇就来详细介绍tornado服务器(socket服务端)是如何接收用户请求数据以及如果根据用户请求的URL处理并返回数据,也就是上图的3 系列所有步骤,如上图[start]是一个死循环,其中利 ...

  2. CSS样式基础二

    一.列表 主要分为有序列表ol,无序列表ul <ul> <li></li> ... </ul> <ol> <li></li ...

  3. Windows下tcp参数优化

    Windows系统下的TCP参数优化2013-04-25      0 个评论       作者:最初的幸福ever收藏     我要投稿Windows系统下的TCP参数优化 TCP连接的状态与关闭方 ...

  4. POJ 3352 &lpar;边双连通分量&rpar;

    题目链接: http://poj.org/problem?id=3352 题目大意:一个连通图中,至少添加多少条边,使得删除任意一条边之后,图还是连通的. 解题思路: 首先来看下边双连通分量的定义: ...

  5. 文件操作2 cp mv rm

    1.cp命令 [root@rusky /]# cp 123 /test  #在linux系统中,如果文件123已经存在,则提示用户确认,在unix系统中则不提示,除非使用参数-i 交互式操作.cp: ...

  6. IE10-IE11在NET4&period;0下出现&OpenCurlyDoubleQuote;&lowbar;&lowbar;doPostBack未定义”解决方案

    IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2 ...

  7. Codeforces Round &num;257 &lpar;Div&period; 2&rpar; 题解

    Problem A A. Jzzhu and Children time limit per test 1 second memory limit per test 256 megabytes inp ...

  8. bzoj1070 修车&amp&semi;&amp&semi; bzoj2879美食节 【费用流】

    bzoj1070: 把每个工人拆成汽车那么多个点,假如说 工人(i, j) 和 汽车k 连边,那就代表第i个工人倒数第j个修汽车k,那么这条边对以后的贡献就是k*time[i修k]. #include ...

  9. Flask-SQLAlchemy

    Flask-SQLAlchemy   SQLAlchemy 一. 介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言 ...

  10. 06-搭建master集群

    部署高可用 kubernetes master 集群 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller- ...