自動(dòng)化測(cè)試解決驗(yàn)證碼問(wèn)題

公號(hào):軟測(cè)小生 ruancexiaosheng

image.png

現(xiàn)在的很多網(wǎng)站在登陸時(shí)都需要驗(yàn)證碼蜜托,倘若遇到自動(dòng)化測(cè)試時(shí),怎么解決呢敢订?

驗(yàn)證碼大概有以下幾種:
有的是圖片驗(yàn)證碼:圖片上顯示數(shù)字响巢,漢字,英文數(shù)字以及算術(shù)題等重抖;
有短信/郵箱發(fā)送驗(yàn)證碼:一般為四位/六位/八位數(shù)字驗(yàn)證碼露氮;
有語(yǔ)音驗(yàn)證碼:電話接聽(tīng)語(yǔ)音播報(bào)此次驗(yàn)證碼;

首先來(lái)說(shuō)說(shuō)我所遇到的項(xiàng)目經(jīng)驗(yàn):
項(xiàng)目有短信和郵箱兩種方式發(fā)送8位的數(shù)字驗(yàn)證碼钟沛。
短信驗(yàn)證碼只做了手工測(cè)試畔规,當(dāng)時(shí)想的是短信驗(yàn)證碼需要一臺(tái)手機(jī),并且能夠發(fā)送驗(yàn)證碼恨统,由于當(dāng)時(shí)沒(méi)有做移動(dòng)端的任何測(cè)試叁扫,考慮到成本問(wèn)題只能在自動(dòng)化測(cè)試是放棄這種登錄驗(yàn)證方式三妈,只保證功能在手工測(cè)試時(shí)正常通過(guò);
然后在登陸時(shí)選擇郵件發(fā)送驗(yàn)證碼莫绣,如何取得驗(yàn)證碼呢畴蒲?
首先申請(qǐng)了一個(gè)公用郵箱,專門用來(lái)接收驗(yàn)證碼对室,然后寫一個(gè)自動(dòng)登錄腳本登陸郵箱(好在郵箱登陸時(shí)不用驗(yàn)證碼)模燥,解析郵件內(nèi)容,獲取驗(yàn)證碼掩宜。

后來(lái)我不在這個(gè)項(xiàng)目了蔫骂,聽(tīng)同事說(shuō)是不再使用郵件和短信這種方式來(lái)驗(yàn)證了(是在確保了發(fā)送驗(yàn)證碼這一功能上線正常之后才使用的),直接通過(guò)托管的日志文件管理工具Splunk去獲取驗(yàn)證碼牺汤,相當(dāng)于繞過(guò)發(fā)送到短信/郵箱纠吴。

為了更好地解決問(wèn)題,首先來(lái)了解一下驗(yàn)證碼的機(jī)制:

為什么登陸時(shí)需要驗(yàn)證碼慧瘤?
沒(méi)有驗(yàn)證碼登陸戴已,黑客會(huì)更加容易破解你的賬號(hào),通過(guò)組合碼刷機(jī)等黑客技術(shù)來(lái)破取你的密碼锅减,有了驗(yàn)證碼相當(dāng)于加了一層很厚的屏障糖儡,安全系數(shù)很高。
驗(yàn)證碼是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序怔匣。
驗(yàn)證碼作用:可以防止惡意破解密碼握联、刷票、論壇灌水每瞒,有效防止某個(gè)黑客對(duì)某一個(gè)特定注冊(cè)用戶用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試金闽,實(shí)際上是用驗(yàn)證碼是現(xiàn)在很多網(wǎng)站通行的方式(比如招商銀行的網(wǎng)上個(gè)人銀行,百度社區(qū))剿骨,利用比較簡(jiǎn)易的方式實(shí)現(xiàn)了這個(gè)功能代芜,同時(shí)驗(yàn)證碼的樣子也會(huì)盡量千奇百怪,讓機(jī)器不能夠識(shí)別浓利。

驗(yàn)證碼一般存儲(chǔ)在哪里挤庇?(如何測(cè)試驗(yàn)證碼)

