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