如何在腳本中做關(guān)聯(lián) (Correlation)
當錄制腳本時(shí),VuGen會(huì )攔截client端(瀏覽器)與server端(網(wǎng)站服務(wù)器)之間的對話(huà),并且通通記錄下來(lái),產(chǎn)生腳本。在VuGen的Recording Log中,您可以找到瀏覽器與服務(wù)器之間所有的對話(huà),包含通訊內容、日期、時(shí)間、瀏覽器的請求、服務(wù)器的響應內容等等。腳本和Recording Log最大的差別在于,腳本只記錄了client端要對server端所說(shuō)的話(huà),而Recording Log則是完整紀錄二者的對話(huà)。
當執行腳本時(shí),您可以把VuGen想象成是一個(gè)演員,它偽裝成瀏覽器,然后根據腳本,把當初真的瀏覽器所說(shuō)過(guò)的話(huà),再對網(wǎng)站伺服器重新說(shuō)一遍,VuGen企圖騙過(guò)服務(wù)器,讓服務(wù)器以為它就是當初的瀏覽器,然后把網(wǎng)站內容傳送給VuGen。
所以紀錄在腳本中要跟服務(wù)器所說(shuō)的話(huà),完全與當初錄制時(shí)所說(shuō)的一樣,是寫(xiě)死的(hard-coded)。這樣的作法在遇到有些比較聰明的服務(wù)器時(shí),還是會(huì )失效。這時(shí)就需要透過(guò)「關(guān)聯(lián)(correlation)」的做法來(lái)讓VuGen可以再次成功地騙過(guò)服務(wù)器。
何謂關(guān)聯(lián)(correlation)?
所謂的關(guān)聯(lián)(correlation)就是把腳本中某些寫(xiě)死的(hard-coded)數據,轉變成是擷取自服務(wù)器所送的、動(dòng)態(tài)的、每次都不一樣的數據。
舉一個(gè)常見(jiàn)的例子,剛剛提到有些比較聰明的服務(wù)器,這些服務(wù)器在每個(gè)瀏覽器第一次跟它要數據時(shí),都會(huì )在數據中夾帶一個(gè)唯一的辨識碼,接下來(lái)就會(huì )利用這個(gè)辨識碼來(lái)辨識跟它要數據的是不是同一個(gè)瀏覽器。一般稱(chēng)這個(gè)辨識碼為Session ID。對于每個(gè)新的交易,服務(wù)器都會(huì )產(chǎn)生新的Session ID給瀏覽器。這也就是為什么執行腳本會(huì )失敗的原因,因為VuGen還是用舊的Session ID向服務(wù)器要數據,服務(wù)器會(huì )發(fā)現這個(gè)Session ID是失效的或是它根本不認識這個(gè)Session ID,當然就不會(huì )傳送正確的網(wǎng)頁(yè)數據給VuGen了。
下面的圖示說(shuō)明了這樣的情形:
當錄制腳本時(shí),瀏覽器送出網(wǎng)頁(yè)A的請求,服務(wù)器將網(wǎng)頁(yè)A的內容傳送給瀏覽器,并且?jiàn)A帶了一個(gè)ID=123的數據,當瀏覽器再送出網(wǎng)頁(yè)B的情求時(shí),這時(shí)就要用到ID=123的數據,服務(wù)器才會(huì )認為這是合法的請求,并且把網(wǎng)頁(yè)B的內容送回給瀏覽器。
在執行腳本時(shí)會(huì )發(fā)生什么狀況?瀏覽器再送出網(wǎng)頁(yè)B的請求時(shí),用的還是當初錄制的ID=123的數據,而不是用服務(wù)器新給的ID=456,整個(gè)腳本的執行就會(huì )失敗。
要對付這種服務(wù)器,我們必須想辦法找出這個(gè)Session ID到底是什么、位于何處,然后把它擷取下來(lái),放到某個(gè)參數中,并且取代掉腳本中有用到Session ID的部份,這樣就可以成功騙過(guò)服務(wù)器,正確地完成整個(gè)交易了。
哪些錯誤代表著(zhù)我應該做關(guān)聯(lián)(correlation)?
假如腳本需要關(guān)聯(lián)(correlation),在還沒(méi)做之前是不會(huì )執行通過(guò)的,也就是說(shuō)會(huì )有錯誤訊息發(fā)生。不過(guò),很不幸地,并沒(méi)有任何特定的錯誤訊息是和關(guān)聯(lián)(correlation)有關(guān)系的。會(huì )出現什么錯誤訊息,與系統實(shí)做的錯誤處理機制有關(guān)。錯誤訊息有可能會(huì )提醒您要重新登入,但是也有可能直接就顯示HTTP 404的錯誤訊息。
要如何做關(guān)聯(lián)(correlation)?
關(guān)聯(lián)(correlation)函數
關(guān)聯(lián)(correlation)會(huì )用到下列的函數:
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/