接口测试注意点

简介: 接口测试作为集成测试的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是 功能测试无法覆盖的,所以接口测试是非常必要的。
 接口测试作为集成测试的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是 功能测试无法覆盖的,所以接口测试是非常必要的。

   接口测试分为两种,一种是webservice接口,走soap协议通过http传输,请求报文和返回报文都是xml格式的,测试时通过工具soapUI进行测试。使用情况比较少;另一种http api接口,走http传输协议,通过路径来区分调用的方法,最常用的是get和post请求。
  上面说过,get和post请求是通过路径来区分的,get请求的请求参数都是写在URL里的,格式为:http://url?param1&param2。而post的请求一般都是写在body里的,可能是key-value格式,或者json串格式,也可能是上传一个文件。。。那么问题来了,get请求和post请求的区别在哪里呢?我们 百度时,大多数的答案是这样的:
  1、get请求可以在 浏览器中请求到,post请求的测试需要借助工具
  2、get请求使用url和cookie传参,post的数据放在body中
  3、post比get更安全,因为传递的参数在url上是看不到的
  4、get请求的url会有限制,而post请求的数据可以非常大
  5、一般get请求是来获取数据,post请求是传递数据的
  其实,对于现在飞速发展的 互联网来说,上面的说法已经不严谨了。首先,post请求的参数也可以写在url里,但是这种情况不多见;其次表面上看起来,post利用body传参,比get的url传参安全,但其实只要用抓包工具(fiddler,Charles等),post的参数也是一览无余;再次,现在的浏览器非常强大,可以输入支持很长的URL,所以也不再有限制一说了。这么说来,种种区别只有最后一条是最根本的了。
   怎么来测试接口呢?根据什么来测呢?这就需要开发提供的接口文档了,接口文档和功能测试的需求说明书的功能是一样的。包括:接口说明、调用的url,请求方式(get or post),请求参数、参数类型、请求参数说明,返回结果说明。有了接口文档后,我们就可以设计用例了,一般接口测试的用例分为以下几种:
  1、通过性验证,说白了就是传递正确的参数,是否返回正常的结果
  2、参数组合,因为参数有必传和非必传,参数的类型和长度,以及传递时可能业务上的一些限制,所以在设计用例时,就要排列组合这些情况,保证所有情况都能覆盖到
  3、接口的安全性,这个又分为几种情况:
  1)绕过验证,比如提交订单时,在传递商品价格参数时,修改商品价格,就要看后端有没有验证了。或者我支付时,抓个包将订单金额一改,如果能以我改后的金额支付,那这个借口就有问题了。
  2)绕过身份验证,就是某个功能只有有特殊权限的用户才能操作,那我传递一个普通的用户,是不是也能操作呢
  3)参数是否加密,这个关系到一些账户的安全,比如我们在登录一些网站时,它要将我们的登录信息进行加密,如果不加密我们的信息就会暴露,危害性极大。
  4) 密码安全规则,设置密码时复杂程度的校验。
  4、根据业务逻辑来设计用例
   用例设计完了,用什么来测试接口呢?我们可以借助一些工具,比如postman和jmeter。postman使用比较简单,可以在列表中选择请求方式,在输入框中输入URL,如果是get请求,直接点击send就可以看返回结果了。

  如果是post请求,会涉及到几种参数的上传方式和添加请求头、权限验证还有添加cookie等操作。在标红的地方基本都能完成。

  还有一种测试接口的工具是jmeter,用途比较广泛,不但能测接口的功能,还能对接口进行 压力测试。自带的一些功能,比如参数化、数据关联更符合 自动化测试的思想。而且还能操作 数据库。在jmeter中需要创建线程组,线程组的循环次数和线程数决定了并发量,也可以设置持续时间或者启动结束时间来决定请求的运行时间。如图:

  然后在线程组下面添加http请求,将接口的url、路径、参数、请求方法写好,再添加察看结果树来看请求返回结果,如果压测接口的化,需要添加聚合报告。

  在jmeter中post请求添加请求头、cookie或者授权等,都需要添加相应的功能,比如标红部分,操作起来也比较简单。

  使用jemeter时,可以对传递的参数进行参数化,有个函数生成器这样的小工具,举一个小小的例子,比如你想要生成一个随机数,只有打开函数生成器,输入最小值和最大值,再点击生成,就可以使用这个函数了,创建一个用户定义的变量,起一个变量名,变量值输入生成的函数,这样每次用到的时候,写成$(variable)就可以了。
  jmeter关联的意思是,上一个接口的返回结果,作为下一个接口的请求参数,很多场景都会用到,如果压测这种场景的接口,关联是非常好用的。

目录
相关文章
|
26天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
55 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
69 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
255 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
267 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
54 5
|
2月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
41 0
|
4月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
5月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
226 5
Postman 接口测试配置 Pre-request Script
|
4月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
4月前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决