1、爲何要作自動化測試?css
假設半月迭代一次,每次迭代須要5輪測試,人工迴歸一次須要5個小時,最終肯定一年下來,自動化爲你省去600個小時,也就是75個工做日,同時也省去了測試舊功能要吐的煩惱以及人疲憊下產生的錯誤。html
有點:提升效率、質量java
自動化測試:人爲驅動的測試行爲轉化爲機器執行過程(在手工基礎上)python
2、什麼項目適合作自動化測試?apache
1.什麼項目適合?編程
需求穩定,不會頻繁變動(項目穩定)瀏覽器
研發和測試周期長,須要頻繁執行迴歸測試tomcat
須要在多種平臺上重複運行相同測試的場景(兼容性測試)cookie
某些測試項目經過手工測試沒法實現,或手工成本過高框架
被測軟件的開發較爲規範,可以保證系統的可測試性
2.什麼階段編寫自動化腳本?
項目穩定後,編寫自動化用例更駕輕就熟,緣由:
項目基本沒有bug,方便寫斷言(斷言相似於手工測試裏的預期結果)
手工測試時用例已編寫完成,自動化測試腳本徹底能夠根據手工測試去實現
3.什麼階段進行自動化測試?
項目測試流程:冒煙測試-新需求測試-兼容性測試-迴歸測試
冒煙測試:測試流程的重要起點
新需求測試:測試過程當中學習、探索最集中的測試
兼容性測試
迴歸測試:穩定功能是否收到新功能影響的測試
迴歸測試和兼容性測試適合進行自動化測試,前者須要執行大量回歸測試用例,後者須要重複執行
3、選擇什麼類型的自動化測試
自動化測試分類:
UI自動化(效率低、成本高、用戶操做真實性強)
接口自動化(用戶操做真實性不強)
單元測試
性能測試
UI自動化和接口自動化能夠產生互補測試(採用方法)
4、接口工具對比
接口工具應知足的需求:
接口編寫方便
方便調試接口
支持數據初始化
生成測試報告
支持參數化
接口測試工具對比:
Fiddler:抓包神器,http協議調試代理工具,可以記錄互聯網之間的http協議通訊,能夠設置斷點,查看全部「進出」Fiddler的數據(如cookie,html,js,css等文件)
能夠進行接口測試,不能斷言
Postman:
可以發送任何類型的HTTP請求 (GET, HEAD, POST, PUT..),能夠進行文件上傳、響應驗證、變量管理、環境參數管理,還能夠批量管理和運行用例,並支持用例導出、導入,能夠進行接口的自動化測試
缺點是自動化斷言不夠強大,不能和jenkins、代碼管理庫進行持續集成測試
soapUi:
開源測試工具,經過soap/http來檢查、調用,實現Web Service的接口和性能測試。該工具既可做爲一個單獨的測試軟件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
Jmeter:
是一款100%純Java編寫的免費開源工具,主要用來作性能測試,但也能夠作接口測試,配合後置處理器與斷言,能夠知足大部分的接口測試場景,JMeter提供了BeanShell編程能力,能夠寫出比較靈活的測試腳本,經過jmeter+ant+jenkins能夠實現接口和性能自動化測試。
代碼實現
java代碼實現接口測試:java能夠經過httpclient.jar包,利用JUnit或者TestNG這樣的單元測試工具進行用例編寫,結合jenkins實現接口持續集成測試。
python代碼實現接口測試:python能夠利用強大的第三方庫Requests實現接口用例編寫,結合unittest單元測試框架,生成測試報告,也能夠和jenkins作持續集成測試。
爲何要代碼實現接口測試?
工具備限制,不少測試場景工具很難模擬,場景和數據構造複雜,代碼能夠實現接口,統計結果展現靈活。本身寫測試框架與代碼。
中小型項目推薦使用postman和jmeter,對於大型項目仍是利用代碼實現。
5、jmeter+Ant+Jenkins框架搭建
大體思路:Jmeter能夠作接口測試,也能作壓力測試,並且是開源軟件;Ant是基於Java的構建工具,完成腳本執行並手機結果生成報告,能夠跨平臺;Jekins是持續集成工具。將這三者結合起來能夠搭建一套WebHTTP接口測試的持續構建環境,實現接口自動化測試,基於win
1.1下載安裝包
Jmeter依賴java運行環境,需提早下載jdk並配置環境變量
官網下載:http://jmeter.apache.org/download_jmeter.cgi
下載完後直接解壓
1.2配置環境變量
JMETER_HOME爲jmeter安裝路徑
CLASSPATH爲%JMETER_HOME%\lib;
PATH爲%JMETER_HOME%\bin;
1.3安裝驗證
命令窗口輸入jmeter –v回車,能出現jmeter版本則說明成功
能夠直接在命令窗口輸入jmeter回車後啓動jmeter;也能夠在點擊jmeter.bat文件啓動jmeter
1.4在jmeter上調試通一個接口(若是是多個接口,按照jmeter方法添加便可)
2.1安裝包下載
官網下載(http://ant.apache.org/bindownload.cgi),我用的1.10.1版本,下載完直接解壓
2.2配置環境變量
ANT_HOME爲ant解壓位置
CLASSPATH爲%ANT_HOME%\lib;
PATH爲%ANT_HOME%\bin;
2.3安裝驗證
驗證安裝結果,命令行輸入ant –v,出現版本信息則安裝成功
3.1配置庫文件
將jmeter extras目錄下的ant-jmeter-1.1.1.jar文件拷貝到ant安裝目錄下的lib文件夾中, 這樣ant運行時才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"這個類,從而成功觸發JMeter腳本
3.2配置ant的編譯文件build.xml
在jmeter根目錄下建立一個存放腳本和報告的文件夾testcases
在testcases文件夾下新建build.xml文件,修改文檔裏的內容
注意:jmeter的extras文件下也有個build.xml文檔,不要用這個文檔來改,是兩回事,這裏的build文檔是本身新建
代碼中不能存在tab鍵不然會編譯失敗,要執行的腳本也要指定好,不然也會有問題
按實際狀況修改以下文檔:
https://www.cnblogs.com/autobyme/p/8387407.html---該博客裏面能夠複製build.xml裏的配置
3.3配置jmeter.propertise文檔
在jmeter/bin目錄下找到jmeter.properties文檔,打開該文檔編輯,修改jmeter報告輸出格式爲xml
改jmeter.save.saveservice.output_format=csv爲jmeter.save.saveservice.output_format=xml,並去掉前面註釋符號#
3.4驗證配置,執行構建測試
將以前jmeter腳本保存,並將build.xml配置文件放在與測試腳本相同目錄下,目錄以下:
3.5執行測試
在build.xml所在目錄打開命令窗口,輸入ant run,執行測試
3.6查看測試報告
在報告輸出存放路徑下查看是否有jtl和html結果報告,存放路徑在build文檔中也有
打開html文檔,測試結果展示執行的用例名稱、成功率、用例執行時間等結果參數
這樣的結果不太直觀
3.7優化測試報告
(1)下載優化模板jmeter-results-shanhe-me.xsl,拷貝到jmeter的extras目錄中
(2)設置測試輸出報告要輸出的內容:一樣在jmeter.properties中,設置須要輸出的內容爲true,並去掉前面的註釋符號#,這裏所有設置成true—保存
(3)設置build文件的報告模板爲優化後的模板jmeter-results-shanhe-me.xsl
(4)再次用ant構建測試,查看優化後的測試報告
4.1下載安裝包解壓
1.下載msi文件(雙擊安裝)
2.用servlet容器來部署jekins,使用的是tomcat
https://www.cnblogs.com/dreamyu/p/6480980.html
4.2啓動jenkins
安裝好以後,瀏覽器輸入http:localhost:8080
從安裝目錄jenkins\sercrets找到initalAdminPassword文件,填寫密碼
選擇插件的安裝方式,選擇按推薦方式安裝
建立第一個管理員帳戶
或者直接跳過該步驟,使用默認的admin和administrator登陸
4.3配置jenkins
1.這裏須要配置invoke ant插件、HTML測試報告真實的插件
(1)在jenkins建立管理中安裝HTML Publisher Plugin 和Ant in Workspace(若是在剛開始默認推薦安裝插件裏安裝了ant,這裏就不用下載ant插件)
(2)在jenkins中系統管理-系統設置中,配置jdk和Ant
2.新建並配置一個項目
注意:ant構建項目,默認執行的是Jenkins中workspace下的腳本,若是workspace下沒有腳本則構建會報錯,將腳本和build.xml文件都放置workspace目錄下(我放在jmeter下)
注意:Index page[s]:的值(TestReport.html)是與build.xml中設置的測試報告名稱一致,不然在Jenkins中查看不了測試報告
腳本配置完成
4.5項目主頁,點擊當即構建,執行測試
參考資料:
https://www.cnblogs.com/autobyme/p/8387407.html
https://www.cnblogs.com/wulixia/p/11011793.html
https://blog.csdn.net/XingLongSKY/article/details/91536924
原文出處:https://www.cnblogs.com/gaoxiaoru/p/11584115.html