第一次做接口测试用例

一、简介

  在开始接口测试之前,我们想一下,接口测试的流程是什么?说到这里,有些人就会产生好奇和疑问,心里mmp:接口测试要什么流程哈???不就是参考接口文档,直接利用接口测试工具(例如jmeter和postman)测试。。。其实,如果一个project中,只是几个接口,你完全可以做临时的接口测试,但project可不止几个接口,少则几十条接口,多则成百上千接口。另外,如果你公司的这个项目,第一次做接口测试。而且古人说过:“无规矩不成方圆。”所以哈,我们还是有必要严格遵守接口测试的流程。

二、接口测试的流程

  接口测试属于功能测试,接口测试的流程类似于以往的功能测试。接口测试的流程如下:

  1. 测试尽早找开发拿接口文档(需求文档);
  2. 根据接口文档编写测试用例(用例编写可按照以往规则写,比如等价类划分,边界值,场景法等设计方法);
  3. 执行测试,查看不同的参数请求,接口返回的数据是否达到预期

三、为什么要写用例

  1. 理清思路,避免漏测和重复测;
  2. 提高测试效率;
  3. 跟进测试进度;
  4. 更好的发现问题,记录问题,复现问题;
  5. 跟进重复性工作;
  6. 告诉领导:我做过;
  7. 接口测试流程中的一个产物(测试用例)

  上面7点,有用例,自己心中有数,不用一个测试点重复测好多次,也避免漏测。

四、接口用例设计

  主要从四个方面来设计接口用例:功能,业务逻辑,异常,安全

  功能:

  1)功能是否正常;

  2)功能是否按照接口文档实现

       举例:比如博客园添加随笔,需要登录才能添加。也就是业务要求不支持游客添加随笔功能,如果设计一个没有登录的用户,然后去测试添加随笔接口,结果接口能添加到随笔,说明功能不正常,不符合需求和接口文档描述。

  业务逻辑:是否依赖业务;
       举例:该接口调用之前,需要调用登录接口,如果不登录也能请求数据,不符合业务逻辑。

  异常:参数异常和数据异常
  1)参数异常:关键字参数,参数为空,多,少参数,错误参数

  2)数据异常:关键字数据,数据为空,长度不一致,错误数据
       举例:不管数据异常还是参数异常,测试点差不多,一个参数有key和value,key表示参数,value表示数据。第一,看看参数和数据能不能支持关键字,例如Java中的保留关键字等等。第二个就是参数和数据都为空,看看是否做了判断。第三个,参数多和少,例如有两个参数的接口,你需要设计一个三个参数的用例,一个只有一个参数的用例。数据那边长度不一致,例如设计很长的字符串是否支持,因为数据库创建表过程都设置好了每个字段的长度。输入错误的参数和数据,例如故意输出单词等等。

  安全测试用例设计:
  1)cookie:有cookie才能获取数据,如果不带cookie还有信息返回,说明有问题
  2)header:正常接口带header信息,删除header看是否能够返回数据。
  3)唯一识别码:app手机识别码,一般是唯一的。

       安全测试主要从上面三点检查。第三个是唯一识别码,主要是指app上手机的识别码,一般很少用到,除非很严格的接口测试,例如银行app登录,需要指纹,而指纹来源手机,一般有一个手机识别码判断过程。

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

