轉(zhuǎn)載自:https://mp.weixin.qq.com/s/638sdDx4vUspCpaoeXp05A
在這信息爆炸、物欲橫流的現(xiàn)實(shí)社會(huì)中人難免會(huì)浮躁,有很多測(cè)試同行會(huì)覺(jué)得測(cè)試沒(méi)價(jià)值或者沒(méi)太大價(jià)值,還經(jīng)常會(huì)調(diào)侃自個(gè)只會(huì)點(diǎn)點(diǎn)點(diǎn)。冷靜下來(lái)思考下真的沒(méi)有價(jià)值嗎?
看似都是點(diǎn)點(diǎn)點(diǎn),為什么別人那樣點(diǎn)就會(huì)發(fā)現(xiàn)比較關(guān)鍵的缺陷,我那樣點(diǎn)卻發(fā)現(xiàn)不了,這其實(shí)就是對(duì)測(cè)試人員基本功的考核(測(cè)試設(shè)計(jì)、測(cè)試策略等)。我們也是能從數(shù)據(jù)分析層面(發(fā)現(xiàn)缺陷數(shù)、缺陷類型、缺陷嚴(yán)重等級(jí)等)來(lái)對(duì)測(cè)試人員的基本功進(jìn)行相對(duì)客觀的考核與驗(yàn)證的。所以浮躁的時(shí)候是不是可以先思考下這些基本功我掌握扎實(shí)了嗎?現(xiàn)在是該我浮躁的時(shí)間點(diǎn)嗎?
當(dāng)我們做到了哪里不對(duì)點(diǎn)哪里的時(shí)候的確是應(yīng)該多去思考下如何更大程度去體現(xiàn)自己的價(jià)值,但切勿忘記的前置條件滿足的重要性,別本末倒置了。
現(xiàn)在也是各種概念橫飛的時(shí)代,5G、云計(jì)算、DevOps 等等,每天都充斥在我們耳邊,我們?cè)诒韭毠ぷ髯龊玫那闆r下該選擇哪個(gè)方向、從哪個(gè)點(diǎn)切入呢?
很多情況下之所以會(huì)有選擇焦慮癥其實(shí)在于不清楚自己想要什么,如果清楚了自己想要什么其實(shí)選擇起來(lái)就簡(jiǎn)單了,回到我們最開(kāi)始的話題,我們不是經(jīng)常糾結(jié)于測(cè)試崗位的價(jià)值嗎,所以我們的關(guān)注點(diǎn)其實(shí)就是價(jià)值體現(xiàn),明確了想要的是這個(gè),那么選擇其實(shí)就簡(jiǎn)單了,不管是哪個(gè)方向,只要能更大的體現(xiàn)崗位的價(jià)值,whatever,都o(jì)k的。
做的東西如果使用的人多了自然價(jià)值就會(huì)變大,所以將測(cè)試服務(wù)化是個(gè)不錯(cuò)的嘗試方向。測(cè)試服務(wù)化不但可以讓測(cè)試自身使用比較便捷同時(shí)也可以讓開(kāi)發(fā)同學(xué)使用,乃至可以推廣到更多的群體,運(yùn)用范圍廣最后可以成為重要的基礎(chǔ)的設(shè)施服務(wù)。
現(xiàn)在我們簡(jiǎn)單介紹下測(cè)試服務(wù)化的一個(gè)簡(jiǎn)單實(shí)踐嘗試。
1
安裝OCR依賴的python庫(kù)
我們就來(lái)簡(jiǎn)單介紹下如何將一個(gè)測(cè)試用的OCR封裝成一個(gè)服務(wù)來(lái)使用。
會(huì)依賴到pytesseract和Pillow這兩個(gè)庫(kù),我使用的是python 2.7的版本,可以執(zhí)行如下命令進(jìn)行庫(kù)安裝:
pipinstall? pytesseract Pillow
接著還需要安裝tesseract,根據(jù)操作系統(tǒng)選擇對(duì)應(yīng)的安裝方式,參照如下wiki鏈接進(jìn)行安裝
https://github.com/tesseract-ocr/tesseract/wiki
2
編碼測(cè)試
現(xiàn)在編寫個(gè)代碼測(cè)試下是否可以從圖片中提取出文字,代碼如下:
try:fromPILimportImageexceptImportError:importImageimportpytesseractdefocr(filename):? ? text = pytesseract.image_to_string(Image.open(filename))returntextprint(ocr('a.png'))
準(zhǔn)備如上代碼里的png文件,然后執(zhí)行下這個(gè)python文件看下是否能輸出圖片上的文字,如圖片是這樣的
執(zhí)行完可以看大對(duì)于這種簡(jiǎn)單的圖片還是可以成功提取出文字的,如下截圖所示(這個(gè)庫(kù)識(shí)別成功率不是很高):
3
測(cè)試服務(wù)化實(shí)施
上面的測(cè)試通過(guò)后為了讓這個(gè)ocr測(cè)試服務(wù)讓更多的人便捷的使用到可以考慮將這個(gè)功能封裝成一個(gè)接口的形式,這樣調(diào)用者和只需提供一張圖片就可通過(guò)這個(gè)服務(wù)來(lái)獲取圖片上的文字。
可以借助Flask來(lái)搭建web服務(wù),執(zhí)行如下命令進(jìn)行安裝:
pipinstall Flask
封裝如下測(cè)試服務(wù)來(lái)提取圖片文字:
importosfromflaskimportFlask, render_template, requesttry:fromPILimportImageexceptImportError:importImageimportpytesseractUPLOAD_FOLDER ='/static/uploads/'ALLOWED_EXTENSIONS = set(['png','jpg','jpeg'])app = Flask(__name__)defallowed_file(filename):return'.'infilenameand\filename.rsplit('.',1)[1].lower()inALLOWED_EXTENSIONS@app.route('/')defhome_page():return"Hello World!"@app.route('/upload', methods=['GET', 'POST'])defupload_page():ifrequest.method =='POST':file = request.files['file']iffile.filename =='':return'The file upload was not valid image!'iffileandallowed_file(file.filename):? ? ? ? ? ? text = pytesseract.image_to_string(Image.open(file.filename))returntextif__name__ =='__main__':app.run(debug=True,host='65.49.207.50',port=5000)
假如將這個(gè)文件命名為start.py,執(zhí)行如命令即可啟動(dòng)這個(gè)測(cè)試服務(wù):
pythonstart.py
服務(wù)啟動(dòng)后,就可以通過(guò)curl指令上傳個(gè)圖片驗(yàn)證是否可以提取出文字了,curl指令如下:
curlhttp://65.49.207.50:5000/upload -F"file=@/mnt/c/Users/yangzw/Desktop/a.png"
查看如下返回是可以抽取出文字的:
到這里我們已經(jīng)完成了這個(gè)小功能的測(cè)試服務(wù)化工作了,后續(xù)相關(guān)人員需要用到這個(gè)服務(wù)的話只需要調(diào)用下這個(gè)暴露出來(lái)的接口即可,無(wú)需什么其他依賴。
以上是對(duì)測(cè)試服務(wù)的一點(diǎn)小實(shí)踐,實(shí)際的測(cè)試服務(wù)化業(yè)務(wù)邏輯會(huì)復(fù)雜不少,希望可以給你帶來(lái)拋磚引玉的作用~