一、loadrunner虛擬用戶開發---變量詳細解析
變量的定義
局部變量和全局變量
1、在init action end中定義的變量就是局部變量
2、在gloabal中定義的變量是全局變量
3、什么時候定義全局變量?
整個過程中固定不變的,例如url地址,KEY 其他,需要定義成全局變量。
簡單例子:
在action里,定義一個變量a,賦值10,然后打印a,可以看到結果打印出10.
可以看出,在LR中打印的時候,只需要用LR的函數lr_output_message就可以了,C語言的函數printf沒起作用。
在C語言里,可以使用到變量時再定義變量,但是在LR里,需要在開始定義完,不可以在中間定義。
在vuser_init \vuser_action\ vuser_ end函數內部定義的變量是局部變量,只能在該函數內部使用。
例如,在action中定義了變量,vuser_end中打印變量a,則編譯的時候出現報錯,找不到定義的 a。
想要定義全局變量,需要在函數globals.h里。
以下在globals.h定義變量p,然后在init和end里調用變量,用來獲取內存,回放結果是正常的。
二、 LR虛擬用戶腳本開發--常用語法和使用誤區
1、指針的用法
以下是腳本例子以及釋義:
運行結果如下,結果打印出A和loadrunner
2、數組的用法
例子1:
打印結果中,為什么p=ABCDELoadrunner!!!,而不是p=ABCDE?這是因為在LR或者C語言中,以字符串的形式打印出一個指針,到什么時候結束呢,是到遇到\0的時候,,這是C語言的語法。P的結果打印從A開始,然后到E后,繼續打印Loadrunner!!!,在C語言中,字符串后邊會有默認的\0,所以打印完字符串Loadrunner!!!就結束了。
例子2:
查看以上統計字符串長度的例子。針對字符串“Loadrunner!!!”,為什么sizeof拿到的長度是14,strlen拿到的是13?因為sizeof統計了默認的\0,而strlen沒有。
例子3:
這里的輸出結果為什么是abcdea,而不是abcde呢?因為數組定義的長度是5,而字符串abcde后邊有默認的\0的,加上這個就是長度為6了,超長了所以\0被丟棄,打印完abcde后就繼續打印了a。
例子4:
如果把數組長度改成了6,那么輸出結果就是abcde了
需要注意的:
1)注意中文的分號;
2)變量使用前盡量初始化;
3)字符數組盡量少用;
4)在使用數組的時候,一定要保證數組足夠長