客戶端穩定性測試

2021-09-21 19:21:24 字數 3090 閱讀 9503

客戶端穩定性測試

穩定性測試是在保證功能完整正確的前提下,必不可少的一項測試內容,通過對軟體穩定性的測試可以觀察在乙個執行週期內、一定的壓力條件下,軟體的出錯機率、效能劣化趨勢等。進而大大減少軟體上線後的崩潰卡死等現象,為軟體的逐步優化提供方向及驗證。

無論是伺服器端還是客戶端,對穩定性的測試無非是就是測試系統的長期穩定執行能力。在系統執行過程中,對系統施壓,觀察系統的各種效能指標,以及伺服器的指標。不同於伺服器端的穩定性測試的是,客戶端軟體是執行在單機環境下,所以不存在併發使用者數的概念,取而代之的是一些多程序長時間的操作,以及各種複雜的併發場景的組合。一款客戶端軟體,它的穩定性測試需求基本包括:

1、長時間執行及各種操作下,軟體的穩定性以及各種效能指標的劣化趨勢。

2、多程序或多執行緒執行時的穩定性。

3、不同作業系統,在不同宿主軟體下執行的穩定性。

穩定性測試實施

整個穩定性測試的包括三大部分:

1、場景的設計及實現

2、穩定性測試的執行

3、最後結果的校驗

場景設計

測試場景一般是指模擬平常的壓力,以及模擬實際中使用者的日常操作,如果包含資料庫,那麼

資料庫要存有一定的資料。一般來說客戶端產品的穩定性測試包括:

自動化指令碼

自動化測試是穩定性測試的基礎,對於使用標準控制項的客戶端軟體來說,可以使用市面上較為通用的自動化及效能測試軟體qtp或loadrunner,這些軟體對標準控制項支援較好,可以很方便快速的搭建起自動化測試的框架,為穩定性測試提供基礎。

但由於目前客戶端軟體的

介面開發為了更加快速,同時融入業界前沿的**技術,為使用者建立更加高效,專業的介面,大多數都採用了directui的技術,這種方式是直接在父視窗上繪圖。即子視窗不以視窗控制代碼的形式建立,只是邏輯上的視窗,繪製在父視窗之上。對於這種非標準控制項如果使用qtp等自動化測試工具就會顯得力不從心了。

基於以上面臨的問題,一種「開後門」的方法引起了我們的注意,「後門」是指

rd在程式中專門為了某些目的開設的訪問通道,通過這些隱秘不為人知的資料訪問通道,可以實現特殊的產品功能。對於自動化來說,我們可以通過這種方式將程式的一些介面資訊暴露,當然也不侷限於

ui的資訊,我們也可以將任意測試程式需要的資訊通過後門的方式暴露給我們自己的測試程式即可以實現自動化相關的需求。

這個想法在後期的實踐中逐步優化,最終形成了一套基於proxy架構的自動化解決方案。當被測程式啟動時,載入proxy,並將**引擎的指標(全域性變數)傳入proxy中,自動化指令碼通過與proxy通訊,實時獲取ui的各種資訊該框架包含兩大部分:

1、一部分是以pywinauto(pywinauto是一些用於自動化測試windows標準圖形介面的模組的集合。它可以允許你很容易的傳送滑鼠、鍵盤動作給windows的對話方塊和控制項)為操作基礎,pyunittest為case組織框架的python指令碼部分,這部分包含了關鍵字的封裝,case的實現。

2、另一部分是植入到被測程式內部的proxy,當被測程式啟動時,載入proxy,並將**引擎的指標(單例)傳入proxy中,自動化指令碼通過與proxy通訊,實時獲取ui的各種資訊,從而達到自動化的操作以及驗證的目的。

整個自動化框架圖如下:

執行

穩定性測試不同於功能測試的自動化,它屬於一種概率性的測試,需要長期執行過後才能得出最後的測試結論,即使穩定性測試通過,也不能保證系統實際執行的時候不出問題。所以要盡可能的提高測試的可靠性,我們可以通過多次測試,延長測試時間,增大測試壓力來提高測試的可靠性。

