https://www.cnblogs.com/yuxiuyan/tag/分层测试/
接口测试是通过测试模块接口来检测模块整体逻辑是否符合预期的测试方法。
接口测试主要用于检测外部模块和模块接口数据交换、关键业务数据状态变化。
测试的重点是要检查数据的交换,传递和控制管理过程,以及模块间的相互逻辑依赖关系等。
在我们现在的业务中,主要包含了两种类型的接口测试,分别是单模块接口测试和子系统接口测试。
接口测试代码与被测试的接口同源,在测试代码中将依赖的外部服务mock掉,数据库不mock,测试代码与被测试代码在同一个进程。
接口测试代码与被测试的接口同源,测试代码与被测试代码在不同进程。
接口测试以保证系统的正确稳定为目标,重要性主要体现在:
接口测试的用例设计和单元测试有相似之处,都需要用到边界值法、等价类法等基本测试方法。
设计接口测试用例的出发点是要验证接口实现的功能和性能指标是否与接口文档保持一致。
同时,测试接口需要具有良好的容错机制,能在接收到各种异常输入数据时做到错误定位。
对一个系统做接口测试,识别出合理的测试对象才能保证接口测试达到预期效果,甚至能达到事半功倍的效果。
一个系统可能有很多的层次结构,也就有了不同层级的许多接口,如果对每个接口分别进行测试,时间和人力消耗较大,且用例数量大,用例的维护成本很大。
分析出系统的关键模块和核心接口,并对其进行完整的测试,能以最小的测试投入,达到最好的测试效果。
接口测试用例的内容包括:输入参数组合、预期结果、实际运行结果以及备注的其他相关信息,如:测试功能点说明,测试环境说明等。
预期结果包括接口返回值以及接口的输出参数的内容。
输入参数的组合应遵循等价类法和边界值法等常用用例设计方法,以最少的用例数量覆盖所有典型参数组合,做到每条用例覆盖不同的测试点,且每条用例都不可被取代。
接口测试的依据往往是需求规格说明书等软件设计文档,测试手段是把接口内的程序逻辑看作一个黑盒,只根据接口定义来编写测试代码,相当于把一个接口当作一个函数来进行测试,为了确保测试的覆盖率,可能会使用到单元测试的用例设计方法。
根据该接口实现的功能分析出该接口的正常用例包括哪几种输入参数的组合,从而在用例中构造相应的参数组合来覆盖所有的正常分支。
输入参数分为两种类型:
对接口输入参数的组合,需要考虑两点:
选取一条正常用例的数据作为基础数据,然后遍历所有的输入参数,针对每一个输入参数,分别使用等价类法,边界值法等用例设计方法枚举出该参数的所有异常值。 该用例除了该参数为异常外,其余参数均保持正常值不变,以保证测试结果仅由异常的那一个参数导致。 当所有输入参数都使用上述方法设计了对应的异常用例之后,进一步补充不方便在用例文件中输入的异常参数到测试脚本中,通过 switch 分支判断,在测试脚本中将无法通过文件读取的异常输入值(如:错误指针等),直接赋值给接口的输入参数,测试某些指针类型的数据错误是否被及时捕获并返回正确无歧义的错误码。
1. 注意错误码返回
在接口设计中,任何时候都应该返回定义好的错误码,绝不能让程序异常退出,或者把未经任何处理的异常信息直接抛出。
程序的异常退出,会产生恶劣的用户体验,也无法进行错误排查。
把未经处理的异常信息抛出,有可能把不应该被使用者感知的信息暴露出来,比如数据库相关信息,从而产生安全隐患。
2. 错误码的准确性很重要
错误码的准确性对接口调用失败原因的定位有非常重要的意义,将极大降低后续维护成本,错误码的设置应当准确,无歧义,一种错误类型一个错误码,尽量将错误码编得更细,更有利于错误排查。
3. 错误码应该是明确含义的
错误码应当在接口设计文档中有明确定义,并且在不同接口中保持一致。