引言
做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。
我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语言来进行接口测试,但是脚本依赖的库还是基于之前所在的java为主的测试框架,有兴趣的可以翻翻以前的文章。
项目的架构思路是以模块为基础把接口分类,然后对于接口的请求单独进行实现。通过一个user作为一个用户,携带各种属性,如:uname,pwd,token,userinfobean等信息。来作为各个模块类之间的信息传递。
回到修改密码接口,简单说一下我们接口的逻辑,先登录,获取token作为用户身份的唯一校验值,修改密码接口参数,newpwd,oldpwd,token。成功之后会返回新的token,作为用户继续其他操作的校验值。
测试脚本代码
分享一下自己的测试脚本代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | class T8 extends OkayBase { public static void main(String[] args) { int thread = changeStringToInt(args[ 0 ]) int times = changeStringToInt(args[ 1 ]) List <ThreadBase> threads = new ArrayList<>() for ( int i = 0 ; i < thread; i + + ) { OkayBase base = getBase(i) UserCenter userCenter = new UserCenter(base) userCenter.modifyPwd() ThreadBase threadBase = new ThreadBase() { @Override protected void before() { } @Override protected void doing() throws Exception { userCenter.modifyPwd() } @Override protected void after() { } } threadBase.setTimes(times) threads.add(threadBase) } new Concurrent(threads).start() allOver() } } |
usercenter主要代码
main方法留了两个参数表示线程数和单线程请求数,下面是usercenter的主要代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class UserCenter extends OkayBase { private static Logger logger = LoggerFactory.getLogger(UserCenter. class ); public UserCenter(OkayBase okayBase) { super (okayBase); } public JSONObject modifyPwd() { String url = UserApi.MODIFY_PWD; JSONObject params = getParams(); params.put( "newpwd" , getPassword(this.getUname())); params.put( "oldpwd" , getPassword(this.getPwd())); JSONObject response = getPostResponse(url, params); output(response); if (isRight(response)) { String string = response.getJSONObject( "data" ).getString( "token" ); this.setToken(string); } return response; } } |
okaybase主要代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | public class OkayBase extends SourceCode implements IBase { private static Logger logger = LoggerFactory.getLogger(OkayBase. class ); int uid; String token; String uname; String pwd; public OkayBase(String uname, String pwd) { this.uname = uname; this.pwd = pwd; login(); } public String getPassword() { String s = uname.substring(uname.length() - 6 ); return getPassword(s); } public String getPassword(String pwd) { return RSAUtils.getPassword(pwd); } public JSONObject getParams() { JSONObject json = getJson( "uid=" + uid, "token=" + token); json.put( "imei" , "isFake" ); json.put( "serial" , "W170500652" ); json.put( "ua" , "f_an_4..0" ); return json; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getUid() { return uid; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getUname() { return uname; } @Override public boolean isRight(JSONObject jsonObject) { int code = TEST_ERROR_CODE; try { code = jsonObject.getJSONObject( "meta" ).getInt( "ecode" ); JSONObject data = jsonObject.getJSONObject( "data" ); return code = = 0 && !data.isEmpty(); } catch (Exception e) { return false; } } / * * * 测试结束,资源释放 * / public static void allOver() { FanLibrary.testOver(); } } |
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】
![](https://i-blog.csdnimg.cn/blog_migrate/ccb12c687c9585423d3a253c40f38db9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d97bb7346b9e77f5005fb10c001f41da.png)