領導給你乙個專案,如何開展效能測試工作

2022-07-08 00:30:40 字數 4571 閱讀 2540

本文章出自【碼同學軟體測試】

matongxue_8

碼同學抖音號:小碼哥聊軟體測試

第一節 測試的一般步驟

效能測試的工作是基於系統功能已經完備或者已經趨於完備之上的,在功能還不夠完備的情況下沒有多大的意義(後期功能完善上會對系統的效能有影響,過早進入效能測試會出現測試結果不準確、浪費測試資源);因此,效能測試首先是基於功能測試的,你必須了解其功能實現才能開展效能測試。

我們還是來逐步分解說明:

乙個被測系統來了,我們需要分三塊來分析

入口:需要怎麼傳送請求,施壓方應該施加多大的壓力,用什麼方法施壓;

被測系統:系統怎麼應對單個請求,系統業務流程是怎麼樣的,系統網元節點、資料流向等,整體效能需求有沒有,需要考察哪些指標,怎麼監控;

出口:接收資料有哪些,怎麼獲取和比對;

ok,是不是感覺就像功能測試差不了多少?是的,就是先分析單個使用者的功能流程以及系統的資料流向(包括後台的資料流向)結構圖,然後再考慮大量的使用者操作。

那麼一般系統的效能測試步驟大體如下:

1) 確認測試目標

2) 分析被測系統業務需求

3) 分析被測系統的系統結構

4) 分析被測系統的效能測試點

5) 設計測試方案、檢測方案和測試案例

6) 選擇測試工具

7) 測試開發

8) 測試執行

9) 測試結果分析

10) 測試調優、測試驗證、測試分析

11) 測試報告

第二節 測試準備

測試準備工作越充分後期的測試執行越順利,一般測試準備工作如下:

1) 確認測試目標

2) 分析被測系統的業務

3) 分析被測系統的結構

4) 分析被測系統可能產生效能瓶頸的節點

5) 設計測試方案、檢測方案和測試方案

我們分步來研究一下:

確認測試目標

拿到乙個任何任務首先都要確認任務的目標是什麼。如果不知道目標,你所做的任何努力得到的結果有可能都不是最終所需要的結果。

效能測試也一樣,它首先是有乙個目標的。無論是你是隨機測試想看看系統的當前效能情況,還是奔著對系統進行優化而去的,還是檢驗一下系統的效能是否滿足需求,等等,這些都是你再做事情之前的乙個目標。你後面所做的一切事情,從分析到方案和案例設計,到測試執行監控,再到最後的測試分析和報告,都是要圍繞這個目標展開的。

所以,首要的任務就是確認測試的目標要求,需要達到怎樣的乙個測試目的和目標。

有一些,測試任務沒有明確的目標或者要求,並不說明它沒有目的和目標,這就需要我們進行溝通和分析了。

溝通就是要和專案組達成一致的目的要求;分析,分析需求,分析系統,最後也是要明確專案或者系統測試任務的目的要求。

分析被測系統的業務

------猜想面試官是想面試者回答,正態分佈、二八原理等基本的測試原則應用。

我當時沒有回答任何與正態分佈、二八原理相關的東西;記得當時面試官對我的回答好像是「蔑視」的笑了笑;可能是覺著「連基本的正態分佈、二八原理都不知道,還搞效能測試?」。其實,效能測試並不是想象的那樣簡單,並不是乙個簡單的原理的應用就行的,如果這麼容易,那豈不是誰都能搞。

效能測試的基礎是基於系統的業務功能基本趨於穩定,首要的任務就是效能在系統滿足業務功能需求上展開,因此我們必須要分析系統的業務。不管是普通的**也好還是比較專業的系統也好,它都是有業務功能需求的,所有的效能測試都要基於這些功能才能進行,脫離了業務功能的效能測試沒有意義。效能測試所以首要的任務就是分析系統的業務功能,分析系統業務上的效能限制,也就是業務需求。

那麼怎麼分析系統的業務需求呢?

(1) 如果有使用者需求規格說明,首要的任務就是閱讀和理解分析使用者需求規格說明;

(2) 如果沒有使用者需求規格說明,那麼就需要分析系統功能,提煉出系統的業務需求。如果可能,專案組比較熟悉的人講述一遍是最好的了。

(3) 最後無論哪一種,最好的方法就是按照自己的理解畫出系統的業務流程或者系統的功能結構圖,拿到專案組進行確認。一定要進行確認,和整個專案組達成一致的認同。

有人會說,我們自由測試沒有專案組可確認的時候怎麼辦?

還是一樣,需要從分析入手。如果不分析,你就不會知道系統的功能資料流向,請求的資料構成,系統的網元結構,以及系統可能出現的瓶頸在哪乙個節點,你又怎麼進行優化呢?

當然面對一種全新的知識領域的時候,可能需要我們多積累經驗,更多的進行分析;我們可能需要結合實踐,多次實際執行系統或者執行測試,在測試中不斷的進行優化和完善我們的分析過程、分析結果、測試方案、測試開發甚至是測試執行等等。

分析被測系統的業務,有時候不是一蹴而就,需要我們進行多次反覆的分析、確認和再分析、再確認,直到把系統弄明白,甚至有可能在測試執行的最後階段你還需要再次進行分析和確認,然後重新規劃測試。

免費領取碼同學軟體測試課程筆記+超多學習資料

+matongxue_8

免費領取碼同學軟體測試課程筆記+超多學習資料

+matongxue_8

分析被測系統的結構

