接口测试学习大纲

霍格沃兹学习笔记
(持续更新,直到学完哈哈哈哈哈)

一、接口测试的价值

分层测试保证质量,变更发生时,及时发现。
UI(客户端)——Service(服务端)——Unit(单元)
开发代码发生变更时,必须进行单元测试。
客户端测试:UI 兼容 性能 安全
服务端测试:接口 兼容 性能 安全
接口测试的必要性:

  • 行业成熟方案
  • 更早发现问题
  • 更快的质量反馈

接口测试不能做:不能解决移动端的质量

二、接口基础知识

三、接口行为的观测与分析

  1. 常见的协议
  • IP
  • TCP UDP
  • HTTP DNS BRC
  • SOAP RESTful Dubbo
  • ProtoBuf、MCPack
  1. 协议分析工具
  • 网络嗅探:WireShark、TcpDump
  • Proxy:Fiddler(win)、AnyProxy[全平台]
    推荐工具:charles(全平台)、burpsuite(全平台java)
  • 分析工具与协议客户端工具:
    curl postman
    chrome DevTool、Postman
  1. Chrome DevTool查看http请求
  2. copy as cURL 用来了解接口
    -H 表示header信息
  3. har格式 (HTTP Archive )
    存储性能数据的格式
    可以用来自动生成接口测试用例
    harviewer开源可视化工具 瀑布流图
    copy as all HAR
  4. HTTP协议组成
    (curl命令 -vvv查看详情)
  • target:
    url method
  • request:
    header
    get query
    body
  • response
    status code
    content
  1. nc命令(mac)/talent(win)
    //建立连接
    nc www.baidu.com 80 -vvv
    //手动发起一个http请求
    GET /index.html HTTP/1.1
    host baidu.com

  2. 客户端模拟请求工具

  • nc
  • curl 最常使用的http请求工具
  • postman 交付调试工具
  • burpsuite http操纵的黑客级别工具
  1. curl常用方法
  • get请求 curl $url
  • post请求 curl -d 'xxx' $url
  • proxy请求 curl -x 'http://127.0.0.1:8080' $url
  1. 代理分析工具
    Charles for 测试工程师 ,BurpSuite for hacker
  • 代理功能
    http/https、sock5
    限速模拟
    断点调试
  • 转发功能
    映射:让发往a网站的请求返回b网站的内容
    重写:自动把请求和内容篡改掉
  1. charles的使用
  • web端抓包
  • 移动端抓包
    genymotion模拟器 配置代理
  • 抓http https
  • 模拟弱网 Throttle Setting
  • 打断点
  • map local 篡改请求 响应

12.Burpsuite
一般黑客使用,测试工程师可做安全测试、定制工具

  • 爬虫
  • 暴力破解

四、接口用例的编写与管理

  1. 接口测试流程
  • 接口范围

  • 接口分析

  • 接口测试用例设计

  • 接口测试框架选择

  • 测试用例编写与维护

  • 持续集成

  1. 待测接口范围
    总共要测多少接口、如何交互
    待测接口统计渠道:接口文档(人工文档、swagger自动生产文档)、代码分析、线上log、客户端抓包

  2. 接口分析
    监听分析:tcpdump+wireshark+har提取工具 (适用于偏门协议)
    代理分析:charles+burpsuite
    转发分析:修改host域名+反向代理转发

  3. 测试用例设计
    接口调用的流程分析:

  • 代理抓包
  • 线上log
  • 人工用例补充:用流程图或思维导图进行业务建模
    正常场景用例
    异常场景用例
    安全和稳定性用例
  1. 接口测试框架选择
  • 常见:
    Jmeter: 性能测试工具,不具备完备的接口测试框架功能
    Robotframework: 关键字驱动,适用技术弱的群体
  • 推荐框架:
    RestAssured 开源
    soapUI 商业化
    swagger
    基于各种语言的httpclient封装也很常用
  1. 测试用例编写(RestAssured)
  • 创建新的maven依赖

  • 添加依赖restassrued junit 的依赖

  • 编写用例
    (1)基本请求:get 、post 添加header 、json请求
    (2)常见的结果:statusCode、html、xml、json、jsonp
    (3)用例调试: log、proxy
    RestAssured.proxy("127.0.0.1",7778);使用该全局变量,可以所有接口都走代理
    (4)从结果中导出:多个api存在依赖关系时,通过excract()导出接口的response取出结果值。传递给后面的api请求

  • 添加断言
    基础断言:
    (1)常规断言assertXXX
    (1.1)extract导出到response
    (1.2)从response中取数据进行单独的assertEuqal断言
    (1.3)Hamcrest断言assertThat:assertThat(x, is(3))
    (2)restassured断言 then().xxx
    (2.1)body断言: XmlPath、JsonPath(非标准)、HtmlPath
    (2.2)结合Hamcrest断言的matcher
    body断言:
    GPath shopping.category.item[0].name store.book[-1].category
    shopping.category.item.size()
    **.find { it.name == 'Chocolate' }.price

  • 调试
    .log().all()

  1. 测试用例基本管理
  • suite体系
    class = suite
    method = testcase
    执行顺序
    ❖同一suite下的用例执行是有顺序的
    ❖@FixMethodOrder(MethodSorters.NAME_ASCENDING)
    ❖@beforeClass @afterClass
    ❖@before @after
    BaseSuite: 所有用例都默认继承, 提供默认的初始化
    产品线Suite: 产品线定制

  • class与method的执行顺序控制
    ❖@BeforeClass setUpClass
    ❖@Before setUp
    ❖@Test test1()
    ❖@After tearDown
    ❖@Before setUp
    ❖@Test test2()
    ❖@After tearDown
    ❖@AfterClass tearDownClass

  • 测试用例分组

  • 数据驱动

五、接口测试的运行维护

  1. jenkins执行测试用例
  • mvn 命令运行case
    mvn test -Dtest=类名(测试集) //运行制定测试集下的case
    mvn test //运行src/test下类名带有Test的所有case`

  • 搭建自己的jenkins
    容器技术docker入门
    Jenkins基础
    使用docker搭建Jenkins:docker run -p 8080:8080 -p 50000:50000 jenkins,使用127.0.0.1:8080可以访问

  • git上创建项目
    服务器上的 Git - 生成 SSH 公钥
    将公钥复制到github上setting-SSH key
    github上新建一个仓库RestAssuredDemo,将要跑的case同步:

echo "# RestAssuredDemo" >> README.md
git init
git add README.md
git add src/
git commit -m "first commit"
git remote add origin https://github.com/leitianxiao/RestAssuredDemo.git
git push -u origin master
  • jenkins创建job
    源码管理使用git插件,填入github项目地址
    构建选项-执行shell:
ls
which java 
which mvn 
mvn test  //运行case
  • result展示
    构建后的操作:Publish JUint test result reports
    测试报告:target/*/.xml

六、接口的监控分析

七、练习

  • 用nc或talent手动发送http协议包,模拟访问baidu的/index.html,了解http协议过程
  • 用charles在Android上抓雪球app的包
  • 对json\xml断言
  • 上个接口的响应中的某个参数用在下个接口中

你可能感兴趣的:(接口测试学习大纲)