利用python进行接口测试及类型介绍_第1页
利用python进行接口测试及类型介绍_第2页
利用python进行接口测试及类型介绍_第3页
利用python进行接口测试及类型介绍_第4页
利用python进行接口测试及类型介绍_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第利用python进行接口测试及类型介绍目录前言接口测试的坑接口类型快速上手接口测试接口文档分析编写接口用例执行接口测试

前言

其实我觉得接口测试很简单,比一般的功能测试还简单(这话我先这样说,以后可能会删O(_)O哈!),现在找工作好多公司都要求有接口测试经验,也有好多人问我(也就两三个人)什么是接口测试,本着不懂也要装懂的态度,我会说:所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。

我为啥说接口测试比功能测试简单呢,因为功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测UI、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。

正好最近在做接口测试,之前公司的方案是使用postman进行接口测试。但是伟大的墙导致我们只能用离线版postman。。然后一个很长很长的接口列表,一个接一个的访问。我的天哪。。所以萌生了一个想法,使用python编写一套接口测试脚本,设置接口列表,然后逐条访问,输出日志。

接口测试的坑

第一个坑:

POST和GETGET一般用于获取/查询资源信息,而POST一般用于更新资源信息|Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。

做过接口测试或者做过前端的人都知道,接口的访问方式是不一致的,所以才会使用postman来进行接口测试,因为它可以设置post和get方式。使用python模拟这俩种访问方式是重中之重。先说GET方式。GET方式就比较简单了,把接口放进浏览器地址栏,点下回车就完成了一次GET。所以就需要使用python访问URL就可以模拟一次GET测试。

importurllib2

url_save='/'

try:

s_save=urllib2.urlopen(url_save).read()

prints_save

excepturllib2.HTTPError,e:

printe.code

excepturllib2.URLError,e:

printstr(e)

如上所示就完成了一次GET请求,调用urllib2库,然后将一个字符串形式的URL传给urllib2.urlopen函数,最后使用read()方法将GET回来的数据存储起来。

然后说说POST。其实在python的urllib2库中,我们刚刚所使用的urlopen函数还有其他几样不是必选的入参,因为这些入参给定了初始化的值:

defurlopen(url,data=None,timeout=socket._GLOBAL_DEFAULT_TIMEOUT,

cafile=None,capath=None,cadefault=False,context=None):

如上代码,urllib库有一个很智能的毛病。data不给值,访问方式就是GET,data给了值,方式就会变成POST;所以模拟POST方式的代码如下:

importurllib

importurllib2

url=''

#values的形式:name:value

values={'**':'***',

'**':'***',

'**':'***'}

#使用urllib.urlencode函数对values字典进行处理,最终形式为:**=*****=***

data=urllib.urlencode(values)

#如果对data顺序有要求,建议自己拼接data

req=urllib2.Request(url,data)

response=urllib2.urlopen(req)

the_page=response.read()

就像如上代码,把POST方式所需要的数据写到data参数中去,POST方式就模拟成功了。

第二个坑:cookie的使用

用python获取cookie所需要的库叫做cookielib。获取cookie的例子:

#这里有四种CookieJar,CookieJar是最原始的

cookie_use=cookielib.CookieJar()

handler=urllib2.HTTPCookieProcessor(cookie_use)

#使用绑定好CookieJar的handler创建一个opener

opener=urllib2.build_opener(handler)

#将opener安装到urllib2中

urllib2.install_opener(opener)

#使用安装好的urllib2访问某一网站获取cookie

urllib2.urlopen('https:///login')

#这个时候cookie已经被CookieJar获取到了

printcookie_use

在下一步,将获取到的cookie绑定到opener头中:

