• 12
  • 13
分享
  • 接口测试(详细文档)——软件测试圈
  • 恬恬圈 2021-04-07 10:04:35 字数 2958 阅读 2461 收藏 13

接口测试

接口测试常用工具:postman,jmeter (现在主流的两个测试接口工具)

接口分类 :

把接口分为两类:程序接口和协议接口。

  1. 程序接口,也可以看作是程序模块接口,具体到程序中一般就是提供了输入输出的类、方法或函数。 对于程序接口的测试,一般需要使用与开发程序接口相同的编程语言,通过不同的传入不同的参数,来验证 程序接口的功能。

  2. 协议接口,一般指系统通过不同的协议来提供的接口,例如 HTTP/SOAP 协议等。这种类型接口对 底层代码做了封装,通过协议的方式对外提供调用。因为不涉及到程序层面,所以,不受编程语言的限制; 我们可以通过其它编程语言或工具对其进行测试。

接口分类 :

接口大体可以分成三类:

  1. 系统与系统之间的:系统与系统之间的接口,这里可以是公司内部不同系统之间的接口调用,也可以是不同公司之间系统接口的调用。而对于公司的其它系统,如社区网站和微信活动可以调用这些接口快速的实现相应的功能。而对于后者来说,如微信,微博所提供的第三方登录接口,如果你开发的系统不想自建用户体系,完全可以调用这些接口来实现用户的登录。

  2. 下层服务对上层服务的接口应用层,从认知上你可以看成是系统所提供的 UI 层功能。对于 Web系统来说,你可以认为是浏览器页面上所提供的功能,登录、注册、查询、删除等。Service 层,可以理解为服务器所提供数据和逻辑的处理。DB 层,(Data Base) 数据库主要用来存放数据,例如用户的个人信息,商品的信息等。

  3. 系统内,服务与服务之间的调用 假设系统开发一个用户查询接口,输入用户名,返回用户信息(性别、年龄、手机号、邮箱地址等),如果用户不存在则返回NULL;现在需要新开发一个用户抽奖的接口,该接口需要用户名和抽奖id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回NULL,那么投资接口就可以直接返回用户不存在了。在这个例子中,用户抽奖接口就调用的用户查询接口。

接口测试的意义:

  1. 更早地发现问题: 测试应该更早地介入到项目开发中,因为越早地发现bug,修复的成本越低。然而功能测试必须等到系统提供可测试的界面才能对系统进行测试。而接口测试可以在功能界面开发出来之前对系统进行测试。系统接口是上层功能的基础,接口测试可以更早更低成本地发现和解决问题。

  2. 缩短产品研发周期: 对于产品研发周期来说,如果将所有测试工作都集中在功能测试阶段,那么测试的问题和修复周期就会变长。因为测试可以更早地介入产品开发中,所以,可以有效地控制功能阶段bug的数量;从而有效地缩短产品开发周期。

  3. 发现更底层的问题: 系统的有些底层逻辑是在UI功能测试中不太容易触发的,那么这些逻辑可能会存在问题。接口测试可以更容易更全面的测试到这些底层的逻辑。

  4. 检查服务器的异常处理能力: 我们通常把前端的验证称为弱验证,因为它很容易被绕过,这个时候如果只站在功能的层面进行测试,就很难发现一些安全的问题。

接口测试的原理:

通过测试程序或工具模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request→response)

接口测试的流程接口测试的流程:

类似于功能测试,需求讨论→评审需求→确定需求→产出接口定义→根据需求文档及接口定义设计测试用例(测试用例主要从业务场景,功能以及异常测试几个方面考虑)→评审用例→执行测试

  1. 接口测试的流程其实和功能测试的流程类似,因为接口测试依赖的主要对象也是需求说明书,所以,最初的流程就是参与需求讨论,评审需求。

  2. 需求确定以后,开发会根据需求进行接口设计,会产出接口定义,在开发设计过程中,有能力的话,可以给出一些针对设计的建议,提高可测性,针对需求及设计,进行测试计划,测试设计,然后还需要和配管确定测试环境相关的事情。

  3. 在开发完成接口定义之后,就根据需求文档及接口定义进行测试用例设计,测试用例设计主要从业务场景,功能,以及异常测试几个方面考虑。

  4. 测试用例设计完成后,针对测试用例进行评审,然后,如果开发代码部分可测时,即可进入测试了,因为是部分可测,可能会使用到mock方法。

  5. 已有测试代码时,就要进行测试代码的持续集成了,我们是使用hudson来进行持续集成的在项目结束后,会对每个项目进行总结。

接口测试数据准备:

