软件测试52讲
茹炳晟
eBay中国研发中心,测试基础架构技术主管
立即订阅
13425 人已学习
课程目录
已完结 63 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从“小工”到“专家”,我的软件测试修炼之道
免费
测试基础知识篇 (11讲)
01 | 你真的懂测试吗?从“用户登录”测试谈起
02 | 如何设计一个“好的”测试用例?
03 | 什么是单元测试?如何做好单元测试?
04 | 为什么要做自动化测试?什么样的项目适合做自动化测试?
05 | 你知道软件开发各阶段都有哪些自动化测试技术吗?
06 | 你真的懂测试覆盖率吗?
07 | 如何高效填写软件缺陷报告?
08 | 以终为始,如何才能做好测试计划?
09 | 软件测试工程师的核心竞争力是什么?
10 | 软件测试工程师需要掌握的非测试知识有哪些?
11 | 互联网产品的测试策略应该如何设计?
GUI自动化测试篇 (10讲)
12 | 从0到1:你的第一个GUI自动化测试
13 | 效率为王:脚本与数据的解耦 + Page Object模型
14 | 更接近业务的抽象:让自动化测试脚本更好地描述业务
15 | 过不了的坎:聊聊GUI自动化过程中的测试数据
16 | 脑洞大开:GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)?
17 | 精益求精:聊聊提高GUI测试稳定性的关键技术
18 | 眼前一亮:带你玩转GUI自动化的测试报告
19 | 真实的战场:如何在大型项目中设计GUI自动化测试策略
20 | 与时俱进:浅谈移动应用测试方法与思路
21 | 移动测试神器:带你玩转Appium
API自动化测试篇 (3讲)
22 | 从0到1:API测试怎么做?常用API测试工具简介
23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
代码测试篇 (3讲)
25 | 不破不立:掌握代码级测试的基本理念与方法
26 | 深入浅出之静态测试方法
27 | 深入浅出之动态测试方法
性能测试篇 (7讲)
28 | 带你一起解读不同视角的软件性能与性能指标
29 | 聊聊性能测试的基本方法与应用领域
30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
31 | 工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介
32 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)
33 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
34 | 站在巨人的肩膀:企业级实际性能测试案例与经验分享
测试数据准备篇 (4讲)
35 | 如何准备测试数据?
36 | 浅谈测试数据的痛点
37 | 测试数据的“银弹”- 统一测试数据平台(上)
38 | 测试数据的“银弹”- 统一测试数据平台(下)
测试基础架构篇 (4讲)
39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
42 | 实战:大型全球化电商的测试基础架构设计
测试新技术篇 (5讲)
43 | 发挥人的潜能:探索式测试
44 | 测试先行:测试驱动开发(TDD)
45 | 打蛇打七寸:精准测试
46 | 安全第一:渗透测试
47 | 用机器设计测试用例:基于模型的测试
测试人员的互联网架构核心知识篇 (5讲)
48 | 优秀的测试工程师为什么要懂大型网站的架构设计?
49 | 深入浅出网站高性能架构设计
50 | 深入浅出网站高可用架构设计
51 | 深入浅出网站伸缩性架构设计
52 | 深入浅出网站可扩展性架构设计
特别放送篇 (8讲)
测试专栏特别放送 | 答疑解惑第一期
测试专栏特别放送 | 答疑解惑第二期
测试专栏特别放送 | 答疑解惑第三期
测试专栏特别放送 | 答疑解惑第四期
测试专栏特别放送 | 答疑解惑第五期
测试专栏特别放送 | 答疑解惑第六期
测试专栏特别放送 | 答疑解惑第七期
测试专栏特别放送 | 浅谈全链路压测
测一测 (1讲)
测一测 | 这些软件测试题目,你都掌握了吗?
结束语 (1讲)
结束语 | 不是结束,而是开始
软件测试52讲
登录|注册

24 | 紧跟时代步伐:微服务模式下API测试要怎么做?

茹炳晟 2018-08-22
你好,我是茹炳晟,今天我分享的主题是“紧跟时代步伐:微服务模式下 API 测试要怎么做?”。
通过一个的 Restful API 实例,我介绍了 cURL 和 Postman 工具的基本用法,这样我们对 API 测试有了一个感性认识;在此基础上,我介绍了 API 自动化测试框架发展的来龙去脉,借此我们对 API 测试框架的理解又更深入了一层。
今天,我将更进一步,带你去了解当下最热门的技术领域的 API 测试,即微服务模式下的 API 测试。微服务架构下,API 测试的最大挑战来自于庞大的测试用例数量,以及微服务之间的相互耦合。所以,我今天分享这个主题的目的就是,帮你理解这两个问题的本质,以及如何基于消费者契约的方法来应对这两个难题。
而为了掌握微服务模式下的 API 测试,你需要先了解微服务架构(Microservice Architecture)的特点、测试挑战;而要了解微服务架构,你又需要先了解一些单体架构(Monolithic Architecture)的知识。所以,今天的话题我将逐层展开,目的就是希望你可以真正理解,并快速掌握微服务模式下的 API 测试。

单体架构(Monolithic Architecture)

