1. 程式人生 > >軟體測試漫談(web測試,自動化測試,Jmeter)

軟體測試漫談(web測試,自動化測試,Jmeter)

> 軟體測試,就是一個過程或一系列過程,用來確定計算機程式碼完成了其應該完成的功能不執行其不該有的操作。 簡單說就是找bug的過程。 ### 測試分類 (1)按測試方式分類:靜態測試、動態測試 (2) 按測試方法分類:白盒測試、黑盒測試 (3) 按測試自動化程度分類:人工測試、`自動化測試` (4) 按測試階段分類:單元測試、整合測試、確認測試、系統測試、驗收測試 (5) 按測試型別分類:`功能測試`、`介面測試`、`效能測試(負載測試、強度測試)`、容量測試、壓力測試、安全測試、相容性測試、安裝測試、文件測試、易用性測試、邊界測試、健壯性測試、本地化測試、無障礙測試、迴歸測試、冒煙測試、Monkey測試、A/B測試 (6) 按測試模式分類:瀑布模型、敏捷測試、基於指令碼的測試、基於風險的測試、探索式測試 (7) 按測試的物件分:`web測試`、移動測試。。。 。。。 功能測試(黑盒測試),功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到使用者要求的功能 自動化測試,一般是指軟體測試的自動化,軟體測試就是在預設條件下執行系統或應用程式,評估執行結果,預先條件應包括正常條件和異常條件。 ### web介面測試、效能測試、介面測試 框架簡單介紹 #### web介面測試: - [Selenium](https://selenium.dev/) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20191202092927901.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzYxMDM5Nw==,size_16,color_FFFFFF,t_70) IDE是:selenium-server、selenium-java包(Java版本) 簡單來說就是做web自動化測試框架,可測試不同的瀏覽器. - [katalon](https://www.katalon.com/) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20191202093047652.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzYxMDM5Nw==,size_16,color_FFFFFF,t_70) 新興起的自動化測試軟體,更易使用,IDE是katalon studio。 - 兩者的區別 1. Katalon的使用者群體範圍更廣,使用者甚至不需要任何程式設計基礎,只需要知道自己想做什麼即可,而Selemium的使用者群體是開發或者測試人員 2. Katalon安裝和使用都更簡單,只要下載軟體,然後點選exe,登入即可。Selenium需要先安裝jRE,selenium-server、selenium-java包,如果是在谷歌瀏覽器使用還要下載Chromedriver包,而且介面沒有katalon更易操作和美觀,主要是通過命令列和程式碼實現錄製和測試。另外是Katalon recode(指令碼錄製)比Selenium IDE(指令碼錄製)更簡單,識別準確度也更加高 >(Katalon Recorder(katalon錄製指令碼的一個工具,直接在google的應用商城搜尋安裝外掛即可)。它可以錄製自己在瀏覽器的記錄,然後可以回放操作、控制速度和匯出java等程式碼的執行指令碼,對於介面測試很有幫助)(演示) #### 介面測試: Jmeter,loadrunner,Postman,restclient, Jmeter和loadRunner在這裡的介面測試,是指其能錄製指令碼,並記錄下所有的請求,並且能通過正則匹配等方式來驗證返回的結果是否正確,對於批量測試介面和已經現成的網站來獲取介面來測試很方便。 Postman和Restclient則是專門的介面測試工具了,對於構造請求引數和傳送請求都很方便,對於開發階段測試較方便。 *Jmeter的指令碼錄製需要注意的點的,對於https協議的話,你需要將其bin目錄下生成證書放到其根目錄下才能進行訪問網站,否則可能訪問不了* #### 效能測試 Postman, Jmeter, ab ##### Postman自帶的測試(Runner測試,不能併發測試): 在Runner介面下,可以設定之前自己構造的請求傳送多少次請求, 但是傳送的請求是序列的,即等上一個請求發完才能繼續傳送。這個功能適合簡單測試,因為平時測試一般都是使用postman來構造請求測試,所以這種效能測試幾乎是不用額外的工作量,就可以測試出程式在多個請求發生時的情況(程式記憶體,cpu使用率等),從而針對程式進行優化。缺點是:不能模擬併發場景,適用於沒有較少併發場景的介面,例如一些比較少用的儲存,介面,可以利用該功能模擬程式執行久之後,執行情況。(演示) ##### Jmeter測試 Jmeter是一個專業開源的效能測試軟體,純Java開發,可以用於對靜態的和動態的資源(檔案,Servlet,Perl指令碼,Java物件,資料庫查詢,FTP伺服器或是其他資源)的效能進行測試。 它提供了圖形化介面來供使用者適用,也可以通過引入外掛方式來給測試的指標更豐富的可試化功能。 它提供的功能包含指令碼錄製,引數化,集合點,檢查點,關聯,多協議,多執行緒,報告生成與匯出等,幾乎能滿足一切的效能測試的要求,所有目前這個效能測試框架是比較多公司在使用的,像阿里的產品 效能測試 PTS(Performance Testing Service)中就支援Jmeter匯入測試。https://help.aliyun.com/document_detail/29262.html 這個在後面在具體講解專門使用 ##### ab(apachebench) ab是一種用於測試Apache超文字傳輸協議(HTTP)伺服器的工具。(演示) > ab的原理:ab命令會建立多個併發訪問執行緒,模擬多個訪問者同時對某一URL地址進行訪問。它的測試目標是基於URL的,因此,它既可以用來測試apache的負載壓力,也可以測試nginx、lighthttp、tomcat、IIS等其它Web伺服器的壓力。 優點對發出負載的計算機要求很低,它既不會佔用很高CPU,也不會佔用很多記憶體,使用簡單。適合測試簡單介面的效能。缺點:對於一些介面要請求頭會經常變或者要測試多個介面的時候就很不方便。 命令示例:`ab -c 10 -n 100 http://www.myvick.cn/index.php :同時處理100個請求並執行10次index.php`(演示) ##### 其他 LoadRunner太重量級且收費,Gatling(Scala語言)需要寫程式碼非介面操作,都不太適用 ### Jmeter測試框架具體介紹和簡單展示(主要是後端部分) #### Jmeter相關概念: 1. 執行計劃:與本次效能測試相關的所有的內容。 2. Treads(Users)執行緒 使用者 ,分為setup thread group (預測試操作), teardown thread group (測試後的動作),`thread group (執行緒組)`核心,可以看成一個虛擬使用者組。 3. 定時器 (Timer) 用來控制等待時間,控制QPS,或者傳送的Constant Throughput Timer(吞吐量) 4. 配置元件(Config Element),提供動態請求資料的配置或者是請求頭等的配置 5. 斷言(Assertions),一般用來測試得到的結果是否正確,判斷結果狀態。 6. 監聽器(Listener),使用者對測試結果資料的的處理和視覺化展示的一系列元件。包含結果彙總,檢視結果樹,聚合報告等。 7. 取樣器(sample),是效能測試中向伺服器傳送請求,記錄響應的資訊,記錄響應時間的最少單元,可以認為它是主要去執行任務,傳送請求的。 8. 邏輯控制器。控制傳送請求的邏輯順序,如只執行一次,執行多少次,在什麼條件(if)下才執行。 9. 測試片段、前置處理器、後置處理器、邏輯控制器(這些用的比較少,具體介紹可以檢視官方文件[https://jmeter.apache.org/usermanual/get-started.html](https://jmeter.apache.org/usermanual/get-started.html)) #### 如何建立一個http請求測試 安裝Java後,下載Jmeter,解壓,然後執行bin/jmeter.bat檔案。可以看到: ![jmeter介面概覽](https://img-blog.csdnimg.cn/20191202093142295.PNG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zNzYxMDM5Nw==,size_16,color_FFFFFF,t_70) 具體過程: ![測試簡單的http請求](https://img-blog.csdnimg.cn/20191202094107184.gif) ### 總結,如何簡單使用測試 1. katalon recoder(介面錄製和測試) 2. jmeter(介面效能測試) 3. postman (介面簡單測試和連續請求測試,較為簡單,本地使用介面除錯和順便測試)   自動化測試還有很多東西,這些內容只是冰山一角,之前想著把自動化測試的總體流程都說一下,然後學習之後發現涉及的東西太多,例如:完整的測試用例設計,瀏覽器驅動webdriver,持續整合等等。 短時間內容幾乎不可能學完,所以就以這些目前自己工作中能方便使用到測試工具進行了一下簡單講解。如果有說明得不對的地方,望體諒。 最後,測試用得好,程式碼bug少。 ### 參考及資源 1. 測試社群: [https://testerhome.com/](https://testerhome.com/) 2. [https://blog.csdn.net/xuecancan/article/details/79529155](https://blog.csdn.net/xuecancan/article/details/79529155) 3. 軟體測試的藝術,Glenford J Myers [book] 4. [linux下ab壓力測試](https://www.cnblogs.com/myvic/p/7703973.html) 5. [壓測相關引數](https://blog.csdn.net/timchen525/article/details/80113749) https://www.cnblogs.com/a00ium/p/10462892.html https://www.yuque.com/darry/skills/ef9kmx ![微信公眾號圖片](https://s3.ax1x.com/2020/11/25/Dddd