下面,本文就從驗證碼的實現手段說起,向各位飽受驗證碼困擾的測試工程師說明,如何通過我們的聰明才智,成功地解決驗證碼帶來的自動化測試方面的問題。
1驗證碼及其為自動化測試帶來的困擾驗證碼一般應用在WEB系統涉及登錄和輸入的頁面上,其實現的一般方法是在頁面上顯示一幅圖片,要求用戶肉眼識別圖片中的信息并將該信息作為輸入的一部分進行提交。頁面上顯示的這幅圖片一般是一串隨機產生的數字或符號,并且被添加了用于防止識別的背景。驗證碼的主要目的是為了防止惡意用戶利用自動工具(機器人)對用戶口令進行暴力破解、惡意注冊用戶,或是向網站發布令人厭煩的廣告信息等。
驗證碼具有隨機性和不易被自動工具識別的特點,當用戶訪問某個使用驗證碼的頁面時,每次對該相同頁面的訪問都會得到一個隨機產生的不同的驗證碼,并且,這些驗證碼具有能夠被人工識別,但很難被自動工具識別的特點,這樣,自動工具就很難適應使用驗證碼的頁面,從而達到保護網站不被惡意使用的目的。
當然,不同網站使用的驗證碼在表現形式上會有所不同。例如,常用的一些論壇程序、小型網站等使用相對較簡單的數字驗證碼;而Hotmail和Gmail等則使用較為復雜的數字、字符等混排的驗證碼,并通過變形等手段對驗證碼圖片進行處理;還有一些網站使用動物圖片作為驗證碼。
圖1給出了幾個典型網站的驗證碼表現。
ITPub的驗證碼 Gmail的驗證碼 Hotmail的驗證碼 圖1幾個典型網站的驗證碼辨證唯物主義告訴我們,任何事務都可以從正反兩個方面來看待,驗證碼也不例外。驗證碼在保護網站不受到惡意注冊和垃圾信息困擾方面發揮了有效的作用,但對于需要使用自動化測試工具進行測試的自動化測試來說,驗證碼則帶來了相當的困擾。因為驗證碼在本質上是一種為了防止自動工具對網站進行操作的手段,而自動化測試工具也不幸屬于自動工具之列,因此,在軟件測試的過程中,驗證碼同樣成為了自動化測試的障礙。
自動化測試工具基本的原理是“錄制”-“回放”,也就是使用測試工具“錄制”用戶的操作形成腳本,并在后續測試過程中通過“回放”該腳本來重復用戶的操作。設想我們使用自動化測試工具對某個使用了驗證碼的網站進行測試,由于驗證碼的存在,錄制得到的腳本就不能直接回放成功。
在各大軟件測試論壇中,“如何處理WEB驗證碼”是一個被經常問到的問題,可見,該問題確實是一個對相當多的測試工程師造成嚴重困擾的問題。解決驗證碼的問題并不容易,但也并不是不能解決,本文擬從生成驗證碼的方法、測試的不同類型和階段提出針對WEB驗證碼的自動化測試解決方案,分析各種方案的優缺點,并結合具體的測試工具說明各種方法的應用。
文章來源于領測軟件測試網 http://www.kjueaiud.com/