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

軟體測試,就是一個過程或一系列過程,用來確定電腦程式碼完成了其應該完成的功能不執行其不該有的操作。

簡單說就是找bug的過程。

測試分類

(1)按測試方式分類:靜態測試、動態測試

(2) 按測試方法分類:白盒測試、黑盒測試

(3) 按測試自動化程度分類:人工測試、自動化測試

(4) 按測試階段分類:單元測試、集成測試、確認測試、系統測試、驗收測試

(5) 按測試類型分類:功能測試介面測試性能測試(負載測試、強度測試)、容量測試、壓力測試、安全測試、兼容性測試、安裝測試、文檔測試、易用性測試、邊界測試、健壯性測試、本地化測試、無障礙測試、回歸測試、冒煙測試、Monkey測試、A/B測試

(6) 按測試模式分類:瀑布模型、敏捷測試、基於腳本的測試、基於風險的測試、探索式測試

(7) 按測試的對象分:web測試、移動測試。。。

。。。

功能測試(黑盒測試),功能測試就是對產品的各功能進行驗證,根據功能測試用例,逐項測試,檢查產品是否達到用戶要求的功能

自動化測試,一般是指軟體測試的自動化,軟體測試就是在預設條件下運行系統或應用程式,評估運行結果,預先條件應包括正常條件和異常條件。

web介面測試、性能測試、介面測試 框架簡單介紹

web介面測試:

在這裡插入圖片描述

IDE是:selenium-server、selenium-java包(Java版本)

簡單來說就是做web自動化測試框架,可測試不同的瀏覽器.

在這裡插入圖片描述

新興起的自動化測試軟體,更易使用,IDE是katalon studio。

  • 兩者的區別
  1. Katalon的用戶群體範圍更廣,用戶甚至不需要任何編程基礎,只需要知道自己想做什麼即可,而Selemium的用戶群體是開發或者測試人員
  2. Katalon安裝和使用都更簡單,只要下載軟體,然後點擊exe,登錄即可。Selenium需要先安裝jRE,selenium-server、selenium-java包,如果是在Google瀏覽器使用還要下載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導入測試。//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 //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. 測試片段、前置處理器、後置處理器、邏輯控制器(這些用的比較少,具體介紹可以查看官方文檔//jmeter.apache.org/usermanual/get-started.html)

如何創建一個http請求測試

安裝Java後,下載Jmeter,解壓,然後運行bin/jmeter.bat文件。可以看到:

jmeter介面概覽

具體過程:

測試簡單的http請求

總結,如何簡單使用測試

  1. katalon recoder(介面錄製和測試)

  2. jmeter(介面性能測試)

  3. postman (介面簡單測試和連續請求測試,較為簡單,本地使用介面調試和順便測試)

  自動化測試還有很多東西,這些內容只是冰山一角,之前想著把自動化測試的總體流程都說一下,然後學習之後發現涉及的東西太多,例如:完整的測試用例設計,瀏覽器驅動webdriver,持續集成等等。
短時間內容幾乎不可能學完,所以就以這些目前自己工作中能方便使用到測試工具進行了一下簡單講解。如果有說明得不對的地方,望體諒。

最後,測試用得好,程式碼bug少。

參考及資源

  1. 測試社區: //testerhome.com/

  2. //blog.csdn.net/xuecancan/article/details/79529155

  3. 軟體測試的藝術,Glenford J Myers [book]

  4. linux下ab壓力測試

  5. 壓測相關參數

    //www.cnblogs.com/a00ium/p/10462892.html

    //www.yuque.com/darry/skills/ef9kmx

微信公眾號圖片