前言
從2017年6月開始接觸自動化至今腹侣,已經(jīng)有2年多了乏德,從17年接觸UI自動化(unittest+selenium)到18年接觸接口自動化(unittest+requests)再到18年自己編寫自動化平臺(后臺使用python的flask撤奸,前端使用element+vue吠昭,沒有第三方自動化框架),不斷的學(xué)習(xí)成長胧瓜,加深了對自動化測試的理解矢棚,這邊就總結(jié)下自己對自動化測試的認(rèn)識。
首先府喳,吐槽一下很多實(shí)際自動化經(jīng)驗不到1年的而且停留在靠度娘抄襲demo的甚至度娘抄襲的代碼都不知道問題出在哪的小白(大神忽略蒲肋,本人小白,只是吐槽一下行業(yè)現(xiàn)狀)钝满,相信很多人從度娘上抄襲個uniitest(下文簡稱ut),pytest,testNG甚至是RF(robotframework)就說自己熟練使用自動化了兜粘,你們真的了解自動化么?筆者使用的是python語言(不鄙視其他語言弯蚜,任何語言都可以做自動化孔轴,只要你有能力),現(xiàn)在隨便找?guī)讉€python自動化相關(guān)的問題問一下碎捺,很多是企業(yè)真實(shí)實(shí)戰(zhàn)會遇到的場景或者企業(yè)領(lǐng)導(dǎo)的需求路鹰,也包含筆者面試的口述和手寫題。
先來些個基礎(chǔ)的問題收厨,18年1月辭職面的UI自動化面試題晋柱,筆者使用ut+se,面試官的問題如下(注:不寫答案帽氓,伸手黨請自行百度或查詢資料趣斤,這些基礎(chǔ)問題丟群里問是會被人鄙視的俩块。后面的內(nèi)容可能很多人會玻璃心或者感到不適黎休,如果感到不適,請自覺關(guān)閉本頁面玉凯,噴子請繞道势腮,沒有必要和你爭論):
Q1:
請說出selenium常用的八大定位法。
Q2:
請描述Selenium的xpath的結(jié)構(gòu)漫仆。
Q3:
請說明為什么不推薦使用xpath捎拯?
Q4:
當(dāng)使用xpath無法定位到一個元素時,可能的情況有哪些盲厌?
注:前4個問題只是問個基礎(chǔ)署照,最最基礎(chǔ)的問題,如果前4個都回答不了吗浩,直接下一位建芙,Q5開始的問題,是確定你有基礎(chǔ)了懂扼,開始往深一點(diǎn)的問禁荸,確定你對自動化的了解程度棚愤。
正文
現(xiàn)在我們正式開始提問:
Q5:
你說你使用過ut触创,請描述一下ut加載用例為什么以test_開頭。(此考驗?zāi)銓ψ詣踊蚣艿氖煜こ潭龋承╊I(lǐng)導(dǎo)就問你石蔗,測試用例為什么都是以test 開頭的?你:這是這個框架的設(shè)計忍法。 領(lǐng)導(dǎo):不行面粮,必須改成以我們公司名稱的縮寫開頭。你:邑退?眶诈??瓜饥?逝撬? 領(lǐng)導(dǎo):你明天不用來了。)
Q6:
ut執(zhí)行用例的順序是以什么規(guī)則執(zhí)行的乓土?
等等宪潮,什么?這就難了趣苏?這才剛起步歪 ~ ~ ~ 我天狡相。。食磕。整天說自己熟練甚至精通自動化的尽棕,連自動化框架原理都不知道?你好意思說你自己精通自動化彬伦?要是讓你二次開發(fā)自動化框架滔悉,優(yōu)化執(zhí)行效率之類的,你是不是得上天单绑?你來面的是自動化工程師崗位回官,不是黑盒點(diǎn)點(diǎn)點(diǎn)崗位歪 ~ ~ ~ (有人說錢不到位,你能力都不夠搂橙,我怎么給你錢歉提?不要把順序搞返了,阿里P7的崗位区转,給你一年100萬的總包苔巨,你能做的了P7做的事么?道理就是這樣废离,先有能力侄泽,才有談判的資本。ut雖然在一線鄙視鏈厅缺,但是我在度娘上看到過一個帖子蔬顾,改ut源碼宴偿,把執(zhí)行效率提升了幾十倍,你有那能力不诀豁?)
Ok窄刘,能看到這里的基本上也可以確定你不是玻璃心或者噴子了,現(xiàn)在我講述一下我今年7月面試的幾個崗位舷胜,這些崗位是真實(shí)要求你能做起自動化的娩践,坐標(biāo)杭州,起薪15K烹骨,7月面試5天翻伺,由于學(xué)歷限制以及能力不足,總收獲offer8個沮焕,崗位的面試題如下:
Q7:
你在上一家公司維護(hù)過多少自動化測試用例(看你簡歷上寫的UI/API/APP任意一個)吨岭。小于100的基本上上不了場面,如果后面的問題回答不上來峦树,你的定級就是初級自動化了辣辫。
Q8:
自動化用例,你們?nèi)美龍?zhí)行一次需要多少時間(考驗?zāi)憧蚣茉O(shè)計時是否考慮到執(zhí)行效率問題)魁巩?用例之間的關(guān)聯(lián)怎么解決急灭?調(diào)試單個用例或者選擇某幾個用例執(zhí)行你是怎么進(jìn)行的?數(shù)量100以內(nèi)的測試用例谷遂,如果用例維護(hù)量翻5倍(100以上double或者3倍)葬馋,你有什么方案優(yōu)化執(zhí)行時間和效率?
Q9:
如果被測試環(huán)境遷移了(例子:從本地環(huán)境遷移到阿里云機(jī)了)肾扰,你用例是否要大量修改測試數(shù)據(jù)畴嘶。(易維護(hù)性)
Q10:
編程語言問題:
Java一般問一些線程安全,數(shù)據(jù)類型的區(qū)別白对,設(shè)計模式等等問題掠廓,筆者是python,故只寫python常問的問題:
Python列表和元組除了可變不可變以外的區(qū)別甩恼?
Python列表和字典的區(qū)別?
Python生成器和迭代器的區(qū)別沉颂?
請描述多線程条摸,多進(jìn)程,協(xié)程其中之一的工作原理铸屉。(后續(xù)追問一個三者的區(qū)別钉蒲,主要是想聽聽你對這三者的優(yōu)缺點(diǎn)的了解程度)
請描述Python的垃圾回收機(jī)制以及內(nèi)存管理
Q11:
數(shù)據(jù)庫相關(guān)問題(太泛,從基礎(chǔ)理論到手寫語句彻坛,不寫了):
多刷度娘顷啼,多看基礎(chǔ)就是了踏枣。
Q12:
Linux基操
Q13:
網(wǎng)絡(luò)相關(guān)(http/https)
Q14:
對接CI、CD钙蒙,CI同時調(diào)用2個甚至多個環(huán)境的用例茵瀑,用例數(shù)據(jù)會不會錯亂。
Q15:
團(tuán)隊問題躬厌,這里重點(diǎn)描述一下马昨,入職的崗位除了大廠高級自動化工程師以外,都要求帶黑盒組一起進(jìn)行自動化扛施,所以團(tuán)隊問題會被著重提問:
編寫用例的復(fù)雜程度鸿捧?即一個用例需要多少行代碼?(其實(shí)聽到你回答多少行代碼的時候疙渣,你已經(jīng)降了一級匙奴,面試官更想要的是一個不懂代碼的小黑盒也能輕松上手。)
組內(nèi)用例的同步問題妄荔,如果N個組員同時編寫自動化用例饥脑,組員間的用例同步問題怎么解決。
如果使用你的自動化懦冰,組員需要具備哪些能力和知識灶轰?如果要維護(hù)你的自動化,維護(hù)人員又要具備什么能力刷钢?(主要是看你的自動化是否簡單易維護(hù)笋颤,面試官要的是哪怕你人走了,你的代碼依然能穩(wěn)定運(yùn)行内地,維護(hù)也盡可能簡單伴澄,而不是你一走,自動化就廢了阱缓,這樣的自動化毫無意義非凌,你面試的成功率也會大大降低,穩(wěn)定和易維護(hù)荆针,至少得滿足一個條件敞嗡。)
以上,就是筆者7月面試的問題航背,看完這些問題喉悴,你真的還了解自動化么?有甚者甚至與筆者爭論過使用工具做自動化玖媚,例如postman/jmeter箕肃,誠然,都可以做今魔,筆者只有一個問題勺像,你維護(hù)過下一家公司別人做的工具自動化么障贸?沒有的話,先去維護(hù)一次吟宦,體驗一下什么叫一個頭三個大的感覺篮洁,工具始終只是一個工具,筆者混跡在一些測試群里督函,每個月都能收到N個小白問這些工具要對數(shù)據(jù)進(jìn)行md5/rsa加密嘀粱,要base64編碼解碼,要怎么做辰狡?筆者只能說一句锋叨,自己寫代碼,隨后會遭到不少小白怒噴“我要是會寫代碼宛篇,我還用毛線工具”娃磺,筆者:呵呵。還有小白還在問叫倍,jme數(shù)據(jù)關(guān)聯(lián)怎么做偷卧?jme正則提取token怎么提取吆倦?連自己解決問題的能力都沒有听诸,更不用談自動化了。
對于自動化的想法和感受:
1蚕泽、UI自動化在很多小公司用于簡單的回歸是可以的晌梨,簡單的回歸其實(shí)單純寫幾個小腳本,和你用什么po+ut+關(guān)鍵字驅(qū)動之類的须妻,成本上沒有多大區(qū)別仔蝌,真正需要UI自動化的公司,起步也得有幾百人上千人荒吏,且滿足需要自動化的部分已經(jīng)足夠穩(wěn)定的場景敛惊,這種規(guī)模的自動化,大多數(shù)人涉及不到绰更,維護(hù)成本高瞧挤,受環(huán)境影響因素大也是很多公司放棄UI自動化的原因,大環(huán)境因素上动知,UI自動化已經(jīng)開始被AI自動化和圖片識別自動化代替了皿伺,各大廠內(nèi)部已經(jīng)開始流行AI自動化和基于圖片識別的自動化,例如網(wǎng)易開源的airtest盒粮,只需要截圖即可生成自動化用例,腳本的維護(hù)也越來越簡單奠滑。
2丹皱、App自動化和UI自動化差不多妒穴,app比ui多一個兼容問題(混合開發(fā)),維護(hù)同樣非常復(fù)雜摊崭,單純的selenium讼油,appium,ua2實(shí)現(xiàn)自動化呢簸,要解決的問題非常多矮台。
3、現(xiàn)在很多中小公司流行接口自動化根时,以及接口測試左移(在接口文檔出來之后瘦赫,后端開發(fā)完成之前,搭建mockserver蛤迎,實(shí)現(xiàn)前端聯(lián)調(diào))接口自動化的執(zhí)行速度快确虱,回歸效率高,是目前中小公司主流的喜愛替裆。但是接口測試要想做好校辩,對返回結(jié)果的斷言是個非常高的要求,設(shè)計人員的能力和知識決定了斷言的健壯性辆童,對于設(shè)計人員的能力要求相對較高宜咒。技術(shù)交流群(644956177)
4、大廠目前主要流行的是撥測把鉴、圖形識別故黑、AI,撥測即錄制和回放(很多小白看到這估計笑了纸镊,這不是早就被淘汰了么倍阐,筆者:呵呵,此操作非彼操作)逗威,筆者大概了解過阿里的doom系統(tǒng)(沒有仔細(xì)研究峰搪,能力有限,說的不對的請忽略)凯旭,通過中間件錄制線上的流量數(shù)據(jù)儲存起來概耻,在被測試環(huán)境進(jìn)行重放操作,以驗證本次修改是否對線上數(shù)據(jù)產(chǎn)生影響罐呼,這中間涉及非常多的技術(shù)實(shí)現(xiàn)鞠柄。圖像識別可以參考airtest,AI測試目前幾乎沒有流出嫉柴,測試之家里有一些理論文章可以參考厌杜。
5、性能自動化就不寫了,筆者的能力有限夯尽,連性能測試都不敢說會更何況性能自動化瞧壮。(要是會個工具隨便打個壓就算會的,當(dāng)我沒說匙握,打個壓看個報告啥的還是輕松的咆槽,代碼寫個性能腳本問題也不大,性能測試的精髓在于分析瓶頸圈纺、系統(tǒng)調(diào)優(yōu)秦忿。)
寫在最后,17年UI自動化剛興起的時候蛾娶,會個自動化腳本能評級到中級工程師灯谣,18年中級自動化需要自帶框架了,到了19年茫叭,會個自動化腳本連初級都算不上酬屉,用第三方框架的基本上要有成熟的方案了,19年的薪資高一點(diǎn)的測開崗位都要你會寫測試平臺了揍愁,19年測試平臺已經(jīng)開始流行了呐萨,技術(shù)行業(yè),更新就是這么快莽囤,不學(xué)習(xí)谬擦,不進(jìn)取,僅靠度娘那點(diǎn)基礎(chǔ)的教程朽缎,在20年21年22年只會越來越難走惨远,年紀(jì)越來越大,能力卻沒年輕的強(qiáng)话肖,競爭力越來越弱北秽,才是你跳槽漲薪的絆腳石。
總有一些工作年限久的人最筒,自以為自己經(jīng)驗老道而對工作年限低的人嗤之以鼻贺氓,筆者面過一個8年工作經(jīng)驗的人,只有一個總結(jié)床蜘,他的8年經(jīng)驗辙培,只是在重復(fù)他第一年的事,只不過做的更熟練了一點(diǎn)邢锯,但是他又沒能把第一年做的黑盒做到很好扬蕊,這是很多老油條的常事,筆者只能送一句丹擎,要么把黑盒做好尾抑,要么發(fā)展自己的能力,大中華的行業(yè)情況就是如此,往后N年蛮穿,好自為之庶骄。
上面這些是我的收集和整理毁渗,這些資料践磅,對于【軟件測試】的朋友來說應(yīng)該是最全面的倉庫,這個倉庫也陪伴我走過了最艱難的路程灸异,希望也能幫助到你
測試資源免費(fèi)領(lǐng)取~~