(第一個就刷掉一大批人)
有很多“會自動化”的同學來咨詢技術問題纷纫,他總會問到我一些元素定位的問題枕扫。元素定位其實都不算自動化面試的問題。
一般我都會問:你是定位不到嗎辱魁?通常結(jié)果都是說確實定位不到烟瞧。
做自動化,首先你得保證一點染簇,沒有你定位不到的元素参滴,這個你才能做UI自動化。如果有些元素都定位不到锻弓,你說你拿什么去點砾赔?就好像你的手你的鼠標點不到需要的元素,就沒法去操作青灼。
第一個暴心,自動化分為UI自動化與接口自動化
UI自動化又包括APP自動化、H5杂拨、小程序等
接口自動化也包括很多专普,你用什么類型的工具做自動化?HTTP類型接口自動化DUBBO類型接口自動化等
所以這還只是自動化方面弹沽。
自動化你怎么去做的自動化運行環(huán)境檀夹、自動化如何分布式、批量運行如何持續(xù)集成這里面問題太多了贷币,給大家簡單的看幾個典型面試題
大家看一看這十個問題能答出幾個击胜?
1.三種等待時間的區(qū)別和場景應用?
強制等待、隱式等待役纹、顯示等待偶摔。
第一個強制等待:就是說,當我去點擊
這是一個輸入用戶名字的一行代碼
當我把這兩行代碼
放到這里
不管你這個元素促脉,有沒有在頁面出現(xiàn)我都等3秒辰斋,我再去操作它策州。是強制,命令式的宫仗。但是這些往往一般都只用在腳本的調(diào)試够挂,不會真正的出現(xiàn)在自動化測試用例中。你想一想藕夫,一個用例十行你加了十個孽糖,一個等三秒那十個等三十秒,一個用例三十秒是不可取的毅贮。
第二個
隱式等待:一般用在什么地方呢办悟?
這個就是隱式等待。
比如說隱式等待它是一個什么樣的區(qū)別滩褥?就是說你不管點哪里它只要寫一次就可以了病蛉。像time.sleep(3)你每次都要去寫,像driver .implicitly_wait( 3)#一次就好了瑰煎。它每次去點都會等待三秒铺然,那中間這個三秒它在等什么呢?
重點來了酒甸,一個頁面它可能有非常多的圖片魄健,jss、css烘挫、img诀艰。就是再加載jss的圖片柬甥。舉個例子我想點擊搜索按鈕
隱式等待的三秒鐘就是在等待這個頁面的所有js和圖片加載出來饮六。就算你搜索按鈕出來了,我還要去等js苛蒲、img加載完成卤橄。理解了嗎?軟件測試全棧內(nèi)容歡迎來公眾號程序員一凡交流學習臂外。那么如果三秒鐘之類jss窟扑、css沒有加載完成我還是不會去點你,這就是一個隱式等待漏健。它雖然很方便但是有瑕疵嚎货。
第三個:
那么什么叫顯示等待呢?
字面意思就是和隱式等待相反蔫浆。一個是隱藏的一個是非常明顯的殖属,我想要去做什么就做什么,不需要等待瓦盛。
當這個搜索按鈕一顯示出來洗显,我馬上就去點它外潜。
我不管頁面的其他LOGO、圖片有沒有加載出來挠唆,只要我的想要的比如搜索按鈕出來了处窥,我就馬上去點擊它。
這個題目是做自動化測試非常重要也非承椋基礎的問題滔驾,所以我把這個問題排在了第一。
這個問題以后被問到俄讹,就難不到你了嵌灰。
聽懂了的朋友,點贊支持一波~
2.之前項目做過自動化測試嗎?如何推進的?
工資想超過15K颅悉,這個問題是必問的沽瞭!
不要看這個問題很簡單?這個問題其實有點難度的剩瓶。面試官問你有沒有做過自動化測試驹溃,那么你肯定不能簡單的說:額~我做過!
你要告訴面試官延曙,你如何自動化開展到推進豌鹤。如何推進的非常重要,你如何開始自動化入和推進枝缔,咱們不要片面的去回答布疙,會或者不會。
比如你這樣回答:我會愿卸,之前公司我們的項目接口方面灵临,前端UI方面我是用selenium這個開源框架加上Python基礎架構(gòu)來實現(xiàn)我的自動化來實現(xiàn)的。
實現(xiàn)原理:用一些單元測試框架unittest去組織我們的測試用例趴荸,(或者用Pytest)
數(shù)據(jù)驅(qū)動:比如說我們用execl表去做一個數(shù)據(jù)驅(qū)動儒溉,然后我們用到一些關鍵字驅(qū)動,還有你在做自動化你遇到哪一些問題发钝,大家一定要準備幾個自動化遇到的問題顿涣!這個即使你不說,也是必問的酝豪!然后就是這些問題你是如何解決的涛碑。
給大家分享一個公式:
如何解決這些問題呢
對你公司項目產(chǎn)生了什么樣的價值?像我去面試的時候孵淘,我就會說成為我們公司的一個固定資產(chǎn)蒲障。
不管是開發(fā)、產(chǎn)品、運營晌涕,都會用到咱們的這個自動化腳本滋捶。可以幫我們線上監(jiān)控余黎,幫我們自動化回歸重窟,幫我們造數(shù)據(jù),幫我們跑數(shù)據(jù)惧财,提高了迭代效率巡扇,釋放了很多人力。
自動化測試有什么用垮衷,是對自動化最大的誤解厅翔。
很多做軟件測試的同行,他沒有用過確實感受不到搀突。我之前開始做自動化的時候刀闷,在一個人工智能的公司。產(chǎn)品上線之前仰迁,CTO只問我一句話甸昏,能不能上?因為我這邊有很多自動化項目已經(jīng)不停的在回歸徐许,然后功能測試也測了施蜜。所以功能+自動化結(jié)合就能很自信的上線。它校驗出了很多隱藏的BUG雌隅,很多因為代碼提交翻默、新功能的開發(fā)產(chǎn)品的BUG。
3.RF框架用過嗎?關鍵字驅(qū)動的原理?如何開發(fā)系統(tǒng)關鍵字?
4.selenium的底層核心原理是什么?有沒有做過二次封裝?
5.requests中的session會話管理的作用是什么?
6.unittest/pytest有什么區(qū)別?
7.談談你對自動化分層思想的理解?
其實這句話恰起,經(jīng)常會被寫到一些大型招聘網(wǎng)上去修械。你會自動化而且還要會自動化分層思想。
做自動化和做功能測試一樣村缸,那么它分為哪些東西祠肥?
第一個:自動化用例它有一個業(yè)務層/業(yè)務邏輯
比如登錄的業(yè)務邏輯是什么?
輸入用戶名-輸入密碼-點擊登錄按鈕
分層:
業(yè)務邏輯
關鍵字驅(qū)動:
業(yè)務層的關鍵字梯皿,比如說你登錄,那么你要去做其他的用例是不是會用到登錄這個關鍵字县恕。這個業(yè)務也封裝成一個關鍵字东羹,你其他的一個用例是不是可以用到它了?那接口忠烛,接口之間不是有很多的關聯(lián)對吧属提,如果你把下單這些接口弄在一起,退貨發(fā)貨這些弄在一起,這就是一個業(yè)務層的關鍵字冤议。
關鍵字驅(qū)動不僅有業(yè)務層斟薇,還有邏輯層。比如說你需要用到很多的公共方法恕酸,比如說隨機數(shù)堪滨、隨機號碼、數(shù)據(jù)庫等等蕊温。大家都能用到的袱箱,就都封裝成一個關鍵字。
二次封裝
click()
有時候我們需要根據(jù)需求去二次封裝义矛。
關鍵字驅(qū)動不僅僅這三層发笔。還有很多東西要分層,很多驅(qū)動凉翻、第三方的庫了讨、日志、頁面制轰、圖片量蕊、報告等等……
數(shù)據(jù)驅(qū)動
配置文件
8.自動化用例在什么環(huán)境下運行、如何批量運行?
能對公司真正的產(chǎn)生效益的自動化肯定是成千上萬級別的用例艇挨。如果沒有達到這個級別残炮,收益一定是很小的。既然是機器在運行的缩滨,為什么不去覆蓋全面呢势就?
在這里給大家推薦一個docker容器技術+jenkins定時構(gòu)建+git
你的代碼放在git上面然后用jenkins去關聯(lián)定時構(gòu)建,docker保證你的自動化干凈的環(huán)境(虛擬機的進階版)運行還可以分布式運行脉漏。git(版本管理)可以關注一下我之前分享的視頻2020當下最新主流的軟件測試技術分享苞冯。還有更多軟件測試實戰(zhàn)視頻詳解。都是現(xiàn)在主流火爆的技術侧巨。
我們不管學什么技術舅锄,結(jié)合實戰(zhàn)、自動化應用司忱。很多朋友想學測試開發(fā)皇忿、測試平臺,你自動化坦仍、接口鳍烁、框架你都不會,你談何去學測試開發(fā)繁扎?那是不大現(xiàn)實的幔荒。
經(jīng)常有人問題糊闽,學習軟件測試有什么捷徑?
學習一步一步來爹梁,有計劃性的右犹,不走彎路!就是最大的捷徑姚垃。
文章首發(fā)于公眾號:程序員一凡念链,轉(zhuǎn)載請注明出處!
9.有沒有獨立搭建過自動化測試框架?
10.測試開發(fā)在企業(yè)中具體是做什么的?
https://www.bilibili.com/video/BV1LT4y1j7ny?p=6