閱讀692 返回首頁    go 技術社區[雲棲]


手工腳本__腳本編寫_使用手冊_性能測試-阿裏雲

返回企業版測試腳本

手工腳本

對於非HTTP/HTTPS協議的業務(如: TCP協議等)或者某些內容不能錄製(如:加密算法,非瀏覽器訪問的應用等),需要進行手工編寫代碼開發腳本。

手工腳本語言為Jython,目前支持的Jython版本為2.5.3。 Jython是Python的Java語言實現,它使用Python的語法和類庫,運行在JVM中,和同一個JVM中的Java類可以實現無縫互操作,因此使用Jython作為腳本語言可以最大程度的利用Python的簡潔、高效,同時保留對Java語言的全麵兼容。

  • Jython語法
    Jython程序由一係列語句組成,語句組成了代碼塊,代碼塊組成了方法、函數,然後再通過類把數據、方法和函數封裝起來。和其它高級語言一樣,Jython的語句也是由一些最基本的詞(token)組成。Token可以是標識符(identifiers)、關鍵字(keywords)、字麵值(literals)、操作符(operators)和分割符(delimiters),這些token通過Jython的語言執行器進行詞法分析產生,而詞法分析器通過字符方式讀入Jython腳本文件。
  • 腳本框架
    性能測試的性能測試腳本是一個TestRunner類,這個類會被每一個並發線程初始化。測試進程首先加載腳本並執行腳本中頂格的語句,同時定義TestRunner這個測試類。然後每個線程會實例化一個TestRunner類,調用類中的init方法一次,繼而循環調用TestRunner類的call方法。最後線程結束時會調用類中的del方法。initdel方法都是可選的,隻有call方法是必需的。
#第一部分:執行器聲明和腳本編碼聲明
#! /usr/bin/env python  
# -*- coding: utf-8 -*-
#第二部分:Jython類庫、Java類庫和自定義類的導入
# PTS Script Version 1.0
# PTS腳本SDK:框架API、常用HTTP請求/響應處理API
from util import PTS
from HTTPClient import NVPair
from HTTPClient import Cookie
from HTTPClient import HTTPRequest
from HTTPClient import CookieModule

#第三部分:測試進程級別的腳本語句和初始化
# 腳本初始化段,可以設置壓測引擎的常用HTTP屬性
#PTS.HttpUtilities.setKeepAlive(False)
#PTS.HttpUtilities.setUrlEncoding('GBK')
#PTS.HttpUtilities.setFollowRedirects(False)
#PTS.HttpUtilities.setUseCookieModule(False)
PTS.HttpUtilities.setUseContentEncoding(True)
PTS.HttpUtilities.setUseTransferEncoding(True)

#第四部分:TestRunner測試類
# 腳本執行單元類,每個VU/壓測線程會創建一個TestRunner實例對象
class TestRunner:
    # TestRunner對象的初始化方法,每個線程在創建TestRunner後執行一次該方法
    def __init__(self):
        self.threadContext = PTS.Context.getThreadContext()
        self.init1()
        self.init_cookies = CookieModule.listAllCookies(self.threadContext)
    # 主體壓測方法,每個線程在測試生命周期內會循環調用該方法
    def __call__(self):
        PTS.Data.delayReports = 1
        for c in self.init_cookies:
            CookieModule.addCookie(c, self.threadContext)
        statusCode = self.action1()
        PTS.Framework.setExtraData(statusCode)        
        statusCode = self.action2()
        PTS.Framework.setExtraData(statusCode)                
        PTS.Data.report()
        PTS.Data.delayReports = 0
    # TestRunner銷毀方法,每個線程循環執行完成後執行一次該方法
    def __del__(self):
        for c in self.init_cookies:
            CookieModule.addCookie(c, self.threadContext)
        self.end1()
    # 定義請求函數
    def init1(self):
        ……
     def action2(self):
         ……
def action2(self):
         ……

#第五部分:instrumentMethod語句
# 編織壓測事務
PTS.Framework.instrumentMethod(u'action1', 'action1', TestRunner)
PTS.Framework.instrumentMethod(u'action2', 'action2', TestRunner)

返回企業版測試腳本

最後更新:2016-05-06 10:44:36

  上一篇:go 錄製工具__腳本編寫_使用手冊_性能測試-阿裏雲
  下一篇:go 腳本調試__腳本編寫_使用手冊_性能測試-阿裏雲