• 1
  • 0
分享

做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语言来进行接口测试,但是脚本依赖的库还是基于之前所在的java为主的测试框架,有兴趣的可以翻翻以前的文章。项目的架构思路是以模块为基础把接口分类,然后对于接口的请求单独进行实现。通过一个user作为一个用户,携带各种属性,如:uname,pwd,token,userinfobean等信息。来作为各个模块类之间的信息传递。

回到修改密码接口,简单说一下我们接口的逻辑,先登录,获取token作为用户身份的唯一校验值,修改密码接口参数,newpwd,oldpwd,token。成功之后会返回新的token,作为用户继续其他操作的校验值。

分享一下自己的测试脚本代码:

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()    
   }}

main方法留了两个参数表示线程数和单线程请求数,下面是usercenter的主要代码。

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的主要代码:

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();    }}

欢迎有兴趣的童鞋一起交流。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在第三方测试机构做测试多年,后来进入做产品的公司负责测试工作,才发现在第三方测试机构做测试是多么幸福的事。简要来说,产品形公司开发和测试往往在同一个部门,没有部门间沟通时的仪式感,往往比较随意。由此,测试会面临如下困局:1.需求飘忽不定;2.版本界限模糊3.留给测试的实际时间与计划时间往往差别巨大已上任意一方面事件的发生,会使得测试焦头烂额,何况往往是已上几点的叠加。常见的场景是:在软件临近发布的时候,部门领导整天对你瞪眼,嫌你拖慢了进度,嫌你测试不够充分,殊不知,开发给你交付软件比项目计划晚了好长时间,严重压缩了你的测试时间。经过实践,提出以下几方面的措施供大家参考:第一.明确需求。这个需求...
            0 1 2013
            分享
          •   前言  软件测试行业3年多经验,学历大专+自考本科,主要测试方向web,PC端,wap站,小程序公众号都测试过,app也测过一些,C端B端都有,除功能外,接口性能也有涉猎,但是不能算精通,脚本也能写一些,但是工作中用不到(基本工具开发的脚本已经够工作中使用),不知道是互联网行业今年如此艰难,还是我自己真的太菜了?坐标区域,北京,这是我的一位朋友目前遇到的状况!接下来我们就帮他分析分析他可能存在的问题?有那些方面可以优化的,甚至学习补强的,我们一一细说!  海投简历迟迟没有得到公司邀约面试?可能存在的问题  企业一般看3点: 学历 能力 履历  学历不行的情况下把自身技术提升起来。 技术硬了...
            0 0 1432
            分享
          • 一、Java集合框架概述集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、Set、Queue,因此Java集合大致也可分成List、Set、Queue、Map四种接口体系,(注意:Map不是Collection的子接口)。其中List代表了有序可重复集合,可直接根据元素的索引来访问;Set代表无序不可重复集合,只能根据元素本身来访问;Queue是队列集合;Map代表的是存储k...
            0 0 965
            分享
          • 功能测试最基本的测试,主要是测试软件的APP功能点、业务逻辑;关联性(主要是测试客户端PC的交互,客户端处理完后,保证PC端数据同步一致)。性能测试Cpu,占用不超过10%响应时间(包括APP启动和退出)满足258原则,2秒以内用户感觉很快,2-5秒感觉一般,5-8秒感觉很慢,但是能接受,8秒以上用户无法接受,选择离开,或者再次发送请求。耗电量,与cpu有关内存兼容性测试手机app需要重点关注的:不同操作系统:android、IOS不同手机厂商:华为,小米等不同手机屏幕分辨率与其他第三方APP的兼容安装卸载更新测试也是手机app比较特别的测试点:安装路径,手机还是sd卡上高低版本的覆盖安装内存...
            14 13 2089
            分享
          •        1、Spring是什么?Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。主要包括以下七个模块:Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;Spring AOP:AOP服务;Spring Web:提供了基本的面向Web的综合特性,提供对常见框架如Struts2的支持,Spring能够管理这些框架,...
            14 14 922
            分享
      • 51testing软件测试圈微信