测试人社区

关于接口测试

对外暴露的外部api,内部会调很多服务,如何设计测试用例,很多场景需要构造的话还需要调接口或者去插入/修改配置,如果在开发的代码进行mock的话,会不会太入侵式了···
比如一个首页,有个list,list内容需要调内部的另一个接口,可能会存在list一堆数据,为空,或者被调服务挂了这些场景,这个如何去设计用例,如何做自动化

你这个问题好发散。先修改下格式吧 :laughing:

没有环境没有log没有报错····这个纯问题···

其实没看懂你的核心问题。痛点到底在哪
你举一个实际的场景,会比较好让人理解。

我不是举例子了么···
比如一个首页,有个list,list内容需要调内部的另一个接口,可能会存在list一堆数据,为空,或者被调服务挂了这些场景,这个如何去设计用例,如何做自动化
再比如,雪球经常拿来练习的https://stock.xueqiu.com/v5/stock/batch/quote.json接口,该接口是客户端直接发起的接口,因为要查股票的一系列信息,肯定要访问内部另一个系统,比如market就是这个接口,那我作为测试人员,对/batch/quote.json去设计用例,我可能会考虑到列表为空的场景,或者股市休市了,这些场景自动化如何去实现?

你说的这些是指一个场景下的接口测试吧。就是一条测试用例,可能回牵涉到多个接口的。
如果你要考虑列表传参或者股市休市,都是可以通过改变接口的传参进行的不是吗。为什么要到mock这个程度。

昨天的直播你看了吧,就讲到这个了。

先说测试用例,根据UI的流程与数据展示,我们可以根据等价类、边界值、判定表、决策树去设计用例。也就是你说的那个经典场景,比如列表为空、接口异常、数据较少,数据较多,异常数据等。

对应的工具,使用charles与mitmproxy都可以搞定的。
基本的业务自动化测试用例使用requests,也就是下周会讲的知识点,这个是核心的用例。
异常的测试,可以使用charles与mitmproxy。
而异常测试的自动化其实是使用了mock技术,这个只能使用mitmproxy去搞定。

我指的的是接口的自动化,不是UI自动化

ui自动化是可以通过代理去实现,但是接口的自动化如何去做呢?

接口自动化也是可以通过python+requests 做成的呀
比如接口1,接口2,接口3。
如果接口2依赖接口1的返回值。可以把接口1的返回值使用任意一个数据结构,列表、字典,甚至文件去存放。然后供接口2调用,这些在代码中都是可以实现的。如果还不明白,咱们可以在群里再讨论一下

但是一些特殊场景,不mock怎么实现?比如雪球股票列表,空场景不改数据库啥的没法实现吧?再比如休市,不在某时间段也不能直接实现吧

咱们群内讨论吧。