'''

将获取到的cookie绑定到opener,上一步获取的cookie并不满足如下格式,

需要自己进行字符串的切片和拼接

opener.addheaders.append(('Cookie','name=***888=888'))

现在的opener就可以用来访问任意需要登录的网站了!

功能:功能实现,实现与设计一致,接口通过性测试

健壮性:边界值,容错性性能:并发及压测稳定性:长期运行的稳定性安全性:SQL注入,session依赖,数字签名,http接口的安全性

接口类型

常见接口种类:

Http/Https接口:通过http/https协议传送接口数据(通常按字符串/二进制传输),如常见的网页表单,https安全性更好RESTfulApi:REST表述性状态传递.一种设计风格,基于http/https协议,把一切接口视为资源,接口要分版本,在统一的域名下管理,不同的方法(get/post..)做不同的事,通常请求及响应使用json格式WebService:SOAP简单面向对象协议,基于http实现的一种RPC方案.接口返回一些对象,可以直接通过操作对象,实现我们需要的业务处理.使用xml格式传输数据RPC接口:RPC为远程方法调用,有不同的实现方案,基于TCP/Http协议的都有.RPC可以想我们本地导入和调用对象一样使用.Dubbo接口也是一种RPC接口.

常见接口数据类型:

请求数据类型(Content-Type):application/x-www-form-urlencoded:常规只有文本的网页表单application/json:RESTfulApi常用格式,结构清晰,含有多层嵌套multipart/form-data:既有文本,又有上传文件或富文本框的混合数据表单text/xml:xml格式,RPC接口常用格式响应数据类型string/html:返回字符串或网页源码json:RESTfulApi常用响应格式,结构清晰xml:RPC接口常用格式

常见接口安全验证方式:

Auth_1.0/Auth_2.0:通用接口授权方式Session依赖:需要登录之后才能进行接口操作Token验证:先要使用自己的appid/appsecret通过获取token接口验证身份获取一个token(令牌,有一定有效期),然后带着token访问接口数字签名:将原本的参数按一定规则进行组合,配合时间戳或appsecret,通过加密算法生成一个签名sign,携带签名进行接口请求

常见接口请求方法:

GET:获取资源POST:修改资源PUT:上传资源DELETE:删除资源HEAD:只请求页面首部PATCH:补丁OPTIONS:运行客户端查看服务器性能

常见状态码(RESTful规范):

200系:成功200OK-[GET]:获取资源成功201CREATED-[POST/PUT/PATCH]:创建/修改成功202Accepted-[*]:任务接受204NOCONTENT-[DELETE]:删除成功300系:重定向301MovedPermanently:永久重定向302Found:临时重定向400:资源错误400INVALIDREQUEST-[POST/PUT/PATCH]:用户请求错误401Unauthorized-[*]:没有权限(鉴权失败,接口层)403Forbidden-[*]资源禁止访问(服务器层,没有访问权限)404NOTFOUND-[*]:资源不存在405MethodNotAllowd:访问的方法不允许,如用POST访问只支持GET请求的接口406NotAcceptable-[GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)410Gone-[GET]:资源被永久删除422Unprocesableentity-[POST/PUT/PATCH]当创建对象时,发生验证错误500系:服务器内部错误(接口崩溃或有Bug)500INTERNALSERVERERROR-[*]:服务器发生错误

接口业务类型:

返回数据型接口:只从数据库读取数据业务操作型接口:需要写数据库(接口测试需要要涉及参数化或环境清理)

快速上手接口测试

获取接口文档:

WikiWord文档Postman导出抽象接口定义接口管理平台

接口文档分析

功能分析:是否能满足业务(是否缺少某个前端需要的参数),是否能满足所有业务场景(是否有漏开发接口,比如只开发了单品接口,没开发套餐接口)设计分析:是否有不规范字段(如,nickname,passwd);不规范格式(如sex,用男,女而不是1,2);是否有易混淆字段(如amount和total);是否有单词拼错;是否有和数据库字段对应但名称不一样的(易错)接口分析:协议类型(http要考虑安全);请求方法(是否规范);请求编码格式(表单/Json/xml,很多接口文档不声明,导致测试调试不通);接口授权方式;接口业务类型(关系到是否需要做参数化或环境清理);返回值类型及结构(关系到怎么断言)接口依赖:需要什么环境准备和业务场景,依赖那些接口,有那些动态数据,预备环境怎么保障参数分析:各个参数的参数类型,组成规则,是否允许不传,是否可以为空,是否允许多传参业务分析:如price字段必须和数据库中的商品的price字段一致,才能校验通过非功能性:接口的技术实现方案是否合理,能否满足高并发的性能要求,边界值/极限值的处理是否合适,是否前后端都有数据格式校

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论