接口测试学习大纲

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

一、接口测试的价值

分层测试保证质量,变更发生时,及时发现。
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断言
  • 上个接口的响应中的某个参数用在下个接口中
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容