接口测试的数据准备,可以从下面几个方面去考虑:

  1. 如果是只测试一次的接口,可以使用硬编码的方式准备测试数据,在写测试代码的时候,使用到什么数据就写什么数据,为了避免数据重复,可能比较多的会用到随机字符或随机数

  2. 可以直接通过调用其他API的方式准备测试数据,这种情况在测试最上层服务的时候比较有用,比如测试团购购买服务,就需要准备要购买的团购数据,购买团购的用户数据,这个时候,可以直接调用生产团购的api和生成用户的api直接生成测试数据

  3. 使用excel或xml准备测试数据,这种准备测试数据的方式,主要针对对象数据的准备,比如可以将一条团购数据对应excel中的一条数据,因为一般开发都会使用pojo映射,而在准备测试数据的时候,这些pojo对象属性的设置往往是重复和大工作量的,用excel或XML方式准备,则可以减少在代码当中重复去准备这些数据。

  4. 也可以使用工具方法的形式去准备测试数据,通过在代码中写工具方法去实现数据生成,而在测试代码中调用工具方法去得到所需数据。

接口测试的着眼点:

  1. 检查接口返回的数据是否与预期的结果一致。

  2. 检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?

  3. 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

  4. 接口的性能,接口处理数据的时间也是测试的一个方面。牵扯到内部就是算法与代码的优化。

  5. 接口的安全性,如果是外部接口的话,这点尤为重要。

接口测试用例设计:

接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,因为接口是需要满足需求的,而接口测试所依赖的也是需求说明书,但是,因为接口测试毕竟是通过代码去测试代码,所以,为了保证覆盖率,可能会使用到单元测试的方法,具体的测试用例设计如下:输入参数测试:

  1. 针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法,输入参数不合法,输入参数为空,输入参数为null,输入参数超长;

  2. 功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性;

  3. 逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;

  4. 异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。

作者:天空之城下的乌托邦

原文链接:https://blog.csdn.net/weixin_42622771/article/details/81002620


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 偶尔用到这个指令,每次都要搜,索性自己记个笔记直接进入主题,首先cd进入tomcat的bin文件夹下,然后可以尝试以下三种启动方式:第一种(当前会话启动): ./startup.sh效果:然后tomcat就在后台启动了,我们还可以在当前会话中继续输入其它指令,比如ps -ef | grep 'tomcat'来查看我们刚才启动的tomcat服务:可以看到它的进程id是6951,我们可以使用如下指令将其关闭kill 6951这种启动方式是直接后台启动,但不是让tomcat一直就在后台跑了,当我们关闭当前连接linux的会话...
            15 14 3824
            分享
          •   背景介绍  作为一个测试同学,提交bug是个绕不过去的坎(请不要杠哈,我真不太相信有测试同学从来未提交过bug)。  但是每次提交bug,少则几项多则几十项,填得有点头大有没有?即使有模板,根据模板再修改,手动填的时候也经常会漏掉一些项有没有?  所以为了我们这些懒人的福利,自动化提交bug就应运而生了。  测试需求分析  此自动化需求主要涉及到python/pytest,且需要jira API文档(下文有jira接口文档链接)。  测试流程  自动化脚本实现  bug模板及提交jira手工步骤  提完bug的bug模板参考下图:  创建bug时,参考下图,可以看见目前统一模板有如下10个...
            14 14 2076
            分享
          • 一、接口自动化测试流程1、需求分析;请求(url、方法、数据)响应(响应数据、状态码)2、挑选需要做自动化接口(时间、人员、接口复杂度);3、设计自动化测试用例(如果功能阶段设计过用例,直接拿过来使用即可);4、搭建自动化测试环境(实现自动化使用的语言 如:(python、pycharm));5、设计自动化执行框架(报告、参数化、用例执行框架);6、编写代码;7、执行用例(unittest、pytest);8、生成测试报告(htmltextrunn er\allure)。二、接口清单整理登录接口请求登陆接口请求请求url:http://ttapi.research.itcast.cn/app/...
            0 0 1411
            分享
          •   背景  Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。而对于爬虫来说,使用Selenium操控浏览器来爬取网上的数据那么肯定是爬虫中的杀手武器。这里,我将介绍selenium+谷歌浏览器的一般使用。  需求  在平常的爬虫开发中,有时候网页是一堆js堆起来的代码,涉及很多异步计算,如果是普通的http控制台请求,那么得到的源文件是一堆js,需要自己在去组装数据,很费力;但是采用Selenium+ChromeDriver可以达到所见即所得的完美效果。  实现方式  项目结构:为了方便使用,用的winform程序,附nug...
            15 14 1589
            分享
          •   软件测试相较于前几年,其实已经产生了非常大的变化。早期谈到软件测试,大家最先映入脑海的就是“IT打杂工”,干着没啥技术性可言的手工点点点测试,拿着最底层互联网打工人的3-4K薪水,应该说在2014-2015年以前,大部分“测试员”都抬不起头。直到近些年,互联网的发展以倍速递增,如今的互联网领域已经不再是BAT三家独大,而是成了"BATJ+TMD"多分天下的状态。除此之外一些新兴电商、娱乐、生活服务、出行等领域也涌现了大量优秀的互联网企业。  互联网的这种快速发展,也迅速带动了高阶自动化软件测试领域的发展。随之而来的就是早期的功能测试人员被大量淘汰,测试领域目前对自动化测...
            0 0 949
            分享
      • 51testing软件测试圈微信