高級自動化測試常見面試題(Web、App、接口)

一、Web自動化測試
1.Selenium中hidden或者是display = none的元素是否可以定位到?
不能,可以寫JavaScript將標(biāo)簽中的hidden先改為0,再定位元素
2.Selenium中如何保證操作元素的成功率?也就是說如何保證我點(diǎn)擊的元素一定是可以點(diǎn)擊的?
1.添加元素智能等待時(shí)間 driver.implicitly_wait(30)
2.添加強(qiáng)制等待時(shí)間(比如python中寫 sleep)
3.try 方式進(jìn)行 id,name,clas,x path, css selector 不同方式進(jìn)行定位,如果第一種失敗可以自動嘗試第二種
3.如何提高Selenium腳本的執(zhí)行速度?
代碼優(yōu)化,多任務(wù),分布式部署都是可以提升腳本執(zhí)行速度的。
4.用例在運(yùn)行過程中經(jīng)常會出現(xiàn)不穩(wěn)定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩(wěn)定性?
1.time.sleep( )
2.driver.implicitly_wait(30)
3.多用 try 捕捉,處理異常
5.你的自動化用例的執(zhí)行策略是什么?
自動化測試與軟件開發(fā)本質(zhì)上是一樣的,利用自動化測試工具,經(jīng)過測試需求分析,設(shè)計(jì)出自動化測試用例,從而搭建自動化測試的框架,設(shè)計(jì)與編寫自動化腳本,驗(yàn)證測試腳本的正確性,最終完成自動化測試測試腳本(即主要功能為測試的應(yīng)用軟件)并輸出測試結(jié)果
6.自動化測試的時(shí)候是不是需要連接數(shù)據(jù)庫做數(shù)據(jù)校驗(yàn)?
從數(shù)據(jù)庫層面來進(jìn)行數(shù)據(jù)校驗(yàn)可以更方便驗(yàn)證系統(tǒng)的數(shù)據(jù)處理方面是否正確,數(shù)據(jù)處理邏輯正常后,UI層面上的校驗(yàn)也是需要做的。
7.id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什么?
css 、xpath 幾乎所有的元素都可以定位到,但是它們的短處在于頁面上更改了元素后位置很容易改變,所以首先使用的還是id或者name等。
8.如何去定位頁面上動態(tài)加載的元素?
觸發(fā)動態(tài)加載元素的事件,直至動態(tài)元素出現(xiàn),進(jìn)行定位
9.如何去定位屬性動態(tài)變化的元素?
xpath或者css通過同級、父級、子級進(jìn)行定位
點(diǎn)擊鏈接以后,Selenium是否會自動等待該頁面加載完畢?
會的
10.什么是page object設(shè)計(jì)模式?
簡單來說,就是把頁面作為對象,在使用中傳遞頁面對象,來使用頁面對象中相應(yīng)的成員或者方法,能更好的體現(xiàn)面向?qū)ο笳Z言(比如java或者python)的面向?qū)ο蠛头庋b特性。
11.如何在定位元素后高亮元素(以調(diào)試為目的)?
用JavaScript等腳本來重置元素屬性,給定位的元素加背景、邊框
12.什么是斷言?
斷言的英文是assertion,斷言檢查的英文是assertion checking。
斷言是指定一個(gè)程序必須已經(jīng)存在的狀態(tài)的一個(gè)邏輯表達(dá)式,或者一組程序變量在程序執(zhí)行期間的某個(gè)點(diǎn)上必須滿足的條件。
13.你覺得自動化測試最大的缺陷是什么?
1.不穩(wěn)定
2.可靠性
3.不易維護(hù)
4.成本與收益
14.Webdriver可以用來做接口測試嗎?
接口測試有現(xiàn)成的模塊來處理,WebDriver是用于做WebUI自動化測試的。如果要實(shí)現(xiàn)接口測試,可以使用Requests模塊來實(shí)現(xiàn)
二、App?UI自動化測試
1.Android APP 內(nèi)存不足時(shí), 系統(tǒng)如何結(jié)束進(jìn)程獲得內(nèi)存?
系統(tǒng)優(yōu)先結(jié)束被掛起(暫停)的進(jìn)程,釋放內(nèi)存
2.APP 測試常見的嚴(yán)重問題有哪些?分別引起的原因有哪些?
常見的有 crash、ANR(應(yīng)用無響應(yīng)、卡死),一般由設(shè)備碎片化、網(wǎng)絡(luò)波動大、內(nèi)存泄漏、代碼編寫錯(cuò)誤
3.請簡單介紹你曾使用過的一款 APP 自動化測試工具 ?
開放性問題,帶點(diǎn)主觀意見
1.對比其他熟悉的自動化工具的優(yōu)缺點(diǎn)
2.自動化的簡要方案(簡要的同時(shí)關(guān)鍵內(nèi)容請具體)。(提示:appnium 等)
4.Android 測試與 web 測試有什么區(qū)別?
相同點(diǎn):
1.設(shè)計(jì)測試用例均依據(jù)等價(jià)類、邊界值等方法,測試原理相同;
2.大多數(shù)都采用黑盒測試方法來驗(yàn)證業(yè)務(wù)功能;
3.需要檢查界面布局、風(fēng)格和按鈕是否美觀、統(tǒng)一等(UI測試);
4.測試頁面載入和翻頁的速度、登錄時(shí)長是否溢出等問題(性能測試)
5.測試應(yīng)用系統(tǒng)的穩(wěn)定性;
不同點(diǎn):
1.手機(jī)作為通信工具,通信等一些行為會對APP產(chǎn)生(中斷測試)
2.手機(jī)用戶對app 產(chǎn)品的安裝卸載操作:從上一版本/上兩個(gè)版本直接升級到最新版本(安裝卸載測試);
3.web自動化測試使用的工具較常用的是selenium,而android手機(jī)自動化測試比較常用的自動化工具是monkey、monkeyrunner、Appium(測試工具不一樣)
5.app 測試有哪幾種環(huán)境?
本地環(huán)境:app 安裝的手機(jī)環(huán)境和電腦搭建的自動化測試環(huán)境(比如安卓 SDK 等等)。
服務(wù)器環(huán)境:war 包部署的服務(wù)器, 服務(wù)器可以通過瀏覽器訪問, 也可以通過 app 去訪問。(訪問的是 web 程序的接口)
6.簡單介紹一下 Android SDK 的安裝步驟:
下載 jdk 和安卓 sdk
安裝 jdk, 配置環(huán)境變量(java_home、 classpath、 path)
7.請簡要介紹一下移動應(yīng)用及其服務(wù)端的測試點(diǎn)?
移動應(yīng)用主要有權(quán)限、安裝運(yùn)行卸載、UI、功能、性能、中斷、兼容性、安全性、回歸、升級更新、用戶體驗(yàn)。(app的11 大測試點(diǎn))
服務(wù)端有接口測試、性能測試、安全測試。
8.如何判斷 app 的 bug 是客戶端問題還是后臺問題
這個(gè)要根據(jù)業(yè)務(wù)來,一般數(shù)據(jù)的問題前端的問題多些,一般做法是有問題提給前端開發(fā), 他們知道是他們自己的問題還是后臺返回的數(shù)據(jù)問題。
9.安卓中如何取出日志信息?
把安卓系統(tǒng)日志信息實(shí)時(shí)導(dǎo)入到本地:adb logcat -v time > d:\mylog.log
運(yùn)行使用某個(gè) app,實(shí)時(shí)獲取該 app 的日志信息(cmd 里面的返回信息) :
adb shell monkey -p com.android.calendar -v 1000 > d:\mylog2.log
10.常見的 adb 命令:
查看當(dāng)前連接的設(shè)備:adb devices
安裝軟件:adb install 路徑\xx.apk
卸載軟件:adb uninstall <包名>
從電腦上發(fā)送文件到設(shè)備:adb push <本地路徑> <遠(yuǎn)程路徑>
adb push C:\test1.txt /sdcard/
從設(shè)備上下載文件到電腦:adb pull <遠(yuǎn)程路徑> <本地路徑>
adb pull /sdcard/test1.txt D:
實(shí)時(shí)獲取日志:adb logcat -v time > D:\mylog.log
登錄終端設(shè)備 shell:adb shell
查找包名/活動名:adb logcat | findstr START
啟動 APP 啟動:adb shell am start -n packageName/activity
關(guān)閉 app語法:adb shell am force-stop 包名
監(jiān)控 APP 啟動時(shí)間:adb shell am start -W packageName/activity
Monkey 命令:adb shell monkey -v -p mypackage 50
11.APP 這么多主流機(jī)型如何測試 ?
我們公司就買了, 魅族, 華為, 小米, iphone7、 iphone8 、 iphone8plus 、 iphone x 測試兼容性,有些沒有的機(jī)型,先借用同事的手機(jī)進(jìn)行測試,同時(shí)申請公司購買,或者采用云真機(jī)。
12.App 崩潰(閃退),可能是什么原因?qū)е碌模?/span>
緩存垃圾過多:由于安卓系統(tǒng)的特性,如果長時(shí)間不清理垃圾文件.會導(dǎo)致越來越卡.也會出現(xiàn)閃退情況.
運(yùn)行的程序過多,導(dǎo)致內(nèi)存不足
應(yīng)用版本兼容問題:如果應(yīng)用版本太低,會導(dǎo)致不兼容,造成閃退。此外,有些新版本在調(diào)試中,也會造成應(yīng)用閃退。解決方法:如果是版本太舊,更新為新版本即可;如果是新版本閃退,可能是應(yīng)用在改版調(diào)試,可卸載后安裝舊版。
檢查 APP 中訪問網(wǎng)絡(luò)的地方,組件中的 ImageView 是否可以正常的下載并顯示到 app 頁面上。
檢查 APP 的 sdk 和手機(jī)的系統(tǒng)是否兼容。
在一些特定情況下的閃退,比如播放視頻,在 Android5.0 升級到 Android6.0 的時(shí)候,有些系統(tǒng) API 老版本
有,新版本沒有,到時(shí)回去對象的時(shí)候失敗,報(bào)空,系統(tǒng)就會出現(xiàn)閃退
13.Appium 都有哪些啟動方式
1.客戶端啟動
2.命令行啟動
14.請簡單介紹一下使用過的安卓UI自動化測試工具?
參考答案:appium:是一個(gè)移動端的自動化框架,可用于測試原生應(yīng)用,移動網(wǎng)頁應(yīng)用和混合型應(yīng)用,且是跨平臺的。robotium:是一款國外的Android自動化測試框架,主要針對Android平臺的應(yīng)用進(jìn)行黑盒自動化測試,它提供了模擬各種手勢操作(點(diǎn)擊、長按、滑動等)、查找和斷言機(jī)制的API,能夠?qū)Ω鞣N控件進(jìn)行操作。
15.請說明Android手機(jī)和IOS手機(jī),系統(tǒng)有什么區(qū)別?
兩者運(yùn)行機(jī)制不同:IOS采用的是沙盒運(yùn)行機(jī)制,安卓采用的是虛擬機(jī)運(yùn)行機(jī)制。
兩者后臺制度不同:IOS中任何第三方程序都不能在后臺運(yùn)行;安卓中任何程序都能在后臺運(yùn)行,直到?jīng)]有內(nèi)存才會關(guān)閉。
IOS中用于UI指令權(quán)限最高,安卓中數(shù)據(jù)處理指令權(quán)限最高。
三、接口自動化測試
1.按你的理解,軟件接口是什么?
就是指程序中具體負(fù)責(zé)在不同模塊之間傳輸或接受數(shù)據(jù)的并做處理的類或者函數(shù)。
2.HTTP和HTTPS協(xié)議區(qū)別?
https協(xié)議需要到CA(Certificate Authority,證書頒發(fā)機(jī)構(gòu))申請證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用;
http是超文本傳輸協(xié)議,信息是明文傳輸,Https協(xié)議是由SSL+Http協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全;
http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443;
3.HTTPS在哪一層?
以前我面試很喜歡提網(wǎng)絡(luò)協(xié)議的問題,有朋友說我裝X,不實(shí)用。稍有點(diǎn)研究網(wǎng)絡(luò)知識,實(shí)際就不難回答
HTTPS在應(yīng)用層。
4.get和post區(qū)別是什么?
POST和GET都是向服務(wù)器提交數(shù)據(jù),并且都會從服務(wù)器獲取數(shù)據(jù)。
區(qū)別:
1)傳送方式:get通過地址欄傳輸,post通過報(bào)文傳輸
2)傳送長度:get參數(shù)有長度限制(受限于url長度),而post無限制
3)GET產(chǎn)生一個(gè)TCP數(shù)據(jù)包(對于GET方式的請求,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200返回?cái)?shù)據(jù)),POST產(chǎn)生兩個(gè)TCP數(shù)據(jù)包(對于POST,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok返回?cái)?shù)據(jù))
4)get請求參數(shù)會被完整保留在瀏覽歷史記錄里,而post中的參數(shù)不會被保留
5)在做數(shù)據(jù)查詢時(shí),建議用GET方式;而在做數(shù)據(jù)添加、修改或刪除時(shí),建議用post方式
5.常見的POST提交數(shù)據(jù)方式
主要有四種方式:application/x-www-form-urlencoded、multipart/form-data、application/json、text/xML等。
6.什么是Http協(xié)議無狀態(tài)協(xié)議?怎么解決HTTP協(xié)議無狀態(tài)協(xié)議
無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力,服務(wù)器不知道客戶端是什么狀態(tài)。即我們給服務(wù)器發(fā)送 HTTP 請求之后,服務(wù)器根據(jù)請求,會給我們發(fā)送數(shù)據(jù)過來,但是,發(fā)送完,不會記錄任何信息。HTTP 是一個(gè)無狀態(tài)協(xié)議,這意味著每個(gè)請求都是獨(dú)立的,Keep-Alive 沒能改變這個(gè)結(jié)果。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。HTTP 協(xié)議這種特性有優(yōu)點(diǎn)也有缺點(diǎn),優(yōu)點(diǎn)在于解放了服務(wù)器,每一次請求“點(diǎn)到為止”不會造成不必要連接占用,缺點(diǎn)在于每次請求會傳輸大量重復(fù)的內(nèi)容信息??蛻舳伺c服務(wù)器進(jìn)行動態(tài)交互的 Web 應(yīng)用程序出現(xiàn)之后,HTTP 無狀態(tài)的特性嚴(yán)重阻礙了這些應(yīng)用程序的實(shí)現(xiàn),畢竟交互是需要承前啟后的,簡單的購物車程序也要知道用戶到底在之前選擇了什么商品。于是,兩種用于保持 HTTP 連接狀態(tài)的技術(shù)就應(yīng)運(yùn)而生了,一個(gè)是 Cookie,而另一個(gè)則是 Session。
7.cookie和session的區(qū)別
cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上
cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session
session會在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面應(yīng)當(dāng)使用cookie
單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie可以將登陸信息等重要信息存放為session;其他信息需要保存,可以放在cookie
8.什么是DNS?
DNS 是域名系統(tǒng) (Domain Name System),DNS是用來做域名解析的,它會在你上網(wǎng)輸入網(wǎng)址后,把它轉(zhuǎn)換成IP,然后去訪問對方服務(wù)器;沒有它,你想上百度就要記住百度的IP,但有了DNS的處理,你只需要記住對應(yīng)網(wǎng)站的域名,即網(wǎng)址就可以了。
9.請問你們公司是如何做接口測試的?
接口測試實(shí)際跟一般測試不同就是測試用例的設(shè)計(jì)部分。
①獲取接口規(guī)范。
②設(shè)計(jì)接口測試功能用例(主要從用戶角度出發(fā)看接口能否實(shí)現(xiàn)業(yè)務(wù)需求,用例設(shè)計(jì)就是黑盒用例那一套)。
③各種入?yún)Ⅱ?yàn)證(正常情況,異常情況包括輸入?yún)?shù)個(gè)數(shù)不對,類型不對,可選/必選,還有考慮參數(shù)有互斥或關(guān)聯(lián)的情況)。
④接口返回值各種驗(yàn)證(符合接口文檔需求)
⑤了解接口實(shí)現(xiàn)邏輯,實(shí)現(xiàn)邏輯覆蓋(語句/條件/分支/判定/…)
⑥接口能并發(fā)執(zhí)行嗎、安全嗎,性能滿足要求嗎?
⑦采用工具或者自寫代碼來驗(yàn)證。
⑧發(fā)現(xiàn)問題跟功能測試一樣,該報(bào)bug報(bào)bug,該跟蹤狀態(tài)的跟蹤狀態(tài)。
10.怎么設(shè)計(jì)接口測試用例?
通常,設(shè)計(jì)接口測試用例需要考慮以下幾個(gè)方面:
①是否滿足前提條件
有些接口需要滿足前提,才可成功獲取數(shù)據(jù)。常見的,需要登錄Token
逆向用例:針對是否滿足前置條件(假設(shè)為n個(gè)條件),設(shè)計(jì)0~n條用例
②是否攜帶默認(rèn)值參數(shù)
正向用例:帶默認(rèn)值的參數(shù)都不填寫、不傳參,必填參數(shù)都填寫正確且存在的“常規(guī)”值,其他不填寫,設(shè)計(jì)1條用例
③業(yè)務(wù)規(guī)則、功能需求
這里根據(jù)時(shí)間情況,結(jié)合接口參數(shù)說明,可能需要設(shè)計(jì)N條正向用例和逆向用例
④參數(shù)是否必填
逆向用例:針對每個(gè)必填參數(shù),都設(shè)計(jì)1條參數(shù)值為空的逆向用例
⑤參數(shù)之間是否存在關(guān)聯(lián)
有些參數(shù)彼此之間存在相互制約的關(guān)系
⑥參數(shù)數(shù)據(jù)類型限制
逆向用例:針對每個(gè)參數(shù)都設(shè)計(jì)1條參數(shù)值類型不符的逆向用例
⑦參數(shù)數(shù)據(jù)類型自身的數(shù)據(jù)范圍值限制
正向用例:針對所有參數(shù),設(shè)計(jì)1條每個(gè)參數(shù)的參數(shù)值在數(shù)據(jù)范圍內(nèi)為最大值的正向用例
11.平常用什么工具測接口的?
常用http協(xié)議接口測試工具,如:postman、fiddler、jmeter;webService接口用SoapUI、jmeter等。
12.沒有接口文檔,如果做接口測試?
本題主要考情商,通俗來說就是忽悠能力,先唬住面試官了再說,進(jìn)去了也是瞎測測,隨時(shí)做好背鍋的準(zhǔn)備,當(dāng)然,你肯定不能回答面試官不測(心理mmp,臉上笑嘻嘻),接下來就是扯犢子時(shí)間
用抓包工具把接口抓取處理,然后針對性進(jìn)行測試;接口中字段信息不清楚的,找時(shí)間集中尋求開發(fā)解答。(常用抓包工具Fiddler、Charles等)
13.在手工接口測試或者自動化接口測試的過程中,上下游接口有數(shù)據(jù)依賴如何處理?
用一個(gè)全局變量來處理依賴的數(shù)據(jù),比如登錄后返回token,其它接口都需要這個(gè)token,那就用全局變量來傳token參數(shù)。
14.依賴于第三方數(shù)據(jù)的接口如何進(jìn)行測試?
mock
接著面試官會問你,如果mock的,然后你就順著坑繼續(xù)挖,搭建mock服務(wù)。
15.接口測試中,依賴登錄狀態(tài)的接口如何測試?
依賴登錄狀態(tài)的接口的本質(zhì)上是在每次發(fā)送請求時(shí)需要帶上session或者cookie才能發(fā)送成功,在構(gòu)建POST請求時(shí)添加必要的session或者cookie
16.如何模擬弱網(wǎng)做測試?
Fiddler和charles都可以模擬弱網(wǎng)測試,平常說的模擬丟包,也是模擬弱網(wǎng)測試。
17.你平常做接口測試的過程中發(fā)現(xiàn)過哪些bug?
面試官出這個(gè)題,主要是想知道你是不是真的做過接口測試,畢竟現(xiàn)在很多小伙伴簡歷經(jīng)過包裝(不包裝連面試機(jī)會都沒有,沒辦法,為了生存,能理解)
常規(guī)錯(cuò)誤,接口沒實(shí)現(xiàn),沒按約定返回結(jié)果,邊界值處理出錯(cuò)等。
輸入異常值(空值、特殊字符、超過約定長度等),接口拋錯(cuò),沒做封裝處理;
輸入錯(cuò)誤的參數(shù)、多輸入、少輸入?yún)?shù),接口可能出現(xiàn)的錯(cuò)誤;
安全性問題,如明文傳輸、返回結(jié)果含有敏感信息,沒對用戶身份信息做校驗(yàn),沒做惡意請求攔截等;
性能問題,如接口并發(fā)插入多條相同操作,響應(yīng)時(shí)間過長,接口壓測出現(xiàn)瓶頸等;
18.當(dāng)一個(gè)接口出現(xiàn)異常時(shí)候,你是如何分析異常的?
先抓包,用fiddler(charles)工具抓包,或者瀏覽器上F12調(diào)試工具;APP上的話,那就用Fiddler做代理,通過手機(jī)設(shè)置代理去看請求和返回報(bào)文;
查看后端日志,如Linux系統(tǒng)通過xhell連上服務(wù)器,查看接口日志,查看是否有報(bào)錯(cuò)信息(命令:tail -f 日志文件);
19.如何分析一個(gè)bug是前端還是后端的?
平常提bug的時(shí)候,前端開發(fā)和后端開發(fā)總是扯皮,不承認(rèn)是對方的bug。
這種情況很容易判斷,先抓包看請求報(bào)文,對著接口文檔,看請求報(bào)文有沒問題,有問題就是前端發(fā)的數(shù)據(jù)不對;
請求報(bào)文沒問題,那就看返回報(bào)文,返回的數(shù)據(jù)不對,那就是后端開發(fā)的問題咯。
20.你們做接口測試自動化嗎?
現(xiàn)在針對大量應(yīng)用,普遍推崇做接口測試自動化,維護(hù)成本低、收益高。常用的工具有許多,如Jmeter、Robot Framework、pytest等。
21.列出幾個(gè)JMeter監(jiān)聽器?
一些JMeter監(jiān)聽器是:
集合報(bào)告
匯總報(bào)告
查看結(jié)果樹
用表格查看結(jié)果
圖形結(jié)果
BeanShell Listener
摘要報(bào)告等
22.在python中進(jìn)行數(shù)據(jù)驅(qū)動測試
在unittest中,沒有自帶的數(shù)據(jù)驅(qū)動,我們得借助ddt來實(shí)現(xiàn),首先,我們得在python運(yùn)行環(huán)境中安裝ddt,用下列命令安裝
pip install ddt
另外一個(gè)測試框架pytest,它自帶數(shù)據(jù)驅(qū)動實(shí)現(xiàn),是通過@pytest.mark.parametrize(argnames,argvalues) 來實(shí)現(xiàn)參數(shù)化的。
也可以根據(jù)自己需求用python實(shí)現(xiàn)數(shù)據(jù)的讀取和驅(qū)動。
23.接口自動化中的關(guān)聯(lián)怎么處理?
把上一個(gè)請求返回的結(jié)果傳入到下一個(gè)請求的參數(shù)中,將請求的結(jié)果反射到一個(gè)類屬性(使用setattr()函數(shù)),下一個(gè)請求去調(diào)用這個(gè)類屬性
24.自動化測試怎么校驗(yàn)結(jié)果?
斷言 ,預(yù)期結(jié)果與實(shí)際結(jié)果對比
數(shù)據(jù)庫校驗(yàn),根據(jù)測試場景來查詢數(shù)據(jù)庫里的數(shù)據(jù)和請求之前的數(shù)據(jù)進(jìn)行比對
25.自動化使用的測試框架是什么?簡述自動化框架的設(shè)計(jì)、維護(hù)
測試框架:python+unittest+requests+ddt+openpyxl+pymysql+logging
python:入門簡單,語法簡潔
unittest :定義一個(gè)測試用例類,具體的方法來維護(hù)測試用例的生命周期,測試場景行為,測試用例 前置場景,行為,期望結(jié)果,實(shí)際結(jié)果,斷言方法,Setup teardown方法
requests:接口調(diào)用 ,支持http請求的庫,API 簡潔,提供不同的http請求方法,支持session,cookies,
ddt :數(shù)據(jù)驅(qū)動,ddt 類裝飾器,data 測試方法裝飾器 unpack解包可迭代的數(shù)據(jù)類型
普通用戶,數(shù)據(jù)庫,配置文件—(基礎(chǔ)數(shù)據(jù))
openpyxl:數(shù)據(jù)管理 excel管理數(shù)據(jù),使用openpyxl模塊來進(jìn)行excel數(shù)據(jù)的讀和寫(excle,csv, json, yaML, txt都可以管理測試數(shù)據(jù))
pymysql:數(shù)據(jù)庫交互,數(shù)據(jù)校驗(yàn)
eval,json:數(shù)據(jù)格式的轉(zhuǎn)換 Eval將python支持的格式轉(zhuǎn)換成對應(yīng)的格式
logging:日志處理, 統(tǒng)一日志輸出格式,渠道,級別,執(zhí)行結(jié)果的記錄,便于定位問題
jenkins:持續(xù)集成
2/框架設(shè)計(jì)思路:數(shù)據(jù)驅(qū)動+結(jié)構(gòu)分層(可讀性,可維護(hù)性,可擴(kuò)展性)
數(shù)據(jù)驅(qū)動:將維護(hù)數(shù)據(jù)與代碼分離,接口調(diào)用行為一致,針對不同的參數(shù)組合驅(qū)動不同的測試場景,減少代碼冗余
結(jié)構(gòu)分層:數(shù)據(jù)層+用例層+邏輯層
數(shù)據(jù)層:測試數(shù)據(jù)的支撐 data.xls
用例層:用例的執(zhí)行 test_register.py test_recharge.py
邏輯層:公用的方法的封裝與提取 doexcle.py do_mysql.py http_requests.py logger.py等模塊
3/框架設(shè)計(jì)步驟:
準(zhǔn)備測試數(shù)據(jù):EXCEL表準(zhǔn)備測試用例—excel數(shù)據(jù)的讀取—參數(shù)值的替換
發(fā)起請求:請求方法(get/post方法進(jìn)行封裝—URL的拼接(不同—參數(shù)轉(zhuǎn)化為字典
拿到請求的返回值:解析返回值code,status,msg信息
斷言
好處:
1、自動化測試用例和手工測試用例的完美結(jié)合,減少重復(fù)工作
2、配置靈活,可以自主切換測試環(huán)境,執(zhí)行測試用例
3、常用功能進(jìn)行封裝,邏輯清晰,易于維護(hù)
4、統(tǒng)一執(zhí)行入口,管理測試用例集:
run.py模塊通過模糊查找來選擇需要執(zhí)行的測試用例
5、持續(xù)集成,定時(shí)構(gòu)建,快速反饋
26.具體的在這個(gè)項(xiàng)目中自動化怎么應(yīng)用到實(shí)際的?
對自動化結(jié)果的分析完成所有的自動化測試框架的設(shè)計(jì)和實(shí)現(xiàn)后,進(jìn)行接口測試,然后集成到jenkins,配置定時(shí)執(zhí)行,生成htML報(bào)表,查看測試通過率,查看接口的功能
每次發(fā)版時(shí),進(jìn)行回歸測試,新功能開發(fā)未提測前。
--------?THE END?--------
