91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python單鏈路性能測試實例分析

發布時間:2022-07-21 17:11:35 來源:億速云 閱讀:111 作者:iii 欄目:開發技術

這篇文章主要介紹“python單鏈路性能測試實例分析”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“python單鏈路性能測試實例分析”文章能幫助大家解決問題。

    場景思路

    場景

    場景就是老師登錄,首先會請求一個知識點列表,然后通過知識點屬性篩選推薦課程列表,在對課程列表中的數據進行收藏和取消收藏,在獲取自己當前知識點下的課程列表(包含原創和收藏)。

    思路

    本次依然采取固定線程的壓測模型,本人預估線程200左右,測試用戶600備用,列表頁保證2頁數據。

    每個線程綁定一個用戶,然后用戶開始循環鏈路執行步驟,執行一次當做一次Q。單次Q包含9HTTP接口請求(放棄了Socket接口,以后有需求再添加Socket接口到鏈路中),其中3次修改操作,6次查詢操作。

    具體的邏輯通過內部靜態類實現,然后多一個K類,用來存儲每次獲取的知識點屬性,方便調用。由于接口請求方法都是用基礎數據類型和String作為參數,所以調用時候會顯得有點啰嗦。但無傷大雅,腳本寫出來,本來就是用完就扔到倉庫里面,改天再用再優化。

    Demo實現

    package com.okayqa.composer.performance.resource1_4
    import com.alibaba.fastjson.JSON
    import com.alibaba.fastjson.JSONObject
    import com.funtester.base.bean.AbstractBean
    import com.funtester.base.constaint.ThreadLimitTimesCount
    import com.funtester.frame.execute.Concurrent
    import com.funtester.httpclient.ClientManage
    import com.funtester.utils.ArgsUtil
    import com.okayqa.composer.base.OkayBase
    import com.okayqa.composer.function.Mirro
    import com.okayqa.composer.function.OKClass
    class Login_collect_uncollect extends OkayBase {
        public static void main(String[] args) {
            ClientManage.init(10, 5, 0, "", 0)
            def util = new ArgsUtil(args)
            def thread = util.getIntOrdefault(0, 30)
            def times = util.getIntOrdefault(1, 40)
            def tasks = []
            thread.times {
                tasks << new FunTester(it, times)
            }
            new Concurrent(tasks, "資源庫1.4登錄>查詢>收藏>取消收藏鏈路壓測").start()
            allOver()
        }
        private static class FunTester extends ThreadLimitTimesCount<Integer> {
            OkayBase base
            def mirro
            def clazz
            FunTester(Integer integer, int times) {
                super(integer, times, null)
            }
            @Override
            void before() {
                super.before()
                base = getBase(t)
                mirro = new Mirro(base)
                clazz = new OKClass(base)
            }
            @Override
            protected void doing() throws Exception {
            
                def klist = mirro.getKList()</code><code>            mirro.getKList()
                def karray = klist.getJSONArray("data")
                K ks
                karray.each {
                    JSONObject parse = JSON.parse(JSON.toJSONString(it))
                    if (ks == null) {
                        def level = parse.getIntValue("node_level")
                        def type = parse.getIntValue("ktype")
                        def id = parse.getIntValue("id")
                        ks = new K(id, type, level)
                    }
                }
                JSONObject response = clazz.recommend(ks.id, ks.type, ks.level)</code><code>            clazz.recommend(ks.id, ks.type, ks.level)            clazz.recommend(ks.id, ks.type, ks.level)
                def minis = []
                int i = 0
                response.getJSONArray("data").each {
                    if (i++ &lt; 2) {
                        JSONObject parse = JSON.parse(JSON.toJSONString(it))
                        int value = parse.getIntValue("minicourse_id")
                        minis &lt;&lt; value
                    }
                }
                clazz.unCollect(random(minis))
                mirro.getMiniCourseListV3(ks.id, ks.type, 0, ks.level)            mirro.getMiniCourseListV3(ks.id, ks.type, 0, ks.level)
            }
        }
        private static class K extends AbstractBean {
            int id
            int type
            int level
            K(int id, int type, int level) {
                this.id = id
                this.type = type
                this.level = level
            }
        }
    }

    其中AbstractBean類是一個抽象類,用于一些bean的方法封裝,就是為了省事兒。

    package com.funtester.base.bean
    import com.alibaba.fastjson.JSON
    import com.alibaba.fastjson.JSONObject
    import com.funtester.frame.Save
    import com.funtester.frame.SourceCode
    import org.slf4j.Logger
    import org.slf4j.LoggerFactory
    import org.springframework.beans.BeanUtils
    /**
     * bean的基類
     */
    abstract class AbstractBean {
        static final Logger logger = LoggerFactory.getLogger(AbstractBean.class)
        /**
         * 將bean轉化為json,為了進行數據處理和打印
         *
         * @return
         */
        JSONObject toJson() {
            JSONObject.parseObject(JSONObject.toJSONString(this))
        }
        /**
         * 文本形式保存
         */
        def save() {
            Save.saveJson(this.toJson(), this.getClass().toString() + SourceCode.getMark());
        }
        /**
         * 控制臺打印,使用WARN記錄,以便查看
         */
        def print() {
            logger.warn(this.getClass().toString() + ":" + this.toString());
        }
        def initFrom(String str) {
            JSONObject.parseObject(str, this.getClass())
        }
        def initFrom(Object str) {
            initFrom(JSON.toJSONString(str))
        }
        def copyFrom(AbstractBean source) {
            BeanUtils.copyProperties(source, this)
        }
        def copyTo(AbstractBean target) {
            BeanUtils.copyProperties(this, target)
        }
        /**
         * 這里bean的屬性必需是可以訪問的,不然會返回空json串
         * @return
         */
        @Override
        String toString() {
            JSONObject.toJSONString(this)
        }
        @Override
        protected Object clone() {
            initFrom(this)
        }
    }

    控制臺輸出

    ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ JSON ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~
    >  {
    >  ① . "rt":1665,
    >  ① . "total":1188,
    >  ① . "qps":18.018,
    >  ① . "failRate":0.0,
    >  ① . "threads":30,
    >  ① . "startTime":"2021-02-24 16:57:23",
    >  ① . "endTime":"2021-02-24 16:58:34",
    >  ① . "errorRate":1.01,
    >  ① . "executeTotal":1188,
    >  ① . "mark":"資源庫1.4登錄>查詢>收藏>取消收藏鏈路壓測241657",
    >  ① . "table":"eJzj5VLAD15sbXm2a8LTXZMN9Uyez9z9dO9Uu2fzl75Yv8ju2ZRtL6b32z3tn/ZsWweE83Lyvhfb1z/t6362tZvT2EChJKMoNaWYgA0KvFy8+F0RlFpckJ9XnKoQkpmbaqVQoVucWpSZmKOQV5qro1Cpm5uakpmYR8gOQq5QyM3MU4AYZWVhYqmQW6yTm1hhZWxoaQxkE9RNjA2UgEfTOoBo1JZRW2hmRSsQ0ccmsBW0tgnVQzS1DatVtLMRn3W0sPXRtCYgAlLtQITXWura/mhaMxCRYC+VXUGyv2nhmkfTGoGI0rCgrsseTWsBImLSIZ1dCA8sOjmMXNfCU9ZAupNYV8MdC4106qdA2vkAniAGq6OJ8AlVi6GB99FgSvTU8BU8egaBg6jsO3iWHwSuoZUPB4EzRn046sNRHw68M0Z9OOrDEe5DABkr1eo="
    >  }
    ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~ JSON ~?~~?~~?~~?~~?~~?~~?~~?~~?~~?~

    python單鏈路性能測試實例分析

    關于“python單鏈路性能測試實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    二连浩特市| 佛教| 威远县| 四会市| 彭阳县| 于都县| 东乌珠穆沁旗| 宁国市| 宿松县| 邢台市| 白沙| 仪陇县| 双鸭山市| 抚宁县| 台前县| 库伦旗| 京山县| 锡林郭勒盟| 察隅县| 滦平县| 宜黄县| 新兴县| 彩票| 阿拉善左旗| 寿光市| 正定县| 鄂托克旗| 灌南县| 沂南县| 安图县| 东丰县| 木兰县| 依兰县| 广西| 兴海县| 泾阳县| 镇安县| 双桥区| 广丰县| 新宾| 白玉县|