uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理
對于自動化測試,原來談這方面的內(nèi)容比較少,但是現(xiàn)在我們做DevOps支撐平臺的時候,在整個持續(xù)集成和交付的過程中,有一個重要的內(nèi)容就是自動化測試。自動化測試的覆蓋面相當(dāng)大,其中既包括了CS,BS和移動APP的自動化測試分類;也包括了單元測試,接口自動化測試和UI自動化測試的分類。
DevOps成熟度中測試管理概述
測試管理是一個過程,通過該過程,所有和測試相關(guān)的方法,流程,人員都被定義。在產(chǎn)品投入到生產(chǎn)環(huán)境運(yùn)行之前,通過測試過程驗證產(chǎn)品的需求,盡可能地發(fā)現(xiàn)軟件中的缺陷,從而提高軟件產(chǎn)品的質(zhì)量。測試管理分為測試分層策略,代碼質(zhì)量管理和自動化測試三個維度進(jìn)行表達(dá)。
測試分層策略
先談下有哪些測試分類的方法,在持續(xù)集成里面我們當(dāng)然更加會強(qiáng)調(diào)自動化測試,因此可以理解為人工測試和自動化測試兩類;也可以離開為代碼級測試,接口測試和前端測試分離。也可以理解為功能測試和非功能測試兩類。
當(dāng)然也可以看到,在微服務(wù)架構(gòu)下,我們希望我們本身的開發(fā)也是分層的,即中臺模塊+服務(wù)接口+前臺功能,即我們通常說的前后端分離,在這種前后端分離的情況下,可以更加方便我們進(jìn)行測試分層設(shè)計和自動化測試。只要是厚中臺+薄前臺模式,那么就越容易實(shí)現(xiàn)測試過程的自動化。
越是持續(xù)集成自動化承擔(dān)越高,那么自動化測試的比重就會越大。
可以看到首先在架構(gòu)設(shè)計上就要做到前后端分離,中臺+服務(wù)+前臺,這種分離后可以更加方便后面進(jìn)行后端代碼和接口的自動化測試工作。
可以看到在測試分層策略里面的四到五級描述里面,我們看到TDD測試驅(qū)動開發(fā)方面的內(nèi)容,比如先寫測試代碼再寫實(shí)現(xiàn)代碼或者兩者同時在進(jìn)行等。其次,我們還是要將在整個devops最佳實(shí)踐里面,不僅僅開發(fā)過程是持續(xù)增量進(jìn)行的,對于測試過程本身也是持續(xù)增量進(jìn)行的,兩者必須匹配。
或者理想狀態(tài)應(yīng)該是沒有獨(dú)立的測試周期,開發(fā)完成的階段往往就是測試也配套完成的時間點(diǎn)。
代碼質(zhì)量管理
是軟件研發(fā)過程中保證代碼質(zhì)量的一種機(jī)制,即在代碼變更后,需要對代碼進(jìn)行檢查,分析,并給出結(jié)論和改進(jìn)建議,對代碼質(zhì)量數(shù)據(jù)進(jìn)行管理,并可以對代碼質(zhì)量進(jìn)行追溯。主要包括了質(zhì)量規(guī)約,檢查方式,反饋處理三方面的內(nèi)容。
代碼質(zhì)量管理即我們常說的代碼靜態(tài)檢查,其基于我們制定的代碼質(zhì)量規(guī)約進(jìn)行。質(zhì)量規(guī)約是指對軟件代碼質(zhì)量的要求和規(guī)范,其中包含了編碼規(guī)范,復(fù)雜度,覆蓋率,以及安全漏洞,合規(guī)性要求等多個方面的內(nèi)容。其中檢查方式即包括了我們傳統(tǒng)手工方面的檢查和CodeReview,也包括了運(yùn)行相關(guān)的自動化檢查工具進(jìn)行檢查。
自動化測試
自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,在預(yù)設(shè)條件下運(yùn)行系統(tǒng)或應(yīng)用程序,執(zhí)行測試并評估測試結(jié)果,以達(dá)到節(jié)省資源和人力,提高測試效率和準(zhǔn)確性,主要包括了自動化設(shè)計,自動化開發(fā),自動化執(zhí)行和自動化分析。
對于自動化測試可以看到,對于服務(wù)接口和代碼級的自動化測試相對來說比較容易實(shí)現(xiàn),但是對于前端和UI級的自動化測試相對來說就比較困難些。因此對于前期實(shí)踐,我們也是建議先實(shí)現(xiàn)接口服務(wù)和代碼級的自動化測試,再來靠前端UI的自動化測試。
對于性能測試由于可以提前錄制腳本,相對來說自動化測試實(shí)現(xiàn)起來比較容易。不論是那種類型的自動化測試都可以看到,實(shí)際上可以看到如下幾個關(guān)鍵點(diǎn)。
- 自動化測試代碼或腳本的編寫,可以是人工編寫,也可以通過錄制生成。
- 測試數(shù)據(jù)的產(chǎn)生問題,參考測試管理過程域
- 自動化測試腳本能夠重復(fù)執(zhí)行的要求,確保每次持續(xù)集成都能夠重復(fù)運(yùn)行測試腳本
到了自動化測試的第四級開始,可以看到增加了對獨(dú)立的自動化測試平臺的要求,同時也增加了對測試結(jié)果分析和度量的要求,即通過測試結(jié)果的度量分析來進(jìn)一步改進(jìn)測試效率,提升代碼質(zhì)量。
自動化測試概述
今天只談下對于常見的一個Web應(yīng)用的自動化測試應(yīng)該如何去考慮。
要知道自動化測試不是一個新鮮的東西,很早就有,只是最近幾年有了新的發(fā)展。比如在10多年前我們做每日構(gòu)建和冒煙測試,持續(xù)集成的過程中,我們就已經(jīng)在用Junit做自動化測試,并集成到整個持續(xù)集成過程。在每日構(gòu)建完成后,自動化運(yùn)行Junit的自動化測試腳本并輸出冒煙測試的測試結(jié)果報告。
而在當(dāng)時如果涉及到CS應(yīng)用的自動化測試,包括對于Web類應(yīng)用的自動化測試,我們采用QTP(現(xiàn)在改名為UFT)工具來做自動化測試,但是并沒有得到廣泛的應(yīng)用,一個核心的原因就是QTP來做Web端的自動化測試,實(shí)際上腳本錄制和代碼編寫量都很大,而且很難對所有的測試用例做到完全覆蓋,同時即使用了QTP工具錄制和維護(hù)腳本,實(shí)際的人工測試還是不能省略,因此這些都導(dǎo)致了QTP自動化測試并沒有大范圍推廣。
而最近幾年的發(fā)展可以看到,對于Web自動化測試Selenium和Robot Framework逐漸成為了主流的自動化測試框架和選擇。同時在微服務(wù)架構(gòu),前后端分層開發(fā)推廣下,對于接口的自動化測試也發(fā)展很快。
UFT/QTP自動化測試工具
QTP是Quick Test Professional的簡稱,是一種自動測試工具。當(dāng)前已經(jīng)更名為UFT,即統(tǒng)一功能測試框架。使用QTP的目的是想用它來執(zhí)行重復(fù)的自動化測試,主要是用于回歸測試和測試同一軟件的新版本。因此你在測試前要考慮好如何對應(yīng)用程序進(jìn)行測試,例如要測試哪些功能、操作步驟、輸入數(shù)據(jù)和期望的輸出數(shù)據(jù)等。
HP QuickTest Professional 提供符合所有主要應(yīng)用軟件環(huán)境的功能測試和回歸測試的自動化。采用關(guān)鍵字驅(qū)動的理念以簡化測試用例的創(chuàng)建和維護(hù)。它讓用戶可以直接錄制屏幕上的操作流程,自動生成功能測試或者回歸測試用例。專業(yè)的測試者也可以通過提供的內(nèi)置腳本和調(diào)試環(huán)境來取得對測試和對象屬性的完全控制。
以QTP為核心的自動化測試框架優(yōu)點(diǎn)在于:適用性好,很多人都已經(jīng)會用或者至少說可以簡單應(yīng)用,腳本也簡單易懂,大多數(shù)無任何代碼基礎(chǔ)的測試人員都可以加入腳本錄制和調(diào)試。然而它最大的缺點(diǎn)就是對象庫,關(guān)鍵字的框架,靈活度也不高,且加上QTP在對flex等的支持上,也是讓許多人頭疼的問題。
在原來對于編碼能力往往測試工程師都比較弱,因此對于QTP這種可以自動錄制,自動執(zhí)行和輸出報告完整工具應(yīng)用相當(dāng)廣泛。而現(xiàn)在的自動化測試技術(shù)棧,不管是接口、web、移動端,絕大多數(shù)都是基于開源項目來構(gòu)建,測試人員本身的編碼能力也在加強(qiáng),特別是類似Python等腳本語言的大量使用,因此現(xiàn)在實(shí)際還在采用類似QTP商用工具的已經(jīng)越來越少。自動化測試更多的采用類似Selenium, Robot Framework等開源工具進(jìn)行集成。
Selenium自動化測試工具
Selenium是一個用于Web應(yīng)用程序測試的工具。
這個工具的主要功能包括:測試與瀏覽器的兼容性,測試你的應(yīng)用程序,看是否能夠很好得工作,在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能,創(chuàng)建回歸測試檢驗軟件功能和用戶需求。支持自動錄制動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。
Selenium當(dāng)前免費(fèi),而且可以和Jenkins,Maven,TestNG等實(shí)現(xiàn)集成,同時支持多語言,多平臺和瀏覽器。因此當(dāng)前被使用的相當(dāng)多。
Selenium框架底層使用JavaScript模擬真實(shí)用戶對瀏覽器進(jìn)行操作。測試腳本執(zhí)行時,瀏覽器自動按照腳本代碼做出點(diǎn)擊,輸入,打開,驗證等操作,就像真實(shí)用戶所做的一樣,從終端用戶的角度測試應(yīng)用程序。
對于Selenium,里面有一個核心組件即Browser bot,類似于瀏覽機(jī)器人,可以執(zhí)行從測試腳本接收到的命令,自動化的完成頁面瀏覽和各種操作,并記錄相應(yīng)的測試結(jié)果。
Selenium 是一套完整的web應(yīng)用程序測試系統(tǒng),包含了測試的錄制(selenium IDE),編寫及運(yùn)行(Selenium Remote Control)和測試的并行處理(SeleniuBm Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript編寫,因此可以用于任何支持JavaScript的瀏覽器上。Selenium可以模擬真實(shí)瀏覽器,自動化測試工具,支持多種瀏覽器。
具體可參考:
https://selenium.dev/
http://www.selenium.org.cn/ (中文站點(diǎn))
Robot Framework
Robot Framework是一個跨平臺的通用的,與應(yīng)用程序和技術(shù)無關(guān)的測試框架。它的優(yōu)點(diǎn)是:易于擴(kuò)展,提供了簡單的API,用戶可以自定義基于Python和Java的測試庫。它還提供強(qiáng)大的標(biāo)簽功能,來歸類測試運(yùn)行,在測試運(yùn)行時可以選擇不同的Tag或tag組合進(jìn)行測試運(yùn)行。
支持報告合并,以便讓你可以多機(jī)執(zhí)行,然后合并報告,全局測試超時時間設(shè)置,局部可以覆蓋全局的設(shè)置非常方便,不會測試卡殼的等等。其主要優(yōu)點(diǎn)包括:
要注意到Robot Framework本身是關(guān)鍵字驅(qū)動的測試,庫和關(guān)鍵字就很重要,對于當(dāng)前的庫和關(guān)鍵字沒有的時候你還需要自己寫代碼進(jìn)行擴(kuò)展。
在Robotframework當(dāng)中,由SeleniumLibrary(非robot自帶,需要安裝)庫提供對網(wǎng)頁的操作關(guān)鍵字(功能)。即Robot Framework+SeleniumLibrary結(jié)合基本就能夠完成我們需要的Web和UI自動化測試能力。
具體可參考:
http://robotframework.org/
https://blog.csdn.net/qq_27534003/article/details/87437195
https://www.jianshu.com/p/2ebea3256e21
接口自動化測試
對于接口自動化測試,主要是指類似SOAP , Http Rest等接口服務(wù)如何進(jìn)行自動化測試。實(shí)際上在我們SOA管控平臺的開發(fā)過程中,我們也定制化開發(fā)了接口自動化測試的工具,先是人工運(yùn)行一篇接口測試,這本身類似一個腳本錄制的動作,然后后續(xù)再根據(jù)已經(jīng)錄制的腳本批量自動化運(yùn)行接口測試腳本并輸出結(jié)果。
Python+Request
Requests 是?Python語?編寫,基于urllib,采?Apache2 Licensed開源協(xié)議的 HTTP 庫。它? urllib 更加?便,可以節(jié)約我們?量的?作,完全滿?HTTP測試需求。整個測試思路基本如下:
可以看到要使用Python+Request一方面是要熟悉Python語言和Request庫,一方面是需要手工編寫測試腳本,整個代碼編寫量仍然很大。這個方法跟采用Junit單元測試基本是差不多的。
參考:
https://www.cnblogs.com/ailiailan/p/8535293.html
https://blog.csdn.net/songlh1234/article/details/84317617
Postman
Postman一款非常流行的API調(diào)試工具。其實(shí),開發(fā)人員用的更多。因為測試人員做接口測試會有更多選擇,例如Jmeter、soapUI等。不過,對于開發(fā)過程中去調(diào)試接口,Postman確實(shí)足夠的簡單方便,而且功能強(qiáng)大。
Postman最早是作用chrome瀏覽器插件存在的,2018年初Chrome停止對Chrome應(yīng)用程序的支持。當(dāng)前Postman提供了獨(dú)立的安裝包,不再依賴于Chrome瀏覽器了。同時支持MAC、Windows和Linux。
具體參考和下載:
https://learning.getpostman.com/docs/
https://www.postman.com/downloads/
JMeter
開源測試工具Jmeter可以承擔(dān)接口請求、結(jié)果解析和斷言的工作,可以作為輕量級接口自動化的實(shí)現(xiàn)手段,對于開發(fā)能力不強(qiáng)或規(guī)模不大的團(tuán)隊也能接受。Jmeter可以在協(xié)議層實(shí)現(xiàn)基本的功能,包括接口訪問、參數(shù)化構(gòu)造、返回值斷言和數(shù)據(jù)庫訪問,基本足夠滿足一個輕量級的接口自動化框架的功能。
注意Jmeter不僅僅是用做接口自動化測試,同時更加重要的一個功能是做接口的性能測試,我們在錄制完成Http請求腳本后,可以對腳本的線程數(shù),運(yùn)行時長,循環(huán)數(shù)等進(jìn)行配置并執(zhí)行,執(zhí)行完成后會輸出詳細(xì)的性能測試報告。
具體參考:
https://www.cnblogs.com/rd-ddddd/p/9578242.html
基于Java+TestNG+Rest Assured進(jìn)行自動化測試
可以看到TestNG和Rest Assured是兩個用于自動化測試的獨(dú)立類庫,這種方法偏白盒測試,需要自己編寫測試代碼,但是靈活性卻相當(dāng)高,同時可以和類似Jekins工具集合,當(dāng)然也就可以和我們DevOps平臺集成。
Rest-Assured 是一個測試Restful Web Service的Java類庫,我們可以創(chuàng)建高度定制的HTTP請求以發(fā)送到Restful服務(wù)器。這使我們能夠測試各種各樣的請求組合,依次測試核心業(yè)務(wù)邏輯的不同組合。Rest-Assured庫提供了驗證從服器收到的HTTP響應(yīng)的功能。
例如我們可以驗證狀態(tài)碼,狀態(tài)信息,標(biāo)題甚至是響應(yīng)的正文。這使Rest-Assured成為一個非常靈活,可用于測試的Java庫。
而TestNG是一個開源自動化測試框架,實(shí)際上可以看到是和Junit差不多的一個自動化測試框架,只是增加了一些新的功能和更強(qiáng)大的集成能力。其優(yōu)勢是支持依賴測試方法,并行測試,負(fù)載測試,局部故障;靈活的插件API;支持多線程測試。
同時TestNG不僅僅可以測試Rest接口,也可以測試標(biāo)準(zhǔn)的Java API接口方法。
具體可參考:
https://www.cnblogs.com/wade-xu/p/4229805.html
注:上面這篇文章可以看到采用TestNG實(shí)現(xiàn)接口自動化測試,同時進(jìn)行擴(kuò)展,將測試腳本管理和測試數(shù)據(jù)管理分離。同時測試數(shù)據(jù)全部體現(xiàn)在Excel中。從Excel中讀入測試輸入,同時將測試接口輸出到Excel中。
https://my.oschina.net/u/4112294/blog/3037471
注:上面這篇文章談到TestNG和Rest Assured相結(jié)合如何進(jìn)行接口自動化測試,同時如何和Jekins持續(xù)集成工具集成,將測試結(jié)果報告進(jìn)行輸出。
Rest Assured 自帶支持對JSON、xml的解析,同時也提供了類似hasITems ,is,equalTo等靜態(tài)方法供使用。盡管Rest Assured 提供了校驗方法,但是在實(shí)際API自動化測試過程中,因為往往需要校驗的字段非常多,建議還是直接先把要校驗的JSON字段解析出來,再通過TestNG提供的Assert類進(jìn)行校驗。
對于Rest Assured的參考網(wǎng)站如下:
http://rest-assured.io/
https://github.com/rest-assured/rest-assured
LuckyFrame開源測試平臺
LuckyFrame測試平臺是一款免費(fèi)開源的測試平臺,最大的特點(diǎn)是全緯度覆蓋了接口自動化、WEB UI自動化、APP自動化,并且支持分布式測試。既然是一個完整的測試平臺,那么自然會提供測試用例管理,測試數(shù)據(jù)管理,測試執(zhí)行,質(zhì)量管理,測試結(jié)果和測試報告查看等相關(guān)的功能。這個平臺提供在線的Demo可以查看。
LuckyFrame自動化測試框架分為兩個項目:
一個服務(wù)端項目(LuckyFrameWeb),一個客戶端項目(LuckyFrameClient),服務(wù)端項目主要負(fù)責(zé)自動化過程的管理,比如用例管理、測試任務(wù)管理等等。客戶端其實(shí)就是測試執(zhí)行機(jī),主要負(fù)責(zé)測試用例以及任務(wù)的執(zhí)行。
Web項目主要分為系統(tǒng)管理、UTP、 質(zhì)量管理、測試工具測試環(huán)境管理等模塊。
具體演示地址:
http://www.luckyframe.cn/page/lfdemo.html
https://gitee.com/seagull1985/LuckyFrameWeb
這個平臺感覺有些思路還是可以借鑒,在前面DevOps整個子系統(tǒng)劃分的文章里面我也談到,對于測試管理既可以是一個簡單的模塊放在DevOps支撐平臺里面,也可以是一個獨(dú)立的子系統(tǒng),然后再實(shí)現(xiàn)和DevOps支撐平臺的集成。
可以看到整個工具還是基本按照一個完整的測試管理平臺來實(shí)現(xiàn),覆蓋了測試計劃,測試設(shè)計,測試執(zhí)行,測試報告等多個方面的內(nèi)容。同時支持Web UI自動化測試,API接口自動化測試,整體框架相當(dāng)也完整,但是相關(guān)諸多細(xì)節(jié)估計還需要不斷迭代完善。
Http Runner自動化測試框架
HttpRunner 是一個基于 Python 開發(fā)的測試框架,2018年python開發(fā)者大會上,了解到HttpRuuner開源自動化測試框架,采用YAML/JSON格式管理用例,能錄制和轉(zhuǎn)換生成用例功能,充分做到用例與測試代碼分離,相比excel維護(hù)測試場景數(shù)據(jù)更加簡潔。
HttpRunner 是一款面向 HTTP(S) 協(xié)議的通用開源測試框架,只需編寫維護(hù)一份 YAML/JSON 腳本,即可實(shí)現(xiàn)自動化測試、性能測試、線上監(jiān)控、持續(xù)集成等多種測試需求。
為了簡化測試用例的編寫工作,HttpRunner 實(shí)現(xiàn)了測試用例生成的功能,對應(yīng)的轉(zhuǎn)換工具為一個獨(dú)立的項目:har2case。即通過當(dāng)前主流的抓包工具將抓取到的數(shù)據(jù)包導(dǎo)出為HAR,然后再將HAR格式轉(zhuǎn)化為YAML/JSON格式的測試用例文件。
對于HTTPrunner當(dāng)前已經(jīng)到2.0版本,但是整體感覺還不是一個完整的自動化測試框架平臺,當(dāng)前對于HTTPrunner可以應(yīng)用于一些簡單的接口測試,或者是不會有大改動的接口的回歸測試,這樣也挺方便的。但是對于一些復(fù)雜的測試不如采用Rest Assured功能強(qiáng)和靈活,畢竟Rest Assured基于Java,可以靈活進(jìn)行Java代碼腳本的擴(kuò)展。
具體參考:
https://v1.httprunner.org/
總結(jié)
以上是生活随笔為你收集整理的uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JAVA实现onvif的ptz控制_使用
- 下一篇: python爬取视频自动播放_如何在IP
