【学习笔记】系列九:接口测试
2015-10-13 11:24
239 查看
接口测试概述:
在软件进行测试时,为了验证软件对外的接口服务是否可以正常提供服务及软件在不同场景中执行路径的安全性和可操作性,需要对接口进行测试。接口测试(interface testing)的目的是测试与系统相关联的外部接口,测试的重点是检查数据的交互,传递和控制管理过程,提供测试质量和测试覆盖,更好地重新软件缺陷和定位错误。
接口测试主要考虑的问题是模块接口和系统接口。
1、模块接口的测试
模块接口测试主要包括以下内容:各个模块连接集成起来的时候,穿越模块接口的数据会不会丢失。
各个子功能组合起来,能否达到预期要求。
一个模块的功能是否对另外一个模块的功能产生不利的影响。
全局数据结构是否有问题。
模块的积累误差是否达到了不可介绍的程度。
系统环境的测试。
2、系统接口的测试
系统接口的测试主要包括以下内容:服务器接口的测试。包括服务器与交换机接口,以及服务器与磁盘阵列的接口。重点测试在线的状态,测试当服务器发送故障时,交换机或者磁盘阵列能否与备用服务器连接上。
交换机接口的测试,包括交换机与防火墙接口、交换机与磁盘阵列的接口,以及交换机与路由器接口的测试。
路由器与调制解调器的接口测试,包括路由器与单个调制解调器的接口,以及交换机与多个调制解调器的接口。
调制解调器与通信平台接口的测试,包括调制解调器与通信平台的DDN接口,调制解调器与通信平台的ISDN接口,调制解调器与通信平台的X.25接口,以及调制解调器与通信平台的FR(帧中继)接口。
接口测试的内容:
接口测试主要包括两项内容:1.接口逻辑测试
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值是否正确的测试,也就是测试对外提供的接口服务是否正常工作。2.模块接口测试
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。 模块接口测试的主要包括以下四个方面:空值(Null)输入,检查模块接口对空值(Null)的反应能力。
参数属性的测试,输入一个未赋值的参数会出现的情况。
异常的测试,制造一些异常的测试场景,测试异常描述是否清晰。
参数的个数设计与模块接口参数的个数不一致时,检查模块接口的反应能力。包括以下两种情况:
模块接口参数的个数不一致(或多于原设计的参数个数,或少于原设计的参数个数);
模块接口参数的类型不一致(字符型和数值型混用)
接口测试的测试项目
接口测试的测试项目主要包括以下几点:1) 数据类型问题,包括:
变量的数据类型是否错误。
是否存在不同数据类型的赋值。
是否存在不同数据类型的比较。
2) 变量值问,包括:
变量的初始化或缺省值收到有错误。
变量是否发生上溢或下溢。
变量的精度是否足够。
3) 逻辑判断问题,包括:
是否由于精度原因导致比较无效。
表达式中的优先级是否有误。
逻辑判断结果是否颠倒。
4) 文件I/O问题,包括:
对不存在的或者错误的文件是否进行操作。
文件是否不以正确的方式打开。
文件结束判断是否正确。
是否正确地关闭了文件。
Web的接口测试
Web的接口测试主要讨论:服务器接口和外部接口。1、服务器接口测试
服务器接口测试是测试浏览器与服务器的接口。测试人员提交事务,然后查看服务器的记录,并验证在浏览器上所看到是操作是否正好是服务器发送的操作。2、外部接口测试
有些web系统有外部接口,测试的时候要使用web接口发送一些事务数据,分别有效信用卡、无效信用卡和被盗信用卡进行验证。 Web应用服务器还包括以下其他的测试:实时通信服务器测试。
邮件服务器测试。
群件服务器测试。
文件/打印服务器。
接口测试策略
由于平台服务器是通过接口来与客户端交互数据提供各种服务,因此服务器测试工作首先需要进行的是接口测试工作。测试人员需要通过服务器接口功能测试来确保接口功能实现正确,那么其他测试人员进行客户端与服务器结合的系统测试过程中,就能够排除由于服务器接口缺陷所导致的客户端问题,便于开发人员定位问题。以下便是个人的平台服务器接口功能测试经验总结:一、接口测试范围
根据服务器的测试需求,接口测试范围主要分为:新增接口的测试;
新增业务功能接口测试;
整个服务器的接口测试。
所需测试测试接口依次增多,在测试时间足够的条件下,当然需要对所有接口进行测试用例的设计,但如果测试较短的情况下,则应该首先根据用户的典型操作对测试接口进行优先级划分,对调用频繁接口需要优先进行测试。
二、接口测试策略
在进行平台服务器接口测试之前,首先需要整理服务器接口的测试方案,分析接口测试的要点,平台服务器的接口测试内容主要有:接口设计检查
接口用于服务器与客户端的数据交互,客户端通过网络协议传递的数据为服务器接口的输入数据,因此应该首先通过服务器接口文档及客户端数据约束文档进行交互数据的有效性检查:n 整数型数据位数
n 浮点型数据精度
n 字符串数据范围值
要求客户端的整数型、浮点型、字符串数据以及其最大值和最小值都能作为服务器接口的有效输入。这些工作在服务器设计评审时就可以进行,以便确保不会出现客户端上传数据被服务器自动进行截断或四舍五入的操作。
接口依赖关系检查
以上策略只谈到单个接口的测试方法,对于用户来说,一个操作可能会造成服务器调用多个接口来进行完成,因此还需要从业务处理的角度,对各种业务操作所涉及的多个接口之间依赖调用进行测试。接口依赖关系检查主要是通过接口的输出值为另一接口的输入值来实现的,因此在进行接口测试之前,需要分析所测试接口的输入值是通过客户端还是其他接口输出来获取的,在设计测试用例时,加入接口的依赖关系说明以便于测试。
接口输入/输出验证
服务器接口功能测试类似于单元测试,在设计测试用例时,侧重点在于接口模块输入/输出项的正确性验证,根据接服务器接口处理方式,对各种接口进行分类:第一类:条件判断接口
这类接口在接收到请求数据后,会根据输入参数进行条件判断,然后返回相应结果码,通常涉及条件判断的接口有:用户鉴权接口、升级状态上报、密码修改/重置等接口。因此输入/输出项验证的侧重点主要集中在:1)判断条件的验证
要对判断条件进行验证,则需要知道接口是根据哪些输入项来进行判断的
2)异常数据的响应
只考虑正常情况,而不考虑异常场景是无法保证接口功能运行正常,对于密码重置接口,用户ID不存在、不合法,邮箱输入格式错误、用户邮箱信息不存在或未激活就是测试时需要考虑的异常场景,设计这类输入值,并且检查接口返回的响应码,响应码的正确才能保证客户端根据异常情况来显示相应的提示信息。简而言之,条件判断的接口其测试策略就是根据判断条件来设计各种输入值来检验接口的功能。
第二类:数据查询接口
这类接口接收到请求数据后,首先会验证请求是否合法,然后会根据请求项查询数据库相应表中数据返回给客户端,通常涉及数据查询的接口有:用户基本资料/经验值/赛事信息查询、游戏列表获取、在线人数查询等接口。除了象条件判断接口一样根据判断项、请求参数等设计合法/不合法和正常/异常测试值之外,还需要结合数据库来对查询结果进行验证:
是否根据正确的关联数据表进行查询;
验证查询结果是否从数据表中正确项中获取,涉及到多表联合查询时,不同表中的相同项设计不同测试数据进行验证;
修改查询结果在数据表中对应项中的数据,使其为空值或客户端相应项的范围值的最大和最小值,查看接口输出是否正确。
第三类:逻辑运算接口
这类接口在收到请求数据之后,会进行一系列逻辑运算,然后根据处理结果更新数据库中的数据,通常涉及逻辑运算的接口有:比赛成绩同步、商品支付、各种数据报表等接口。逻辑运算接口由于还涉及插入或更新数据库操作,因此测试时还需要考虑数据库特性,如数据精度问题,在MySQL数据库中,如果是浮点型数据,存入时会有精度误差(131072.32插入float(10,2)类型的数据会变为131072.31),因此对于需要用于金额计算、数据统计、成绩比较的数据,最好使用定点型。
最后服务器接口的测试如果有足够条件的话,还需要通过白盒测试来对接口代码做进一步的测试,通过编写关键代码的测试桩,可以有效查找将字符数组当成字符串使用造成的读越界这类不易通过黑盒测试发现的BUG。接下来的工作就是如何通过测试工具来执行服务器接口功能测试。
相关文章推荐
- 按月统计tcode和report使用次数的工具
- phpcms使用细节
- Nmap教程之nmap命令使用示例(nmap使用方法)
- CodeForces 527C(set大法好)
- 想要上市,SaaS 企业应该重点关注什么?(下)
- Android屏幕适配全攻略(最权威的官方适配指导)
- android studio 数据库相关操作
- 某研究所“大数据分析及处理技术”内训圆满结束!
- HDU 1385 Minimum Transport Cost(最短路Floyd+标记路径)
- Volley网络框架完全解析(使用篇)
- ImageView setImageBitmap 不显示图片
- WEB编码规范
- mysql之InnoDB内存管理
- web流程图JS插件:dagre-d3
- 安装Cocoapods, 更新gem,出现 Operation not permitted
- 前端js解决fastjson $ref引用问题
- ava.math.Math类常用的常量和方法:
- HashMap实现原理分析(转自 Alpha's 学习笔记 )
- vnc配合oracle sqldeveloper 本地基本连接操作 centos
- iOS 清理缓存功能实现第一种方法