自動化測試是什么中剩?自動化測試學(xué)什么忌穿?自動化測試面試題及答案?--看完后吊打面試官!
一结啼、前言
最近有童鞋和我抱怨掠剑,說網(wǎng)上很難搜到那些全面又合適的自動化測試面試題,這里根據(jù)我個人的經(jīng)驗以及收集整理的:
你沒看錯妆棒,不慌,慢慢來沸伏。
先從什么是自動化測試開始說起哈糕珊!
二、什么是自動化測試毅糟?
什么是自動化測試红选?
當(dāng)我第一次知道自動化測試的時候,除了知道“自動化”這三個有些高大上的稱呼之外姆另,我對自動化測試一無所知喇肋,正如談戀愛一樣,找女朋友之前要知道她是誰迹辐。
自動測試就是把以人為驅(qū)動的測試轉(zhuǎn)化為機器執(zhí)行的一種過程蝶防,它是一種以程序測試程序的過程。嗦嘎明吩!那么...
三间学、自動化測試需要學(xué)什么技能?
這是我以前在知乎寫的,可以詳細的了解2020年自動化測試攻城獅需要學(xué)什么技能了低葫!
四详羡、2020年全網(wǎng)最全的自動化測試面試題和答案,原來干貨都在這里
1嘿悬、你會封裝自動化測試框架嗎实柠?
這個問得最多,甚至有很多公司直接寫在招聘要求中善涨!
當(dāng)然可以窒盐,自動化框架主要的核心框架就是分層+PO模式:分別為:基礎(chǔ)封裝層BasePage,PO頁面對象層躯概,TestCase測試用例層登钥。然后再加上日志處理模塊,ini配置文件讀取模塊娶靡,unittest+ddt數(shù)據(jù)驅(qū)動模塊牧牢,jenkins持續(xù)集成模式組成。
2姿锭、如何把自動化測試在公司中實施并推廣起來的塔鳍?
1.項目組調(diào)研選擇自動化工具并開會演示demo案例,我們主要是演示selenium和robotframework兩種呻此。
2.搭建自動化測試框架轮纫,在項目中逐步開展自動化。
3.把該項目的自動化流程焚鲜、框架固化成文檔
4.推廣到公司的其它項目組應(yīng)用
3掌唾、請描述一下自動化測試流程?
1.編寫自動化測試計劃
2.設(shè)計自動化測試用例
3.編寫自動化測試框架和腳本
4.調(diào)試并維護腳本
5.無人值守測試
6.后期腳本維護(添加用例忿磅、開發(fā)更新版本)
4糯彬、自動化測試用例如何編寫?以下答案二選一即可:
1.用例是自動化測試工程師自己設(shè)計的葱她,一般剛開始已基本業(yè)務(wù)流程為主(登錄--完成一個業(yè)務(wù)--退出)
2.從系統(tǒng)測試用例中進行篩選或由業(yè)務(wù)工程師提供
5撩扒、上一個項目中自動化測試的執(zhí)行策略?
上一個項目中是定時執(zhí)行的吨些,設(shè)置的執(zhí)行時間是晚上12點搓谆,執(zhí)行完畢后會自動發(fā)送郵件通知
6、自動化測試發(fā)現(xiàn)BUG多嗎豪墅?
不多泉手,因為之前項目組是把已經(jīng)測試通過的基本功能再進行自動化腳本編寫和在后續(xù)版本執(zhí)行自動化測試,它主要是保證已經(jīng)測試通過的功能在新版本更新后沒有問題偶器。
7螃诅、你覺得自動化測試的價值在哪里啡氢?你們公司為什么要做自動化測試?
引用自動化測試之后术裸,能代替大量繁瑣的回歸測試工作倘是,把業(yè)務(wù)測試人員解放出來,既而讓業(yè)務(wù)測試人員把精力集中在復(fù)雜的業(yè)務(wù)功能模塊上袭艺,自動化測試一般是對穩(wěn)定下來的功能進行自動化搀崭,保證不會因為產(chǎn)品的更新導(dǎo)致之前穩(wěn)定下來的功能出現(xiàn)BUG
8、自動化測試有誤報過bug嗎猾编?產(chǎn)生誤報怎么辦瘤睹?
有誤報過,有時候自動化測試報告中顯示發(fā)現(xiàn)了bug,實際去通過手工測試去確認(rèn)又不存在該bug答倡。
誤報原因一般是:
1.元素定位不穩(wěn)定轰传,需要盡量提高腳本的穩(wěn)定性;
2.開發(fā)更新了頁面但是測試沒有及時更新維護!
9瘪撇、自動化測試過程中获茬,你遇到了哪些問題,是如何解決的倔既?
1.頻繁地變更頁面恕曲,經(jīng)常要修改頁面對象類里面的代碼
2.自動化測試偶爾出現(xiàn)過誤報
3.自動化測試結(jié)果出現(xiàn)覆蓋的情況:Jenkins根據(jù)時間建立文件夾
4.自動化測試代碼維護比較麻煩
5.自動化測試進行數(shù)據(jù)庫對比數(shù)據(jù)
10、在上一家公司做自動化測試用的什么框架渤涌?
可以說出以下自己擅長的一種:
1.python+selenium+unittest+htmltestrunner
2.python+selenium+pytest+allure
3. robotframework+Selenium2Library
11佩谣、你們自動化團隊有自己的群嗎?
當(dāng)然有:我們使用的群號是:695458161?有很多軟件測試和自動化大神解決項目中的問題实蓬,還會不定時的發(fā)放免費資料茸俭。
12、在selenium自動化測試中安皱,你一般完成什么類型的測試调鬓?自動化覆蓋率?
主要是冒煙測試和回歸測試练俐⌒溆回歸測試主要寫一些功能穩(wěn)定的場景冕臭,通過自動化手段去實現(xiàn)腺晾,節(jié)約測試時間。因為自動化測試用例也是在不斷的更新和迭代辜贵,沒有刻意去統(tǒng)計悯蝉,大概在30%-40%左右!
13托慨、在執(zhí)行腳本過程鼻由,如何實現(xiàn)當(dāng)前元素高亮顯示?
這個其實就是利用javaScript去修改當(dāng)前元素的邊框樣式來到達高亮顯示的效果,
14蕉世、如果一個元素?zé)o法定位蔼紧,你一般會考慮哪些方面的原因?
1.頁面加載元素過慢狠轻,加等待時間
2.頁面有frame框架頁奸例,需要先跳轉(zhuǎn)入frame框架再定位
3.可能該元素是動態(tài)元素,定位方式要優(yōu)化向楼,可以使用部分元素定位或通過父節(jié)點或兄弟節(jié)點定位查吊。
4.可能識別了元素,但是不能操作湖蜕,比如元素不可用逻卖,不可寫等。需要使用js先把前置的操作完成昭抒,
15评也、元素定位方法你熟悉的有哪些?
id name classname link_text css xpath
16戈鲁、遇到frame框架頁面怎么處理仇参?
先用driver.switch_to.frame()跳轉(zhuǎn)進去frame,
然后再操作頁面元素婆殿,
操作完后使用driver.swith_to.default_content()跳轉(zhuǎn)出來
17诈乒、遇到alert彈出窗如何處理?
使用driver.switch_to.alert方法先跳轉(zhuǎn)到alert彈出窗口
然后再通過accept點擊確定按鈕婆芦,通過dismiss點擊取消難怕磨,通過text()獲得彈出窗口的文本。
18消约、如何處理多窗口肠鲫?
這個多窗口之間跳轉(zhuǎn)處理,我們在項目中也經(jīng)常遇到或粮。就是导饲,當(dāng)你點擊一個鏈接,這個鏈接會在一個新的tab打開氯材,然后你接下來要在新tab打開的頁面查找元素渣锦,
1.我們在點擊鏈接前使用driver.current_window_handle獲得當(dāng)前窗口句柄。
2.再點擊鏈接氢哮。點擊后通過driver.window_handles獲得所有窗口的句柄袋毙,
3.然后再循環(huán)找到新窗口的句柄,然后再通過driver.switch_to.window()方法跳轉(zhuǎn)到新的窗口冗尤。
19听盖、怎么驗證元素是enable/disabled/checked狀態(tài)胀溺?
定位元素后:分別通過isEnabled(),isSelected()皆看,isDisplayed()三個方法進行判斷仓坞。
20、 如何處理下拉菜單腰吟?
在Selenium中有一個叫Select的類扯躺,這個類支持對下拉菜單進行操作。使用方法如下:
1.定位元素
2.把定位的元素轉(zhuǎn)化成Select對象蝎困。
sel = Select(定位的元素對象)
3.通過下標(biāo)或者值或者文本選中下拉框录语。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);
21、在日歷這種web 表單你是如何處理的?
首先要分析當(dāng)前網(wǎng)頁試用日歷插件的前端代碼禾乘,看看能不能通過元素定位澎埠,點擊日期實現(xiàn),如果不能始藕,可能需要借助javascript蒲稳。還有些日歷控件一個文本輸入框,可以直接sendKeys()方法來實現(xiàn)傳入一個時間的數(shù)據(jù)伍派。
22江耀、舉例一下說明一下你遇到過那些異常
常見的selenium異常有這些:
NoSuchElementException:沒有該元素異常
TimeoutException : 超時異常
ElementNotVisibleException :元素不可見異常
NoSuchAttributeException :沒有這樣屬性異常
NoSuchFrameException :沒有該frame異常
23、關(guān)閉瀏覽器中quit和close的區(qū)別
簡單來說诉植,兩個都可以實現(xiàn)退出瀏覽器session功能祥国,close是關(guān)閉你當(dāng)前聚焦的tab頁面,而quit是關(guān)閉全部瀏覽器tab頁面晾腔,并退出瀏覽器session舌稀。知道這兩個區(qū)別,我們就知道quit一般用在結(jié)束測試之前的操作灼擂,close用在執(zhí)行用例過程中關(guān)閉某一個頁面的操作壁查。
24、在Selenium中如何實現(xiàn)截圖剔应,如何實現(xiàn)用例執(zhí)行失敗才截圖
在Selenium中提供了一個get_screenshot_as_file()的方法來截圖的睡腿,一般結(jié)合try/except捕獲異常時使用,進行錯誤截圖峻贮。
25席怪、如何實現(xiàn)文件上傳?
定位元素后月洛,直接使用send_keys()方法設(shè)置就行何恶,參數(shù)為需要上傳的文件的路徑孽锥。
26嚼黔、自動化中有哪三類等待?他們有什么特點?
1.線程等待(強制等待)如time.sleep(2):線程強制休眠2秒鐘凳忙,2秒過后宫补,再執(zhí)行后續(xù)的代碼。建議少用碎节。
2.imlicitlyWait(隱式等待)會在指定的時間范圍內(nèi)不斷的查找元素捧搞,直到找到元素或超時,特點是必須等待整個頁面加載完成狮荔。
3.WebDriverWait(顯式等待)通常是我們自定義的一個函數(shù)代碼胎撇,這段代碼用來等待某個元素加載完成,再繼續(xù)執(zhí)行后續(xù)的代碼
27殖氏、你寫的測試腳本能在不同瀏覽器上運行嗎
當(dāng)然可以晚树,我寫的用例可以在在IE,火狐和谷歌這三種瀏覽器上運行雅采。實現(xiàn)的思路是封裝一個方法爵憎,分別傳入一個瀏覽器的字符串,如果傳入IE就使用IE婚瓜,如果傳入FireFox就使用FireFox宝鼓,如果傳入Chrome就使用Chrome瀏覽器,并且使用什么瀏覽器可以在總的ini配置文件中進行配置巴刻。需要注意的是每個瀏覽器使用的驅(qū)動不一樣愚铡。
28、什么是PO模式胡陪,為什么要使用它
PO是Page Object 模式的簡稱茂附,它是一種設(shè)計思想,意思是督弓,把一個頁面营曼,當(dāng)做一個對象,頁面的元素和元素之間操作方法就是頁面對象的屬性和行為愚隧,PO模式一般使用三層架構(gòu)蒂阱,分別為:基礎(chǔ)封裝層BasePage,PO頁面對象層狂塘,TestCase測試用例層录煤。
五、預(yù)祝面試成功荞胡,給您的OFFER妈踊,請收下!
最后預(yù)祝每一位求職者都能找到自己如意的工作泪漂!馬上實現(xiàn)升職加薪廊营!
本文轉(zhuǎn)載自知乎大佬諸葛:https://zhuanlan.zhihu.com/p/133325731