首页 > 其他分享 >接口测试用例设计的关键步骤与技巧解析

接口测试用例设计的关键步骤与技巧解析

时间:2024-05-22 10:52:04浏览次数:22  
标签:关键步骤 请求 Redis 接口 测试用例 参数 测试

简介

接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特性相关的测试用例。

接口测试流程

接口测试的质量目标

  • 功能
  • 性能
  • 安全
  • 兼容
  • 健壮性
  • 高可用性(中间件)

协议分析方法

  • 网络监听:
    • TcpDump
    • WireShark
  • 代理 Proxy
    • 推荐工具:手工测试 Charles [全平台]、安全测试 BurpSuite [全平台 Java]
    • 自动化测试:mitmproxy
    • 其他代理:Fiddler [仅 Windows]、AnyProxy [全平台]

接口测试用例的设计方法

正式设计接口测试用例之前,需要梳理一下接口测试的思路:

基本功能流程测试

在基本功能流程测试方面,首先需要先执行冒烟测试,把最基本的功能流程走通。冒烟测试决定提测是否成功,如果通过冒烟测试,才会进入到详细的测试阶段。如果冒烟测试不通过,需要打回给开发,开发修改之后重新提测。冒烟测试通过之后,进行正常流程覆盖测试,粒度会比冒烟测试更细一些,覆盖一些分支业务逻辑。

基于输入域的测试

因为发出接口请求需要携带请求参数,所以肯定会涉及到关于请求参数的各种用例的设计。关于请求参数的用例设计可以考虑下面这些方面。

  • 边界值测试

对于有范围要求的参数,需要综合等价类和边界值的方法设计测试用例。边界值选择上点和离点即可,要覆盖到有效等价类和无效等价类。

  • 特殊字符校验

对于很多请求参数会要求不能包含特殊字符,对于有这类要求的字段,需要单独设计包含特殊字符的测试用例来做验证。

  • 参数类型校验

有一些参数还会对于传参值的类型有要求,比如只能包含英文数字,或者只能包含整数类型等。对于这种对类型有要求的字段,也要单独设计测试用例,设计一些反向用例来做验证。

  • 必选参数校验

在接口中有必填的参数,也有选填的参数。对于每一个必填参数,都要设计一条不传的用例来验证必填性。

  • 组合参数校验

对于有选填参数的接口来说,需要对于各种参数的不同组合场景进行验证。比如只传必填参数,或者必填参数和不同数量的选填参数做组合的场景,可以使用判定表的方法进行设计。

  • 排重逻辑

如果有的字段要求不能重复,那么需要对它进行排重逻辑的覆盖,看看重复请求相同的参数,服务端的处理逻辑是不是正确。

  • 接口幂等性

幂等是指任意多次执行所产生的影响均与一次执行的影响相同。保证接口的幂等性是非常重要的,尤其是在涉及资金的系统,比如如银行、电商系统等。例如用户重复提交请求,或者网络重发,系统重试等场景,都需要设计测试用例来保证接口的幂等性。接口的幂等测试,需要多次发送同一参数的请求,查看服务端响应是否只有一次是成功的。

线程安全测试

线程安全测试包含了并发测试、分布式测试。

分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。

分布式的实现有两种形式:

  • 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务。
  • 垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上。

相对于分布式来讲,高并发在解决的问题上会集中一些,它的重点是测试同时有多少量,比如在线直播服务同时有上万人观看。

高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段,比如使用缓存系统,还可以使用多线程技术将一台服务器的服务能力最大化。

对于并发场景,需要测试多个相同参数的请求,只有一条请求成功,其他请求失败。

对于分布式测试,则需要测试在分布式环境中并发相同参数的请求,只有一条请求成功,其他请求失败。

故障注入

故障注入测试需要测试人员故意制造故障的场景,来保证系统的健壮性。

如果产品中用到了 Redis,就需要对于 Redis 做一些故障降级测试。Redis 一般会放在数据库前面,用来做高速缓存。

Redis 故障注入需要开发配合清空 Redis 数据,发请求,击穿 Redis,从 DB 中获取正常的数据,并能回写到 Redis 中。然后开发配合启动 Redis 数据恢复功能,测试可以从 Redis 中获取正确的数据。还需要开发配合制造 Redis 崩溃场景,发请求,测试是否降级从 DB 中获取到正常的数据。

除了 Redis 之外,还需要进行服务故障转移测试。比如数据库故障测试与接口故障测试。

数据库故障测试,开发配合制造数据库数据丢失场景,启动数据恢复策略,测试规定时间段内数据是否可以恢复;开发配合制造数据库崩溃场景,测试数据库多活策略是否启动,保证功能不受影响。