系統的結構和系統的業務一樣重要,不知道系統的網元結構可能就沒有辦法進行監控,就沒有辦法知道瓶頸在哪個節點,就不能進行優化。

分析系統的結構,最好的方法就是專案組提供系統的部署和構成圖;如果專案組不能提供或者沒有專案組,那就需要用tcpdump等抓包工具,分析資料流向。

tcpdump的使用:

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第乙個引數的位置,用來過濾資料報的型別

(2)-i eth1 : 只抓經過介面eth1的包

(3)-t : 不顯示時間戳

(4)-s 0 : 抓取資料報時預設抓取長度為68位元組。加上-s 0 後可以抓到完整的資料報

(5)-c 100 : 只抓取100個資料報

(6)dst port ! 22 : 不抓取目標埠是22的資料報

(7)src net 192.168.1.0/24 : 資料報的源網路位址為192.168.1.0/24

(8)-w ./target.cap : 儲存成cap檔案,方便用ethereal(即wireshark)分析

從第乙個節點分析流向到哪,確定第二層的節點;

然後從第二層每個節點分析第三層節點,逐層分析,完善系統的資料流向的所有機構層次和節點;

然後再弄明白每個節點部署的應用程式或者程序佇列;

對每乙個節點的應用程式或者程序佇列進行測試監控;

最後才能得出哪些應用或者程序佇列需要進行優化。

弄明白系統的節點構成之外,還需要弄明白各個節點之間的通訊協議和資料格式,後面的測試工具選擇和測試資料準備以及測試指令碼開發就需要你明白這些。

這一切的基礎就是要分析和弄明白系統的所有節點,也就是要分析清楚系統的結構。

分析系統可能的效能瓶頸

分析系統的業務需求和系統的結構組成,同時預判系統可能存在的效能瓶頸,這是分析中的乙個目標;得到預判的效能瓶頸後我們後面需要在監控的時候多注意一下這些節點。

當然有一些常見的可能會是系統瓶頸的節點我們需要注意:

(1) 登入,一般系統登入要進行多種校驗,可能資料互動比較頻繁;

(2) 下單,搶單、搶紅包這個時候會有一定量的併發需求;

(3) 大資料的查詢、統計和報表分析,會對系統產生壓力;

(5) 訊息比較集中的系統功能節點,會對系統產生壓力;

(6) 一些特殊的業務需求會對系統產生壓力;

常見的瓶頸:

(1) 資料庫的瓶頸一般在磁碟iops過高造成程序阻塞

(2) 系統程序數過多一般會消耗系統的記憶體空間

(3) 訊息佇列和快取服務,開啟持久化後會需要考察磁碟iops,不開啟持久化則需要考察記憶體占用

(4) 頻繁的管道開闢和銷毀會導致cpu占用較高

(5) 有部分程式結構上不能利用多個cpu

等等!!!

在分析業務和系統結構的過程中,我們就需要考慮這個業務點或者結構點會不會有大量的資料訪問,會不會產生壓力,我們的設計會不會產生效能瓶頸。

方案和案例設計

測試方案的以及最後測試方案文件的形成,實際就是上面所有分析工作的總結。

你寫測試方案的過程就是明確測試目的目標、分析業務需求、系統結構以及評估測試方法、測試安排、測試風險等等的過程總結。而這些全部**於你在測試執行之前的分析,有時候可能你在測試過程中還需要做出一些分析和調整。

測試方案包含了這些你分析和整理的各個方面。

乙個好的測試方案包含的內容:測試目的目標、內容(可能包含業務效能、可靠性、穩定性等等),業務需求目標,系統業務構成,系統節點構成,測試方法流程,需要監控的指標要求和節點等等。

測試案例,實際上一般需要包含在測試方案中;測試案例,實際上就是普通的業務操作流程,用測試工具或者其他測試手段來模擬大的資料量業務操作,並對系統的各個節點進行監控,獲取監控資料。預期的監控資料和實際監控資料的對比,滿足要求就是預期要求,實際對比結果就是測試結果。

end免費領取碼同學軟體測試課程筆記+超多學習資料+☞

可加:matongxue_8

如何開展乙個機器視覺專案?

當接觸乙個全新的機器視覺專案時,基本流程為 確定客戶需求 方案設計 軟體開發 現場除錯 文件交接。在實際專案中,各個流程可能互相耦合,不過整體流程是基本明確的,整理後如下圖。確定客戶需求 專案伊始,需要準確 詳細地了解客戶需求,這個過程需要多次現場考察 反覆與客戶溝通,才能落實客戶需求。主要確定專案...

給你乙個web端專案你如何展開測試?

1.測試所有鏈結是否按指示的那樣確實鏈結到了該鏈結的頁面 2.測試所鏈結的頁面是否存在 4.使用者填寫的出生日期與職業是否恰當 5.填寫的所屬省份與所在城市是否匹配 6.只能接受某些字元,測試時可以跳過這些字元,看系統是否會報錯。7.檢查cookies是否能正常工作 8.cookies是否可以儲存 ...

給你乙個web端專案你如何展開測試

1.測試所有鏈結是否按指示的那樣確實鏈結到了該鏈結的頁面 2.測試所鏈結的頁面是否存在 3.證web應用系統上沒有孤立的頁面,所謂孤立頁面是指沒有鏈結指向該頁面,只有知道正確的url位址才能訪問 4.使用者填寫的出生日期與職業是否恰當 5.填寫的所屬省份與所在城市是否匹配 6.只能接受某些字元,測試...