01 为什么要写测试用例
写测试用例,其主要原因如下:
- 为了理清思路,避免漏测和重复测
- 提高测试效率
- 跟进测试进度
- 告诉领导做过
- 跟进重复性工作
- 更好的记录问题,发现问题,复现问题
- 这也是接口测试流程中的一个产物(测试用例)
02 接口用例设计点
可以从以下几方面设计接口用例:
1.是否满足前提条件
首先要明确接口的前提条件是什么,例如:是否需要登录状态、必须拥有特定权限、特定的数据或资源必须存在等。
正向用例:确保前提条件满足的情况下进行测试。这些用例可以覆盖正常操作流程、验证预期结果和处理异常情况等。
反向用例:测试在前提条件不满足的情况下接口的反应。这些用例可以包括未登录状态下访问需要登录的接口、无权限访问需要权限控制的接口等。
2.针对参数类型的接口
-
基本数据类型:针对整型、浮点型、布尔型等基本数据类型的参数,可以设计以下测试用例:
- 正常取值范围的测试用例,验证接口在正常数据输入下的正确性。
- 边界值测试用例,包括最小值、最大值、临界值等,验证接口在边界条件下的处理和返回结果。
- 非法取值或异常情况的测试用例,模拟非法输入、空值、NULL等,确保接口能正确处理异常情况。
-
字符串类型:针对字符串类型的参数,可以设计以下测试用例:
- 正常长度范围的测试用例,包括空字符串、短字符串、长字符串等,验证接口在不同长度的字符串输入下的正确性。
- 特殊字符和编码的测试用例,包括特殊字符、转义字符、中文字符、Unicode字符等,确保接口在处理这些字符时不会出现问题。
- 异常情况的测试用例,模拟空值、NULL、超长字符串等异常情况,验证接口对异常情况的处理。
-
列表/数组类型:针对列表或数组类型的参数,可以设计以下测试用例:
- 正常长度范围的测试用例,包括空列表/数组、包含少量元素的列表/数组、包含多个元素的列表/数组等,验证接口在不同长度的列表/数组输入下的正确性。
- 边界值测试用例,包括空列表/数组、仅包含一个元素的列表/数组、包含最大数量元素的列表/数组等,验证接口在边界条件下的处理和返回结果。
- 异常情况的测试用例,模拟空值、NULL、超长列表/数组等异常情况,确保接口对异常情况的处理。
-
枚举类型:针对枚举类型的参数,可以设计以下测试用例:
- 针对每个可能的枚举值设计测试用例,验证接口对于各个枚举值的处理情况是否符合预期。
- 异常情况的测试用例,模拟非法值或不存在的枚举值,确保接口能正确处理异常情况。
-
复杂对象类型:针对复杂对象类型的参数,可以设计以下测试用例:
- 正确完整的对象结构测试用例,验证接口在传递正确完整对象时的正确性。
- 缺少或部分缺失属性的对象结构测试用例,确保接口能正确处理缺少属性的情况。·
- 异常情况的测试用例,模拟空对象、NULL、属性值类型不匹配等异常情况,确保接口对异常情况的处理。
- 正确完整的对象结构测试用例,验证接口在传递正确完整对象时的正确性。
3.针务规则、功能需求
设计接口测试用例时,针对业务规则和功能需求,可以考虑以下几点:
-
正常业务流程测试用例:
- 根据功能需求和业务规则,设计涵盖正常业务流程的测试用例,确保接口按预期工作。
- 包括输入符合要求的数据、进行必要的操作、验证接口返回的结果是否符合预期。
-
边界值测试用例:
- 针对输入参数的边界条件,设计测试用例,包括最小值、最大值、临界值等,验证接口在边界条件下的处理和返回结果。
- 确保接口能正确处理边缘情况,不会出现异常或错误的行为。
-
异常情况和错误处理测试用例:
- 模拟输入参数不符合业务规则或功能需求的情况,设计测试用例,包括非法或无效输入、缺失必要参数、时间顺序错误等。
- 验证接口对于异常情况的处理机制,例如是否返回适当的错误码、错误信息等。
-
数据验证和一致性测试用例:
- 针对接口返回的数据,设计数据验证测试用例,验证返回数据的格式、类型、完整性等是否符合预期。
- 验证接口与其他相关接口或数据之间的一致性,确保接口的功能和数据之间的一致性。
-
并发和负载测试用例:
- 针对接口的并发访问和负载情况,设计测试用例,模拟多个用户同时访问接口、大量数据输入等场景,验证接口在高负载情况下的性能和稳定性。
-
安全和权限测试用例:
- 针对接口的安全性和权限控制,设计测试用例,包括验证接口是否具有必要的身份验证、权限验证、数据保护等功能。
- 确保接口在安全和权限方面符合相关要求,防止恶意攻击和未经授权的访问。
4.针对逻辑类型的接口
针对逻辑类型的参数,例如布尔类型(True/False),可以设计以下接口测试用例:
-
正常取值的测试用例:
- 设计一个将参数设置为True的测试用例,验证接口在参数为True时的正确性。
- 设计一个将参数设置为False的测试用例,验证接口在参数为False时的正确性。
-
边界值测试用例:
- 针对参数的边界情况,设计一个将参数设置为True和False之外的其他非法值的测试用例,例如数字、字符串等,验证接口对于非法值的处理。
-
异常情况测试用例:
- 设计一个将参数设置为NULL或空值的测试用例,验证接口对于空值的处理。
- 设计一个将参数设置为不是True或False的字符串值的测试用例,验证接口对于非法字符串值的处理。
-
组合逻辑测试用例:
- 设计一个组合使用不同逻辑参数的测试用例,如同时传入多个逻辑参数并设置为True或False,验证接口在多个逻辑条件下的正确性。
-
默认值测试用例:
- 如果该逻辑参数有默认值,设计一个不显式提供逻辑参数值的测试用例,验证接口在默认情况下的行为和处理结果。
-
错误处理测试用例:
- 设计一个测试用例,模拟接口在处理逻辑参数时发生错误的情况,如参数类型不匹配、参数缺失等异常情况,验证接口对于错误输入的处理和错误提示是否正确。
5.参数之间是否存在关联
设计参数之间存在关联的接口测试用例时,可以考虑以下几个方面:
-
参数依赖关系测试用例:
- 确定接口中存在哪些参数之间的依赖关系,例如某个参数的取值范围依赖于另一个参数的取值。
- 设计测试用例,覆盖各种参数依赖情况,包括依赖关系正确的情况以及依赖关系错误的情况。
-
参数组合测试用例:
- 确定接口中存在哪些参数之间的组合规则,例如某些参数只能在特定组合下生效或仅能与特定值进行组合使用。
- 设计测试用例,覆盖各种参数组合情况,验证接口在不同参数组合下的行为和返回结果。
-
参数冲突和限制测试用例:
- 确定接口中存在哪些参数之间的冲突关系或限制条件,例如某些参数不能同时使用、某些参数有互斥关系等。
- 设计测试用例,模拟参数冲突和限制条件的情况,验证接口对于冲突和限制的处理和提示是否正确。
-
参数联动和级联测试用例:
- 确定接口中存在哪些参数之间的联动关系或级联操作,例如某个参数的取值改变会影响其他参数或触发其他操作。
- 设计测试用例,模拟参数联动和级联操作的情况,验证接口在参数变化时的行为和返回结果是否符合预期。
-
参数默认值和缺省处理测试用例:
- 确定接口中存在哪些参数有默认值或缺省处理,即当某些参数未提供时,接口采取何种默认行为。
- 设计测试用例,覆盖参数默认值和缺省处理的情况,验证接口在无特定参数输入时的行为和返回结果是否符合预期。
6.参数数据类型限制
逆向用例:针对每个参数都设计1条参数值类型不符的逆向用例
7.参数数据类型自身的数据范围值限制
正向用例:针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例
逆向用例:针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例;针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例
03 举例
-
接口测试
-
单场景接口测试
-
混合场景接口测试