Jmeter 場景設計


今天的業務場景是:

1.管理員登錄后台---登錄成功后添加一個某類型的產品---產品添加成功后,再為該產品添加10個排期。

2.管理員登錄后台--登錄成功后添加多個不同類型產品---產品全部添加完成后,依次為所有產品添加10個排期。

這是兩種不同的場景,下面是兩個場景的實現方法:

場景一:

1.登錄模塊,登錄模塊比較簡單,不做記錄

要求登錄一次之后,進行其他操作。因此登錄模塊放到了僅一次控制器中

2.增加產品

產品類型分為4中,不同類型對應不同的proTypeId。將4種不同類型的產品ID放到文本文件中。

產品名字與類型一樣,也可以使用讀取文件的方式參數化。如果對產品名稱沒有具體要求的話,直接使用隨機字符串的函數生成也是可以的。

在添加產品的請求中,用函數來一次讀取該文件中的參數(效果就是:第一次迭代添加的是A類型的產品,第二次迭代添加的是B類型的產品,依次循環類推)

該函數在使用時要注意,必須寫為:${__CSVRead(C:\Users\XXX\Desktop\producttype.txt,0)}${__CSVRead(C:\Users\XXX\Desktop\producttype.txt,next())},這樣寫的含義是,先讀取到第一個值,之后在一次向下讀取。如果只寫讀取下一個的函數是讀不到值的

在請求產品之前,會有一個添加圖片的接口。就是我們平時使用的軟件中,點擊上傳圖片之后選擇圖片,此時會獲得一個圖片的url地址(一般上傳圖片的都是這樣的流程)。這時候是post的圖片文件,如果使用抓包軟件或者錄制,由於是二級制的,得到的都是亂碼。所以這里的參數,手動添加一下就可以了。

再用一個正則把獲取到的URL 獲取到就可以了。

這樣就完成了添加產品的場景。

之后需要為該產品添加排期,前提是先找到這個產品的ID。由於產品添加成功后是不會返回ID回來的,所以需要去數據庫中獲取到這個ID ,需要一個Jdbc請求

 

3.增加排期

 

 這里post的請求中,參數就需要之前數據庫中查出來的id了,直接使用即可。

由於要求每個產品增加10個排期,因此添加循環控制器,設置循環次數為10 就可以了。

以上就完成了第一個場景的模擬。

 

場景二:

該場景與場景一的不同在於:要產品添加完成之后,再對每個產品添加多個排期。

前面登錄和添加產品的步驟基本是一致的(該場景需要把添加產品的步驟放在循環控制器中),下面直接說添加排期的問題。

添加排期:前提是獲取到所有產品的ID,可以參考上面圖中的jdbc request,改一下sql就可以了。

這時,我們的參數id是這樣的:id_1=6994a163-5d29-4fcc-a19b-752f389c76d6,id_2=....等等

idrs是這樣的:idrs=[{Id=8cb7f419-6155-4ed7-847d-d4e6d17c5297}, {Id=908d37cf-d328-4ce1-b08a-76b4012dd911}..等等.]
 
可以通過idrs獲取到我們的Id ,方法為${__BeanShell(vars.getObject("idrs").get(${__counter(false,count)}-1).get("Id"),finalid)}。該方法中下標是用當前迭代總數-1來表示的,會有個缺點,當迭代總數大於我們的參數個數時,就取不到值了。可以自己創建一個參數文件,但是當id炒雞多時,這樣就麻煩了。。。
 
之后換了實現方式,通過foreach控制器來循環取出id的值就可以了。

foreach控制器與我們寫代碼時候的foreach循環含義其實是一樣的。依次循環獲取到值,並執行foreach里面的sample。foreach里面sample的設置:

 foreach完成一次循環是為每次產品增加了一次排期,需求是增加10個。在foreach的外層再加一個循環控制器即可。

以上就完成了第二個場景的設計。

上述2個腳本其實也可以用來准備測試數據,前端要看多個產品的排版顯示等,都可以直接執行一下腳本,自動生成測試數據。

最后設置線程組控制加壓就可以了,浪涌式、階梯式等等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM