# 自動化測試篇
[TOC]
> ### 舉例來說一下你的自動化測試是怎么做的?
參考答案:就拿簡歷上的xxx項目來說吧,在編寫腳本前,我們會對系統進行評估,確認這個系統可不可以實現UI自動化,如果可以的話,就篩選出能實現自動化測試的用例,一般優先把冒煙測試用例的轉為成腳本。我們是用selenium工具來實現自動化,采用python腳本語言,基于unittest框架進行用例的編寫。比如,下單這個功能的腳本,我們是這樣做的:首先,我們會構建一個測試工程,測試工程包含testcase,主要用來存放測試用例,report用來存放測試報告,其次我們會把用例中公共的部分封裝到public中,最后用runAllCase的python文件運行項目自動化用例,腳本調試完后,我們會用jenkins持續集成工具,設置腳本每天晚上10點跑一遍腳本,跑完后生成html格式的自動化測試報告。
----------------**說法二**----------------------
***就拿簡歷上的前進鏈項目來說,在編寫腳本前,我會先對系統進行評估,確認這個系統可不可以實現UI自動化,如果可以,就篩選出能實現自動化測試的用例,一般優先把冒煙測試用例轉化為腳本。
我是用selenium工具來實現自動化,采用python腳本語言,基于pytest框架進行用例編寫。首先,構建一個測試工程,測試工程包好testcase,用來存放測試用例,report用來存放測試報告,
其次會利用PO模式,將業務邏輯和測試邏輯相分離,再引入allure測試報告,在測試期間收集測試數據。***
> ### 自動化腳本失敗的原因:
1. 可能是測試環境的網絡不穩定;
2. 開發修改了代碼沒通知到測試人員修改腳本;
3. 開發引入了新的問題。
> ### 測試腳本用到了哪些技術?
參考答案:元素定位,表單切換,模塊調用,JS定位等等,腳本是基于python自帶的unittest單元測試框架,采用了模塊化方式編寫,把復用性高的操作封裝到公共模塊中,如果腳本需要用到對應的操作,直接調用就可以了,如果元素發生變化,只需要調整元素封裝的代碼就可以了,提高測試用例的可維護性。
> ### xpath和CSS定位方式的區別:
1、語法不一樣;
2、CSS定位比較穩定、快速。
> ### 腳本怎么組織的?(編寫自動化腳本,你的思路是什么?)
參考答案:構建一個測試工程,測試工程包含testcase,主要用來存放測試用例,report用來存放測試報告,其次我們會把用例中公共的部分封裝到public中,最后用runAllCase的python文件運行項目自動化用例。測試腳本使用的是python的unittest單元測試框架組織管理,將所有測試腳本通過單元測試框架組織起來運行,這樣做的好處是,維護起來方便,可以生成測試html格式的測試報告,報告包括:測試用例,通過數,失敗數。
> ### 自動化率多少?
一般是30%到40%,這個沒有固定的,我們是優先將優先級高的測試用例,比如,冒煙測試的測試用例轉換成自動化腳本的,后面有時間的時候再不斷補充,能寫多少寫多少。
> ### 自動化腳本的通過率是多少?(注意這個題目的意思)
參考答案:這個說不準,如果沒有什么異常情況,自動化腳本都是100%運行通過;如果異常情況比較多,比如出現測試環境不穩定,或者開發修改了代碼沒通知到測試人員及時修改腳本,又或者開發引入了新的問題等等,自動化腳本通過率可能80%都不到。
> ### 用那個方法判斷元素是否顯示
is\_displayed()
> ### 你曾經都寫過多少自動化測試用例?
這個具體沒有算過。但是只要有時間,模塊穩定的功能都會寫。就拿上個項目來說,自動化測試用例大概寫了將近有100-120條這樣子吧。
> ### python3 的數據類型有哪些?
int (整型)
float (浮點型)
str(字符串)
List(列表)
Tuple(元組)
Set(集合)
Dictionary(字典)
不可變數據(四個):int (整型)、float (浮點型)、str(字符串)、Tuple(元組)、Set(集合);
可變數據(兩個):List(列表)、Dictionary(字典)。
> ### 面:unittest框架了解嗎?
參考答案:unittest框架,由setUp()--環境預置,testCase()--- 測試用例 tearDown()----環境恢復,三大部分組成,unittest框架可組織執行測試用例,并且提供豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果。
> ### 怎樣用python連接mysql數據。
參考答案:我們之前主要是用python語言來寫web端的自動化測試腳本,沒有連過mysql數據庫,到時候工作需要的話,學一下很快就能上手了。
> ### 用python做過接口測試自動化測試嗎?
參考答案:我們之前主要是用python語言來寫web端的自動化測試腳,接口是用Jmeter來做的,用python寫接口的腳本也在網上學習過,但是工作中沒用用過,到時候工作需要的話,再學一下應該沒問題。
> ### 元素定位失敗的原因
1. 頁面的元素未加載完成
2. 元素的屬性值不唯一
3. 元素的屬性值是動態值
4. 元素在另外一個表單
5. 元素在另外一個頁面
> ### 自動化腳本,如何切換不同的瀏覽器
參考答案:使用對應的瀏覽器驅動,然后在腳本中更換不同的瀏覽器。
> ### 你的python水平很一般啊?(遇到這種否定你的問題,一定不能虛!)
參考答案:我現在掌握的python知識,做ui層的自動化測試是可以的,代碼的封裝,調用這些都沒問題;我一般是會做,但不是很會用文字描述出來,我以注意到這點,現在也在加強提升自己的總結能力。
PS---重點強調:凡是遇到被面試官否定的,都要想辦法懟回去,輸也要輸得精彩些,但是,懟回去的時候,要注意語氣,要有禮有節,不卑不亢。
> ### python怎么定義一個函數,怎么定義一個類
~~~
def 函數名:
函數體
class 類名:
屬性
方法
~~~
> ### 有些元素,在谷歌瀏覽器上能定位,在火狐瀏覽器上定位失敗,是什么原因呢?
參考答案:因為不同瀏覽器的內核不一樣,他們的CSS樣式不一樣。
> ### 如何提高selenium腳本的執行速度?
1. 提高網速;
2. 少用sleep,多用隱式等待或顯式等待。
3. 提升電腦配置
> ### 元素定位的方式有哪些
~~~
d.find_element_by_id('id的值')
d.find_element_by_name('name的值')
d.find_element_by_class_name('class的值')
d.find_element_by_tag_name('標簽名')
d.find_element_by_link_text('完整的文本鏈接')
d.find_element_by_partial_link_text('部分的文本鏈接')
d.find_element_by_css_selector('css表達式')
d.find_element_by_xpath('xpath表達式')
js定位
~~~
> ### 如何切換iframe
`switch_to.frame()`
> ### 如何切換窗口
`switch_to.window()`
> ### 鼠標懸停的方法是什么
鼠標懸停用到`ActionChains`類提供的`move_to_element`方法
> ### 如何定位下拉框
需要導入`Select`類,可以使用下標、值和文本定位
> ### 如何獲取彈出警告框的text
`switch_to.alert.text`
> ### 什么樣的項目適合做自動化
項目周期長,版本多,界面元素穩定的項目
> ### selenium如何做兼容性測試
使用對應的瀏覽器驅動,然后在腳本中更換不同的瀏覽器。
> ### 為什么會生成HTML報告
使用了HTMLTestRunner第三方工具包來實現的
> ### 腳本運行出錯,應該怎樣定位,說出分析過程
運行結束之后我們會得到一個測試報告,我們根據測試報告先定位一下是腳本的原因還是程序的原因,一般來說腳本的原因在報告中都會顯示出哪一行代碼出錯了,如果是程序的原因通常來說都是斷言的問題。
> ### 如果系統有驗證碼,怎么做自動化?
1. 去掉驗證碼。
2. 設置萬能驗證碼。
3. 用python調用OCR模塊,自己寫代碼來識別。這種方法可以識別出簡單的驗證碼。
4. 調用第三方平臺提供的接口進行識別。比如:斐斐打碼,尖叫數據這些平臺接口。
> ### setUp(),tearDown()和setUpClass(),tearDownClass()的區別:
參考答案:當測試用例有多個,setUp()和tearDown()就會被執行多次;不管測試用例有多少個,setUpClass()和tearDownClass()只會被執行一次。
> ### python的第三方模塊/標準庫有哪些?
time,random,unittest,selenium,HTMLTestRunner
> ### python的pass語句的作用是什么?
參考答案:占位符,當方法沒有內容時,防止出現語法錯誤。
> ### 自動化寫過哪些模塊的腳本?
參考答案:主要是把冒煙測試的用例轉化為腳本,比如,我這個xx商城系統,做自動化的模塊有后臺的上架商品,訂單查詢,添加團購活動,促銷活動,前臺的搜索商品,添加商品到購物車,下單等等。
> ### 元素的屬性值是動態變化的,怎么定位這個元素?
參考答案:如果元素有屬性值是動態變化的,我們就不要使用這個屬性進行定位;我們可以使用這個元素的非動態變化,并且是唯一的值屬性進行定位;也可以使用xpath或者css,使用層次+屬性的方式定位。
> ### webdriver的原理是什么?
參考答案:瀏覽器的驅動,接收客戶端發過來的指令(指令就是我們的腳本),瀏覽器的驅動根據接收到的指令,驅動瀏覽器工作。
> ### 你們是怎么檢查自動化的結果是不是正確的?
參考答案:我們會用unittest單元測試框架提供的斷言方式來檢查實際結果和預期結果是否一致,常用的斷言方式有assertEqual(),assertIn(),還有一些其他的,不常用就沒記了。
> ### 怎么樣提升自動化腳本成功率
1. 在容易失敗的地方,加上sleep
2. 盡量定位一些穩定的元素
3. 使用try..except多中方式定位
> ### unittest單元測試怎么安裝的?
參考答案:不需要安裝,是python自帶的,直接通過import 關鍵字引用就可以了。
> ### pytest了解嗎?
參考答案:也是python的一個單元測試框架,它的用法比unittest框架復雜些。自動化測試我們一般是基于unittest框架來做的,pytest用的少,以后工作需要,我業余時間學習一下,很快上手。
> ### po(page object:頁面對象)設計模式了解嗎?
參考答案:po還是了解的。po是web自動化測試目前最佳的一種實踐方式,簡單來說就是類和類之間的封裝和調用。
包括基礎類、頁面類、用例層等部分。目前正在往這個方面進階腳本。
- 總章
- Oracle數據庫
- 常見的Linux命令
- 理論內容整理
- 給你如下功能怎么測試
- 支付怎么測試
- 購物車怎么測試?
- 搜索功能怎么測試?
- 文件上傳功能怎么測試?
- 登錄功能怎么測試?
- 還款功能怎么測試?
- 訂單功能怎么測試?
- 自動化測試篇
- 必記代碼
- 接口測試篇
- 性能測試篇
- app測試篇
- 面試篇
- 項目篇
- 職業素養篇
- 真實案列分析
- 如何預防冷場
- redis
- 琪琪
- 禪道搭建手冊
- 禪道搭建手冊1
- 禪道的基本使用
- 基于Python3_Selenium的自動化
- Python3安裝
- Python3基礎
- 列表_元組_集合
- 函數_模塊_類
- Python代碼
- selenium環境
- selenium定位方式
- Selenium常見操作
- toast讀取代碼
- 添加用戶代碼
- 隱式等待與顯式等待
- 循環添加用戶
- 測試用例練習
- 測試用例優化
- Fiddler抓包工具
- 安裝
- Fiddler使用
- 接口測試
- Jmeter的安裝
- Jmeter使用
- jmeter+ant+jenkins接口自動化測試框架
- 接口安全測試
- 性能測試
- Nmon監控LInux系統
- Jmeter分布式
- 性能測試-具體案例
- Monkey
- 安裝1
- Monkey使用
- appium自動化
- appium的安裝
- appium基本使用
- 真機USB連接
- 問題排查
- Jenkins持續集成
- Jenkins安裝
- Jenkins配置任務
- Python擴展內容
- Python連接數據庫
- Python進行接口測試
- 開啟服務