692
阿裏雲
手工腳本__腳本編寫_使用手冊_性能測試-阿裏雲
手工腳本
對於非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方法。init和del方法都是可選的,隻有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
上一篇:
錄製工具__腳本編寫_使用手冊_性能測試-阿裏雲
下一篇:
腳本調試__腳本編寫_使用手冊_性能測試-阿裏雲
添加端口轉發規則__NAT網關相關接口_API 參考_雲服務器 ECS-阿裏雲
公交站點_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
馬雲八年前遭受非議卻堅持布局終成正果,阿裏雲成功讓質疑者啞口無言
GetBucketLogging__關於Bucket的操作_API 參考_對象存儲 OSS-阿裏雲
查詢回源流量__資源監控接口_API 手冊_CDN-阿裏雲
訪問鏈路問題排查__常見問題_產品使用問題_容器服務-阿裏雲
雲服務器 ECS 快照(Snapshot)快照 2.0 產品規格升級
企業郵箱在iPhone5上使用的設置說明__客戶端使用_郵箱常見問題_企業郵箱-阿裏雲
消費冪等__最佳實踐_消息隊列 MQ-阿裏雲
OSSReader__Reader插件_使用手冊_數據集成-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