当前位置: 首页 > article >正文

【工作记录】接口功能测试总结

 如何对1个接口进行接口测试

一、单接口功能测试

1、接口文档信息

理解接口文档的内容:

  • 请求URL: https://[ip]:[port]/xxxserviceValidation

  • 请求方法: POST

  • 请求参数: serviceCode(必填), servicePsw(必填)

  • 响应参数: status, token

2、编写测试用例

2.1 正常情况测试

用例1: 使用正确的serviceCode和servicePsw

  • 预期结果: status=200, 返回有效token 

# 接口请求
{
"serviceCode":"正确xxxxxx", "servicePsw":"正确xxxxxx",
}# 接口响应
{
"status":"200",
"token":"91a064fe-e17c-4910-90e0-e3d00fda2ca3"
}

2.2 异常情况测试

异常需从以下方面设计测试用例

注意点:多参数注意组合,如两个字段为空验证,需验证都为空、1为空、2为空

  • 必填参数缺失:不传必填参数,如{key:"value"}全部不传

  • 参数值为空:传空字符串,如{key:""}

  • 错误参数值:参数错误,如{key:"###特殊字符"}和类型错误{key:value}

  • 超长参数:例中接口无要求,如文本框要求输入要求8-200限制,{key:"超出200"}

  • 超短参数:例中接口无要求,如文本框要求输入要求8-200限制,{key:"3位123"}

必填参数缺失用例:

serviceCode为空,预期结果: status=300, 无token返回

# 接口请求
{
"servicePsw":"正确xxxxxx",
}# 接口响应
{
"status":"300",
}

参数值为空用例:

serviceCode为空,预期结果: status=300, 无token返回

# 接口请求
{
"serviceCode":"", "servicePsw":"正确xxxxxx",
}# 接口响应
{
"status":"300",}

错误参数值用例:

serviceCode错误,预期结果: status=300, 无token返回

# 接口请求
{
"serviceCode":"错误xxxxxx", "servicePsw":"正确xxxxxx",
}# 接口响应
{
"status":"300",
}

3、测试用例执行

如下图对接口进行测试

执行测试用例:参数appkey为空校验

预期:响应体应返回“请输入appkey”

实际:非法访问,与预期不符合

 

二、注册接口功能测试

1、接口文档信息

参数规则说明:

username:

1、字母、数字组成

2、长度2~20位

3、字母不区分大小写

password:

1、长度8~20位

2、必须含有字母和数字

email:

标准的电子邮件的字符规则

2、编写测试用例

2.1 正常情况测试

输入合法的用户名、密码和邮箱,验证能成功注册并返回正确的userid。

2.2 异常情况测试

1、用户名不符合规则:

输入非字母数字组成的用户名,验证注册失败并返回相应的错误信息。

输入长度小于2位的用户名,验证注册失败并返回相应的错误信息。

输入长度大于20位的用户名,验证注册失败并返回相应的错误信息。

2、密码不符合规则:

输入不包含字母的密码,验证注册失败并返回相应的错误信息。

输入不包含数字的密码,验证注册失败并返回相应的错误信息。

输入长度小于8位的密码,验证注册失败并返回相应的错误信息。

输入长度大于20位的密码,验证注册失败并返回相应的错误信息。

3、邮箱不符合规则:

输入不符合标准email规则的邮箱,验证注册失败并返回相应的错误信息。

4、参数缺失:

分别缺失用户名、密码、邮箱这三个参数中的一个,验证注册失败并返回相应的错误信息。

5、参数为空:

分别为空用户名、密码、邮箱这三个参数中的一个,验证注册失败并返回相应的错误信息。

6、参数类型错误:

分别将用户名、密码、邮箱的参数类型设为非String类型(如Number),验证注册失败并返回相应的错误信息。

7、额外测试:

分别输入字母相同,但是大小写不同的用户名,验证第一次注册应该成功,其他注册都应该失败。

输入已经存在的用户名或邮箱,验证注册失败并返回相应的错误信息。

输入不同大小写组合的用户名,验证注册成功并返回正确的userid。

 

http://www.lryc.cn/news/2404706.html

相关文章:

  • Dubbo Logback 远程调用携带traceid
  • 【element-ui】el-autocomplete实现 无数据匹配
  • NLP学习路线图(二十):FastText
  • 力扣面试150题--除法求值
  • SQL进阶之旅 Day 20:锁与并发控制技巧
  • 美业破局:AI智能体如何用数据重塑战略决策(5/6)
  • 生成模型+两种机器学习范式
  • 【学习笔记】Python金融基础
  • 在Linux查看电脑的GPU型号
  • A Execllent Software Project Review and Solutions
  • windows命令行面板升级Git版本
  • Langgraph实战--自定义embeding
  • 大故障,阿里云核心域名疑似被劫持
  • 什么是「镜像」?(Docker Image)
  • SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
  • 服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
  • 设计模式基础概念(行为模式):模板方法模式 (Template Method)
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(番外篇2)-- Rasa 训练数据文件的清理
  • LVDS的几个关键电压概念
  • 2023年ASOC SCI2区TOP,随机跟随蚁群优化算法RFACO,深度解析+性能实测
  • DLL动态库实现文件遍历功能(Windows编程)
  • Java Map完全指南:从基础到高级应用
  • jvm 垃圾收集算法 详解
  • [特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
  • Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module
  • Spring Boot 定时任务的使用
  • Flutter:下拉框选择
  • SpringAI(GA):Nacos2下的分布式MCP
  • AC68U刷梅林384/386版本后不能 降级回380,升降级解决办法
  • [AI绘画]sd学习记录(二)文生图参数进阶