當穩定性場景存在多組時,為了保證執行的及時性與可靠性,同時也為了滿足測試環境的豐富性,穩定性測試的執行需要多台機器才行。如果條件允許,可以使用不同環境及配置的物理機進行測試,也可以使用虛擬機器,構建豐富的環境中心來滿足穩定性測試的需求。

當存在多個執行環境和多組case時,為了保證測試場景組合的多樣性,各組case要階段性的迴圈在每個執行環境中執行,因此需要乙個清晰明確的執行計畫和記錄:

結果

從穩定性的測試目的中可以得出在對穩定性結果的判斷需要從以下幾個方面進行:

1、判斷是否崩潰

a) 對於能夠被崩潰上報程序捕獲的的崩潰比較好辦,可以通過判斷是否有崩潰上報程序來進行判斷。

b) 在測試機上安裝任意的debugger工具(例如windbg)就可以檢測各種型別的崩潰情況(只要有崩潰就會觸發debugger的呼叫,檢測是否出現debugger程序就ok)

c) 對於那種執行在宿主程式中的外掛程式,單獨外掛程式的崩潰有時不會導致宿主程式的整個崩潰,所以對外掛程式崩潰的檢測需要記錄執行正常時的pid或tid,發現其消失就判斷為崩潰,因為外掛程式執行在宿主程式中不是乙個程序就是乙個執行緒。

2、判斷是否假死

a) 對於單程序程式,只要主視窗發訊息即可,找對主視窗是關鍵,通過列舉某個程序的全部視窗控制代碼,找parent為null,visible 為true,不是托盤程式的那個視窗控制代碼。

b) 強制主視窗重繪(這個重繪方式各產品可能不一樣,有的發訊息就可以,有的需要移動位置),然後截圖,白色的就是假死(判斷白色的已有現成的**)

3、判斷是否存在效能劣化的趨勢

a) 這點也屬於效能測試中資源占用情況的測試,可以再穩定性測試的同時使用效能檢測工具進行檢測。

待改進點

1、自動化判斷,定位異常資訊。目前

一些偶現的卡死和崩潰無法捕獲到堆疊資訊,對定位意義的不大,需要在崩潰或卡死時保留住現場,不能連續的執行後續的case。

2、操作步驟及資料選取的隨機性。可以考慮引入fuzzy以及解析使用者日誌的方式增加操作步驟及測試資料選取的隨機性。

3、測試case在各個執行環境中迴圈切換的自動化。目前這種迴圈還是靠手工保證,後續可以考慮從在每台測試機器上動態呼叫測試指令碼,代替手工的切換及執行。

4、測試指令碼的穩定性:穩定性的測試不僅是對被測程式穩定性的驗證,同時也考驗我們自動化測試指令碼執行的是否穩定,而且在長時間的執行過程中可能會出現各種阻礙指令碼執行的但卻是正常的情況,所以需要增加各種判斷和輪詢的機制,另外為了保證場景的多樣性都需要我們的指令碼更加通用和周密,一不小心,被測程式還沒掛呢,我們自己先停了……對於指令碼的穩定性一直在測試的過程中不斷完善,積累經驗。

【本文**

測試網路穩定性

iperf u c 10.13.24.179 b 900m i 1 w 1m t 60 iperf s w 130k iperf 目錄概覽 iperf的引數 例項功能介紹 iperf 是乙個網路效能測試工具。iperf可以測試最大tcp和udp頻寬效能。iperf具有多種引數和udp特性,可以根據需...

系統穩定性測試

簡介 利爾達自主lorawan系統包含lorawan節點 閘道器 ns伺服器三個部分,本次測試針對感測器類終端,定時上報的class a典型應用,驗證系統的工作穩定性。受測產品 節點 lsd4wn 2l817m90 閘道器 lsd4wn 2332xgw1 網路伺服器 lierda 3.0 unico...

PC端穩定性測試探索

原來網易部落格寫的文章 在pc端軟體測試中,穩定性測試是必不可少的一項測試內容。一般在功能測試已經測試完成,缺陷完全修復完成以後進行。穩定性測試是在保證客戶端功能完整正確的前提下,通過對軟體穩定性的測試可以觀察在乙個執行週期內 一定的壓力條件下,軟體的出錯機率 效能劣化趨勢等。進而大大減少軟體上線後...