接口故障测试,开发配合接口服务重启,测试集群负载是否自动重启实例,所有请求无异常;开发配合制造集群崩溃场景,测试是否返回对应的错误信息,内部服务是否有重试机制。

接口测试用例要素

  • 模块
  • 测试标题
  • 优先级
  • 前置条件
  • 请求方法
  • 请求参数
  • 预期结果
  • 实际结果

总结

  • 接口测试的质量目标
  • 协议分析方法
  • 接口测试用例设计思路
  • 接口测试用例要素

标签:关键步骤,请求,Redis,接口,测试用例,参数,测试
From: https://www.cnblogs.com/hogwarts/p/18205756

相关文章

  • 钉钉开放接口-如何发起带有附件的审批单
    importjava.io.*;importjava.net.HttpURLConnection;importjava.net.URL;importjava.util.HashMap;importjava.util.Map;publicclassfujian{publicstaticvoidmain(Stringargs[])throwsException{//从接口返回信息中拿到resourceUrls......
  • 节省时间,使用企业联系方式API接口!
     在现代高速发展的商业环境下,了解其他企业的联系方式是非常重要的。你可能需要与其他企业进行商业合作,或者需要获取其他企业的相关信息。而传统的方式需要耗费大量时间和精力,因此我们为您推荐使用我们的企业联系方式API接口,帮助您快速获取企业联系方式信息。我们的API接口可以......
  • 全国霸王餐API接口,饿了么霸王餐API接口 免费对接中
    接口地址:https://open.wikeyun.cn/#/apiDocument/32/document/550 --- 支持全国50+城市,美团、饿了么都支持。联合跑单 store_idint是1店铺IDmobilestring是 手机号latstring是 用户位置坐标纬度lngstring是......
  • 关于接口协议,你必须要知道这些!
    简介服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用HTTP协议进行传递,文件传输使用FTP,邮件传递使用SMTP。上述的三种类型的协议都处于网络模型中的应用层。除了应用层的常用协议之外,对于传输层的TCP、UDP协议,以及......
  • 黑盒测试方法设计的测试用例
    黑盒测试方法设计的测试用例1.用户管理模块测试登录功能:输入正确的用户名和密码,能够成功登录,并跳转到主页面;输入错误的用户名或密码,不能登录成功,并提示错误信息;测试注册功能:输入未注册的用户名和密码,能够成功注册新用户,并跳转到登录页面;输入已经注册过的用户名,不能注册成功,并提......
  • Unity的UnityEngine.EventSystems中的接口
    一、IPointerDownHandler,IPointerUpHandler,IPointerClickHandler,IPointerEnterHandler,IPointerExitHandlerpublicvoidOnPointerClick(PointerEventDataeventData){Debug.Log("OnPointerClick,鼠标点击,在点击之后抬起时响应");}publicvoidOnP......
  • 更高效的申请域名证书:对接阿里云域名接口【文字版】
    来此加密已经支持对接阿里云的域名接口,直接调用接口进行域名验证,从而更便捷的申请证书。一、操作步骤阿里云的接口信息需要包含:AccessKeyID和AccessKeySecret,采用如下方法添加。登录阿里云后台,管理的地址为:ram.console.aliyun.com。1、创建权限策略。服务:云解析DNS。操作包......
  • Liunx部署NetCore,接口获取mysql本地数据时报:The SSL connection could not be establ
    今天将 NETCore程序发布到一台新的服务器,程序中有https请求第三方的Api,但是报了如下的错误:TheSSLconnectioncouldnotbeestablished,seeinnerexception解决办法下面命令查询openssl的路径opensslversion-a然后将CentOS默认的opensslCA证书拷贝到OPENSSLD......
  • VUE,HbuilderX开发H5页面,配置调试,部署以及JWT,Token。调用本机netcore接口
    花了一周时间,测试了各种方式。对于VUE开发H5页面,然后部署到Nginx服务。再调用本地的HTTPS接口。1、本地开发及使用IE或Chrome进行开发调试,并调用本地接口同步开发。本地Netcore,开发按原有方式进行。Hbuilderx,开发并调用本地接口。设置时,不要使用Https进行。直接用http即可。Hbuild......
  • Liunx下通过netcore接口生成前端图片的问题。
    用netcore来生成前端微信Native支付的二维码。1、首先CentOS7.0要安装libgdiplus,命令如下:yuminstalllibgdiplus-devel,然后重启netcore服务。//这个地方要注意,网上有不少例子的下载命令是错的,有的时候安装不上。2、Vs代码使用QRCoder库,代码如下publicstaticMemoryStream......