接口测试 接口测试用例到底应该怎么写

stone9159 · 2018年01月22日 · 最后由 stone9159 回复于 2021年12月09日 · 13271 次阅读

最近自己在练习写一些接口测试的用例,网上常说接口测试其实就是功能测试,这点很赞同,但是关于接口测试用例怎么写,却很迷茫,一个方法只有两三个参数,设计用例还好,当时当一个函数参数上了 5 个,这种怎么设计,光考虑边界值就有几十条,考虑是否空,也分了某个参数空,某两个参数空,还有字符类型,只要愿意,就可能组合出无数种可能,感觉这样的接口测试效率,带来的利益并不高,但是也没有找到合适的突破口,网上看了很多例子,基本都是只是以登录为主,两个参数的情况,求大神指点啊,,,到底应该怎么去设计出更高效的接口测试用例

共收到 17 条回复 时间 点赞

看我的帖子,pict 全对偶生成接口测试参数是否能满足你的要求

https://testerhome.com/topics/11677 这里不是有个帖子吗~

Joo 回复

我觉得他那个走设计的角度来说很完善,但是在实际操作中不太现实,,如果结合他前面说的,当一个方法有多个参数(>4),每种可能一条用例,那个数量还是很吓人,所以很想知道在设计数据的时候是不是有什么比较好的门道,平衡覆盖率和收益

恩,谢谢回答,这个以前我搜索过,但是没找到工具,后来自己手工计算四个参数的情况,但是算到后来就不明白为什么这种方式就能很好的代替全覆盖的情况

https://testerhome.com/topics/11626
分享下我的思路,可以参考下 参数多的情况下要全覆盖,还是要靠工具来提升效率和保障执行

stone9159 回复

多个条件可以使用正交表进行用例的裁剪,我有写过相关的 lib
https://github.com/lovesoo/OrthogonalArrayTest

公司做的就是后端接口测试,写过的接口测试用例实际上很多都是按照功能测试用例的方法来写,比如很多接口已经在线上使用了,比如一个需求中 需要这个接口进行一些改变 ,那就要进行测试,而关注点就是在具体多参数,为空,不输入,异常,这些都需要测一遍,但是这个还只是参数这方面,更多的是关注返回数据 数据字段里面的正确性,像楼主这样接口请求参数存在很多新增加参数的时候 那你的用例只会是在第一次写的时候会很多 但是后面如果这个接口 再次改变参数 实际上 你完全可以把以前的参数用例拿来使用,这样就节约了时间。但是前提是要有用例库的存在。

小小测试 回复

刚接触接口测试,请问不输入参数是指 直接不传该参数吗,我用 jmeter 测接口时,没有传其中一个必传参数导致服务器返回 500,但我去找开发时,开发说客户端不会不传这个字段的,测这个没有意义只用测参数为空的情况就好了,是这样吗?

amethyst 回复

说的我在网上了解的一些看法哈,理论上这种都是算 bug,但是实际设计用例的时候会进行一下讨论:
1.输入中哪些在后端限制,哪些在前端限制,因为有些在后端处理反而受益不高,这些就需要加强前端输入的验证
2.有些参数是不可能存在空值,比如登录这种,接口登录后才能调用,用户名自己就获取到了,就不会存在字符串类型,字符格式不对
3.通过 1,2 对参数进行筛选,在通过他们说的正交表生成测试用例,在进行适当的增减,基本都可以了
4.你说的情形如果开发说的情形确实不存在就可以忽略,否则你可以自己设计正式使用场景来推翻他,以例子为证
5.其实我们公司也是,开发说是啥,就是啥,虽然公司说改革,改了几次,感觉变化并不大,因为项目太多,永远都是在老项目上修改,要验收了,才开始测试,受够了这种模式,加上家庭原因,辞职了

stone9159 回复

谢谢啦,感谢你的耐心解答,解决我一直以来的一些困惑,因为一直一个人摸索,可能很多基础的概念都不太清楚,我应该在这家公司也待不了多久了, 打算年后辞职,还是需要有同行交流才能进步啊

amethyst 回复

首先 我想知道到你的必传参数 是指在 jmeter 中根本就没写个参数 还是这个参数 的值为空 如果是值为空 那么返回 500 肯定是 bug 首先 不管前段必传这个字段过来,但是有种情况就是 安全性 现在别人 跟不不走你的 app 或者网页 直接接口调用,这个在我测试中遇见过的 一个活动 投票 结果 发现 某个歌手的 票数异常 ,但是通过日志查询 发现这些用户 全部的行为 就是一样的 直接调用接口 投票 其他接口完全没有使用到 但是后来分析 正常用户不可能这样。像你说的 参数没传 那你接口返回应该会有必选参数为空,而参数值为空,参数值错误或者其他提示 ,这里开发很多时候觉得麻烦或者就是狡辩认为接口返回的提示或者其他 code 码用户根本看不见,但是一个测试的规范就在这里 每种异常正常的返回结果的 code 都是不一样的,方便以后日志查询,前端团队的调用。所以说没传与为空 都是一种异常测试的行为。这里在说一哈 不传的意思是:请求参数 这 3 个 ua version prizeId 那么 不传其中一个参数 的意思就是 ua version 这 2 个的值正常传,最后一个就不传。这一样是一种情况。参数值的不传 ua =1.0 version=ios prizeId= ,没的值 null 这样又是一种情况。这个是坑本人试过的。哈哈 单纯把自己想表达的说了出来。

amethyst 回复

妹子在杭州不?我们公司招人噢,欢迎来聊
https://testerhome.com/topics/11840

求接口用例怎么写,会写功能,感觉接口用例一脸懵逼,不知道怎么写

eleven111 回复

仔细读一下 2L 分享的资料,你就能大致明白,然后根据自己公司的情况,正如前面有人说的,小公司根本没有时间给你测试接口,UI 测试的时间都不是很多,所以,自己仔细去研究研究

Joo 回复

很多人都在要测试用例 , 但作者没能给出来

请问楼主的测试用例最终怎么写的?可以给来参考下么

Xuebing Du 回复

不好意思,没有找到解决办法,只能说不忙的时候全覆盖,忙的时候先设计优先级高的场景,空闲了在补充优先级不高的用例

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册