1  接口测试   

  1.1  接口测试

  接口:主要是子模块或者子系统间交互并相互作用的部分。

  这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口。

  接口测试:是指针对模块或系统间接口进行的测试。

  1.2  接口测试发现的典型问题

  接口测试经常遇到的bug和问题,如下:

  (1)传入参数处理不当,导致程序crash;

  (2)类型溢出,导致数据读出和写入不一致;

  (3)因对象权限未进行校验,可以访问其他用户敏感信息;

  (4)状态处理不当,导致逻辑出现错乱;

  (5)逻辑校验不完善,可利用漏洞获取非正当利益等。

  2  接口测试用例设计

 

 上图为一个典型的接口。一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑。

  接口测试的用例设计,主要从输入和接口处理两方面考虑:

  1)针对输入,可按照参数类型进行设计;

  2)针对接口处理,可按照逻辑进行用例设计;

  3)针对输出,可根据结果进行分析设计。

  2.1  针对输入设计

 

 

  对于接口来说,输入就是入参。常见参数类型有:

  (1)数值型(int,long,float,double等)

  (2)字符串类型

  (3)数组或链表

  (4)结构体

 

 结构体(struct)是一些元素的结合,元素实际也是数值型,字符串型,数组或链表。

  下面详细说明数值型、字符串型、数组或链表三种参数类型用例设计。

  2.1.1  数值型

  数值型的参数主要考虑以下几个方面设计:

 

如果参数规定了值的范围,则需要考虑等价类取值范围内、取值范围外,取值的边界,如有需要,可能会遍历取值范围内的各个值。

  例如检查权限的接口:TaskChecker.checkTask(int taskID) taskID的取值范围是1-35,那么设计时考虑:

  ●1-35范围内和范围外的值;

  ●1-35的边界:0,1,35,36;

  ●类型的特殊值:-1,0

  ●数据类型的边界值:int的最小值最大值;

  ●因为1-35代码的权限ID不同,可能需要遍历1-35的每个值。

  常见问题和风险:

  ●特殊值处理不当导致程序异常退出;

  ●类型边界溢出

  ●取值范围外值未返回正确的错误信息等

  2.1.2  字符串型

  字符串型的参数,主要考虑字符串的长度和内容:

 

例如接