一. 使用場景說明
在接口自動化測試中,一般各業務接口會對登錄接口有所依賴,而登錄接口中會存在有要求輸入圖片驗證碼的問題,最終導致接口自動化測試難以順利展開。
二. 圖片驗證碼分析
1. 本文中遇到的驗證碼特點為:字符有扭曲,字符彼此擁擠在一起,字符中存有遮擋線
2. OCR圖像識別可以識別出一些比較規范的字體,不適用於本場景。
3. 如果想成功識別出本文中遇到的驗證碼,有如下幾種方案:
方案1:使用TensorFlow,通過模型訓練,搭建一套符合自身業務特點的驗證碼識別系統
方案2:使用開放的AI模型訓練平台,如百度的EasyDL, 有一定的免費使用次數
方案3:使用收費的圖像識別接口,如圖鑒平台,大概價格是1塊錢可識別500次驗證碼
三. 設計方案說明

1. 用mitmproxy工具來監控UI端操作(mitmproxy服務會以子線程方式啟動),它主要包含有兩個操作: 1)下載驗證碼圖片;2)獲取認證信息。
2. 通過1-2-3步驟,在UI端模擬用戶登錄操作。由於圖片識別接口有一定的失敗率,所以登錄失敗后,會進行登錄重試。
3. 登錄成功后,抓包線程會成功抓取到認證信息,並將其放入隊列中。主線程從隊列中取出認證信息,並保存至config.ini中。
4. 業務API會優先從config.ini中讀取認證信息,如果config.ini中的認證信息失效了,則通過步驟8來刷新認證信息,並自動重新執行業務API。
5. 本方案中涉及到的兩處重試場景(已用下划線標出), 均使用tenacity庫完成的。
