什么是自動(dòng)化測(cè)試
自動(dòng)化測(cè)試介紹
自動(dòng)化測(cè)試指軟件測(cè)試的自動(dòng)化,在預(yù)設(shè)狀態(tài)下運(yùn)行應(yīng)用程序或者系統(tǒng).
預(yù)設(shè)條件包括正常和異常,最后評(píng)估運(yùn)行結(jié)果。
?
自動(dòng)化測(cè)試,就是將人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行的過(guò)程。
【機(jī)器 代替 人工】
自動(dòng)化測(cè)試包括UI自動(dòng)化,接口自動(dòng)化,單元測(cè)試自動(dòng)化。
按照這個(gè)金字塔模型來(lái)進(jìn)行自動(dòng)化測(cè)試規(guī)劃,可以產(chǎn)生最佳的自貢話測(cè)試產(chǎn)出投入比(ROI),可以用較少的投入獲得很好的收益。
?
單元測(cè)試:
最大的投入應(yīng)該在單元測(cè)試上,單元測(cè)試運(yùn)行的頻率也更加高。
java的單元測(cè)試框架是Junit,之前講過(guò),在這里不再贅述。
不過(guò),單元測(cè)試在 開(kāi)發(fā)階段就可以做,而且一般都是由開(kāi)發(fā)人員來(lái)測(cè)試。
因?yàn)榉奖汩_(kāi)發(fā)人員觀察代碼運(yùn)行的結(jié)果,從而及時(shí)修正。
所以說(shuō),一般單元測(cè)試 開(kāi)發(fā)人員很有可能就順手做了。
當(dāng)然,也不排除測(cè)試人員來(lái)做的。
更常見(jiàn)的方式:開(kāi)發(fā)人員 協(xié)助測(cè)試人員 進(jìn)行單元測(cè)試。因?yàn)榇a不是測(cè)試人員寫(xiě)的,不知道某塊代碼對(duì)應(yīng)的是哪個(gè)功能。
所以,一般是需要開(kāi)發(fā)人員來(lái)協(xié)助的。
?
接口自動(dòng)化
接口測(cè)試就是API測(cè)試,相對(duì)于UI自動(dòng)化,API自動(dòng)化更加容易實(shí)現(xiàn),執(zhí)行起來(lái)也更穩(wěn)定。
接口自動(dòng)化的有以下特點(diǎn):
1、可在產(chǎn)品前期,接口完成后介入
2、用例維護(hù)量小
3、適合接口變動(dòng)較小,界面變動(dòng)頻繁的項(xiàng)目
?
常見(jiàn)的接口自動(dòng)化測(cè)試工具有,RobotFramework(RF框架),JMeter,SoupUI,TestNG+HttpClient,Postman【推薦使用】等。
?
UI自動(dòng)化
雖然測(cè)試金字塔告訴我們盡量多做API層的自動(dòng)化測(cè)試,但是UI層的自動(dòng)化測(cè)試更加貼近用戶的需求和軟件系統(tǒng)的實(shí)際業(yè)務(wù)。
并且有時(shí)候我們不得不進(jìn)行UI層的測(cè)試。
?
UI自動(dòng)化測(cè)試是根據(jù) 界面元素,對(duì)元素進(jìn)行操作,模擬用戶的使用,編寫(xiě)自動(dòng)化腳本,進(jìn)行測(cè)試。
?
UI自動(dòng)化的特點(diǎn):
1、用例維護(hù)量大【缺點(diǎn)】
2、頁(yè)面相關(guān)性強(qiáng),必須在后期項(xiàng)目頁(yè)面開(kāi)發(fā)完成后介入
3、UI測(cè)試適合與界面變動(dòng)較小的項(xiàng)目
4、可以支持繁瑣復(fù)雜,手工不易操作,反復(fù)執(zhí)行的功能測(cè)試【優(yōu)點(diǎn)】
?
UI自動(dòng)化測(cè)試的好處:
1、降低大型系統(tǒng)的由于變更或者多期開(kāi)發(fā)引起的大量的回歸測(cè)試的人力投入,這可能是自動(dòng)化測(cè)試最主要的任務(wù),特別是在程序修改比較頻繁,效果是非常明顯的.
?
2、自動(dòng)化測(cè)試前期人力投入較多.,但后期進(jìn)入維護(hù)期后,可節(jié)省大量人力,而手工測(cè)試后期需要增加大量人力用于回歸測(cè)試
?
3、減少重復(fù)測(cè)試的時(shí)間,實(shí)現(xiàn)快速回歸測(cè)試
?
4、創(chuàng)建優(yōu)良可靠的測(cè)試過(guò)程,減少人為錯(cuò)誤
?
5、可以運(yùn)行更多更繁瑣的測(cè)試
?
6、可以執(zhí)行一些手工測(cè)試?yán)щy 或 不可能進(jìn)行的測(cè)試
?
7、更好的利用資源【腳本的復(fù)用性】
?
UI層自動(dòng)化測(cè)試框架 - Selenium
UI層的測(cè)試框架比較多,比如Windows客戶端測(cè)試的AutoIT,web測(cè)試的selenium以及TestPlant,eggPlant,Robot framework,QTP等。
?
我們主要以Web UI自動(dòng)化測(cè)試框架Selenium為例進(jìn)行詳細(xì)介紹。
?
selenium有以下優(yōu)點(diǎn):
1、免費(fèi),也不用再為破解軟件而大傷腦筋
?
2、小巧,對(duì)于不同的語(yǔ)言它只是一個(gè)包而已,而QTP 需要下載安裝1個(gè)多G 的程序。這也是最重要的一點(diǎn)【2】,不管你以前更熟悉C、java、ruby、python、或都是C# ,你都可以通過(guò) selenium 完成自動(dòng)化測(cè)試.
而 QTP 只支持 VBS【Visual Basic的腳本語(yǔ)言】3、支持多平臺(tái):windows、linux、MAC ;支持多瀏覽器:ie、ff、safari、opera、chrome
?
4、支持分布式測(cè)試用例的執(zhí)行,可以把測(cè)試用例分布到不同的測(cè)試機(jī)器執(zhí)行,相當(dāng)于分 “學(xué)習(xí)委員發(fā)作業(yè)” 的功能。
?
UI自動(dòng)化測(cè)試的適用對(duì)象
實(shí)施自動(dòng)化測(cè)試的前提條件:
需求變動(dòng)不頻繁、項(xiàng)目周期足夠長(zhǎng)、自動(dòng)化測(cè)試腳本可重復(fù)使用。
?
適合做自動(dòng)化的項(xiàng)目:
1、產(chǎn)品型項(xiàng)目
產(chǎn)品型的項(xiàng)目,新版本是在舊版本的基礎(chǔ)上進(jìn)行改進(jìn),功能變動(dòng)不大的項(xiàng)目,但項(xiàng)目的新老功能都必須重復(fù)的進(jìn)行回歸測(cè)試。回歸測(cè)試是自動(dòng)化測(cè)試的強(qiáng)項(xiàng),它能夠很好的驗(yàn)證你是否引入了新的缺陷,老的缺陷是否修改過(guò)來(lái)了。
在某種程度上可以把自動(dòng)化測(cè)試工具叫做回歸測(cè)試工具。
?
2、機(jī)械并頻繁的測(cè)試。每次需要輸入相同、大量的一些數(shù)據(jù),并且在一個(gè)項(xiàng)目中運(yùn)行的周期比較長(zhǎng)。
比如兼容性測(cè)試。
?
以下情況的項(xiàng)目不適合做自動(dòng)化測(cè)試:
1、需求變動(dòng)頻繁的項(xiàng)目,自動(dòng)化腳本不能重復(fù)使用,維護(hù)成本太大,性價(jià)比低
?
2、項(xiàng)目周期短,自動(dòng)化腳本編制完成后使用次數(shù)不多,性價(jià)比低
?
3、交互型較強(qiáng)的項(xiàng)目,需要人工干預(yù)的項(xiàng)目,自動(dòng)化無(wú)法實(shí)施
?
如何實(shí)施自動(dòng)化測(cè)試
單純的講,自動(dòng)化測(cè)試的具體實(shí)現(xiàn),應(yīng)該是包含下面七個(gè)過(guò)程的。
1、分析:總體把握系統(tǒng)邏輯,分析出系統(tǒng)的核心體系架構(gòu)。
?
2、設(shè)計(jì):設(shè)計(jì)測(cè)試用例,測(cè)試用例要足夠明確和清晰,覆蓋面廣而精
?
3、實(shí)現(xiàn):實(shí)現(xiàn)腳本,有兩個(gè)要求一是斷言,二是合理的運(yùn)用參數(shù)化。
?
4、執(zhí)行:執(zhí)行腳本遠(yuǎn)遠(yuǎn)沒(méi)有我們想象中那么簡(jiǎn)單。腳本執(zhí)行過(guò)程中的異常需要我們仔細(xì)的去分析原因。
?
5、總結(jié):測(cè)試結(jié)果的分析,和測(cè)試過(guò)程的總結(jié)是自動(dòng)化測(cè)試的關(guān)鍵。
?
6、維護(hù):自動(dòng)化測(cè)試腳本的維護(hù)是一個(gè)難以解決但又必須要解決的問(wèn)題。
?
7、分析:在自動(dòng)化測(cè)試過(guò)程中深刻的分析自動(dòng)化用例的覆蓋風(fēng)險(xiǎn)和腳本維護(hù)的成本。
?
自動(dòng)化測(cè)試需要了解的技能
了解被測(cè)試系統(tǒng)的基本業(yè)務(wù)
了解業(yè)務(wù)的技術(shù)框架
懂得功能測(cè)試
懂得一種編程語(yǔ)言
懂?dāng)?shù)據(jù)庫(kù)、操作系統(tǒng)
了解常見(jiàn)的測(cè)試框架
?
selenium介紹
Selenium是web應(yīng)用中基于UI的自動(dòng)化測(cè)試框架,支持多平臺(tái)、多瀏覽器、多語(yǔ)言。
?
早期的 selenium RC 已經(jīng)被現(xiàn)在的webDriver所替代,可以簡(jiǎn)單的理解為 selenium1.0 + webdriver 構(gòu)成現(xiàn)在的Selenium2.0。
現(xiàn)在我們說(shuō)起selenium,一般指的是Selenium2.0。
它由Selenium IDE,Webdriver,Selenium Grid組成。
分別做一下介紹:
1,Selenium IDESelenium IDE一個(gè)用于Selenium測(cè)試的完成集成開(kāi)發(fā)環(huán)境,可以直接錄制在瀏覽器的用戶操作,并且能回放,編輯和調(diào)試測(cè)試腳本。調(diào)試過(guò)程中可以逐步進(jìn)行或調(diào)整執(zhí)行的速度,并且可以在底部瀏覽日志出錯(cuò)信息。
錄制的測(cè)試腳本可以以多種語(yǔ)言導(dǎo)出,比如java,C#,Python,Ruby等,方便掌握不同語(yǔ)言的測(cè)試人員操作。2,Webdriver
Selenium RC 在瀏覽器中運(yùn)行 JavaScript 應(yīng)用,會(huì)存在環(huán)境沙箱問(wèn)題,而 WebDriver 可以跳出 JavaScript 的沙箱,針對(duì)不同的瀏覽器創(chuàng)建更健壯的,分布式的,跨平臺(tái)的自動(dòng)化測(cè)試腳本。
基于特定語(yǔ)言(Java,C#,Python,Ruby,Perl,JavaScript等)綁定來(lái)驅(qū)動(dòng)瀏覽器對(duì)Web元素進(jìn)行操作和驗(yàn)證。
?
webdriver的工作原理:
啟動(dòng)瀏覽器后,selenium-webdriver會(huì)將目標(biāo)瀏覽器綁定到特定的端口,啟動(dòng)后的瀏覽器則作為webdriver 的 remote serve【遠(yuǎn)程服務(wù)器】。
?
客戶端【也就是測(cè)試腳本】,借助ComandExecutor發(fā)送HTTP請(qǐng)求給sever端?!就ㄐ艆f(xié)議:The WebDriver Wire Protocol,在HTTP request的body中,會(huì)以WebDriver Wire協(xié)議規(guī)定的JSON格式的字符串來(lái)告訴Selenium我們希望瀏覽器接下來(lái)做什么事情】
?
Sever端需要依賴原生的瀏覽器組件,轉(zhuǎn)化Web Service的命令為瀏覽器native【本地的 / 原生】的調(diào)用來(lái)完成操作。
瀏覽器就好比是出租車(chē),乘客的指令較好比是腳本, webdriver 就好比 司機(jī)。
司機(jī)( webdriver)把乘客的“需求(腳本)”,“告訴 / 翻譯(操作)” 出租車(chē)(瀏覽器)實(shí)現(xiàn)它。3,selenium Grid
selenium Grid是一個(gè)服務(wù)器,提供對(duì)瀏覽器實(shí)例訪問(wèn)的服務(wù)器列表,管理各個(gè)節(jié)點(diǎn)的注冊(cè)和狀態(tài)信息??梢詫?shí)現(xiàn)在同一時(shí)刻不同服務(wù)器上執(zhí)行不同的測(cè)試腳本。
?
如何使用 selenium IDE 錄制腳本
安裝Selenium IDE
1、安裝 Firefox 瀏覽器,需要注意的是 irefox更新過(guò)快,selenium的不同版本對(duì)firefox的支持不同。
注意,安裝完畢后,在選項(xiàng)菜單取消自動(dòng)更新。【記得是一個(gè)維護(hù)服務(wù)的選項(xiàng),】
安裝的選項(xiàng)是一個(gè)環(huán)節(jié),我們還需要手動(dòng)設(shè)置一下。2、安裝selenium IDE
直接到火狐瀏覽器的擴(kuò)展與主題中直接Selenium IDE搜索并下載
點(diǎn)擊它
下面,我們來(lái)啟動(dòng)一下 Selenium IDE
另外
需要注意的是 這里使用的 是 pytest框架,而我們更多的是使用 Junit框架。
到時(shí)候,我們?nèi)?xiě)自動(dòng)化測(cè)試,和它的效果不一樣的。
這就是 Selenium IDE 的使用。
?
selenium+python環(huán)境搭建
安裝Python
Python 可以參考這篇文章,鏈接https://www.csdn.net/tags/MtTaAgzsMDQ0NTUzLWJsb2cO0O0O.html
?
安裝setuptools
打開(kāi)cmd
輸入命令:pip install setuptools
?
安裝selenium
.在mod中輸入命令:pip install selenium
注意:如果直接下載不下來(lái),可以使用鏡像:
pip install selenium -i https://mirrors.aliyun.com/pypi/simple
?
有時(shí)候遇到pip不是最新的版本,也可以使用鏡像更新一下:
python -m pip install --upgrade pip -i https://pypi.douban.com/simple
?
安裝瀏覽器驅(qū)動(dòng) - java + selenium / python + selenium 必須配置項(xiàng)
火狐驅(qū)動(dòng) geckodriver.exe
下載地址:https://github.com/mozilla/geckodriver/releases,請(qǐng)根據(jù)系統(tǒng)版本選擇下載;(如Windows 64位系統(tǒng)) 下載解壓后將getckodriver.exe復(fù)制到Python的安裝目錄Scripts文件夾下;
?
安裝谷歌瀏覽器【過(guò)程省略】,并且下載驅(qū)動(dòng) Chrome driver
下載地址:http://npm.taobao.org/mirrors/chromedriver/
下載解壓,你會(huì)得到一個(gè)chromedriver.exe 文件,放到安裝Python的目錄的Scripts文件夾下。
只有安裝了對(duì)應(yīng)的driver才能運(yùn)行對(duì)應(yīng)的瀏覽器
禁止 Chrome 瀏覽器更新
?
selenium + Java 環(huán)境搭建
1、下載谷歌Chrome瀏覽器 And ChromeDriver
這個(gè)操作前面已經(jīng)做了。記住 驅(qū)動(dòng)的版本 一定要和 瀏覽器的版本一致,并且一定要進(jìn)制 瀏覽器的自動(dòng)更新服務(wù)?。?!
不然,瀏覽器每更新一次,我們都需要去下載對(duì)應(yīng)版本的驅(qū)動(dòng)。
不同之處來(lái)了??!
我們需要將驅(qū)動(dòng),再拷貝一份放到 jdk 的 bin 的目錄下。
火狐也是一樣的文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-431829.html
2、下載selenium
這個(gè)我們直接在項(xiàng)目中使用 Maven 引入 就行了,無(wú)需關(guān)注!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-431829.html
到了這里,關(guān)于測(cè)開(kāi) - 自動(dòng)化測(cè)試 selenium - 自動(dòng)化概念 && 測(cè)試環(huán)境配置 - 細(xì)節(jié)狂魔的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!