驗(yàn)證碼服務(wù)端存儲(chǔ)設(shè)計(jì):服務(wù)器生成驗(yàn)證碼后,存儲(chǔ)起來(lái)(緩存或者持久化)贷掖,以方便用戶提交驗(yàn)證碼時(shí)進(jìn)行驗(yàn)證嫡秕。
1、存儲(chǔ)在本進(jìn)程內(nèi)存中:服務(wù)器生成驗(yàn)證碼后苹威,即將驗(yàn)證碼存儲(chǔ)在服務(wù)器中昆咽,一般以session方式進(jìn)行存儲(chǔ)。
優(yōu)點(diǎn):性能好
缺點(diǎn):擴(kuò)展性查、占用服務(wù)器內(nèi)存
**如何測(cè)試:其他進(jìn)程是訪問(wèn)不到服務(wù)進(jìn)程的掷酗,只能在開(kāi)發(fā)時(shí)服務(wù)進(jìn)程內(nèi)增加驗(yàn)證碼查詢接口调违,以方便驗(yàn)證,上線時(shí)汇在,將此接口移除或禁用翰萨。 **
2脏答、存儲(chǔ)在文件中
3糕殉、存儲(chǔ)在數(shù)據(jù)庫(kù)中
優(yōu)點(diǎn):可供多個(gè)服務(wù)進(jìn)程查詢
缺點(diǎn):性能稍差,占用數(shù)據(jù)庫(kù)服務(wù)器性能
如何測(cè)試:(1)進(jìn)程內(nèi)提供接口殖告,方便查詢(2)直接進(jìn)行數(shù)據(jù)庫(kù)查詢
4阿蝶、存儲(chǔ)在redis等nosql數(shù)據(jù)庫(kù)中
優(yōu)點(diǎn):性能高、一般nosql數(shù)據(jù)庫(kù)提供集群功能黄绩,可靠性高
如何測(cè)試:調(diào)用nosql的客戶端驅(qū)動(dòng)羡洁,進(jìn)行查詢

驗(yàn)證碼的機(jī)制
前端:前端網(wǎng)頁(yè)通過(guò)一個(gè)URL來(lái)對(duì)后端進(jìn)行請(qǐng)求,通常會(huì)給這個(gè)請(qǐng)求帶上一個(gè)時(shí)間戳或者是隨機(jī)數(shù)爽丹。
后端:接收到前端的request筑煮,后端會(huì)先生成一個(gè)隨機(jī)數(shù)(通常4位),然后把該隨機(jī)數(shù)存到與該客戶端的session里面粤蝎。隨后把該隨機(jī)數(shù)圖像處理一下真仲,變得讓機(jī)器難以識(shí)別。隨后把圖片(jpg或者png)直接發(fā)送到前端(response)初澎。

然后后端驗(yàn)證用戶輸入圖片上的驗(yàn)證碼/或短信郵箱中的驗(yàn)證碼與后臺(tái)生成的驗(yàn)證碼是否一致秸应,一致即可登錄。

PS:前端想獲得隨機(jī)數(shù)的值碑宴,如果是模板型網(wǎng)頁(yè)(如jsp软啼、php、asp等)可以在服務(wù)器端訪問(wèn)session來(lái)獲取值延柠。而如果是RESTfulAPI型的祸挪,就只能通過(guò)ajax對(duì)服務(wù)器進(jìn)行請(qǐng)求來(lái)獲得值了。

自動(dòng)化測(cè)試遇到驗(yàn)證碼的啟發(fā):自動(dòng)化測(cè)試時(shí)如何應(yīng)對(duì)驗(yàn)證碼

從上述的驗(yàn)證碼測(cè)試方案中可以得出:在做自動(dòng)化登陸的同時(shí)贞间,可以采取同樣四種的方式來(lái)取得驗(yàn)證碼匕积,繞過(guò)短信郵件圖片驗(yàn)證碼的識(shí)別讀取過(guò)程(當(dāng)然的確保驗(yàn)證碼的功能模塊實(shí)現(xiàn)已經(jīng)正常)。

當(dāng)然在自動(dòng)化測(cè)試登陸過(guò)程中榜跌,還有幾種應(yīng)對(duì)方案:

