精华内容
下载资源
问答
  • 接口测试(二)接口测试用例设计

    千次阅读 多人点赞 2017-10-15 18:42:18
    接口测试用例可以参照黑盒测试用例规则来编写,如边界值法、等价类划分法、正交试验法等。 下面以登录功能为例进行介绍,如登录的接口为www.kuaile.com/login/ajax_login?loginname=student1&password=123456

    接口测试做什么?

    接口测试主要检查接口返回的接口数据是否正确、是否和接口文档中定义的一致。


    接口测试用例怎么写?

    接口测试用例可以参照黑盒测试用例规则来编写,如边界值法、等价类划分法、正交试验法等。


    下面以登录功能为例进行介绍,如登录的接口为www.kuaile.com/login/ajax_login?loginname=student1&password=123456

    1.功能用例设计

    1)功能是否正常,如登陆功能的接口是否能够实现

    2)功能是否按照接口文档来实现,如登陆功能两个参数为loginname和password,将loginname改成username仍然可以登录,这是错误的


    2.逻辑用例设计

    1)是否依赖业务,如下单业务依赖登录业务,下单时需要检验header的cookie是否有正确的登录信息,否则服务器应该报错

    3.异常测试用例设计
    1)参数异常
    a)关键字参数。将参数写成mysql、Java、html等的关键字,查看服务端是否能够正常转码处理。如将"loginname"改成"echo",php的关键字,若返回“账户名不能为空”,则说明服务端进行了正常的判断,这是没有问题的
    b)参数为空。如"loginname=student1"改成“=student1”,去掉参数,查看服务器返回的数据是否给出正确的提示,如:“账户名不能为空”
    c)多/少参数。如添加一个email参数,接口变成:www.kuaile.com/login/ajax_login?loginname=student1&password=123456&email=student01@qq.com,查看服务端返回数据,若返回成功,则是有问题的;或删掉一个关键字,接口变成www.kuaile.com/login/ajax_login?password=123456,查看服务器是否给与验证
    d)错误参数。如将"password"参数改成"pwd",查看服务器是否给与验证
    2)数据异常
    a)关键字数据。如将账户名数据"student1"改成mysql关键字"NULL",提交,若服务器返回“用户不存在”,则是正确的,说明服务器将"NULL"转义成字符,当成一个用户处理
    b)数据为空。如将账户名数据删除,"loginname=student1"改成"=loginname=",查看服务器返回的数据是否给出正确的提示
    c)长度不一致。数据库建表时会对字段长度进行限制,若超出字段最长则会报错,接口应该进行字段长度的验证。如将账户名数据输入得很长,看服务端是否给出正确的提示。如果给出“用户不存在”,则是错误的,说明没有对长度加以判断
    d)错误数据。如输入错误的用户信息,查看服务端是否返回正确的提示

    4.安全测试用例设计
    1)cookie。如把cookie信息删除,查看服务器是否进行了验证,如果服务器仍能成功返回数据,则是错误的
    2)header。如把header信息删除,查看服务器是否进行了验证,如果服务器仍能成功返回数据,则是错误的
    3)唯一识别码
    展开全文
  • 设计接口测试用例

    2020-12-04 09:42:06
    目的:验证参数值缺省时的接口功能,通过等价类划分法设计参数值有/无的接口测试用例 接口安全 目的:验证接口暴露后的安全性      1、验证授权操作,设计系统访问未授权情况的接口测试用例      2、验证...

    通过接口文档设计用例

    1. 通过性验证
      目的:保证接口功能正常请求与响应,按照标准的接口文档传参
    2. 参数组合
      目的:验证参数值缺省时的接口功能,通过等价类划分法设计参数值有/无的接口测试用例
    3. 接口安全
      目的:验证接口暴露后的安全性
           1、验证授权操作,设计系统访问未授权情况的接口测试用例
           2、验证越权,对于存有访问权限隔离的接口设计越权测试用例
           3、验证加密信息,对信息敏感参数值设计加密测试用例
           4、验证密码安全,设计密码复杂程度校验测试用例
    4. 异常验证
      目的:验证参数类型或值不按接口标准传入时接口对异常情况的校验
       1、必传非必传参数值缺省
       2、参数值类型
       3、参数值长度
       4、有范围限制或特殊功能的参数越界

    通过业务设计用例
     这种方式比较贴合web功能测试思路,设计web流程测试用例,用例的每个步骤即为一个后台接口请求

    testcase:

    1. web系统登陆密码错误3次
    2. 5分钟后正确登陆系统管理员
    3. 新增人员
    4. 修改人员
    5. 删除人员
    6. 登出系统
    
    展开全文
  • 接口测试用例

    千次阅读 2018-12-12 23:25:45
    接口测试用例的设计就没什么好讲的了,与功能测试一样设计就好了。我是用Excel来编写的,主要是为了方便管理,只要写的干净,让人看的很舒服就好了。我自己设计的用例是这样的: 一个模块对应一个Excel表 一条接口...

    接口测试的本质是通过测试参数的排列组合验证返回值/数据库变更是否符合预期,从而确定接口相关代码是否正确。从业务角度考虑的意思是这些排列组合不是随便想出来,而是业务中有可能出现的排列组合。

    接口测试用例的设计就没什么好讲的了,与功能测试一样设计就好了。我是用Excel来编写的,主要是为了方便管理,只要写的干净,让人看的很舒服就好了。我自己设计的用例是这样的:
    1 一个模块对应一个Excel表
    2 一条接口对应一张sheet表
    3 表中一行对应一条测试用例
    4 在开始要注明测试时需要的sql,如下图开始我会创建用户,用完了我会删除在这里插入图片描述

    展开全文
  • 接口测试接口测试用例设计

    千次阅读 2018-03-06 15:53:18
    导语随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。1 接口测试1.1 接口测试接口:主要是子模块或者子系统间交互并相互作用的部分...

    导语

    随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。

    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 字符串型

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

    例如接口转换设置闹钟的接口DateUtil.getDayOfDDHH(String ddhh),用例可以考虑:

    • 长度为4位,比4位少,比4位多;

    • 边界值:String的最大长度;

    • 特殊值:空字符;

    • 字符串内容可考虑类型:数字,非数字;

    • 特殊字符。

    • 如果是输入用户输入且其他用户可见的内容,则还需要考虑敏感字是否被正常过滤。

    可能出现的问题和风险:

    • 传入非特定类型程序异常退出

    • 超长字符未进行处理,导致存储、显示等异常

    • 其他用户可见设置的敏感字

    2.1.3 数组或链表类型

    参数类型为数组或链表时,用例可以考虑:

    例如批量提交任务的接口submitTask(int[] taskID),参数用例设计考虑:

    • 正常取值:1-5个权限,范围外:6个权限;

    • 边界值:1-35的边界值,请求允许最大最小值;

    • 特殊值:0个;

    • 合法ID和不合法的;

    • 重复的ID等。

    可能存在的问题和风险:

    • 0个item时程序异常退出;

    • 重复的item处理时未去重导致结果异常等。

    2.2 针对逻辑设计

    接口需要进行一些逻辑处理的,那么按逻辑设计用例可以从以下几个角度分析。

    2.2.1 约束条件分析

    (1)数值限制:分数限制、金币限制、等级限制等等。

    例如:兑换Q币活动要求积分>50才可参与。

    (2)状态限制:登录状态等。

    例如:同步用户信息需要先登录账号。

    (3)关系限制:绑定的关系,好友关系等。

    例如:帮家人防骗功能只能查询绑定家人的来电信息。

    (4)权限限制:管理员等。

    约束条件的测试在功能测试中经常遇到,在接口测试中更为重要。它的意义在于:用户进行操作时,在该操作的前端可以已经进行了约束条件的限制,故用户无法直接触发请求该接口。但是实际上,如果有其他手段:例如UI有bug或者通过技术手段直接调用接口,那么接口是否针对这些条件进行了限制就尤为重要。

    例如常见的例子:要兑换5Q币需要200积分,但是我积分不足,所以兑换按钮是灰色无法点击的状态:

    正常用户是无法操作的,但是兑换其实是调后台的一个接口,如果绕过页面按钮的限制,直接调用后台接口兑换呢?是否可以兑换?预期当然是不能兑换的。因此积分这个数值限制就需要针对接口进行测试,并且非常重要。

    其他约束条件类似:

    • 时间约束:22:00之前;

    • 数值约束:积分200;限量5个;

    • 状态约束:登录手机管家;

    • 等等约束条件类似。

    常见的问题和风险:

    • 约束条件判断不足,导致用户可通过特殊手段获取利益

    2.2.2 操作对象分析

    操作通常是针对对象的,例如用户绑定电话号码,电话号码就是操作对象,而这个电话号码的话费、流量也是对象。

    对象分析主要是针对合法和不合法对象进行操作。例如下述用例子:

    • 用户A查询电话P1话费:

    • 用户A查询电话P1流量;

    • 用户A查询电话P2话费;

    • 用户A查询电话P2流量。

    后台的逻辑处理,如果一个电话已经被绑定过,从后台的角度是可以查询到该电话的话费和流量的。但是在用户侧,应该是A绑定了的电话,才能让A查询到该电话的话费。故类似对象的测试也必不可少。

    常见的问题和风险:

    • 用户可访问非权限内的其他用户信息、敏感信息,从而利用这些信息谋取利益。

    2.2.3 状态转换分析

    被测逻辑可以抽象成状态机,各个状态之间根据功能逻辑从一个状态切换到另一个状态。如果我们打乱了这个次序,从一个状态切换到另一个不在它下一状态集中的状态,那么逻辑将会打乱,就会出现逻辑问题。

    如上图所示,从某状态改变到新的状态,依赖于转换接口。而对于某转换接口,其输入状态是确定的,比如Fun23, 这个函数只能把状态2转换为状态3,而不能把状态1转换为状态3。那么测试点就可以是:

    (1)状态为状态2,调用接口Fun23(),状态切换到状态23;

    (2) 状态为1,3等,调用接口Fun23(),状态不能切换。

    例如在做任务的时候,任务有三种状态:未领取,已领取未提交,已完成三种状态。

    那么可以这样设计:

    (1)正常的状态切换:未领取状态,领取任务后变为已领取状态;已领取满足任务条件提交后,变成已完成状态;完成后可以再次领取任务。

    (2) 非正常的状态切换:未领取任务满足任务条件直接提交任务;已领取时再次领取任务等等。

    常见的问题和风险:

    可通过特殊手段达到原本不能的状态,从而谋取利益。

    2.2.4 时序分析

    在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,这些动作形成一个动作流,只有按照这个顺序依次执行,才能得到预期结果。

    在正常的流程里,这些动作是根据程序调用依次进行的,并不会打乱,在接口测试时,需要考虑如果不安装时序执行,是否会出现问题。

    例如,客户端数据同步是由客户端触发进行的,期间的同步用户无法干预。功能测试的时候可见的就是是否能正常进行同步,而进一步分析,同步流程实际涉及了一组动作:

    从时序图可以看出,后台有3个接口:登陆获取用户ID,上报本地数据,上报本地冲突。三个接口需要依次调用执行,才能完成同步。那么在接口测试就可以考虑打乱上述接口的执行顺序去执行,会有怎样的结果,是否会出现异常。例如:获取用户ID后不上报本地数据而直接上报本地冲突。

    常见的问题和风险:

    • 非顺序执行后,数据出现异常,可能还会出现程序其他异常

    • 通过打乱顺序获取利益

    2.3 针对输出设计

    针对输出设计其实是针对接口返回的结果进行分析。

    2.3.1 针对输出结果

    接口处理正确的结果可能只有一个,但是错误异常返回结果有很多情况很多值。如果知道返回结果有很多种,就可以针对不同结果设计用例。例如提交积分任务的时候我们通常能想到的是返回正确和错误,错误可能想到:无效任务,无效登录态,但是不一定能否完全覆盖所有错误码,而接口返回定义的返回码可以设计更多用例:

    覆盖返回码也是用例设计的一种思路。

    常见问题和风险:

    (1)错误前端处理不足,导致前端异常;

    (2)错误提示处理不当,导致用户看到晦涩的错误码;

    (3)错误提示不当,导致用户不知道哪里出了问题,如何解决。

    2.3.2 接口超时

    接口正常情况下是有返回的,那么如果接口不返回呢?也就是说接口超时后的处理也是测试需要考虑的部分。如果超时处理不当,可能会引起以下问题:

    (1)未进行超时处理,导致整个流程阻塞

    (2)超时后又收到接口返回,导致逻辑出现错乱

    2.4 其他测试设计

    2.4.1 已废弃接口测试

    已废弃协议,是指之前有定义,但是因为需求变更或其他原因,目前版本不用。这些接口虽然不再使用,但有可能代码并没有及时删除。如果利用技术手段调用这些接口,可能获取额外利益。

    例如,任务之前有个清理任务,在一个版本需求里将清理任务替换为下载任务。在新版本客户端已不再调用完成清理任务的接口;但是如果该接口未关闭,用户就可以继续请求submitTask(int taskID)接口完成清理任务获得积分。

    因此新版本在考虑兼容旧版本的同时,还应做好相关废弃接口的检查,避免用户获得额外利益。

    2.4.2 接口设计合理性分析

    接口定义是否合理可以从以下几个方面分析:

    (1)接口字段是否冗余;

    (2)接口是否冗余;

    (3)接口是否返回了调用方期望得到的信息;

    (4)接口定义是否可满足所有调用需求;

    (5)接口定义调用是否方便。

    2.5 一个完整的例子

    下面举一个完整例子,通过上述方法来分析如何对接口进行用例设计。

    某模块提供了一个接口给其他模块,用户请求任务,接口定义如下:

    2.5.1 针对输入设计

    dialogDetailText(dialogButtonText类似)

    长度

    1)正常:请安装提示进行操作;

    2)边界:一个字:请;长度非常长:无悬浮窗权限,可能影响XX功能无法使用,请开始悬浮窗权限,以便获得更好的用户体验;甚至更长;

    3)特殊:空字符串。

    内容

    1)特定类型:中文,英文,数字等;

    2)特殊字符:/n/r/t ,.><?*$&%~"ஜღ℡♬€✎等;

    3)敏感字符:非用户设置,不涉及。

    taskID(requestType类似)

    等价类

    取值范围内:1,5,10等;

    取值范围外:0,99。

    边界法

    取值范围边界:0,1,38,39,40

    数据类型边界:-2147483648 ,2147483648

    特殊值:0,-1等。

    遍历法:1,2,3,4,5…38,39对应每种不同ID。

    2.5.2 针对逻辑设计

    (1)约束条件分析

    去引导某功能需要:未完成过任务,任务有任务数据。

    那么用例可以是:以下情况下调requestTask:

    1)未使用过有任务数据时;

    2)未使用无任务数据时;

    3)使用过有任务数据时;

    4)使用过无任务数据时。

    如果有其他约束条件类似设计。

    (2)操作对象分析

    调用请求接口后,会显根据任务数据,引导对应的任务。任务数据,任务操作方式,任务功能都可以是对象。

    1)任务数据

    • 数据类型:本地,云端 等

    • 数据有效性:正确数据,错误数据

    2)操作方式

    方式:安装,下载,打开等等 。

    3)任务功能

    功能:用户操作了该功能,未正常操作该功能;什么都不操作;完成一个任务功能;完成多个任务功能;任务功能使用顺序等等。

    对象:还需要关注,会不会操作到不合法的对象,例如任务数据和功能不对应等问题。

    (3)状态转换分析

    功能是有4个状态的:完成,未完成,未知。状态图如下:这里是产品里涉及的状态转换:

    针对该状态:

    1)正常状态转换:未完成状态请求并完成任务后是否可变成完成状态;未完成状态请求但不完成,还是未完成状态。

    2)走不到的状态路径:未知和完成状态请求任务,不能进行进行该任务。

    (4)时序分析

    从时序的角度分析,调用请求接口前需要以下2步动作:

    1)拉取任务数据;

    2)判断任务状态。

    从时序得到的用例有:

    • 正常时序:按照正常时序请求1 2 3;

    • 缺失的时序

    • 缺少动作1调2 3;缺少动作2调1 3;缺少动作1和2直接调。

    • 打乱的时序

    • 打乱的时序:2 1 3,还可以有1 3 2,2 3 1,3 1 2,3 2 1。

    针对处理逻辑的设计中,可能使用某一种或某几种方式就可以将用例覆盖前,故实际使用中,可能不会全部使用,只要找到最合适的方式覆盖用例即可。

    2.5.3 针对输出分析

    请求任务接口返回的数据是任务完成结果,即返回完成,未完成两种状态(未知都作为完成返回)。

    从结果可以考虑遍历:

    1)未完成

    2)完成

    3)完成-未知

    从接口处理时间分析,考虑:请求后快速返回,很长时间才返回,甚至不返回结果的情况。

    3 小结

    接口用例设计方法中,针对输入、输出的设计是通用的,接口设计时都可用到。对于接口逻辑的设计可能会应用比较适合的一种或几种方法,在接口用例设计时,需要选取最合适的方法去覆盖被测逻辑。

    展开全文
  • 接口测试用例设计

    2018-01-19 12:01:13
    接口测试用例设计 随着测试分析和分层测试的深化,“接口测试”出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。 1 接口测试  1.1 接口测试...
  • 《【接口测试实战(三)】接口测试用例的编写》 相关文档: 《【自动化测试】接口测试基础》 《【自动化测试】接口测试的具体内容和流程》 文章目录1)测试用例1.1 测试点梳理:1.2 部分用例:2)执行用例2.1 新增2.2...
  • 怎样才算是一个好的接口自动化测试用例接口自动化测试是自动化测试的一部分 ,它测试的主要对象是接口 ,是测试系统组件间接口的一种测试。接口自动化测试主要用于检测外部系统与所测系统之间以及内部各系统之间的...
  • 接口测试用例设计 这里写目录标题接口测试用例设计一、输入参数校验二、结果校验三、接口逻辑四、异常数据的处理五、接口安全 一、输入参数校验 1、参数入参类型校验 入参类型与接口文档保持一致。 2、参数必填项...
  • 原文作者:Vincent原出处:博客园...所以接口测试用例编排可以考虑下列两种形式:要注意的是,实际工作场景中我们可能还会对接口之间的串联和混合场景进行测试。二、测试报告模板接口测试报告很多时候会和接口性能测...
  • 通用接口测试用例设计 1.通过性验证:  首先肯定要保证这个借口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。 2.参数组合:  现在有一个操作...
  • 接口测试用例 用例编号 接口功能 接口URL地址 请求方式 请求头 请求参数 请求参数值 预期响应结果 实际响应结果 测试时间 是否通过 YHC-001 删除一条或多条输据 /api/task-...
  • 接口测试用例编写要点 正向用例–符合业务逻辑用例 参数中传入特殊字符,比如∶&、=、>、<、空格等等,尤其是&、=、和空 格,如果这些字符在post、get请求中是关键字,没有转译的话就会出错 传入空...
  • 接口测试用例设计方法 1 接口测试  1.1 接口测试  接口:主要是子模块或者子系统间交互并相互作用的部分。  这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;...
  • 从接口测试目的出发,详细分享接口测试用例设计思路。最后以最常用的增删改查接口为实例分享接口测试用例设计全过程。
  • 文章目录1)接口测试发现的典型问题2)接口测试用例设计2.1 针对输入设计常见参数类型有:2.1.1 数值型常见问题和风险:设计举例:2.1.2 字符串型常见问题和风险:设计举例:2.1.3 数组或链表类型常见问题和风险:...
  • 接口测试用例代码

    千次阅读 2017-11-02 13:51:59
    最近我们组准备开始M项目的接口测试,之前有接触过直接用浏览器或者第三方的工具直接向接口发送请求,检查返回的数据是否正确。本次接口用例代码使用java+TestNg编写,菜鸟级别的我慢慢开始研究和学习,对稍微懂一点...
  • 根据接口文档编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期 接口测试和功能测试一样,流程大致遵守V模型...
  • 接口测试用例设计(详细干货)

    万次阅读 多人点赞 2018-01-19 09:34:46
    那么接口测的用例设计...1 接口测试 1.1 接口测试接口:主要是子模块或者子系统间交互并相互作用的部分。这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法
  • 根据接口文档编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。 接口测试和功能测试一样,流程也大致...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,421
精华内容 11,368
关键字:

删除接口测试用例