去年咱们公司开发了一款电商产品,这是一款集成了app,web端的b2b2c的电商平台,而咱们在开发web端的时候也采用了先后端分离的开发模式,那么web端加app端产生了大量的接口,这些接口须要管理维护,须要文档编辑,最麻烦的是,由于咱们的业务比较复杂,有很多业务场景须要好几个接口联调,可是又没有合适的接口自动化工具,因而bug频出,先后端开发人员也为此起了很多争执,我做为团队负责人,决定要改变这一现状。javascript
在参考了不少同类产品后,咱们决定选用SBDoc来作为咱们的接口管理平台,它不只集成了文档编写,团队协做,接口运行,mock数据等功能,还有两个功能是让咱们团队大大的提升工做效率的。一个是接口的自动化生成,能够根据接口数据自动生成文档信息,还有一个即是本文分享的重点,接口的自动化测试!java
传统的接口测试每每是接口一个个运行,观察返回数据是否显示正确,而后再用这个接口的出参手动的填入下一个接口的入参,这样的测试流程不只很繁琐,效率低下,遇到业务场景比较复杂的很容易发生错误。因此咱们须要一个自动化测试的解决方案,能够用最少的代价作最有效率的事情。 以SBDoc为例,假设咱们的工程有如下四个接口:git
那么如今有这样一个业务场景,我须要先登陆,而后获取报名订单列表,而若是要登录的话又必需要获取图片验证码而后把验证码输入到登录接口的入参里,若是这样一个业务场景由人工手动来作的话是比较繁琐的,接口以前的信息须要来回切换,那么用SBDoc如何来作自动化测试呢?github
咱们在SBDoc里切换到测试栏目下,新建订单模块,而后新建订单列表测试业务,在订单列表下新建一个测试用例,就叫获取订单列表,以下图所示:web
而后咱们去编写这个测试用例,SBDoc的测试用例用javascript编写便可,js自己仍是比较简单,学习一下很快就能上手,以下图:后端
代码提取出来以下:app
var a=获取验证码;前后端分离
var res=await a();异步
var text=await input("aaa",res.data);函数
log(text);
a=登陆;
var res=await a({
body:{
"code":text
}
});
var c=报名订单列表;
res=await c();
log(res.data.code);
return true;
获取验证码,登录,报名订单列表都是咱们点击插入接口按钮插入的接口,插入页面以下:
上图中baseurl为defaultUrl表明使用默认的baseurl运行,不然能够选择咱们想要的baseUrl,query,header里面若是有参数,咱们能够设置参数的值,好比登录接口的插入页面:
var res=await a();
这一行表明咱们执行获取验证码的接口,由于这是一个异步接口,因此须要es7里面的新语法await来等待这个异步请求的数据返回。
var text=await input("aaa",res.data);
res.data的值就是验证码图形数据,input函数是一个用户输入的函数,第一个参数是显示的title,第二个参数是须要在输入框中显示给用户的内容,这里就是把返回的验证码图片展现给用户看,而后用户手动输入验证码,同时程序等待输入返回,返回值赋值给text变量。
log(text);
log是一个输出函数,只有一个参数,是须要输出的内容。
a=登陆;
var res=await a({
body:{
"code":text
}
});
这段代码就是调用登录接口,将text的内容做为登录接口的body里面的code字段的入参,而后等待接口返回结果。
var c=报名订单列表;
res=await c();
log(res.data.code);
return true;
这一段代码就是调用报名订单列表,而后将返回数据中的code字段打印出来,return true表明这个测试用例已经过,return false表明未经过,return或者没有return语句表明这个用例结果未断定。
最后,不要忘记在每一个语句结束的地方以分号结尾,这个很是重要!
ok,咱们写完后还有一件事情不要忘记了,就是设置defaultUrl,它会做为每一个接口的baseUrl来运行接口,咱们点击这个按钮便可选择:
设置完成后,点击用例编辑页面的运行按钮,会出现下图所示:
这就是input弹出的输入框,图片展现的咱们请求验证码接口返回的验证码图片,咱们输入pppx验证码,而后点击肯定,测试会自动按照流程走下去,当弹出运行完成的提示框时,咱们看下输出标签页:
整个用例的详细输出信息都会完整的打印出来。
那么若是接口须要文件上传,SBDoc可不能够实现呢,答案彻底是能够的,咱们新建一个用例:
而后编辑测试用例的代码:
var a=上传头像;
var res=await a();
log(res.data.data);
return true;
ok,点击运行,便会弹出一个文件选择页面,以下图:
咱们选择须要上传的图片,点击肯定,等弹出运行完成提示框,咱们看下输出标签页的内容显示:
已经执行成功,同时也打印出了新上传图片的路径地址!
那么不一样的测试用例之间能不能联调呢,是彻底能够的,咱们能够在一个用例里面插入另外一个用例,而后用内部对象global来在用例之间传递数据,好比咱们能够把获取订单列表这个用例改写下:
global["name"]="sx";
var c=上传头像;
res=await c();
return true;
把上传头像这个用例也改写下:
var a=上传头像;
var res=await a();
log(global["name"]);
return true;
而后运行获取订单列表这个用例,输入以下所示:
说明用例是能够嵌套运行的,而且能够传递数据。
SBDoc还能够批量运行测试用例,以下图:
如上图所示,勾选你想要运行的测试用例,而后点击运行,即可以批量的运行测试用例,且测试用例的返回状态和输出都会实时的保存起来并显示,以下图:
这样不管是对于先后端开发,仍是测试人员,都很是方便作回归测试啦!
以上都是SBDoc功能的冰山一角,有了SBDoc,团队的沟通和开发效率都提高了不少。另外,SBDoc是免费开源的,不少团队担忧接口的保密性,所以SBDoc提供了简单完善的本地部署功能,可是功能和线上是如出一辙,最重要的是你能够根据团队的需求自由的定制SBDoc,这些都是彻底能够的!
目前SBDoc已经更新到了2.0.3版本,被众多大中型互联网产品公司所使用,不管是稳定性仍是可持续性等方面都是有保障的,感兴趣的朋友能够去产品官网看看:http://sbdoc.cn 码云地址:https://git.oschina.net/sx1989827/SBDoc Github地址:https://github.com/sx1989827/SBDoc