在接口测试中,精心设计测试用例是确保接口质量的关键。本文将以聚合数据的新闻头条接口(新闻详情查询)为例,深入运用多种测试用例设计方法,打造全面且细致的测试用例集。
一、等价类划分法
(一)用例分析
等价类划分法将输入数据划分为有效等价类和无效等价类,从每个等价类中选取代表性数据进行测试,可在减少测试用例数量的同时保证测试覆盖率。对于该新闻详情查询接口,key和uniquekey的有效、无效取值范围是划分等价类的关键。通过测试有效等价类,可验证接口在正常输入下的功能;测试无效等价类,能检验接口对异常输入的处理能力。
(二)测试用例
项目 | 模块 | 用例id | 接口名称 | 前置条件 | 用例标题 | 请求url | 请求方式 | 请求数据 | 预期结果 | 实际返回结果 | 返回内容 | 测试结果 | 测试人员 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
聚合数据新闻接口测试 | 新闻详情查询模块 | TC001 | 新闻详情查询接口 | 已获取正确接口key和存在的新闻ID | 验证有效key和有效uniquekey时接口正常返回新闻详情 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=存在的新闻ID | 返回状态码200;error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC002 | 新闻详情查询接口 | 无 | 验证key为空时接口的异常处理 | http://v.juhe.cn/toutiao/content | GET | key=&uniquekey=存在的新闻ID | 返回状态码非200;error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC003 | 新闻详情查询接口 | 无 | 验证key格式错误时接口的异常处理(假设正确格式为字母数字组合) | http://v.juhe.cn/toutiao/content | GET | key=!@#$&uniquekey=存在的新闻ID | 返回状态码非200;error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC004 | 新闻详情查询接口 | 无 | 验证uniquekey为空时接口的异常处理 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey= | 返回状态码非200;error_code非0;reason包含uniquekey相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC005 | 新闻详情查询接口 | 无 | 验证uniquekey格式错误时接口的异常处理(假设正确格式为16位字母数字组合) | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=abcdefghijklmnop1234 | 返回状态码非200;error_code非0;reason包含uniquekey相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC006 | 新闻详情查询接口 | 无 | 验证不存在的uniquekey时接口的异常处理 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=不存在的新闻ID | 返回状态码非200;error_code非0;reason包含新闻ID不存在相关提示;result为null或含错误信息 | 待测试 | 待测试 | 待测试 | HBY |
二、边界值分析法
(一)用例分析
边界值分析法聚焦于输入数据的边界情况,因为在边界附近软件出现问题的概率较高。对于新闻详情查询接口,需关注key和uniquekey的长度边界、数值边界(若有)等。通过在边界值及其附近取值进行测试,能有效发现潜在的边界问题,确保接口在各种边界情况下的稳定性。
(二)测试用例
项目 | 模块 | 用例id | 接口名称 | 前置条件 | 用例标题 | 请求url | 请求方式 | 请求数据 | 预期结果 | 实际返回结果 | 返回内容 | 测试结果 | 测试人员 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
聚合数据新闻接口测试 | 新闻详情查询模块 | TC007 | 新闻详情查询接口 | 无 | 验证key为最小长度时接口的情况(假设最小长度为8位) | http://v.juhe.cn/toutiao/content | GET | key=abcdefgh&uniquekey=存在的新闻ID | 返回状态码200(若边界值处理正确);error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC008 | 新闻详情查询接口 | 无 | 验证key为最大长度时接口的情况(假设最大长度为32位) | http://v.juhe.cn/toutiao/content | GET | key=abcdefghijklmnopqrstuvwxyz123456&uniquekey=存在的新闻ID | 返回状态码200(若边界值处理正确);error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC009 | 新闻详情查询接口 | 无 | 验证key小于最小长度时接口的情况(假设最小长度为8位) | http://v.juhe.cn/toutiao/content | GET | key=abcdefg&uniquekey=存在的新闻ID | 返回状态码非200(若边界值处理错误);error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC010 | 新闻详情查询接口 | 无 | 验证key大于最大长度时接口的情况(假设最大长度为32位) | http://v.juhe.cn/toutiao/content | GET | key=abcdefghijklmnopqrstuvwxyz1234567&uniquekey=存在的新闻ID | 返回状态码非200(若边界值处理错误);error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC011 | 新闻详情查询接口 | 无 | 验证uniquekey为最小长度时接口的情况(假设最小长度为16位) | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=abcdefghijklmnop | 返回状态码200(若边界值处理正确);error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC012 | 新闻详情查询接口 | 无 | 验证uniquekey为最大长度时接口的情况(假设最大长度为16位) | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=abcdefghijklmnop | 返回状态码200(若边界值处理正确);error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC013 | 新闻详情查询接口 | 无 | 验证uniquekey小于最小长度时接口的情况(假设最小长度为16位) | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=abcdefghijklmno | 返回状态码非200(若边界值处理错误);error_code非0;reason包含uniquekey相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC014 | 新闻详情查询接口 | 无 | 验证uniquekey大于最大长度时接口的情况(假设最大长度为16位) | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=abcdefghijklmnopq | 返回状态码非200(若边界值处理错误);error_code非0;reason包含uniquekey相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
三、因果图与判定表法
(一)用例分析
因果图用于梳理输入条件之间以及输入与输出之间的逻辑关系,判定表则基于因果图生成,将复杂逻辑以表格形式呈现,从而设计出全面的测试用例。对于新闻详情查询接口,主要关注key和uniquekey的正确性对接口返回结果的影响,通过因果图和判定表分析不同条件组合下的预期结果,确保接口在各种输入组合下的行为符合预期。
(二)因果图分析
- 原因:
- C1:key正确
- C2:uniquekey正确
- 结果:
- E1:返回新闻详情(状态码200,各字段有数据)
- E2:返回错误提示(状态码非200,error_code非0,reason有错误描述)
(三)判定表
条件组合 | C1:key正确 | C2:uniquekey正确 | 预期结果 |
---|---|---|---|
组合1 | 是 | 是 | E1 |
组合2 | 是 | 否 | E2 |
组合3 | 否 | 是 | E2 |
组合4 | 否 | 否 | E2 |
(四)测试用例
项目 | 模块 | 用例id | 接口名称 | 前置条件 | 用例标题 | 请求url | 请求方式 | 请求数据 | 预期结果 | 实际返回结果 | 返回内容 | 测试结果 | 测试人员 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
聚合数据新闻接口测试 | 新闻详情查询模块 | TC015 | 新闻详情查询接口 | 无 | 验证key和uniquekey都正确时接口的情况 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=存在的新闻ID | 返回状态码200;error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC016 | 新闻详情查询接口 | 无 | 验证key正确但uniquekey错误时接口的情况 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=不存在的新闻ID | 返回状态码非200;error_code非0;reason包含uniquekey相关错误提示;result为null或含错误信息 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC017 | 新闻详情查询接口 | 无 | 验证key错误但uniquekey正确时接口的情况 | http://v.juhe.cn/toutiao/content | GET | key=错误的接口key&uniquekey=存在的新闻ID | 返回状态码非200;error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC018 | 新闻详情查询接口 | 无 | 验证key和uniquekey都错误时接口的情况 | http://v.juhe.cn/toutiao/content | GET | key=错误的接口key&uniquekey=不存在的新闻ID | 返回状态码非200;error_code非0;reason包含key和uniquekey相关错误提示;result为null或含错误信息 | 待测试 | 待测试 | 待测试 | HBY |
四、场景图和状态迁移图法
(一)用例分析
场景图从用户实际使用的角度出发,描述不同的使用场景;状态迁移图关注系统在不同状态之间的转换。对于新闻详情查询接口,正常查询和异常查询是主要场景,通过分析这些场景下接口的状态变化,设计相应测试用例,确保接口在各种实际场景下的功能正确性。
(二)场景分析
- 正常查询场景:用户输入正确的key和uniquekey,成功获取新闻详情。
- 异常查询场景:用户输入错误的key或uniquekey,接口返回错误提示。
(三)测试用例
项目 | 模块 | 用例id | 接口名称 | 前置条件 | 用例标题 | 请求url | 请求方式 | 请求数据 | 预期结果 | 实际返回结果 | 返回内容 | 测试结果 | 测试人员 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
聚合数据新闻接口测试 | 新闻详情查询模块 | TC019 | 新闻详情查询接口 | 无 | 验证正常查询场景下接口的功能 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=存在的新闻ID | 返回状态码200;error_code为0;reason为成功描述;result、detail等各字段有合理数据;uniquekey与请求一致 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC020 | 新闻详情查询接口 | 无 | 验证异常查询场景(key错误)下接口的功能 | http://v.juhe.cn/toutiao/content | GET | key=错误的接口key&uniquekey=存在的新闻ID | 返回状态码非200;error_code非0;reason包含key相关错误提示;result为null | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC021 | 新闻详情查询接口 | 无 | 验证异常查询场景(uniquekey错误)下接口的功能 | http://v.juhe.cn/toutiao/content | GET | key=真实有效的接口key&uniquekey=不存在的新闻ID | 返回状态码非200;error_code非0;reason包含uniquekey相关错误提示;result为null或含错误信息 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC022 | 新闻详情查询接口 | 无 | 验证并发查询场景下接口的性能(假设接口支持并发) | http://v.juhe.cn/toutiao/content | GET | 多个线程同时发送请求,key=真实有效的接口key&uniquekey=存在的新闻ID(不同线程uniquekey不同) | 返回状态码均为200(若并发处理正确);error_code为0;reason为成功描述;每个请求对应正确的新闻详情数据;无数据混乱或错误 | 待测试 | 待测试 | 待测试 | HBY |
聚合数据新闻接口测试 | 新闻详情查询模块 | TC023 | 新闻详情查询接口 | 无 | 验证高并发下接口的稳定性(假设接口支持并发) | http://v.juhe.cn/toutiao/content | GET | 模拟大量并发请求,key=真实有效的接口key&uniquekey=存在的新闻ID(不同请求uniquekey不同) | 接口稳定运行,返回状态码大部分为200;少量非200状态码有合理错误原因;系统无崩溃或异常 | 待测试 | 待测试 | 待测试 | HBY |
在实际测试过程中,测试人员需使用Postman工具,将每个测试用例的请求信息准确填入并发送请求,详细记录实际返回结果和返回内容,与预期结果对比后填写测试结果。这些测试用例综合运用多种设计方法,全面覆盖了新闻详情查询接口的各类情况,确保接口质量和稳定性。