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

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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 亲爱的小伙伴们,感谢大家参与51testing软件测试圈6月更文活动《大佬养成计划》。本次活动时间从2022年6月1日——2022年6月30日参加此次更文活动的作者共7名,合计更文72篇。经过30天作者们辛苦的码字,终于在审核老师挑灯夜战的情况下,筛选出优质文章合计46篇。详细更文情况如下:排名作者名称更文篇数优质文章1瑾沐沐21162lee25153月亮554黎明1445陆空336abei227青禾test11获奖名单第一名:瑾沐沐(京东卡500)第二名:lee(京东卡200)请获奖用户及时联系恬恬圈或者甜甜圈领取奖励点击右侧可查看本次活动全部文章:大佬养成计划推荐本次活动7分以上优质文章:...
            9 10 7596
            分享
          • 读者提问:『阿常你好,想请教一下,测试研发的人数科学比例应该是多少呢 ?』阿常回答:没有标准的参考比例,每个团队的实际情况不一样。比如,我们可能需要考虑的几个因素:1、软件的易测试程度2、测试人员和开发人员的经验3、必须坚持的质量标准4、研发测试流程成熟度阿常碎碎念:以上,代表阿常个人观点。看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家后台私信阿常,一起探讨交流。
            0 0 1290
            分享
          •   小鹏汽车 CEO 何小鹏18日分享了智驾团队在德国拍摄的高速 NGP 测试视频,并称当前“进展不错”。  何小鹏表示,位于德国的团队反馈,小鹏 XNGP“感知泛化能力极强”,拿到欧洲之后几乎可以直接上路,而且受过国内交通路况“博弈训练”的智驾软件,在海外的体验格外流畅。“从技术层面上来看,高阶智驾全球都能用指日可待。”  本月早些时候,近千台小鹏 G9 发运德国,为小鹏汽车有史以来单次最大规模的海外发运。据悉,此次出口总值超过 5 亿元,创中国高端智驾纯电汽车单船出口价值第一。上月末,小鹏汽车宣布正式进入德国市场,并将于今年 5 月开始在德国销售小鹏 G9 和小鹏 P7 的国际版车型。  ...
            0 0 716
            分享
          • 在之前的文章和视频中,我分享过Groovy语法中def关键字的基本使用方法。当时对def理解是:不定类型变量,资料中也有说是无类型变量,感觉两个意思大差不差,就是不显式声明对象类型。基本使用方式如下:def a = 1def b = "FunTester"类似这样的方式,当时Java新版也已经支持了var可以替代一些显式声明变量类型的代码,但是除了使用范围上,Groovy的def还是明显优于var,而且功能上也是强不少(当然有人理解为弱不少,后续讲解)。本质区别在于Groovy的def不仅可以替代显式的类型声明,还...
            0 0 926
            分享
          • 前言入软件测试行至今已经8年多,承领导们的信任与重用,同事的支持与信任,我的职业发展算是相对较好,从入行到各类测试技术岗位,再到测试总监,每一步都刚刚好。最近在自身职业发展瓶颈,人生十字路口,静坐反思,重新审视个人规划与测试人员发展的这个问题,问回自己:你为什么做软件测试工程师?胡思乱想之下有了此文。一、软件测试起源网上有一些经典的软件事故,大家感兴趣可以自己搜索一下,我搜了几个列举如下:简单总结:软件出现缺陷(BUG)导致经济或其他损失,因此有了软件测试。由此可知软件测试目的:发现缺陷(问题),发现至今未发现的缺陷(问题)。二、测试行业现状每年测试人员大量涌入,但需求仍大于供给国内各种测试培...
            14 14 1552
            分享
      • 51testing软件测试圈微信