怎样才算是一个好的接口自动化测试用例
接口自动化测试是自动化测试的一部分 ,它测试的主要对象是接口 ,是测试系统组件间接口的一种测试。接口自动化测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点。测试的重点是检查数据交互、传递、和控制管理过程以及系统间的相互依赖关系等。
如何设计接口自动化测试用例?首先,明确出发点,和所有的测试一样 ,接口自动化测试出发点是你要证明所测的程序是错误的。以这个出发点为导向 ,你的设计行为就会尽量朝这个方向,更易发现问题
其次,选择好测试对象。对于一个系统做接口自动化测试选择好的测试对象是测试关键。一个系统有无数的接口 ,每个接口如果分别测试 ,那将是很痛苦的一件事情,而且任何一个内部接口的变动 ,都将导致我们用例的不可用。
可将这些最外层的接口分为两类:一类是数据进入系统的接口;一类是数据流出系统的接口。进入系统的接口实际是我们用例的执行调用的接口。可通过变化参数对这些接口进行调用 ,模拟外部的使用;而流出的接口则是我们用例真正该验证的点。数据从哪里流出,流出时的状态如何 ,此时系统又是什么状态都是我们所应该验证的。
然后,确认完整的测试对象的功能:确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能。此两个功能一定要准确详细,用例的设计要严格按照测试对象功能设计才是正确的用例。
最后当出发点、对象、功能都确定了,就可以真正设计用例了。下面详细介绍下如何去设计一个结构好、可读性高、渗透性强的接口自动化测试用例。
接口测试用例设计和测试用例设计一样,用例设计的内容应该包括:主要测试功能点、测试环境、测试数据、执行操作以及预期结果。
1)接口自动化测试环境分为两种:一种是程序内部的环境;一种是程序的所调用外部接口的环境。
2)接口自动化测试测试数据分为接口参数数据和用例执行所需系统数据。数据的设计、准备测试用例的数据上需要花费更多的心思。要通过好的测试数据使用例查找问题。接口参数数据需对每个参数根据测试接口的实际的功能进行分析,在符合业务逻辑的情况下进行逻辑组合排列 ,不要遗漏了某些边界值和错误点的数据。每个用例执行所需系统数据和接口参数数据尽可能的采用不一样的数据 ,使用例更容易发现问题。
3)测试功能点,如果一个接口功能复杂时推荐对接口用例进行结构划分 ,这样子用例具有更好的可读性和维护性。接口划分原则为以接口提供的功能点的不同进行合适粒度的划分。同一功能点的用例又可根据测试环境的不同、数据的不同进行用例的填充。
4)接口自动化测试用例执行操作非常简单,就是所测接口的调用。
5)预期结果验证,这也是接口用例设计的很关键的一步 ,应该细而不冗余。每个用例均需验证 ,避免一个用例中重复做相同的验证 ,提高测试用例的效率。
如何设计接口自动化测试用例小例子:
简单划分可以按照2个基本组成要素进行划分:1. 参数 2. 业务
以下为最简单的一种划分用例的方法,可能涵盖不全,但只为说明一种划分接口用例的方法方式以及需要考虑的测试用例的测试点
所有的自动化测试接口的测试用例 都基本围绕三部曲进行,传数据,执行,校验返回的数据和期望数据是否一致来构成每个简单的测试用例。
有清晰的线路和清晰的思维,才能做好整体测试的掌控。
接口自动化测试的原理是模拟客户端向服务器发送报文请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程.
接口自动化测试流程:
模拟客户端连接服务器(服务器提供的端口是否可访问)
客户端发送报文请求
服务器端接收请求并做处理
检查返回的预期结果并与实际结果对比
结束
接口自动化测试用例设计:
接口自动化测试的主要测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖所有接口是很难的一件事情,且实际过程中任意内部接口的变动都可能导致我们测试用例的不可用。
所以通常情况下我们主要测试最外层的两类接口:数据进入系统接口和数据流出系统接口
数据进入接口是模拟执行外部系统的接口(调用外部系统的参数为本系统使用)
数据流出接口是验证系统处理后的数据是否正常
在设计用例时还需要确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能
软件测试交流群:1017539290 欢迎加入一起讨论交流
接口测试用例设计和功能测试用例设计基本一致,用例设计的内容应该包括:主要测试功能点(测试目的)、预置条件(网络环境、系统状态)、测试数据、测试步骤以及预期结果。如:
1.1 总部用户同步接口
1.1.1添加组织
编制人XXX审定人XX时间XXXX-XX-XX
用例名称添加组织接口名称urn:orgservice
项目名称C919大型客机客户服务应用系统集成平台编号/版本
参考信息C919大型客机客户服务应用系统集成平台详细设计V2.1
测试目的测试通过该接口能否正确添加一个组织。
接口方法名addOrg
用例编号步骤名称输入预期输出实际输出是否通过 备注
1正确添加一个组织输入所有必填字段。
组织编号<orgCode>不为空,不为null;
组织名称<orgName>不为空,不为null
上级组织编<parentOrgCode>号不为空,不为null;
组织类型<orgType>不为空,不为null;
组织排序位<orderNum>不为空,不为null。
返回正确结果;数据库中新增组织信息正确。符合预期结果通过
2组织编号为空组织编号<orgCode>为空,为null;其他四项不为空,不为null。无法返回正确结果。符合预期结果通过
3组织名称为空组织名称<orgName>为空,为null;其他四项不为空,不为null。无法返回正确结果。符合预期结果通过
4上级组织编号为空上级组织编<parentOrgCode>为空,为null;其他四项不为空,不为null。无法返回正确结果。符合预期结果通过
5组织类型为空组织类型<orgType>为空,为null;其他四项不为空,不为null。无法返回正确结果。符合预期结果通过
6组织排序位为空组织排序位<orderNum>为空,为null;其他四项不为空,不为null。无法返回正确结果。符合预期结果通过
备注
1.1.2 添加用户
编制人XXX审定人XX时间XXXX-XX-XX
用例名称新增用户接口名称urn:userservice
项目名称C919大型客机客户服务应用系统集成平台编号/版本
参考信息C919大型客机客户服务应用系统集成平台详细设计V2.1
测试目的测试通过该接口能否成功在指定组织下添加一个用户
接口方法名addUser
用例编号步骤名称输入预期输出实际输出是否通过 备注
15正确在指定组织下添加一个用户输入所有必填字段。
用户信息<user>不为空,不为null;
组织信息<org>不为空,不为null。
返回正确结果;数据库中更新组织信息正确。符合预期结果通过
16正确在多个指定组织下添加同一个用户输入所有必填字段。
用户信息<user>不为空,不为null;
需要添加的多个组织信息<org>不为空,不为null。
返回正确结果;数据库中更新组织信息正确。符合预期结果通过
17用户信息为空用户信息<user>为空,为null;组织信息不为空,不为null。无法返回正确结果。符合预期结果通过
18组织信息为空组织信息<org>为空,为null。用户信息不为空,不为null。无法返回正确结果。符合预期结果通过
备注
1.1.3 删除组织
编制人XXX审定人XX时间XXXX-XX-XX
用例名称删除组织接口名称urn:orgservice
项目名称C919大型客机客户服务应用系统集成平台编号/版本
参考信息C919大型客机客户服务应用系统集成平台详细设计V2.1
测试目的测试通过该接口能否成功删除一个组织
接口方法名deleteOrg
用例编号步骤名称输入预期输出实际输出是否通过 备注
7删除组织输入所有必填字段。
组织编号<orgCode>不为空,不为null。
返回正确结果;数据库中正确删除组织信息。符合预期结果通过
8组织编号为空组织编号<orgCode>为空,为null。无法返回正确结果。符合预期结果通过
备注
1.1.4 删除用户
编制人XXX审定人XX时间XXXX-XX-XX
用例名称删除用户接口名称urn:userservice
项目名称C919大型客机客户服务应用系统集成平台编号/版本
参考信息C919大型客机客户服务应用系统集成平台详细设计V2.1
测试目的测试通过该接口能否成功在指定组织下添加一个用户
接口方法名deleteOrg
用例编号步骤名称输入预期输出实际输出是否通过 备注
21删除指定组织下的一个用户输入所有必填字段。
用户ID<uid>不为空,不为null。
返回正确结果;数据库中更新组织信息正确。符合预期结果通过
22用户ID为空用户ID<uid>为空,为null。无法返回正确结果。符合预期结果通过
备注