专栏首页FunTester如何对修改密码接口进行压测

如何对修改密码接口进行压测

做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如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();    }}

点击阅读原文,有兴趣的童鞋可以一起交流

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何测试这个方法--性能篇

    首先来看第一个方法,第一眼看过去,发现一个问题:该类是一个工具类,方法都是静态的。在第一个方法中,SimpleDateFormat对象每次调用的时候都会创建,而...

    FunTester
  • 一个循环启动APP并保持WiFi常开的多线程类

    本人在使用monkey进行测试的时候,发现monkey参数里面--pct-appswitch参数并不好用,随机性比较大,所以想自己来控制启动APP的次数和间隔。...

    FunTester
  • 基于java的直线型接口测试框架初探

    在使用java语言作为接口测试的过程中,发现java语言的简洁性的确不如脚本语言,如python,很多功能python一行代码几个方法就能搞定,java需要几行...

    FunTester
  • 如何对修改密码接口进行压测

      做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、so...

    小老鼠
  • SpringBoot 中 mongo多数据源配置新姿势

    SpringBoot对常用的数据库支持外,对NoSQL 数据库也进行了封装自动化。这一篇主要讲springboot与mongo多数据源相关的配置

    码农小胖哥
  • Shiro + JWT + Spring Boot Restful 简易教程

    GitHub 项目地址:https://github.com/Smith-Cruise/Spring-Boot-Shiro 。

    java思维导图
  • springboot研究:springboot使用swagger自动构建api

    对于开发人员来说,维护接口文档是一件头疼的事情,因为接口会时不时发生变化。这样可能测试人员或者新入职的同事会看到接口文档跟实际接口有出入。而对于开发人员,接口的...

    jinjunzhu
  • Spring Boot使用Shiro实现登录授权认证

    1、Shiro是Apache下的一个开源项目,我们称之为Apache Shiro。它是一个很易用与Java项目的的安全框架,提供了认证、授权、加密、会话管理,与...

    朝雨忆轻尘
  • JDK 8 新特性 之 Strams简单使用

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观...

    Jacob丶
  • 用java开发微信公众号:公众号接入和access_token管理(二)

    上一篇说了微信开发的准备工作,准备工作完成之后,就要开始步入正题了。其实微信公众号开发,说白了,就是要构造和发送http或https的请求组成,并根据请求的返回...

    古时的风筝

扫码关注云+社区

领取腾讯云代金券