1、web自動化測試- UI自動化中定位不到元素的原因有哪些?
自動化定位不到元素的原因有:
1)定位器選擇錯誤
2)定位字符串錯誤
3)元素嵌套在frame當(dāng)中
4)頁面元素沒有及時加載
5)元素在新窗口中
6)腳本流程與實際不符
7)元素不在當(dāng)前頁
2、如何保證自動化測試的穩(wěn)定性
自動化測試穩(wěn)定性主要表現(xiàn)在兩個方面:一個是元素定位的問題,一個是用例之間的依賴問題。
1)元素定位問題可以采用智能等待的方式盡可能的避免;
2)用例依賴可以解耦用例之間的關(guān)系,讓每條用例都從一個共同的頁面開始執(zhí)行,比如首頁,這就需要在測試框架中采用后置處理的方式使每條用例執(zhí)行完成后都回到首頁
3、web UI 自動化測試中顯式等待、隱式等待的區(qū)別
相同點
都是智能等待,在一定時間范圍內(nèi)不斷查找元素,一旦找到立刻結(jié)束查找繼續(xù)執(zhí)行代碼,沒找到才會一
直找到超時為止
不同點
隱式等待是全局性設(shè)置,并且可以隨時更改,在更改后對之后的findxxx方法生效,對點擊、輸入之類的操作不起作用;
顯式等待僅僅針對單一元素或一組生效,并且不僅僅是針對查找,也可以針對Alert、iframe、或者元素的某些屬性進(jìn)行自定義判斷
4、在selenium中如何處理多窗口?
這個多窗口之間跳轉(zhuǎn)處理,在實際selenium自動化測試經(jīng)常遇到。點擊一個鏈接,這個鏈接會在一個新
的tab打開,然后接下來要查找元素在新tab打開的頁面,需要先將driver切換至window,然后再定位,
步驟如下:
- 先獲取當(dāng)前的windowhandle
- 操作打開新界面后,獲取所有的windowhandles
- 遍歷windowhandles,判斷和當(dāng)前的windowhandle不一樣則切換至該windowhandle
4.window太多則可以按照title、url等其他信息進(jìn)行判斷切換
5、你是如何處理iframe里面元素定位的?
有時候我們寫的元素定位表達(dá)式?jīng)]有問題,但是腳本還是提示no such element,那么我們就需要考慮
這個元素是否在iframe中。通過f12查看元素HTML中是否有iframe標(biāo)簽,如果有iframe,需要先將
driver切換到iframe中,可以通過frame的name和id和索引三種方法來定位frame,或者先找到iframe
的元素,然后把這個元素傳遞進(jìn)去也可以。
6、Webdriver中關(guān)閉瀏覽器的quit和close有什么區(qū)別
簡單來說,這兩個都可以實現(xiàn)退出瀏覽器session功能,
close是關(guān)閉你當(dāng)前聚焦的tab頁面,而quit是關(guān)閉全部瀏覽器tab頁面,并退出瀏覽器session。
quit一般用在結(jié)束測試之前的操作,close用在執(zhí)行用例過程中關(guān)閉某一個頁面的操作
7、如何提高用例的覆蓋率,減少漏測
1)要根據(jù)需求文檔來編寫用例,確保每條需求都被對應(yīng)的用例覆蓋
2)要充分理解業(yè)務(wù),挖掘隱形需求,并編寫對應(yīng)的用例
3)除了正常的業(yè)務(wù)場景,多考慮一些異常的場景和數(shù)據(jù)
4)要從多個維度對軟件進(jìn)行測試,功能、性能、安全等各方面來考慮
5)多站在用戶的角度去思考問題,模擬用戶的使用場景
6)組織用例評審
8、App 做過哪些專項測試
- App 冷/熱啟動測試
2)App權(quán)限測試(設(shè)備權(quán)限、App權(quán)限設(shè)置)
3)App 安裝/卸載/升級
4)App消息推送(App、短信、微信、QQ)
5)App 弱網(wǎng)
6)App 穩(wěn)定性測試
9、介紹下你最近做過的一個項目
參考答案:
結(jié)合自己測過的業(yè)務(wù)細(xì)節(jié),從以下幾個方面來回答:
1) 項目名稱
2) 項目平臺(終端):app/web/pad
3) 主要業(yè)務(wù)針對****(用戶群體,例如青少年群體、上班族)提供、、**
等功能的軟件
4) 主要模塊:
5) 我負(fù)責(zé)、、模塊的測試,包括功能、接口、兼容性、界面(app 專項)
6) 項目的主流程:例如冒煙測試用例
7) 系統(tǒng)架構(gòu)
8) 優(yōu)勢亮點:技術(shù)亮點(技術(shù)在*項目的應(yīng)用,例如,使用 Fiddler 斷點、mock),
管理亮點(例如,協(xié)調(diào)把控項目進(jìn)度,分配測試任務(wù),文檔質(zhì)量評審),其他
亮點(例如,溝通能力、工作態(tài)度、多角度換位思考)
10、你上一家公司***APP 項目里面開發(fā)和測試人員的比例分配是多少?
我上一家公司,加上我,一共是四個測試,一個測試的小組長加上三個組員,
前端開發(fā)大概是八九個人左右,后端開發(fā)大概是四五個人左右,產(chǎn)品是三個人。
11、遇到的印象最深的bug是?
(1)可以是體現(xiàn) BUG 定位問題能力的 BUG
(2)可以是體現(xiàn)測試思維模式擴展的 BUG
(3)可以是體現(xiàn)相關(guān)技能提升的 BUG
(4)可以是業(yè)務(wù)邏輯復(fù)雜的 BUG
(5)可以是需求分析/評審階段發(fā)現(xiàn)的用戶體驗類(易用性)的 BUG
(6)可以是需求分析/評審階段發(fā)現(xiàn)的由于需求未明確而存在爭議的 BUG
(7)可以是線上嚴(yán)重級別較低但用戶體驗效果非常差的 BUG
12、SQL 中常用的聚合函數(shù)都有哪些?
max(): 最大值
min(): 最大值
avg(): 最大值
sum(): 最大值
count(): 最大值
13、unittest 和 pytest 的區(qū)別
一、用例編寫規(guī)則
1.unittest 提供了 test cases、test suites、test fixtures、test runner 相關(guān)的類,讓測試更
加明確、方便、可控。使用 unittest 編寫用例,必須遵守以下規(guī)則:
(1)測試文件必須先 import unittest
(2)測試類必須繼承 unittest.TestCase
(3)測試方法必須以“test_”開頭
(4)測試類必須要有 unittest.main()方法
2.pytest 是 python 的第三方測試框架,是基于 unittest 的擴展框架,比 unittest 更簡潔,
更高效。使用 pytest 編寫用例,必須遵守以下規(guī)則:
(1)測試文件名必須以“test_”開頭或者"test"結(jié)尾(如:test_ab.py)
(2)測試方法必須以“test”開頭。
(3)測試類命名以"Test"開頭。
二、用例前置和后置
1.unittest 提供了 setUp/tearDown,每個用例運行前、結(jié)束后運行一次。setUpClass
和 tearDownClass,用例執(zhí)行前、結(jié)束后,只運行一次
2.pytest 提供了模塊級、函數(shù)級、類級、方法級的 setup/teardown,比 unittest 的
setUp/tearDown 更靈活。
三、斷言
1.unittest 提供了 assertEqual、assertIn、assertTrue、assertFalse。
2.pytest 直接使用 assert 表達(dá)式。
四、報告
1.unittest 使用 HTMLTestRunnerNew 庫。
2.pytest 有 pytest-HTML、allure 插件。
五、失敗重跑
1.unittest 無此功能。
2.pytest 支持用例執(zhí)行失敗重跑,pytest-rerunfailures 插件。
六、參數(shù)化
1.unittest 需依賴 ddt 庫,
2.pytest 直接使用@pytest.mark.parametrize 裝飾器。
七、用例分類執(zhí)行
1、unittest 默認(rèn)執(zhí)行全部用例,也可以通過加載 testsuit,執(zhí)行部分用例。
2、pytest可以通過@pytest.mark來標(biāo)記類和方法,pytest.main加入?yún)?shù)(“-m”)可以只運行標(biāo)記的類和方法