微信号:tuniutech

介绍:途牛技术中心官方平台

途牛原创 | 接口自动化测试和测试桩

2016-04-18 17:34 途牛技术中心


接口自动化测试概述
1、接口自动化到底关注哪些点?
a.关注函数、类(方法)所提供的接口的可靠性 b.关注接口之间衔接的可靠性
 c.关注接口参数的校验

2、接口有哪几种类型?
a.http协议中:GET/POST/PUT/DELETE/INPUT方法
 b.目前自动化工具提供的有GET和POST两种方法

3、用接口实现自动化有什么优势?
a.验证数据和基本功能的正确性 
b.比页面UI自动化维护代价低的多(特别是迭代项目) 
c.接口开发代价远低于UI,能够更快的跟近系统更新

4、什么项目适合做自动化测试?
a.项目主流程变动不频繁
 b.自动化测试脚本可重复使用
接口自动化测试用例设计
准备工作及必备技能:
1、单一接口测试
     准备接口清单包括URL、入参、预期出参、测试环境IP

2、流程性接口测试
     准备业务流程图或者流程用例、 准备接口文档

3、通过页面抓取接口做自动化测试
     打开浏览器,按F12,在控制台-网络面板查看实时接口数据
接口自动化常用的控件(工作中常用的为GET、POST)
例子:以POST为例,GET类似

地址: http://nb.nb.tuniu.org:8384/dialey/frontend/diy/scenic/update-scenic

请求方式:POST

请求报文:
{
  "id": "",
  "scenicName": "测试景区A",
  "scenicRank": "1",
  "scenicAddress": "泰山路20号",
  "scenicOpenTime": "06:00:00",
  "scenicCloseTime": "18:00:00",
  "scenicDescription": "景区介绍"
}
报文加密、解密
接口接收的报文都需要使用base64编码处理,因此这里需要使用
公共关键字》其它通用操作》base64编码


这边把报文作为参数给这个关键字,返回的变量:v_json_b64
就是加密后的报文,解密也是一样的道理

返回结果

a. v_http_code:200 

b. v_header:Date: Thu, 20 Nov 2014 06:50:54 GMT\r\nTransfer-Encoding: chunked\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Methods: *\r\nContent-Type: application/json;charset=UTF-8\r\nServer: Apache-Coyote/1.1\r\n 

c .v_response:{"success": false,"msg":"题 用户尚未登录或者分销账号存在问题 ","errorCode":230205,"data":{}}
涉及到用户登陆验证时,就要通过伪造cookie,让服务器认为本次请求是合法的

Cookie:JSESSIONIDNB=526B7FF472F93B3F6F5783D03E7EF5C48a8a9eca497eb0cc0149caf162db01d2;
JSESSIONIDNB=526B7FF472F93B3F6F5783D03E7EF5C48a8a9eca497eb0cc0149caf162db01d2


再跑一次返回结果 
a. v_http_code:200 

b. v_header:Date: Thu, 20 Nov 2014 07:01:52 GMT\r\nTransfer-Encoding: chunked\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Methods: *\r\nContent-Type: application/json;charset=UTF-8\r\nServer: Apache-Coyote/1.1\r\n 

c. v_response:{"success": true,"msg":"操作成功","errorCode":1130000,"data":{"scenicId": 172}}
最后加个关键字简单判断下报文是否正确即可
或者获取下json的某个字段
打印变量
        AB22_scenicId:172
接口自动化测试用例设计-JSONPATH
下面是一段json数据,我们可以根据jsonpath获取不同的数据
{
  "data": {
    "SystemsLists": [
      {
        "f_id": "15",
        "f_system_code": "ATN",
        "f_modular_code": "ATN",
        "f_name": "Athena运营平台"
      },
      {
        "f_id": "17",
        "f_system_code": "TDA",
        "f_modular_code": "TDA",
        "f_name": "笛风分销系统"
      },
      {
        "f_id": "18",
        "f_system_code": "DTC",
        "f_modular_code": "DTC",
        "f_name": "火车票数据中心"
      }
    ],
    "SystemsListsCount": "336"
  }
}

/data/SystemsLists/f_name
            /data/SystemsLists/f_name路径下的所有f_name
