前言 從2017年6月開始接觸自動(dòng)化至今,已經(jīng)有2年多了,從17年接觸UI自動(dòng)化(unittest+selenium)到18年接觸接口自動(dòng)化(unittest+requests)再到18年自己編寫自動(dòng)化平臺(tái)(后臺(tái)使用python...
前言
從2017年6月開始接觸自動(dòng)化至今,已經(jīng)有2年多了,從17年接觸UI自動(dòng)化(unittest+selenium)到18年接觸接口自動(dòng)化(unittest+requests)再到18年自己編寫自動(dòng)化平臺(tái)(后臺(tái)使用python的flask,前端使用element+vue,沒有第三方自動(dòng)化框架),不斷的學(xué)習(xí)成長(zhǎng),加深了對(duì)自動(dòng)化測(cè)試的理解,這邊就總結(jié)下自己對(duì)自動(dòng)化測(cè)試的認(rèn)識(shí)。
首先,吐槽一下很多實(shí)際自動(dòng)化經(jīng)驗(yàn)不到1年的而且停留在靠度娘抄襲demo的甚至度娘抄襲的代碼都不知道問題出在哪的小白(大神忽略,本人小白,只是吐槽一下行業(yè)現(xiàn)狀),相信很多人從度娘上抄襲個(gè)uniitest(下文簡(jiǎn)稱ut),pytest,testNG甚至是RF(robotframework)就說自己熟練使用自動(dòng)化了,你們真的了解自動(dòng)化么?筆者使用的是python語言(不鄙視其他語言,任何語言都可以做自動(dòng)化,只要你有能力),現(xiàn)在隨便找?guī)讉€(gè)python自動(dòng)化相關(guān)的問題問一下,很多是企業(yè)真實(shí)實(shí)戰(zhàn)會(huì)遇到的場(chǎng)景或者企業(yè)領(lǐng)導(dǎo)的需求,也包含筆者面試的口述和手寫題。
先來些個(gè)基礎(chǔ)的問題,18年1月辭職面的UI自動(dòng)化面試題,筆者使用ut+se,面試官的問題如下(注:不寫答案,伸手黨請(qǐng)自行百度或查詢資料,這些基礎(chǔ)問題丟群里問是會(huì)被人鄙視的。后面的內(nèi)容可能很多人會(huì)玻璃心或者感到不適,如果感到不適,請(qǐng)自覺關(guān)閉本頁面,噴子請(qǐng)繞道,沒有必要和你爭(zhēng)論):
Q1:
請(qǐng)說出selenium常用的八大定位法。
Q2:
請(qǐng)描述Selenium的xpath的結(jié)構(gòu)。
Q3:
請(qǐng)說明為什么不推薦使用xpath?
Q4:
當(dāng)使用xpath無法定位到一個(gè)元素時(shí),可能的情況有哪些?
注:前4個(gè)問題只是問個(gè)基礎(chǔ),最最基礎(chǔ)的問題,如果前4個(gè)都回答不了,直接下一位,Q5開始的問題,是確定你有基礎(chǔ)了,開始往深一點(diǎn)的問,確定你對(duì)自動(dòng)化的了解程度。
正文
現(xiàn)在我們正式開始提問:
Q5:
你說你使用過ut,請(qǐng)描述一下ut加載用例為什么以test_開頭。(此考驗(yàn)?zāi)銓?duì)自動(dòng)化框架的熟悉程度,某些領(lǐng)導(dǎo)就問你,測(cè)試用例為什么都是以test 開頭的?你:這是這個(gè)框架的設(shè)計(jì)。 領(lǐng)導(dǎo):不行,必須改成以我們公司名稱的縮寫開頭。你:????? 領(lǐng)導(dǎo):你明天不用來了。)
Q6:
ut執(zhí)行用例的順序是以什么規(guī)則執(zhí)行的?
等等,什么?這就難了?這才剛起步歪 ~ ~ ~ 我天。。。整天說自己熟練甚至精通自動(dòng)化的,連自動(dòng)化框架原理都不知道?你好意思說你自己精通自動(dòng)化?要是讓你二次開發(fā)自動(dòng)化框架,優(yōu)化執(zhí)行效率之類的,你是不是得上天?你來面的是自動(dòng)化工程師崗位,不是黑盒點(diǎn)點(diǎn)點(diǎn)崗位歪 ~ ~ ~ (有人說錢不到位,你能力都不夠,我怎么給你錢?不要把順序搞返了,阿里P7的崗位,給你一年100萬的總包,你能做的了P7做的事么?道理就是這樣,先有能力,才有談判的資本。ut雖然在一線鄙視鏈,但是我在度娘上看到過一個(gè)帖子,改ut源碼,把執(zhí)行效率提升了幾十倍,你有那能力不?)
Ok,能看到這里的基本上也可以確定你不是玻璃心或者噴子了,現(xiàn)在我講述一下我今年7月面試的幾個(gè)崗位,這些崗位是真實(shí)要求你能做起自動(dòng)化的,坐標(biāo)杭州,起薪15K,7月面試5天,由于學(xué)歷限制以及能力不足,總收獲offer8個(gè),崗位的面試題如下:
Q7:
你在上一家公司維護(hù)過多少自動(dòng)化測(cè)試用例(看你簡(jiǎn)歷上寫的UI/API/APP任意一個(gè))。小于100的基本上上不了場(chǎng)面,如果后面的問題回答不上來,你的定級(jí)就是初級(jí)自動(dòng)化了。
Q8:
自動(dòng)化用例,你們?nèi)美龍?zhí)行一次需要多少時(shí)間(考驗(yàn)?zāi)憧蚣茉O(shè)計(jì)時(shí)是否考慮到執(zhí)行效率問題)?用例之間的關(guān)聯(lián)怎么解決?調(diào)試單個(gè)用例或者選擇某幾個(gè)用例執(zhí)行你是怎么進(jìn)行的?數(shù)量100以內(nèi)的測(cè)試用例,如果用例維護(hù)量翻5倍(100以上double或者3倍),你有什么方案優(yōu)化執(zhí)行時(shí)間和效率?
Q9:
如果被測(cè)試環(huán)境遷移了(例子:從本地環(huán)境遷移到阿里云機(jī)了),你用例是否要大量修改測(cè)試數(shù)據(jù)。(易維護(hù)性)
Q10:
編程語言問題:
Java一般問一些線程安全,數(shù)據(jù)類型的區(qū)別,設(shè)計(jì)模式等等問題,筆者是python,故只寫python常問的問題:
Python列表和元組除了可變不可變以外的區(qū)別?
Python列表和字典的區(qū)別?
Python生成器和迭代器的區(qū)別?
請(qǐng)描述多線程,多進(jìn)程,協(xié)程其中之一的工作原理。(后續(xù)追問一個(gè)三者的區(qū)別,主要是想聽聽你對(duì)這三者的優(yōu)缺點(diǎn)的了解程度)
請(qǐng)描述Python的垃圾回收機(jī)制以及內(nèi)存管理
Q11:
數(shù)據(jù)庫相關(guān)問題(太泛,從基礎(chǔ)理論到手寫語句,不寫了):
多刷度娘,多看基礎(chǔ)就是了。
Q12:
Linux基操
Q13:
網(wǎng)絡(luò)相關(guān)(http/https)
Q14:
對(duì)接CI、CD,CI同時(shí)調(diào)用2個(gè)甚至多個(gè)環(huán)境的用例,用例數(shù)據(jù)會(huì)不會(huì)錯(cuò)亂。
Q15:
團(tuán)隊(duì)問題,這里重點(diǎn)描述一下,入職的崗位除了大廠高級(jí)自動(dòng)化工程師以外,都要求帶黑盒組一起進(jìn)行自動(dòng)化,所以團(tuán)隊(duì)問題會(huì)被著重提問:
編寫用例的復(fù)雜程度?即一個(gè)用例需要多少行代碼?(其實(shí)聽到你回答多少行代碼的時(shí)候,你已經(jīng)降了一級(jí),面試官更想要的是一個(gè)不懂代碼的小黑盒也能輕松上手。)
組內(nèi)用例的同步問題,如果N個(gè)組員同時(shí)編寫自動(dòng)化用例,組員間的用例同步問題怎么解決。
如果使用你的自動(dòng)化,組員需要具備哪些能力和知識(shí)?如果要維護(hù)你的自動(dòng)化,維護(hù)人員又要具備什么能力?(主要是看你的自動(dòng)化是否簡(jiǎn)單易維護(hù),面試官要的是哪怕你人走了,你的代碼依然能穩(wěn)定運(yùn)行,維護(hù)也盡可能簡(jiǎn)單,而不是你一走,自動(dòng)化就廢了,這樣的自動(dòng)化毫無意義,你面試的成功率也會(huì)大大降低,穩(wěn)定和易維護(hù),至少得滿足一個(gè)條件。)
以上,就是筆者7月面試的問題,看完這些問題,你真的還了解自動(dòng)化么?有甚者甚至與筆者爭(zhēng)論過使用工具做自動(dòng)化,例如postman/jmeter,誠(chéng)然,都可以做,筆者只有一個(gè)問題,你維護(hù)過下一家公司別人做的工具自動(dòng)化么?沒有的話,先去維護(hù)一次,體驗(yàn)一下什么叫一個(gè)頭三個(gè)大的感覺,工具始終只是一個(gè)工具,筆者混跡在一些測(cè)試群里,每個(gè)月都能收到N個(gè)小白問這些工具要對(duì)數(shù)據(jù)進(jìn)行md5/rsa加密,要base64編碼解碼,要怎么做?筆者只能說一句,自己寫代碼,隨后會(huì)遭到不少小白怒噴”我要是會(huì)寫代碼,我還用毛線工具”,筆者:呵呵。還有小白還在問,jme數(shù)據(jù)關(guān)聯(lián)怎么做?jme正則提取token怎么提取?連自己解決問題的能力都沒有,更不用談自動(dòng)化了。
下面筆者講述一下筆者自己對(duì)于自動(dòng)化的想法和感受:
1、UI自動(dòng)化在很多小公司用于簡(jiǎn)單的回歸是可以的,簡(jiǎn)單的回歸其實(shí)單純寫幾個(gè)小腳本,和你用什么po+ut+關(guān)鍵字驅(qū)動(dòng)之類的,成本上沒有多大區(qū)別,真正需要UI自動(dòng)化的公司,起步也得有幾百人上千人,且滿足需要自動(dòng)化的部分已經(jīng)足夠穩(wěn)定的場(chǎng)景,這種規(guī)模的自動(dòng)化,大多數(shù)人涉及不到,維護(hù)成本高,受環(huán)境影響因素大也是很多公司放棄UI自動(dòng)化的原因,大環(huán)境因素上,UI自動(dòng)化已經(jīng)開始被AI自動(dòng)化和圖片識(shí)別自動(dòng)化代替了,各大廠內(nèi)部已經(jīng)開始流行AI自動(dòng)化和基于圖片識(shí)別的自動(dòng)化,例如網(wǎng)易開源的airtest,只需要截圖即可生成自動(dòng)化用例,腳本的維護(hù)也越來越簡(jiǎn)單。
2、App自動(dòng)化和UI自動(dòng)化差不多,app比ui多一個(gè)兼容問題(混合開發(fā)),維護(hù)同樣非常復(fù)雜,單純的selenium,appium,ua2實(shí)現(xiàn)自動(dòng)化,要解決的問題非常多。
3、現(xiàn)在很多中小公司流行接口自動(dòng)化,以及接口測(cè)試左移(在接口文檔出來之后,后端開發(fā)完成之前,搭建mockserver,實(shí)現(xiàn)前端聯(lián)調(diào))接口自動(dòng)化的執(zhí)行速度快,回歸效率高,是目前中小公司主流的喜愛。但是接口測(cè)試要想做好,對(duì)返回結(jié)果的斷言是個(gè)非常高的要求,設(shè)計(jì)人員的能力和知識(shí)決定了斷言的健壯性,對(duì)于設(shè)計(jì)人員的能力要求相對(duì)較高。
4、大廠目前主要流行的是撥測(cè)、圖形識(shí)別、AI,撥測(cè)即錄制和回放(很多小白看到這估計(jì)笑了,這不是早就被淘汰了么,筆者:呵呵,此操作非彼操作),筆者大概了解過阿里的doom系統(tǒng)(沒有仔細(xì)研究,能力有限,說的不對(duì)的請(qǐng)忽略),通過中間件錄制線上的流量數(shù)據(jù)儲(chǔ)存起來,在被測(cè)試環(huán)境進(jìn)行重放操作,以驗(yàn)證本次修改是否對(duì)線上數(shù)據(jù)產(chǎn)生影響,這中間涉及非常多的技術(shù)實(shí)現(xiàn)。圖像識(shí)別可以參考airtest,AI測(cè)試目前幾乎沒有流出,測(cè)試之家里有一些理論文章可以參考。
5、性能自動(dòng)化就不寫了,筆者的能力有限,連性能測(cè)試都不敢說會(huì)更何況性能自動(dòng)化。(要是會(huì)個(gè)工具隨便打個(gè)壓就算會(huì)的,當(dāng)我沒說,打個(gè)壓看個(gè)報(bào)告啥的還是輕松的,代碼寫個(gè)性能腳本問題也不大,性能測(cè)試的精髓在于分析瓶頸、系統(tǒng)調(diào)優(yōu)。)
寫在最后,17年UI自動(dòng)化剛興起的時(shí)候,會(huì)個(gè)自動(dòng)化腳本能評(píng)級(jí)到中級(jí)工程師,18年中級(jí)自動(dòng)化需要自帶框架了,到了19年,會(huì)個(gè)自動(dòng)化腳本連初級(jí)都算不上,,用第三方框架的基本上要有成熟的方案了,19年的薪資高一點(diǎn)的測(cè)開崗位都要你會(huì)寫測(cè)試平臺(tái)了,19年測(cè)試平臺(tái)已經(jīng)開始流行了,技術(shù)行業(yè),更新就是這么快,不學(xué)習(xí),不進(jìn)取,僅靠度娘那點(diǎn)基礎(chǔ)的教程,在20年21年22年只會(huì)越來越難走,年紀(jì)越來越大,能力卻沒年輕的強(qiáng),競(jìng)爭(zhēng)力越來越弱,才是你跳槽漲薪的絆腳石,總有一些工作年限久的人,自以為自己經(jīng)驗(yàn)老道而對(duì)工作年限低的人嗤之以鼻。
筆者面過一個(gè)8年工作經(jīng)驗(yàn)的人,只有一個(gè)總結(jié),他的8年經(jīng)驗(yàn),只是在重復(fù)他第一年的事,只不過做的更熟練了一點(diǎn),但是他又沒能把第一年做的黑盒做到很好,這是很多老油條的常事,筆者只能送一句,要么把黑盒做好,要么發(fā)展自己的能力,大中華的行業(yè)情況就是如此,往后N年,好自為之。
請(qǐng)關(guān)注+私信回復(fù):“學(xué)習(xí)”就可以免費(fèi)拿到軟件測(cè)試學(xué)習(xí)資料