游戏相关接口的测试用例设计需要覆盖功能测试、边界测试和异常测试等多个维度,确保接口在不同场景下均能正常运行。以下是具体的测试用例设计方法和示: ### 功能测试 功能测试主要验证接口是否满足需求文档中定义的功能要求。测试用例应涵盖所有合法输入组合,并确保输出结果符合预期。 #### 示: - **测试接口:创建游戏角色** - 输入:角色名称(合法)、角色等级(合法范围)、角色类型(合法类型) - 输出:角色创建成功,返回角色ID和基本信息 - 预期结果:角色信息正确存储在数据库中,并且返回的JSON数据包含正确的角色ID和属性[^4]。 - **测试接口:角色升级** - 输入:角色ID(已存在的角色)、经验值(满足升级条件) - 输出:角色等级提升,返回新的等级和属性 - 预期结果:角色等级正确更新,并且属性值按照游戏规则调整[^2]。 ```python # 示:角色升级测试用例伪代码 def test_character_upgrade(): # 准备数据 character_id = create_character("战士", 1) add_experience(character_id, 1000) # 假设1000经验值可升级 # 执行测试 upgraded_character = get_character_info(character_id) assert upgraded_character['level'] == 2 ``` ### 边界测试 边界测试用于验证接口在输入值处于边界条件时的表现,通常包括最小值、最大值、边界值等。 #### 示: - **测试接口:角色等级上限** - 输入:角色ID(已存在的角色)、经验值(刚好达到最高等级) - 输出:角色等级提升至最高等级,返回等级上限提示 - 预期结果:角色等级不再提升,并返回“已达最高等级”提示[^4]。 - **测试接口:角色名称长度边界** - 输入:角色名称(最大允许长度) - 输出:角色创建成功,返回角色ID - 预期结果:角色名称正确存储,且长度符合数据库限制[^1]。 ```python # 示:角色名称长度边界测试用例伪代码 def test_character_name_max_length(): max_length_name = "A" * 32 # 假设最大长度为32 character_id = create_character(max_length_name, 1) assert character_id is not None ``` ### 异常测试 异常测试用于验证接口在输入非法或异常情况下是否能够正确处理,如参数缺失、类型错误、权限不足等。 #### 示: - **测试接口:Token为空** - 输入:Token为空或错误 - 输出:返回401未授权错误 - 预期结果:接口拒绝请求,并返回明确的错误信息[^4]。 - **测试接口:必填参数缺失** - 输入:缺少必填参数(如角色名称为空) - 输出:返回400错误,提示“角色名称不能为空” - 预期结果:接口拒绝请求,并返回明确的错误信息[^1]。 ```python # 示:Token为空测试用例伪代码 def test_invalid_token(): response = create_character_with_invalid_token("", "战士", 1) assert response.status_code == 401 assert response.json()['error'] == "Unauthorized" ``` ### 权限测试 权限测试用于验证不同用户权限下接口的行为是否符合预期,如普通用户不能执行管理员操作。 #### 示: - **测试接口:普通用户尝试执行管理员操作** - 输入:普通用户Token,尝试修改其他用户的角色信息 - 输出:返回403错误,提示“无权限” - 预期结果:接口拒绝请求,并返回权限不足的提示[^4]。 ```python # 示:权限测试用例伪代码 def test_permission_denied(): user_token = login("普通用户", "password") response = modify_character_info(user_token, "其他用户角色ID", "修改后的名称") assert response.status_code == 403 assert response.json()['error'] == "Permission Denied" ``` ### 幂等性测试 幂等性测试用于验证接口在重复请求下是否会产生副作用,如重复创建角色或重复升级。 #### 示: - **测试接口:重复创建角色** - 输入:相同的角色名称、等级、类型 - 输出:第一次请求成功创建角色,第二次请求返回错误提示 - 预期结果:角色仅被创建一次,并返回“角色已存在”提示[^4]。 ```python # 示:幂等性测试用例伪代码 def test_idempotent_create_character(): character_name = "战士" response1 = create_character(character_name, 1) response2 = create_character(character_name, 1) assert response1.status_code == 200 assert response2.status_code == 400 assert response2.json()['error'] == "角色已存在" ``` ### 安全测试 安全测试用于验证接口是否存在常见的安全漏洞,如SQL注入、XSS攻击等。 #### 示: - **测试接口:SQL注入攻击** - 输入:角色名称包含SQL注入代码(如`' OR '1'='1`) - 输出:返回400错误,提示“非法输入” - 预期结果:接口拒绝请求,并过滤非法字符[^5]。 ```python # 示:SQL注入测试用例伪代码 def test_sql_injection(): malicious_input = "' OR '1'='1" response = create_character(malicious_input, 1) assert response.status_code == 400 assert response.json()['error'] == "非法输入" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值