/data//f_name 
           同上,//省略SystemsLists这个路径,相对路径
//f_name 
           同上,//省略/data/SystemsLists
//f_name[2]
           第3个f_name 
//f_name[-1:]
          最后一个f_name
//f_name[:3]
          前3个f_name
//SystemsLists [?(@ f_name)]
   有f_name的SystemsLists
//SystemsLists[?(@ f_id=18)]
          f_id=18 的 SystemsLists
对应到工具里的关键字如下:
获取JSON数据的关键字使用举例
1、获取JSON元素:(默认获取第一个返回数据) (以前面的json数据为例)
执行后的结果如下:
Athena运营平台
2、获取JSON元素list内容:
执行后的结果如下:
[Athena运营平台, 火车票数据中心, 笛风分销系统]
3、数据校验:
执行后的结果如下:
true
4、获取数组长度:
执行后的结果如下:
3
5、FOR循环
执行后的结果如下:
1
2
3
……
获取JSON数据的关键字使用举例
1、接口与接口返回结果互相验证

BOH用例场景简介:验证BOH门票产品详情信息

①根据产品线路编号,BOH产品详情接口product/detail获取产品详情信息;


②获取价格中心中线路的价格信息,与1中获取的产品详情中价格信息比对,验证match产品价格信息是否正确;


③查询产品和产品模板基本信息,与1中获取的产品详情比对,验证产品基本信息、景点等信息是否正确;


④查询线路行程信息,与1中获取的产品详情比对,验证产品行程信息是否正确

2、接口返回与页面内容互相验证

M站用例场景简述:通过接口获取本周最热产品数据,与页面本周最热产品
做比对,验证页面展示的产品信息是否正确
3、接口返回与数据库 查询结果 互相验证

价格中心用例场景简介:新增产品线路(其中酒店必选,酒店可入住2人,酒店

有采购规则有报价),

①通过数据库校验产品线路在指定团期内可售卖;

②1满足后,校验价格日历表中某一团期价格符合预期;

③通过接口校验线路包含的资源售卖价符合预期;

④考虑价格中心价格信息是异步处理的,最后一步通过循环校验数据库结果验证product_calendar_promotion_X异步数据是否生成,供后续业务取数据


4 、途 接口与第三方接口(例如携程)数据进行验证

同接口与接口验证,为大家编写用例拓展思路,这里不做举例
自动化远程执行
远程执行地址: http://tmp.tuniu.org/autotest_tcExecute.html 
远程机情况:8台远程客户端 7*24小时提供服务
远程监控和报告

自动化接口与桩的应用
测试桩注册中心的由来:
1、平台对接需求成为主流趋势,
2、互联网产品系统架构决定,跨系统的联调和测试

测试桩技术架构:
1、sevice层采用java语言,根据URL动态生成桩服务,实现参数解析和传递,并根据测试环境映射形成各个测试环境对应的桩服务
2、注册中心层实现桩服务的统一注册,管理和http响应消息的分发

测试桩注册和工作流程图:
测试桩的配置和应用
测试桩的配置地址:http://tmp.tuniu.org/login.html

测试桩访问地址:http://10.10.10.10:8280/OTA_Read.asmx


测试桩对接TSP

测试桩对接TSPL(详细使用可咨询自动化组)


工具及规范地址
工具下载路径:http://boy.tuniu.com/svn/TNSQA/TAP/TAP 

自动化案例存放路径: http://boy.tuniu.com/svn/TNSQA 

自动化案例开发规范: http://wiki.tuniu.org/download/attachments/8847419/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E6%A1%88%E4%BE%8B%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.pdf?version=2&modificationDate=1410753899000&api=v2


 
途牛技术中心 更多文章 「牛人讲堂」第二期:有腕儿就是这么任性——邓侃博士与你分享大数据实战精华! 牛人大讲堂第二期总结 ActiveMQ相关介绍及实践 有一群牛人,我们必须知道 产品中心基础知识培训开始啦!
猜您喜欢 如何让云硬盘拥有澎湃动力 App项目实战之路(二):API篇 Python程序员都会喜欢的6个库 实践真知:解决 Jdbc 连接 Oracle 12c 时快时慢的问题 iOS8.3正式发布!包含众多改进、增加新表情符号