接口测试

 

1、接口测试:接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。


 

  系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。

  程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用

  现在我们最常用的两种接口就是 webservice 接口和 http api 接口,概念这里就不赘述了,知道有这两种接口和怎么测试就可以了。
  webService 接口是走 soap 协议通过 http 传输,请求报文和返回报文都是 xml 格式的,我们在测试的时候都用通过工具才能进行调用,测试。
  http api 接口是走 http 协议,通过路径来区分调用的方法,请求报文都是 key-value 形式的,返回报文一般都是 json 串,有 get 和 post 等方法,这也是最常用的两种请求方式。

接口:就是从数据库里面取数据库、插入数据。

 客户端、服务端


 

前端: web :
  html js css
ios:object-c、swfit
Android:Android

接口 login?username=niuhanyang&password=112234(?好后面是参数多个参数用&连接)

 

它们通过接口交互接口反返回的是json

  (json通用数据类型所有语言都支持)它是以key:value形式存在

后端
  php、java、python、go等等
  


接口测试就是功能测试,它比功能测试还简单(功能测试除了要考虑返回值,还要考虑字体、颜色、兼容性)。

 

  为什么要做接口测试


  例如:测试支付接口修改订单金额(页面无法测试)

  1. 可以发现很多在页面上操作发现不了的bug
  2. 检查系统的异常处理能力
  3. 检查系统的安全性、稳定性
  4. 前端随便变,接口测好了,后端不用变

 

 

  接口测试三要素:


 

    1)请求URL,请求方法(Get、Post用的较多)

   2)  传递的参数,数据

   3)返回值

 

  GET和POST请求:


 

get请求,不需要借助任何的工具,在浏览器里面就可以发请求。

GET请求和POST请求的区别:
  1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
  2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
  3、POST比GET安全,因为数据在地址栏上不可见。
  4、一般get请求用来获取数据,post请求用来发送数据。

   sesion和cookie


 

  seesion
    http://www.nnzhp.cn/archives/426

  就是存在服务端的一个键值对
    key - vaule

  cookie
  就存在客户端的一个键值对
    key - value

  登录的时候已经把账号密码写到cookie里面了,咱们再去打开京东页面的时候,浏览器会自动把京东这个网站下面的cookie发给京东的服务端,会和服务端session的键值对做匹配校验。

  接口签名

  为了防止别人恶意刷请求,它是一个加密后的字符串

http://api.nnzhp.cn/reg?username=xxx&passwd=xxx&sign8eea855efc702130d9c9cafcd9f4d91a

      Refer

  是为了判断网页从哪里跳转过来

      URL编码

  中文等特殊字符在传输过程中会变为%23%232%232%这样的url编码
https://www.bejson.com/enc/urlencode/ URL在线编码、解码工具

  http状态码


每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:

  • 200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
  • 300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
  • 400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
  • 500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果

 

3.怎么设计接口用例


 

通过性验证:
  首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试

 

参数组合:
  type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合

 

接口安全:
  1、绕过验证,修改订单价格或数量,后端有没有做验证
  2、绕过身份授权,普通用户,能否修改商品信息
  3、参数是否加密,登录用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
  4、密码安全规则,密码的复杂程度校验

 

异常验证:
  异常的,三种,必传非必传、参数类型、入参长度

 

根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例
  举个例子,拿bbs来说,bbs的需求是这样的:
  1、登录失败5次,就需要等待15分钟之后再登录
  2、新注册的用户需要过了实习期才能发帖
  3、删除帖子扣除积分
  4、......
把这些测试点列出来,然后再去造数据测试对应的测试点。

 

咱们测试接口的话,肯定要写测试用例,写测试用例的话,就要有一个用例模板,那需要有哪些字段呢?见“测试用例.xlsx"
  1、项目 是哪个项目的
  2、模块 这个接口是属于哪个功能模块的
  3、用例id
  4、接口名称 
  5、用例标题 用例是干嘛的
  6、请求方式 GET/POST
  7、请求url url地址
  8、请求参数
  9、前置条件 有依赖的时候,比如说要测登录失败3次的
  10、结果验证 预期结果
  11、请求报文 
  12、返回报文 
  13、测试结果 通过/失败
  14、测试人员

用例模板


 

 

 

 

 

 

posted @ 2019-04-01 15:40  localhost;  阅读(2079)  评论(0编辑  收藏  举报