单体架构是早期的架构模式,并且存在了很长时间。单体架构是将所有的业务场景的表示层、业务逻辑层和数据访问层放在同一个工程中,最终经过编译、打包,并部署在服务器上。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件测试52讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(22)

  • 胡峣
    api gateway一般是作为整个微服务的入口,做一些权限校验,路由功能,服务间的内部调用不走api gateway。spring cloud的例子 zuul作为api gateway,load balancer是ribbon。要去抓取调用记录在被测服务记录访问日志。这个作为audit log本来就是要记录的。我们的契约测试是调用放手写在被调用服务,拥有者是调用方。以此来确保api的兼容。
    2018-08-22
    10
  • 小明同学
    你好,我想问下接口测试下这个代码覆盖率是怎么统计的?

    作者回复: 和代码级覆盖率统计使用一样的方法和工具,比如jacoco

    2018-08-22
    5
  • sylan215
    1.微服务架构、单体架构、消费者契约,学到几个新的概念,涨姿势了;

    2.对微服务架构,之前确实没有深入了解,我知道的是现在的 App 多采用插件的方式进行功能更新和维护,我们这边的客户端也是类似的,这种插件模式感觉是介入微服务和单体架构之间的,就是整体上还是一个整体,但是可以在整体的各个位置进行功能的插入并独立维护,既达到了整体的一致性,同时也满足了可扩展性、可维护下、少依赖性,不知道和这个微服务架构是不是一回事;

    3.基于消费者契约的测试,我有一个疑问,消费者契约基于的是用户的常规操作,这部分的用例是 P1 级别必须覆盖的,但是对于某些环境异常导致的问题,可以就不会覆盖到,因为属于非用户操作,比如我们 windows 系统的某个 API 的入参是一个指针,而这个指针是上一个函数的返回值,理论上,这个返回的指针肯定有效,所以开发在接收入参后也没有校验参数的合法性,但是因为环境异常,导致就是出现了空指针,那么从消费者契约角度看,用例没问题,从代码覆盖率角度看,也没问题,但实际上确实出现了问题,所以,在有限的时间内我们当然会按优先级执行用例,但是不是还是需要从功能测试角度保证用例的覆盖率?如果我有理解不正确的地方,请批评指正。

    以上,欢迎沟通交流,公众号「sylan215」
    2018-08-22
    4
  • wanj
    怎么才能打印出所有的日志,需要先进行手工测试所有功能吗?
    2018-10-28
    2
  • 假装乐
    期待文末问题的答案

    作者回复: 答案是需要两部分结合起来,老的功能走契约测试,新的功能和api继续沿用老的方法

    2018-08-22
    2
  • 楚耳
    api gateway 并不是每个服务间都存在的,只有面向客户端的服务才会有这一层。内部服务间是不存在在这一层的。所以这种方式去过滤不是很全面

    作者回复: 很好的点,内部调用主要靠splunk来获取

    2018-12-29
    1
  • 图·美克尔
    感觉基于消费者契约这种方式也没有显著降低case的数量啊
    2018-08-29
    1
  • emilymeng
    老师,能详细讲解一下代码覆盖率的测试方法和使用到的工具?

    作者回复: 主要取决于开发代码的语言,如果是java就可以直接使用jacoco

    2018-08-22
    1
  • 三生三世
    很有深度,理解不透
    2018-08-22
    1
  • 倔强的潇洒小姐
    之前经常听Mock,但不是很明白原理,这次算是听明白了,谢谢茹老师的讲解
    2019-08-08
  • 呵喂辉
    你好,想问下,微服务架构中那些实际没有用到的api具体是什么样的功能?能麻烦举个例子么?谢谢
    2019-07-31
  • 楚耳
    老师能讲讲api测试中,用例设计这块吗,到底是只做单接口测试还是也要做用单接口串联起来做场景测试,这两块用例分别要怎么设计?
    2019-06-01
  • 与你相遇
    你好,我这边遇到个问题,就是接口测试的万能脚本,我该如何写,因为在文章中看到,自己又研究了一段时间,但是始终找不到解决的办法,希望你能给我点建议,谢谢。

    2019-04-25
  • 口水窝
    现在待得的公司还是传统的单体架构,没有接触到微服务架构,这篇文章给我打开了一个全新的视角,思路上也有很多。

    作者回复: 感谢支持

    2019-04-12
  • roychris
    我想请教下,在单体架构下测试API,是如何统计代码覆盖率问题的?谢谢!
    2019-03-18
  • johnny
    这篇文章也有助于理解文中提到的的实例代码。
    http://www.bubuko.com/infodetail-2317705.html

    作者回复: 感谢分享

    2019-01-23
  • 小老鼠
    比如新版本中,有个ServiceC来调用serviceT,且ServiceA、ServiceB发生了变更是不是重新需要建立契约。
    2018-11-07
  • oops
    问题1:被调用的服务t,采用mock的方式,那怎么被测试呢?问题2:微服务之间采用的是thrift这类接口,有好的测试思路吗?
    2018-10-30
  • 颜瑞
    在大部分微服务的接口维护中,推荐使用swagger工具维护接口,贵司有维护接口文档么?是用什么工具呢?
    另外一个关键点mock service,接口json文档的来源是开发维护的还是从API Gateway抽取的?mock service是用什么工具启动的呢?
    2018-10-24
  • 颜瑞
    从服务消费者角度,过滤不使用的API测试场景,有两个方面:一是过滤不使用的API,二是过滤不使用的API输入参数组合。过滤不使用的API比较简单,对于第二个问题,不太理解是怎么通过 API Gateway 的日志分析将各种输入参数组合按照等价类的方式抽象的。
    2018-10-24
收起评论
22
返回
顶部