面試一般分為技術(shù)面和hr面,形式的話很少有群面偶翅,少部分企業(yè)可能會(huì)有一個(gè)交叉面默勾,不過(guò)總的來(lái)說(shuō),技術(shù)面基本就是考察你的專(zhuān)業(yè)技術(shù)水平的聚谁,hr面的話主要是看這個(gè)人的綜合素質(zhì)以及家庭情況符不符合公司要求母剥,一般來(lái)講,技術(shù)的話只要通過(guò)了技術(shù)面hr面基本上是沒(méi)有問(wèn)題(也有少數(shù)企業(yè)hr面會(huì)刷很多人)
我們主要來(lái)說(shuō)技術(shù)面形导,技術(shù)面的話主要是考察專(zhuān)業(yè)技術(shù)知識(shí)和水平环疼,下面是我們整理好的自動(dòng)化測(cè)試崗的面試題。
1.如何把自動(dòng)化測(cè)試在公司中實(shí)施并推廣起來(lái)的朵耕?
1.項(xiàng)目組調(diào)研選擇自動(dòng)化工具并開(kāi)會(huì)演示demo案例炫隶,我們主要是演示selenium和robotframework兩種。
2.搭建自動(dòng)化測(cè)試框架憔披,在項(xiàng)目中逐步開(kāi)展自動(dòng)化等限。
3.把該項(xiàng)目的自動(dòng)化流程、框架固化成文檔
4.推廣到公司的其它項(xiàng)目組應(yīng)用
2.請(qǐng)描述一下自動(dòng)化測(cè)試流程芬膝?
1.編寫(xiě)自動(dòng)化測(cè)試計(jì)劃
2.設(shè)計(jì)自動(dòng)化測(cè)試用例
3.編寫(xiě)自動(dòng)化測(cè)試框架和腳本
4.調(diào)試并維護(hù)腳本
5.無(wú)人值守測(cè)試
6.后期腳本維護(hù)(添加用例、開(kāi)發(fā)更新版本)
3.自動(dòng)化測(cè)試用例如何編寫(xiě)形娇?以下答案二選一即可:
1.用例是自動(dòng)化測(cè)試工程師自己設(shè)計(jì)的锰霜,一般剛開(kāi)始已基本業(yè)務(wù)流程為主(登錄--完成一個(gè)業(yè)務(wù)--退出)
2.從系統(tǒng)測(cè)試用例中進(jìn)行篩選或由業(yè)務(wù)工程師提供
4.上一個(gè)項(xiàng)目中自動(dòng)化測(cè)試的執(zhí)行策略?
上一個(gè)項(xiàng)目中是定時(shí)執(zhí)行的桐早,設(shè)置的執(zhí)行時(shí)間是晚上12點(diǎn)癣缅,執(zhí)行完畢后會(huì)自動(dòng)發(fā)送郵件通知
5.自動(dòng)化測(cè)試發(fā)現(xiàn)BUG多嗎?
不多哄酝,因?yàn)橹绊?xiàng)目組是把已經(jīng)測(cè)試通過(guò)的基本功能再進(jìn)行自動(dòng)化腳本編寫(xiě)和在后續(xù)版本執(zhí)行自動(dòng)化測(cè)試友存,它主要是保證已經(jīng)測(cè)試通過(guò)的功能在新版本更新后沒(méi)有問(wèn)題。
6.你覺(jué)得自動(dòng)化測(cè)試的價(jià)值在哪里陶衅?你們公司為什么要做自動(dòng)化測(cè)試屡立?
引用自動(dòng)化測(cè)試之后,能代替大量繁瑣的回歸測(cè)試工作搀军,把業(yè)務(wù)測(cè)試人員解放出來(lái)膨俐,既而讓業(yè)務(wù)測(cè)試人員把精力集中在復(fù)雜的業(yè)務(wù)功能模塊上勇皇,自動(dòng)化測(cè)試一般是對(duì)穩(wěn)定下來(lái)的功能進(jìn)行自動(dòng)化,保證不會(huì)因?yàn)楫a(chǎn)品的更新導(dǎo)致之前穩(wěn)定下來(lái)的功能出現(xiàn)BUG
7.自動(dòng)化測(cè)試有誤報(bào)過(guò)bug嗎焚刺?產(chǎn)生誤報(bào)怎么辦敛摘?
有誤報(bào)過(guò),有時(shí)候自動(dòng)化測(cè)試報(bào)告中顯示發(fā)現(xiàn)了bug,實(shí)際去通過(guò)手工測(cè)試去確認(rèn)又不存在該bug乳愉。
誤報(bào)原因一般是:
1.元素定位不穩(wěn)定兄淫,需要盡量提高腳本的穩(wěn)定性;
2.開(kāi)發(fā)更新了頁(yè)面但是測(cè)試沒(méi)有及時(shí)更新維護(hù)!
8.自動(dòng)化測(cè)試過(guò)程中蔓姚,你遇到了哪些問(wèn)題捕虽,是如何解決的?
1.頻繁地變更頁(yè)面赂乐,經(jīng)常要修改頁(yè)面對(duì)象類(lèi)里面的代碼
2.自動(dòng)化測(cè)試偶爾出現(xiàn)過(guò)誤報(bào)
3.自動(dòng)化測(cè)試結(jié)果出現(xiàn)覆蓋的情況:Jenkins根據(jù)時(shí)間建立文件夾
4.自動(dòng)化測(cè)試代碼維護(hù)比較麻煩
5.自動(dòng)化測(cè)試進(jìn)行數(shù)據(jù)庫(kù)對(duì)比數(shù)據(jù)
9.在上一家公司做自動(dòng)化測(cè)試用的什么框架薯鳍?
可以說(shuō)出以下自己擅長(zhǎng)的一種:
1.python+selenium+unittest+htmltestrunner
2.python+selenium+pytest+allure
3. robotframework+Selenium3
10.在selenium自動(dòng)化測(cè)試中,你一般完成什么類(lèi)型的測(cè)試挨措?自動(dòng)化覆蓋率挖滤?
主要是冒煙測(cè)試和回歸測(cè)試∏骋郏回歸測(cè)試主要寫(xiě)一些功能穩(wěn)定的場(chǎng)景斩松,通過(guò)自動(dòng)化手段去實(shí)現(xiàn),節(jié)約測(cè)試時(shí)間觉既。因?yàn)樽詣?dòng)化測(cè)試用例也是在不斷的更新和迭代惧盹,沒(méi)有刻意去統(tǒng)計(jì),大概在30%-40%左右瞪讼!
11.在執(zhí)行腳本過(guò)程钧椰,如何實(shí)現(xiàn)當(dāng)前元素高亮顯示?
這個(gè)其實(shí)就是利用javaScript去修改當(dāng)前元素的邊框樣式來(lái)到達(dá)高亮顯示的效果符欠,
12.如果一個(gè)元素?zé)o法定位嫡霞,你一般會(huì)考慮哪些方面的原因?
1.頁(yè)面加載元素過(guò)慢希柿,加等待時(shí)間
2.頁(yè)面有frame框架頁(yè)诊沪,需要先跳轉(zhuǎn)入frame框架再定位
3.可能該元素是動(dòng)態(tài)元素,定位方式要優(yōu)化曾撤,可以使用部分元素定位或通過(guò)父節(jié)點(diǎn)或兄弟節(jié)點(diǎn)定位端姚。
4.可能識(shí)別了元素,但是不能操作挤悉,比如元素不可用渐裸,不可寫(xiě)等。需要使用js先把前置的操作完成,
13.元素定位方法你熟悉的有哪些橄仆?(八大元素定位方式)
id 剩膘,name, class盆顾, tag怠褐, link_text, Partial link text您宪, css奈懒, xpath
14.遇到frame框架頁(yè)面怎么處理?
先用driver.switch_to.frame()跳轉(zhuǎn)進(jìn)去frame宪巨,
然后再操作頁(yè)面元素磷杏,
操作完后使用driver.swith_to.default_content()跳轉(zhuǎn)出來(lái)
15.遇到alert彈出窗如何處理?
使用driver.switch_to.alert方法先跳轉(zhuǎn)到alert彈出窗口
然后再通過(guò)accept點(diǎn)擊確定按鈕捏卓,通過(guò)dismiss點(diǎn)擊取消難极祸,通過(guò)text()獲得彈出窗口的文本。
16.如何處理多窗口怠晴?
這個(gè)多窗口之間跳轉(zhuǎn)處理遥金,我們?cè)陧?xiàng)目中也經(jīng)常遇到。就是蒜田,當(dāng)你點(diǎn)擊一個(gè)鏈接稿械,這個(gè)鏈接會(huì)在一個(gè)新的tab打開(kāi),然后你接下來(lái)要在新tab打開(kāi)的頁(yè)面查找元素冲粤,
1.我們?cè)邳c(diǎn)擊鏈接前使用driver.current_window_handle獲得當(dāng)前窗口句柄美莫。
2.再點(diǎn)擊鏈接。點(diǎn)擊后通過(guò)driver.window_handles獲得所有窗口的句柄梯捕,
3.然后再循環(huán)找到新窗口的句柄厢呵,然后再通過(guò)driver.switch_to.window()方法跳轉(zhuǎn)到新的窗口。
17.怎么驗(yàn)證元素是enable/disabled/checked狀態(tài)傀顾?
定位元素后:分別通過(guò)isEnabled()述吸,isSelected(),isDisplayed()三個(gè)方法進(jìn)行判斷锣笨。
18.如何處理下拉菜單?
在Selenium中有一個(gè)叫Select的類(lèi)道批,這個(gè)類(lèi)支持對(duì)下拉菜單進(jìn)行操作错英。使用方法如下:
1.定位元素
2.把定位的元素轉(zhuǎn)化成Select對(duì)象。
sel = Select(定位的元素對(duì)象)
3.通過(guò)下標(biāo)或者值或者文本選中下拉框隆豹。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);
19.在日歷這種web 表單你是如何處理的?
首先要分析當(dāng)前網(wǎng)頁(yè)試用日歷插件的前端代碼椭岩,看看能不能通過(guò)元素定位,點(diǎn)擊日期實(shí)現(xiàn),如果不能判哥,可能需要借助javascript献雅。還有些日歷控件一個(gè)文本輸入框,可以直接sendKeys()方法來(lái)實(shí)現(xiàn)傳入一個(gè)時(shí)間的數(shù)據(jù)塌计。
20.舉例一下說(shuō)明一下你遇到過(guò)那些異常
常見(jiàn)的selenium異常有這些:
NoSuchElementException:沒(méi)有該元素異常
TimeoutException :超時(shí)異常
ElementNotVisibleException :元素不可見(jiàn)異常
NoSuchAttributeException :沒(méi)有這樣屬性異常
NoSuchFrameException :沒(méi)有該frame異常
21.關(guān)閉瀏覽器中quit和close的區(qū)別
簡(jiǎn)單來(lái)說(shuō)挺身,兩個(gè)都可以實(shí)現(xiàn)退出瀏覽器session功能,close是關(guān)閉你當(dāng)前聚焦的tab頁(yè)面锌仅,而quit是關(guān)閉全部瀏覽器tab頁(yè)面章钾,并退出瀏覽器session。知道這兩個(gè)區(qū)別热芹,我們就知道quit一般用在結(jié)束測(cè)試之前的操作贱傀,close用在執(zhí)行用例過(guò)程中關(guān)閉某一個(gè)頁(yè)面的操作。
22.在Selenium中如何實(shí)現(xiàn)截圖伊脓,如何實(shí)現(xiàn)用例執(zhí)行失敗才截圖
在Selenium中提供了一個(gè)get_screenshot_as_file()的方法來(lái)截圖的府寒,一般結(jié)合try/except捕獲異常時(shí)使用,進(jìn)行錯(cuò)誤截圖报腔。
23.如何實(shí)現(xiàn)文件上傳株搔?
定位元素后,直接使用send_keys()方法設(shè)置就行榄笙,參數(shù)為需要上傳的文件的路徑邪狞。
24.自動(dòng)化中有哪三類(lèi)等待?他們有什么特點(diǎn)茅撞?
1.線程等待(強(qiáng)制等待)如time.sleep(2):線程強(qiáng)制休眠2秒鐘帆卓,2秒過(guò)后,再執(zhí)行后續(xù)的代碼米丘。建議少用剑令。
2.imlicitlyWait(隱式等待)會(huì)在指定的時(shí)間范圍內(nèi)不斷的查找元素,直到找到元素或超時(shí)拄查,特點(diǎn)是必須等待整個(gè)頁(yè)面加載完成吁津。
3.WebDriverWait(顯式等待)通常是我們自定義的一個(gè)函數(shù)代碼,這段代碼用來(lái)等待某個(gè)元素加載完成堕扶,再繼續(xù)執(zhí)行后續(xù)的代碼
25.你寫(xiě)的測(cè)試腳本能在不同瀏覽器上運(yùn)行嗎
當(dāng)然可以碍脏,我寫(xiě)的用例可以在在IE,火狐和谷歌這三種瀏覽器上運(yùn)行稍算。實(shí)現(xiàn)的思路是封裝一個(gè)方法典尾,分別傳入一個(gè)瀏覽器的字符串,如果傳入IE就使用IE糊探,如果傳入FireFox就使用FireFox钾埂,如果傳入Chrome就使用Chrome瀏覽器河闰,并且使用什么瀏覽器可以在總的ini配置文件中進(jìn)行配置。需要注意的是每個(gè)瀏覽器使用的驅(qū)動(dòng)不一樣褥紫。
26.什么是PO模式姜性,為什么要使用它
PO是Page Object 模式的簡(jiǎn)稱(chēng),它是一種設(shè)計(jì)思想髓考,意思是部念,把一個(gè)頁(yè)面,當(dāng)做一個(gè)對(duì)象绳军,頁(yè)面的元素和元素之間操作方法就是頁(yè)面對(duì)象的屬性和行為印机,PO模式一般使用三層架構(gòu),分別為:基礎(chǔ)封裝層BasePage门驾,PO頁(yè)面對(duì)象層射赛,TestCase測(cè)試用例層。
27.你會(huì)封裝自動(dòng)化測(cè)試框架嗎奶是?
這個(gè)問(wèn)得最多楣责,甚至有很多公司直接卸載招聘要求中
當(dāng)然可以,自動(dòng)化框架主要的核心框架就是分層+PO模式:分別為:基礎(chǔ)封裝層BasePage聂沙,PO頁(yè)面對(duì)象層秆麸,TestCase測(cè)試用例層。然后再加上日志處理模塊及汉,ini配置文件讀取模塊沮趣,unittest+ddt數(shù)據(jù)驅(qū)動(dòng)模塊,jenkins持續(xù)集成模式組成坷随。
28.你們測(cè)試團(tuán)隊(duì)如何提升自己的測(cè)試技能房铭?
更多是靠技術(shù)討論和學(xué)習(xí)交流,除了我們公司內(nèi)部群之外温眉,我們還會(huì)有相關(guān)的技術(shù)交流群缸匪,可以和跟很多同行一起學(xué)習(xí),完善自己的技能樹(shù)类溢。IT行業(yè)技術(shù)更新迭代本來(lái)就很快凌蔬,所以更需要保持學(xué)習(xí)的心態(tài)。感興趣可以關(guān)注我們愛(ài)碼小士闯冷,公眾號(hào)內(nèi)會(huì)有不定期的發(fā)放免費(fèi)的資料鏈接砂心,還有同行一起技術(shù)交流。