腾讯TMQ在线沙龙回顾|接口测试用例设计

活动介绍

TMQ第四十期在线沙龙分享活动圆满结束啦!

本次分享的主题:接口测试用例设计

共有470位测试小伙伴报名参加活动。

想知道活动分享了啥吗?

请往下看吧!

嘉宾

刘燕:腾讯高级测试工程师,目前主要负责手机管家产品的测试。在用例设计、协议测试、安全测试、白盒测试、接口测试等方面积累了丰富的经验。

分享主题

接口测试用例设计

问答环节

1、接口测试是否有必要测试人员阅读源码,再根据源码设计测试用例?

答:最好可以阅读源码,这可以帮助测试人员更好的了解被测系统和程序实现。还有一个额外收益:测试在阅读源码(CodeReview)的时候也可以发现一些缺陷。我们可以根据源码来设计测试用例,同时,测试人员也需要特别注意避免被开发的思维限制,也需要跳出源码,从黑盒测试的角度出发,去设计和思考用例。

2、异常的测试有必要做那么多吗?

答:一些情况下异常测试是非常必要的,而在一些情况下的确是不需要这么多。

例如,在游戏测试中,客户端和后台的接口,需要要做充分的异常测试。协议通常有加密,但是因为游戏有利益可图,总有一些人去破解(协议都是可被破解的,只是时间和成本问题),那么一旦破解,就可以绕过客户端直接访问后台接口,如果后台逻辑有漏洞,就有利可图了。因此在很多游戏中,需要保证后台逻辑的健壮性。还有,一些提供给外部使用的接口,也需要做好异常测试,因为你不清楚调用者会怎么使用,那么作为一个可靠的提供方,保证自己的稳定和健壮是非常有必要的。另外一些情况,可能这些异常是外部无法触发的,那么这种情况下,异常问题就没有那么高的优先级去解决。

测试中,通常需要去权衡测试成本和产品质量,找到一个平衡点。

3、接口测试可以完全脱离客户端界面而进行测试吗?

答:是可以的,因为接口测试测试对象是接口,当然客户端也可直接访问接口的,但还有些接口是程序内部调用的,客户端无法直接访问。接口测试通常需要一些工具辅助或自己编写测试工具,或测试代码等,便捷地调用和访问被测接口,方便我们的测试。

4、接口参数化测试有什么优秀的工具或者框架可以使用吗?

答:接口参数化,内部有些工具有类似功能,但很多时候不能完全满足所有需求(有些需求比较个性化)。业界比较通用的工具和框架,暂时不是很清楚。从理论上讲,清楚了参数化的规则,根据常见的需求实现参数化工具,应该不是问题。

5、接口用例维护在哪里?自动化接口测试用例是否复用?

答:接口用例的形式大致可分为三种:手工、半自动化、全自动化。

手工执行的用例和我们平时的用例相似,需要手工操作,维护和保存文字形式的测试用例,下次测试还需要手工执行。

半自动化的用例通常有相关代码或其他形式的存储,但测试时还需要人工介入。

自动化的用例在回归时可以直接执行,也可以每天去执行,这部分通常是可以完全复用的。

6、接口测试断言时,需要与数据库记录比对吗?

答:接口测试中,测试一个接口的时候预期得到什么结果,设计的时候是清楚的。这个预期结果可能是返回成功或某个错误码;可能接口需要对某个数据进行操作,那么这个时候接口测试也是同时需要验证数据的正确性,这种情况就需要校验数据(校验数据库或者数据存储)。其他需要检查的预期也是类似,在接口测试时同时检查。

7、项目中接口测试的流程是什么样的呢?在什么时间段进行开发,在什么时间段进行测试呢?和功能测试的比例分配是怎么做的呢?

答:项目中,接口测试可以比传统功能测试更靠前。开发的接口设计好,那么测试就可以着手准备和编写接口测试用例了。接口开发完成,接口测试就可以执行测试了,并不需要等到整个模块完成。理想状态下,接口测试是和开发并行的。

接口和功能测试的比例,这个要看具体情况。例如有些模块通过传统方法难以验证,而接口测试会非常方便,那么接口测试比例就可以很高,达到9:1甚至更高;有些模块可能传统测试手工就可以很方便地验证,而接口测试需要付出更高的成本,那么传统功能测试占比适当高些。

8、有回调函数的接口怎么来测试?

答:猜测可能是这种问题:调用完被测函数,直接断言,可能回调还没有被执行,因此用例可能会失败。这个问题其实是如何将异步调用转成同步,常见的方法是:

(1) 阻塞线程运行,防止过早断言;

(2) 异步回调中唤醒线程;

(3) 异步回调执行完毕,线程继续,此时再进行断言。

9、主讲人介绍的接口测试与开发所做的单元测试区别在什么地方?

答:接口测试的测试对象是接口,单元测试指对软件中的最小可测试单元进行检查和验证。从概念上来讲,接口测试比单元测试更广泛。单元测试的测试单位通常是函数,也就是说广泛意义的接口测试,包含了单元测试。接口测试用例设计思想不单单是针对接口的功能,还需要考量跟接口相关调用者或者多个接口交互;单元测试用例可能更多的是针对该函数内部处理逻辑。接口测试通常是测试人员来进行,单元测试更多是开发来进行。

10、已废弃的接口不维护 那么旧版本无法兼容怎么办?

答:已废弃的接口,指之前有使用,由于一些原因不再使用的接口。一些情况下确实还需要考虑旧版本兼容的问题,这种情况通常的处理方式有几种:

(1) 旧版本不支持继续访问,提醒用户升级版本;

(2) 接口请求时判断版本号,只有特定的版本才能访问。

沙龙视频

视频内容

手机扫码下载PPT

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磨磨谈

如何测量Ceph OSD内存占用

这个工具我第一次看到是在填坑群里面看到,是由研发-北京-蓝星同学分享的,看到比较有趣,就写一篇相关的记录下用法

19520
来自专栏java工会

15个顶级Java多线程面试题及答案,快来看看吧

18450
来自专栏猿学

猿学-使用Pabot并行运行RF案例

在做接口自动化时随着案例增多,特别是流程类案例增多,特别是asp.net的webform类型的项目,再加上数据库校验也比较耗时,导致RF执行案例时间越来越长,就...

13610
来自专栏程序员的SOD蜜

唯一不变的就是一直在变”--“数据”的华丽“变身术”

 系列文章索引: [WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 一] 同步一个数据库要发多少个数据包? [WCF邮件通信系统应用 之 数据同步...

22060
来自专栏Vue ssr

php,vue,vue-ssr 三版本页面对比Demo

目前我这边的web页面,都是采用php+smarty模板生成的,是一种比较早期的开发模式。好处是没有现阶段常用的前后端分离出现的首屏问题,因为其本身就是服务器渲...

49410
来自专栏JavaEdge

分布式MySQL集群方案

2K60
来自专栏子勰随笔

SDK设计心得之架构和资源

65640
来自专栏IT米粉

Redis常见的应用场景解析

缓存是Redis最常见的应用场景,之所有这么使用,主要是因为Redis读写性能优异。而且逐渐有取代memcached,成为首选服务端缓存的组件。而且,Redis...

84980
来自专栏hotqin888的专栏

HydroCMS水利设计管理系统,基于beego框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

15620
来自专栏C++

python笔记:#006#程序执行原理

13820

扫码关注云+社区

领取腾讯云代金券