Jmeter—實現識別驗證碼登錄


在做自動化測試或壓力測試時,驗證碼總是一個問題。在以往的壓力測試經歷中,測試一般在獨立的測試環境中進行,可以放心禁用驗證碼或使用萬能驗證碼,這個是最實用的。但是,這兩天我嘗試了一個使用第三方的圖形圖像識別工具來完成驗證碼識別並通過Jmeter完成登錄的過程,識別工具的識別成功率有限,因此本篇估計僅能在理論范圍內適用。

本篇內容大部分內容來自於該作者的文章:http://blog.csdn.net/xreztento/article/details/48682923

總體目的:給Jmeter寫一個后置處理器,用來將上一個請求響應返回的驗證碼圖片識別成文字,並將識別內容保存為Jmeter的一個參數,這個參數供登錄post請求進行登錄驗證,從而完成登錄的自動化過程。

 

工具

 (1)第三方圖形圖像識別工具:tesseract-ocr  下載地址:http://code.google.com/p/tesseract-ocr/downloads/list  基本無法下載,已上傳到我的百度網盤

 安裝后,可以在cmd下試一試是否安裝成功:

 在cmd下輸入命令:tesseract d:\123.jpg result -l eng   意思是將D盤下的123.jpg 識別后放在result.txt下

 

 (2)需要用到的jar包:

 Jmeter插件開發相關的jar包: ApacheJmeter_core.jar jorphon.jar logkit-2.0.jar  這些在Jmeter的lib中都有 直接導入工程項目即可

 圖形處理相關的jar包:jai-imageio-1.1.jar  swingx-1.6.1.jar  從網上下的,已上傳到百度雲盤 jar 文件夾下

插件開發

用java IDE新建一個工程項目,實現兩個部分,一個是識別圖片,一個是Jmeter插件的UI部分。工程項目完成目錄為:

ImageIOHelper.java
OCR.java
TestOCR.java
VodeExtractor.java
VcodeExtractorGUI.java

 

插件生成

插件開發完成后,在Eclipse中 export-Runnable jar file ,將必要的依賴庫加進去,最后會生成一個 .jar 文件

注意:圖形相關的jar包  直接使用時會報錯(Jmeter會報一個錯:java.lang.IllegalArgumentException: vendorName == null) 最終在網上找到了解決方案

生成jar包后,用解壓工具打開,將 /META-INF 目錄下的 MANIFEST.MF 文件用編輯器(我用的是sublime)打開,拷貝進去下面一段代碼,保存壓縮包:

復制代碼
Specification-Title: Java Advanced Imaging Image I/O Tools
Specification-Version: 1.1
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: com.sun.media.imageio
Implementation-Version: 1.1
Implementation-Vendor: Sun Microsystems, Inc.
復制代碼

 

插件插入Jmeter

將 .jar 文件放入Jmeter 安裝路徑下 lib/ext/ 目錄下,重啟Jmeter

可以看到,我們新開發的后置處理器 VcodeExtractor 

再看下大致的登錄過程測試計划:

 

登錄的post請求參數中,可以使用Vcode,Vcode是我們開發的后置處理器 VcodeExtrator 返回的從圖片驗證碼中識別出來的字符串

 

插件效果驗證

把測試計划跑一次  根據察看結果樹  看下效果

 

登錄請求成功啦,但是圖片識別也不是百分百成功,部分失敗情況下,登錄請求肯定會失敗。Tesseract-OCR也有訓練識別的功能,但是不再繼續研究了。

 

關於Tesseract-OCR的延展性學習可參考:

(1)http://www.cnblogs.com/alex-blog/archive/2012/10/08/2714984.html

(2)http://blog.csdn.net/ycb1689/article/details/8520954

(3)http://www.52itstyle.com/thread-4803-1-1.html


免責聲明!

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



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