性能測試是指針對產(chǎn)品的業(yè)務(wù)場景,通過設(shè)計(jì)場景和壓力,對產(chǎn)品進(jìn)行高并發(fā)量、大數(shù)據(jù)量的測試,主要目的是為了確定產(chǎn)品在高并發(fā)情況下的各項(xiàng)指標(biāo):平均處理時(shí)間,QPS,網(wǎng)絡(luò)IO,磁盤讀寫等。永洪BI具有高耦合性、海量數(shù)據(jù)、大計(jì)算量、復(fù)雜邏輯等特點(diǎn),因此性能測試尤為重要,對于用戶實(shí)際使用場景,性能問題可能要比功能問題更多。
對于性能測試,常見的工具有很多,對于永洪BI這類產(chǎn)品,更適合使用的工具為LoadRunner和JMeter。LoadRunner是最經(jīng)典的性能測試工具,支持功能較全面,但是最主要的問題是比較貴,需要購買Licence,因此市場占用率已經(jīng)大不如前。另外一個(gè)可選工具是JMeter,此工具為開源工具,完全免費(fèi),雖然支持功能不像LoadRunner那么全,但是完全可以通過添加各種組件的方式進(jìn)行功能擴(kuò)充。
引入原因
當(dāng)前性能測試主要是基于LoadRunner,最主要的問題是腳本編寫比較復(fù)雜,返回?cái)?shù)據(jù)很難進(jìn)行判斷,因此不能滿足所有性能測試場景的覆蓋。
實(shí)際使用過程中,現(xiàn)場部署人員和支持人員常常會被用戶提出以下需求:
能不能用JMeter進(jìn)行測試。
能不能把報(bào)表中的數(shù)據(jù)取出,進(jìn)行判斷,用于確定性能測試腳本確實(shí)沒問題。
批量添加測試用戶、賦權(quán)(對于8.6前的老版本無法通過Excel導(dǎo)入的方式進(jìn)行添加)。
為了客戶現(xiàn)場支援人員和客戶更加容易進(jìn)行性能測試,以另外一個(gè)思路使用JMeter作為壓測工具編寫基于API的性能測試。這種測試方式最大的好處是用戶能夠加判定條件,返回?cái)?shù)據(jù)以報(bào)文的方式進(jìn)行驗(yàn)證,使用工具比較簡單。熟練使用基于API的性能測試對于現(xiàn)場支持人員和測試人員非常有幫助,可以大幅度提高工作效率。
這種測試方法主要是基于永洪BI的API接口,以當(dāng)前的API接口完全滿足性能測試需求。這種方法的優(yōu)點(diǎn)是腳本編寫比較簡單、工具免費(fèi)、除了常規(guī)性能測試還可以通過API接口進(jìn)行一些其他工作,比如刪除無用報(bào)表、批量添加數(shù)據(jù)源、并發(fā)創(chuàng)建大批報(bào)表等。
使用前提
WebAPI 是基于servlet實(shí)現(xiàn),API所有的方法的調(diào)用需要構(gòu)建xml格式的請求內(nèi)容,post到這個(gè)servlet,并且返回xml格式的字符串作為響應(yīng)。想要基于API做集成開發(fā)需要構(gòu)建和解析xml格式字符串,并通過http協(xié)議進(jìn)行通訊。
修改web.xml
使用WebAPI首先需要修改Yonghong/tomcat/webapps /bi/WEB-INF/web.xml,在其中添加如下報(bào)文:
<servlet>
<servlet-name>YonghongWebApi</servlet-name>
<servlet-class>g5.sv.httpapi.YonghongWebApi</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>YonghongWebApi</servlet-name>
<url-pattern>/api</url-pattern>
</servlet-mapping>
設(shè)置系統(tǒng)權(quán)限
需要交系統(tǒng)設(shè)置問文件權(quán)限系統(tǒng),進(jìn)入管理系統(tǒng)-系統(tǒng)設(shè)置-權(quán)限管理系統(tǒng)配置,選擇文件權(quán)限管理系統(tǒng)并點(diǎn)擊應(yīng)用按鈕,如下圖所示:
腳本編寫
腳本編寫過程中,基本需要以下幾個(gè)接口來進(jìn)行:
權(quán)限驗(yàn)證
退出權(quán)限
批量獲得儀表盤中表格、交叉表、圖表、文本組件的數(shù)據(jù)
權(quán)限驗(yàn)證接口
http://ip:port/bi/api?action=login&adminv=xxxx&passv=xxxx
此接口調(diào)用比較簡單,主要是需要在url里邊拼接用戶賬戶和密碼,adminv后接用戶賬戶,passv后接密碼,需要注意的問題如下:
密碼不可設(shè)置為特殊字符”"“和”<“,其他特殊字符需要轉(zhuǎn)義登錄
權(quán)限驗(yàn)證返回的token代表一個(gè)http session,不需要每次調(diào)用API時(shí)都調(diào)用這個(gè)接口。token的失效時(shí)間由屬性:secure.session.timeout=1800000的值控制,單位為秒,默認(rèn)失效時(shí)間為30分鐘
最后一定要調(diào)用“退出權(quán)限”接口,否則可能會導(dǎo)致短期內(nèi)出現(xiàn)用戶數(shù)過多,無法權(quán)限驗(yàn)證的情況。并且此接口只是用來進(jìn)行api驗(yàn)證用,不能用來進(jìn)行單點(diǎn)登錄
需要傳一個(gè)xmlData,值為空,否則接口調(diào)用不能通過驗(yàn)證。
退出權(quán)限
http://ip:port/bi/api?action=logout&token=xxxx
請求參數(shù)只在url上添加token信息或者post傳入token信息
批量獲得儀表盤中表格、交叉表、圖表、文本組件的數(shù)據(jù):
http://ip:port/bi/api?action=getElemDatas&token=xxxx
xmlData中對應(yīng)的報(bào)文如下:
<?xml version="1.0" encoding="utf-8"?>
<info>
<dbpath>test/Data_4G_100W_vooltdb</dbpath>
<elements>
<element>
<name>圖表1</name>
<page>
<pageSize>25</pageSize>
<pageNow>1</pageNow>
</page>
</element>
</elements>
</info>
其中各項(xiàng)參數(shù)的意義如下:
DBPATH:儀表盤路徑
NAME:要訪問儀表中的元素
PAGESIZE:分頁每頁多少行數(shù)據(jù)
PAGENOW:獲取第幾分頁的數(shù)據(jù)
需要注意的是腳本中需要將此xml報(bào)文進(jìn)行要,去掉這些換行符,壓縮后形式如下:
<?xml version="1.0" encoding="utf-8"?><info><dbpath>test/Data_4G_100W_vooltdb</dbpath><elements><element><name>圖表1</name><page><pageSize>25</pageSize><pageNow>1</pageNow></page></element></elements></info>
JMeter腳本報(bào)文如下:
基于API性能測試的方法大概就是這樣,活用API接口,對于很多工作都有幫助,比如添加用戶、賦予權(quán)限等等,對于用戶希望能夠獲取報(bào)表中所有數(shù)據(jù)的需求(希望壓測時(shí)可以通過返回?cái)?shù)據(jù)來判斷是否成功)可以通過基于API接口的性能測試,另外編寫demo作為參考。








暫無數(shù)據(jù)