如何解決WEB效能測試中的驗證碼問題

testingbang發表於2019-08-05

現在越來越多的網站為了安全性或是防止Spam的侵害,採用了驗證碼的校驗技術。簡單地說,驗證碼就是在進行登入或是內容提交的時候,頁面上會隨機出現一個人工可識別,但機器不可識別的驗證字串(一般是採用背景、扭曲等方式產生的圖片),要求登入或是提交內容時同時輸入這個驗證碼。


驗證碼可以有效防止對口令的刺探和所謂的網路推廣軟體帶來的大量的Spam內容,目前已經被許多Internet或是Intranet應用接受為標準的實現方式。但對效能測試來說,這種驗證碼又帶來了很大的問題。最突出的問題是,效能測試工具本身是自動化工具,由於這種驗證碼採用的是“防止自動化工具嘗試”的方法,因此,在錄製了指令碼之後會發現,很難對指令碼進行調整,以使其適應驗證碼驗證的需要。已經不止一次有人提到這個問題,並詢問有沒有較好的解決方案。


對這個問題,我個人的看法是,基本上可以考慮從三個途徑來解決該問題:

1、第一種方法,也是最容易想到的,在被測系統中暫時遮蔽驗證功能,也就是說,臨時修改應用,無論使用者輸入的是什麼驗證碼,都認為是正確的。這種方法最容易實現,對測試結果也不會有太大的影響(當然,這種方式去掉了“驗證驗證碼”這個環節,不過這個環節本來就很難成為系統效能瓶頸)。但這種方法有一個致命的問題:如果被測系統是一個實際已上線的系統,遮蔽驗證功能會對已經在執行的業務造成非常大的安全性的風險,因此,對於已上線的系統來說,用這種方式就不合適了;


2、第二種方法,在第一種方法的基礎上稍微進行一些改進。第一種方法帶來了很大的安全性問題,那麼我們可以考慮,不取消驗證,但在其中留一個後門,我們設定一個所謂的“萬能驗證碼”,只要使用者輸入這個“萬能驗證碼”,我們就驗證透過,否則,還是按照原先的驗證方式進行驗證。這種方式仍然存在安全性的問題,但由於我們可以透過管理手段將“萬能驗證碼”控制在一個小的範圍內,而且只在效能測試期間保留這個小小的後門,相對第一種方法來說,在安全性方面已經有較大的改進了;


3、如果安全性對應用來說真的是至關重要的,不容許有一絲一毫的閃失,那我們還可以用更進一步的方法來處理這個問題。一般的效能測試工具(MI的LR、Seague的Silk performer等)都能夠呼叫外部的DLL或是元件介面,因此,可以考慮獲得“驗證碼驗證”部分的實現,寫一個驗證碼獲取的DLL,在測試指令碼中進行呼叫即可。


除了這三種方法以外,可能還會有其他的方法存在,也希望各位能提供一些其他的思路。在我的實踐中,第二種方法用得比較多,對未上線系統系統的內部效能測試,有時候也用第一種方法。但要提醒的是,如果針對的是已上線系統,無論用哪種方法,測試完成後,都必須立刻將應用恢復,並對系統進行一次安全審計,以免在測試期間被他人入侵。第三種方法用得比較少,而且具體上還依賴於驗證元件是否能提供這樣的介面。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2652666/,如需轉載,請註明出處,否則將追究法律責任。

相關文章