如何性能测试中进行业务验证?

在性能测试过程中,验证HTTP code和响应业务code码是比较基础的,但是在一些业务中,这些参数并不能保证接口正常响应了,很可能返回了错误信息,所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务验证的Demo。

改接口请求资源详情,其中有一个字段是表示该用户对于该资源的操作状态,踩赞类型:1-赞,2-踩,3-取消赞,4-取消踩。

改压测一个接口,但是需要两个接口的数据提供数据,一个是登录,一个是操作改资源的接口。

具体的项目结构之前讲过,主要解决了请求方式,身份验证的问题,这里不再细说登录以及如何将身份令牌传递给。下面分享一下点赞和资源详情的方法代码,两者分属两个模块未在一个类里面,我这里单独挑出来:

 /**
     * 点赞和踩
     *
     * @param resId     资源id
     * @param operation 操作类型(踩赞类型:1-赞,2-踩,3-取消赞,4-取消踩)
     * @return
     */
    public JSONObject likeOrNot(int resId, int operation) {
        String url = FlowApi.LIKE_OR_NOT;
        JSONObject params = getParams();
        params.put("isCoursePackage", 0);//标识是否课程包 0-否 1-是
        params.put("operation", operation);
        params.put("resId", resId);
        params.put("resType", 5);//1-课件;2-题集;3-教学资料;4-课程包;5:题目
        JSONObject response = getPostResponse(url, params);
        output(response);
        return response;
    }

/**
     * 课程包详情
     *
     * @param resid 资源ID 1030167
     * @return
     */
    public JSONObject courseDetail(int resid) {
        String url = LauncherApi.COURSE_DETAIL;
        JSONObject params = getParams();
        params.put("id", resid);
        JSONObject response = getPostResponse(url, params);
//        output(response);
        return response;
    }
下面是压测脚本,是用Groovy写的,方便在服务器上调试,但是跟Java有些不同,如果用编译器的童鞋请注意编译器异常,有些找不着引用对象的时候需要手动,或者忽略这些异常:

    public static void main(String[] args) {
        def argsUtil = new ArgsUtil(args)
        def thread = argsUtil.getIntOrdefault(0, 2)
        def times = argsUtil.getIntOrdefault(1, 2)

        def threads = []

        thread.times {

            threads << new ThreadLimitTimesCount(it, times) {

                def resid = 1030167

                def operation = getRandomInt(4)

                def drive

                @Override
                public void before() {
                    super.before()
                    def base = new OkayBase(it)
                    def flow = new Flow(base)
                    flow.likeOrNot(this.resid, this.operation)
                    this.drive = new Launcher(base)
                    sleep(1000)
                }


                @Override
                protected void doing() throws Exception {
                    def response = this.drive.courseDetail(this.resid)
                    int anInt = response.getJSONObject("data").getInt("like_state");
                    if (anInt != 3) fail();
                }

                @Override
                protected void after() {

                }
            }
        }

        new Concurrent(threads).start()

        allOver();
    }
在doing()方法中response的响应处理可能会抛出异常,fail()是一个封装的抛出通用运行异常的方法,用来标记响应失败,在框架中会捕捉doing()方法的异常,并记录统计线程运行过程的数据。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

如何性能测试中进行业务验证?_第1张图片

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

如何性能测试中进行业务验证?_第2张图片

 如何性能测试中进行业务验证?_第3张图片

如何性能测试中进行业务验证?_第4张图片

 

你可能感兴趣的:(软件测试,自动化测试,技术分享,自动化测试,软件测试)