穩定性測驗是自動化測驗領域最為核心的內容之一,穩定性測驗設計應該考慮哪些方面?如何在有限的樣本上最大化測驗產出?筆者結合自動化的一些經驗和理解,總結了穩定性測驗設計最核心的五個要素:壓力、隨機、并發、互動以及時間,何解, 一起看一下,

壓力
英文中,穩定性叫做Stability;而壓力稱為Stress,在測驗領域,很多人將穩定性測驗等價為壓力測驗,其實不然,穩定性的一個最重要實作途徑是通過壓力的方式,但是壓力不是測驗穩定性的唯一方式,壓力的內涵是重復地做同樣的事情,通過長時間、多輪次的執行,以期達到讓功能break或者系統crash的目標,在現實中,這往往是一個比較有效、可行的方式,
但是,壓力測驗的一個最主要問題是:把一個簡單功能重復1000遍和把1000個簡單功能輪流執行一遍的效果可能大不相同,前者不一定能夠發現問題,但是后者卻很有可能發現問題,為什么呢?這就涉及到到下面幾個要素,
隨機
在穩定性測驗中,如果按部就班地一條條case執行下來,也許并不會有太好的產出,因為你的事件序列是固定的、可預測的,沒有太多“意外”,
設想一下,在A地和B地之間有若干條路徑,但是你每次都走同一條路,那么你可能對這條路上的肯洼不平了如指掌,但是對于其他路徑上的情況你卻一無所知,
想要探明A到B之間所有的坑,理想的情況是,你可以遍歷A和B之間的每一條通路,但是現實情況是,你并不知道到底有多少條路徑的存在,而且要完全遍歷它們也十分困難,因此,增加一些隨機性就很有必要,隨機能夠讓你在有限的時間和空間內構造出盡可能多的組合,從而創造更多的“意外”發現,
并發
真實世界往往是復雜多變的,比如你在刷微信的時候可能會進來一個電話,你在接聽電話的時候又可能發生了網路變化,等等,這類并發大多是不可能預先知道的,可稱之為“中斷”,它是測驗物件和周圍環境之間的并發;但在真實用戶場景中,還存在大量自然而然的并發場景,比如邊聽歌便上網,邊打游戲邊接聽電話等等,這是測驗物件內部不同功能模塊之間的并發,
并發為什么有助于發現穩定性的問題?首先因為它是真實世界中大量存在的場景;其次,因為它涉及到系統資源的爭搶和協同,所以系統內部狀態較單一場景會復雜許多,從而也更加能夠觸發問題,
并發的場景數目可以是兩個或者更多,越多的并發其狀態就會越復雜,
互動
互動和并發還不完全一樣,并發一般是多個獨立的功能或者狀態同時運行,但是互動則是指完成同一個操作涉及到多個子系統之間的協同作業,
比如,你打開支付寶刷臉,那么你就要涉及到相機的呼叫;你把手機通過WIFI投射到電視上打游戲,那么就涉及到GPU、WIFI、Display等多個部分的協同與互動,在設計自動化時,考慮子系統互動,將能夠極大提升測驗產出,
時間
一般來說,在考慮了以上四個要素(壓力、隨機、并發、互動)之后,基本就能夠發現很多穩定性的問題了,如果上面幾個都注意到了,卻還是無法發現問題,那么可能就是你執行的時間不夠長,
時間是一個很重要的因素,卻也是最容易被忽略的因素,隨著時間的增長,設備的狀態也會發生更多的變化,比如存盤空間越來越小,系統越來越慢,在這些情況下,設備也更加容易出現問題,
頻繁更改測驗執行策略的唯一后果就是,每一種策略的執行時間都被壓縮了,都沒有被充分執行,所以,做好前四點,然后靜待花開就好,
綜上,一個好的穩定性測驗,必須要充分考慮這五個要素的影響:適當的壓力 + 充分的隨機性 + 針對性的并發和互動 + 足夠的時長,那么就能夠較好地覆寫產品在穩定性方面的質量需求,

另外,歡迎加入軟體測驗技術交流群 313782132 ~進群可領取免費軟體測驗資料以及群內測驗大牛解惑!
測驗工程師職業發展路線圖
功能測驗 — 介面測驗 — 自動化測驗 — 測驗開發 — 測驗架構師
加油吧,測驗人!如果你需要提升規劃,那就行動吧,在路上總比在起點觀望的要好,事必有法,然后有成,
資源不錯就給個推薦吧~
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/224049.html
標籤:其他
