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

軟件測試,就是一個過程或一系列過程,用來肯定計算機代碼完成了其應該完成的功能不執行其不應有的操做。php

簡單說就是找bug的過程。html

測試分類

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

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

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

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

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

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

(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包,若是是在谷歌瀏覽器使用還要下載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)

如何建立一個http請求測試

安裝Java後,下載Jmeter,解壓,而後運行bin/jmeter.bat文件。能夠看到:

jmeter界面概覽

具體過程:

測試簡單的http請求

總結,如何簡單使用測試

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

  2. jmeter(接口性能測試)

  3. postman (接口簡單測試和連續請求測試,較爲簡單,本地使用接口調試和順便測試)

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

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

參考及資源

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

  2. http://www.javashuo.com/article/p-kwxgynlw-no.html

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

  4. linux下ab壓力測試

  5. 壓測相關參數

    http://www.javashuo.com/article/p-tpnegapt-vd.html

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

微信公衆號圖片

相關文章
相關標籤/搜索