移动端-安卓-接口测试用例编写


前言

再好的测试框架或者是测试环境,也都是为了测试用例服务,怎样写出高质量的测试用例才是关键,符合项目需求,能发现问题,能提高效率的自动化测试用例,才是比较有效的自动化接口测试用例。

之前的文章也介绍过我们应该测试什么接口,简单到具体实现就是方法。

一、方法类型

方法类型按照返回值的角度可以分为两种。(构造函数比较特殊)
有返回值类型的方法。
没有返回值类型的方法。

在这里插入图片描述

这里先给大家一些前提的概念。然后再一一进行各种类型接口的分析,然后该如何编写测试用例。

二、编写测试用例步骤

1.深刻理解接口对应的业务和具体代码的实现

在这里插入图片描述

在测试接口之前如果不深入理解这个接口对应的业务功能。
那么写出来的测试用例也是脱离业务的,部分用例会存在测试意义不大的使用场景。

举个案例:
之前有个接口是查询公交路线的接口,接口传入起始点和终点的经纬度,返回查询到的公交路线的详细信息。
从结果的角度考虑,我们会设计两种场景的测试用例。
有公交路线的。
没有公交路线的。

业务角度
从用户的角度考虑,是不知道有没有确定的公交路线。
但我们需要站在用户的角度去考虑使用场景。
对于市内:家和公司,景点,医院,学校,超市,商场,汽车站,火车站,飞机场,政府部门。等生活常用场景,分别覆盖有公交路线的,没公交路线的。
跨市:传入跨市坐标点,有公交路线的,没公交路线的。
跨省:传入跨省,有公交路线的,没公交路线的。
特殊场景:同一坐标点,去国外,台湾,海南,海上等。

以上场景都是根据从业务的角度去考虑设计测试用例,基本上覆盖了大部分的场景。

代码角度
比如:就是对经纬度的一个遍历,(0,90)(90,180)
南极,北极,181,361,360等

有的接口实现会根据环境或者参数产生不同的分支,if else语句 ,switch case语句等
我们需要采用白盒测试的思维去覆盖每一种情况。

比如有的接口是更新数据库的操作,当需要更新数据库的数据和数据库已存在的数据不同时,才需要进行更新。
这种接口就需要覆盖两种场景,与数据库相同,与数据库不相同的场景。

有的接口还存在身份验证的问题,需要考虑验证信息是否正确的因素。但是业务上可能就是登录成功后。

接口种类有很多,此处我只列举了几种,大家一定要对接口的实现和对应的业务理解深入。

正常情况下,一个接口可以写出5-12条以上的测试用例。

测试用例设计思维导图
将以上场景,以思维导图的形式,和测试TE评审后即可进行编写测试用例。
在这里插入图片描述

2.代码实现

1.创建测试类
2.编写测试用例@Test
3.测试用例调试(合入)

案例:

public class XXXTest  {
    @BeforeClass
    public static void  classSetup(){
        //一次,测试类加载时只执行一次
    }
    @Before
    public void setUp(){
        // before test
        //每条测试用例执行之前都会做的
    }
    @Test
    public void testXXX() {
    //准备测试环境和参数
    //因为可以访问源码,直接调用接口
    //断言期望值
    }
    
    @Test
    public void testxxx2(){

    }
    @Test
    public void testxxx1(){

    }

    @After
    public void tearDown(){
        //测试用例执行完之后都会做的
        //需要还原测试用例修改的环境,比如数据库操作等
    }

    @AfterClass
    public static void  classtearDown(){
    //同上类似
    }

}

3.断言细节

我们在对接口的返回值进行断言时,遵循以下几点规则。
1.断言到数据的三层
2.断言到基本数据类型
3.输入和输出的必然逻辑关系(尽量满足充分且必要的条件)

三、特殊类型接口

无返回值接口

有的接口存在没有返回值的情况,但大部分接口是通过间接的方式去获取返回值。
常见的set类型接口,可能直接返回true或者false。
但是数据是否真正被修改还是需要通过get进行查询,从而进行断言。

最特殊的情况,就是接口没有任何方式获取到返回值,那么就说明这种接口的设计存在缺陷,不符合编程的设计思想,接口不好测,可以推动开发去重构接口。

异步接口

处理这种接口时,通常都是接口采用的是观察者模式的设计,监察到接口回调时,才会进行返回值的处理,这种接口也是比较常见的,很多接口处理起来可能是个耗时动作,都会采用这种设计。

两个线程,测试用例所在线程,接口回调发生的异步线程,怎么让他们实现等待和同步呢。
其实java提供很多方法,此处我就提及一下ConditionVariable的用法,类似于锁机制。
在我们调用接口后,如果不在测试线程等在接口回调的异步线程返回结果,那么就会直接会进行下一步的断言,而此时是没有拿到期望的返回值,这种情况肯定是不允许的。

所以使用ConditionVariable ,在异步回调中打开锁,在测试线程调用接口后关闭锁并设置等待时长,规定时间内,如果异步回调没有将锁打开,说明接口响应超时。如果规定时间内,锁打开,则说明异步回调以及处理完。

总结

接口测试的经验就一共三篇文件,介绍了接口测试的概念,测试什么,有什么意义,包括环境搭建,包括测试用例的编写,总结一句话,持之以恒,大家共勉。

有任何疑问欢迎大家留言和讨论,接口测试的经验也只是我个人的总结,大家需要根据实际的项目需要去使用。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,针对图书馆管理系统,我们可以编写以下测试用例: 1. 用户登录功能测试用例- 输入正确的用户名和密码,登录成功 - 输入不存在的用户名和密码,提示错误信息 - 输入正确的用户名但错误的密码,提示错误信息 2. 图书查询功能测试用例- 按书名查询,查询结果正确 - 按作者查询,查询结果正确 - 按出版社查询,查询结果正确 - 输入不存在的关键字查询,提示查询结果为空 3. 图书借阅功能测试用例- 图书可借阅,借阅成功 - 图书不可借阅,借阅失败 - 借阅同一本书超过规定的借阅天数,产生逾期罚款 - 逾期罚款产生后,不能再借阅其他书籍 4. 图书归还功能测试用例- 图书已借出,归还成功 - 图书未借出,归还失败 - 归还同一本书超过规定的归还天数,产生逾期罚款 - 逾期罚款产生后,不能再借阅其他书籍 5. 用户信息管理测试用例- 用户信息正确修改成功 - 用户信息删除成功 - 用户信息添加成功 6. 图书信息管理测试用例- 图书信息正确修改成功 - 图书信息删除成功 - 图书信息添加成功 7. 系统安全性测试用例- 输入非法字符,系统能够正确响应并提示错误信息 - 输入SQL注入代码,系统能够正确拦截并提示错误信息 - 输入恶意脚本,系统能够正确拦截并提示错误信息 以上是一些基本的测试用例,具体测试用例编写还需要根据实际情况进行补充。同时,我们需要注意对测试用例的覆盖率,尽可能覆盖到系统的所有功能和场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值