其一:去掉驗(yàn)證碼(測(cè)試環(huán)境)
這是最簡(jiǎn)單的方法闪唆,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),只是把驗(yàn)證碼的相關(guān)代碼注釋掉即可钓葫,線上環(huán)境取消注釋驗(yàn)證碼模塊悄蕾。如果是在測(cè)試環(huán)境,這樣做可省去了測(cè)試人員不少麻煩,線上環(huán)境若是去掉驗(yàn)證碼的話一般是不可取的帆调,線上環(huán)境可選擇下面的方案二奠骄。

其二:設(shè)置萬(wàn)能驗(yàn)證碼(應(yīng)該是最佳選擇,但是需要開(kāi)發(fā)人員的支持)
去掉驗(yàn)證碼的主要是安全問(wèn)題番刊,為了應(yīng)對(duì)在線系統(tǒng)的安全性威脅含鳞,可以在修改程序時(shí)不取消驗(yàn)證碼,而是程序中留一個(gè)“后門”——設(shè)置一個(gè)“萬(wàn)能驗(yàn)證碼” 芹务,只要用戶輸入這個(gè)“萬(wàn)能驗(yàn)證碼” 蝉绷,程序就認(rèn)為驗(yàn)證通過(guò),否則按照原先的驗(yàn)證方式進(jìn)行驗(yàn)證枣抱。

其三:驗(yàn)證碼識(shí)別技術(shù)
例如可以通過(guò) Python-tesseract等技術(shù)來(lái)識(shí)別圖片驗(yàn)證碼熔吗,Python-tesseract 是光學(xué)字符識(shí)別 Tesseract OCR 引擎的 Python 封裝類。能夠讀取任何常規(guī)的圖片文件(JPG, GIF ,PNG , TIFF 等)佳晶。不過(guò)桅狠,目前市面上的驗(yàn)證碼形式繁多,目前任何一種驗(yàn)證碼識(shí)別技術(shù)轿秧,識(shí)別率都不是 100% 中跌。
目前有很多專門做驗(yàn)證碼識(shí)別技術(shù)的,畢竟術(shù)業(yè)有專攻菇篡,也是不錯(cuò)之選漩符,畢竟自己造輪子不大可取。

其四:記錄 cookie
通過(guò)向?yàn)g覽器中添加 cookie 可以繞過(guò)登錄的驗(yàn)證碼逸贾,這是比較有意思的一種解決方案陨仅。我們可以在用戶登錄之前,手動(dòng)登陸铝侵,獲取cookie灼伤,通過(guò) add_cookie()方法將用戶名密碼寫入瀏覽器 cookie ,再次訪問(wèn)系統(tǒng)登錄鏈接將自動(dòng)登錄咪鲜。
但是有的Cookie有一個(gè)過(guò)期時(shí)間狐赡,一旦再次運(yùn)行代碼時(shí)就需要重新獲取cookie,也造成一些麻煩疟丙。
栗子:Selenium+python 繞過(guò)驗(yàn)證碼登陸百度

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颖侄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子享郊,更是在濱河造成了極大的恐慌览祖,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炊琉,死亡現(xiàn)場(chǎng)離奇詭異展蒂,居然都是意外死亡又活,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門锰悼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)柳骄,“玉大人,你說(shuō)我怎么就攤上這事箕般∧褪恚” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵丝里,是天一觀的道長(zhǎng)曲初。 經(jīng)常有香客問(wèn)我,道長(zhǎng)丙者,這世上最難降的妖魔是什么复斥? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任营密,我火速辦了婚禮械媒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘评汰。我一直安慰自己纷捞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布被去。 她就那樣靜靜地躺著主儡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惨缆。 梳的紋絲不亂的頭發(fā)上糜值,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天坯墨,我揣著相機(jī)與錄音寂汇,去河邊找鬼。 笑死捣染,一個(gè)胖子當(dāng)著我的面吹牛骄瓣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耍攘,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榕栏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蕾各?” 一聲冷哼從身側(cè)響起扒磁,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎式曲,沒(méi)想到半個(gè)月后妨托,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年始鱼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仔掸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡医清,死狀恐怖起暮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情会烙,我是刑警寧澤负懦,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站柏腻,受9級(jí)特大地震影響纸厉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜五嫂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一颗品、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沃缘,春花似錦躯枢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至水慨,卻和暖如春得糜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晰洒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工朝抖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人欢顷。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓槽棍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親抬驴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炼七,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359