理想的情况很难发生——接口测试方法论(09)

发表于:2022-8-16 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈磊    来源:51Testing软件测试网原创

  3.3.2  理想的情况很难发生
  上面所说的是理想的情况,但现实情况往往并不总是让人满意的,大家肯定遇到过如下3种情况。
  仅仅因为产品经理的一句话需求,研发工程师便开始任意发挥,“所见系统即需求”的情况普遍存在,更别提后续的单元测试和接口文档了。
  研发工程师从来不写单元测试脚本,提测项目的质量无法保障,接口文档更无从谈起,不知道如何开始完成接口测试
  拿到提测项目后,从部署测试环境到开始测试,一直都摸着石头前进。由于接口测试没有充分的输入条件,因此只能从UI层开始测试,结果导致交付质量大打折扣。
  正如墨菲定律所讲的那样——“可能发生的事就一定会发生”,上面所列的接口测试难以推行的情况,大家在实际工作中肯定会碰到。那么,项目如果没有接口文档,难道就无法开始接口测试吗?当然不是。
  测试工程师要做的工作在本质上是由表及里的,如果每次工作时都处在与终端用户使用行为几乎一致的流程上,那么只能说明您还不算是一名合格的测试工程师。其实,无论研发工程师提供的输入项是否包含接口文档,我们都可以通过一些技术手段和工作方法,完成接口测试必需的输入项接口文档的创建。
  3.3.3  开始第一个接口测试
  接口测试如何开始呢?下面我们将通过完成一项任务,讲解如何开始第一个接口测试。在拿到SUT环境时,首先要进行的就是接口测试,这是因为单元测试不是由测试工程师完成的,而是由研发工程师编写测试脚本并由持续集成系统自动完成的。如果研发工程师没有提供任何有价值的接口文档,那么为了开始接口测试,我们可以通过循环执行工具辅助、分析问题、询问解惑3个步骤来完成,如图3-17所示。
图3-17  循环执行工具辅助、分析问题、询问解惑3个步骤
  我们可以借助一些工具完成接口分析并截获一些接口信息,然后通过分析接口的访问方式、参数等信息,整理出一些问题并与研发工程师沟通这些问题,从而将一些不知道的参数的含义、取值范围等问题弄清楚。
  通过循环执行工具辅助、分析问题、询问解惑这3个步骤,我们可以实现对SUT接口信息的完善和维护,并最终得到一份完整的、开展接口测试所需的输入—接口文档。接下来,我们结合一个案例,看看这3个步骤具体如何执行。
  1.工具辅助
  当第一次拿到一个被测项目时,无论它是一个App服务还是一个Web服务,我们都可以通过一些HTTP代理完成接口分析。在这里,您可以选择我们之前介绍过的任意一款抓包工具。
  2.分析问题
  为了解决问题,把问题分析透是十分关键的。下面使用Fiddler分析极客时间的Web端首页。为此,首先启动Fiddler,然后使用浏览器访问极客时间的Web端首页,我们可以看到,Fiddler截获了很多消息,如图3-18所示,在界面右侧的Inspectors标签页下,我们可以看到请求和响应的具体内容。
图3-18  使用Fiddler截获极客时间的Web端首页
  为了方便大家查看,代码清单3-3展示了Request消息正文。
代码清单3-3
  从Request消息正文中我们可以获知,请求的访问方式是POST,访问的URI是https://time.geekbang.org/serv/v1/column/topList。读者可以自行查看Request消息正文中各个选项的具体内容,这里重点介绍如下几个选项。
  Host:用来指定访问的服务器域名。
  Connection:其值为keep-alive,表示需要持久连接。
  Accept:用来指定客户端可以接收的内容类型。
  User-Agent:用来指定请求是从哪里发出去的。
  Sec-Fetch-Site和Sec-Fetch-Mode:用来指定JavaScript中有关跨域的一些设置。
  Accept-Encoding:用来指定Web服务器返回的内容压缩编码类型。
  Accept-Language:用来指定语言。
  注意,我们需要特别关注Cookie的内容,因为Cookie中包含的都是与确认用户身份、鉴定角色权限等有关的重要参数。进行完上述分析后,我们就可以自行绘制接口信息表了,如图3-19所示。
图3-19  接口信息表
  在图3-19所示的接口信息表中,标注了白色背景的部分是此次访问的基本信息;标注了灰色背景的部分是此次访问的头信息,对于这些内容我们已经知晓;标注了黑色背景的部分是Cookie信息,对于这些内容我们尚不知晓。此次访问的body信息是空的。
  下面我们再来看看Response消息正文,返回的消息比较长,这里不再单独列出。但是,通过图3-20我们可以看出,此次返回的正文是一个很长的JSON,里面包含各个专栏或课程的信息。
图3-20  返回的主体是一个很长的JSON
  接口的返回值包含了很多参数,大家有必要关注一下这些参数,因为很多时候,一个接口的返回值有可能是另一个接口的入参,它们起到串联业务逻辑上下文的作用。接口信息表中还包含一些未知的Cookie,由于Cookie中包含了完成接口测试所必须模拟和传递的一些重要信息,因此我们要尽可能完善Cookie,使其成为接口测试的必要输入条件。有了接口信息表之后,我们就可以解惑了。
查看接口测试方法论》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号