軟件可測試性(DFT)的定義及典型案例解析

? ? ?為了保證后續(xù)在功能設計階段可以提高產品整體的可測試性举瑰,已達到更好的提升產品的易用性类腮、可維護性以及可測試性等方面的后期效率和降低成本的目標鉴裹,故針對產品的可測試性方面進行一些常規(guī)化的梳理卿吐,同時針對一些項目中常見的可測試性方面的案例進行了對應的分析把夸,便于大家在實踐中能夠更好的實踐和提高在可測試性方面的意識而线。

可測試性的定義

軟件測試中的可測性一般是指對系統(tǒng)的可控性、可觀測性進行的評估恋日,借以反映系統(tǒng)設計、實現(xiàn)對測試的友好程度和相應的測試成本嘹狞。

可測性在測試階段會對系統(tǒng)的測試成本及后期產品使用過程中的易用性岂膳、維護成本等會產生重大影響。如何提高可測性成為軟件生命周期特別是前期(設計階段磅网、coding階段)重要的一環(huán)谈截。

可測試性的常用指標

可測試性的最佳切入時間

? ? 新項目的設計階段;

? ? 已有項目新功能涧偷、新策略的提測階段簸喂。

可測試性的常用分析維度

一般來說,我們可以從以下幾個方面來評價軟件的整體可測試性:

? ?可觀測性

? ?可控制性

? ?可追蹤性

? ?可理解性

各部分指標的具體分析

可觀察(能否容易的觀察程序的行為燎潮、輸入和輸出)

任何一項操作或輸入都應該有預期的喻鳄、明確的響應或輸出,不管是正確的還是錯誤的甚至是異常的确封,這樣軟件才是可測的除呵;

當前、過去的系統(tǒng)狀態(tài)和變量應可見或可查詢爪喘,“可見”是指運行時可見颜曾、維護時可見或者調試時可見,“不可見”就“不可發(fā)現(xiàn)”秉剑,可測試性就低泛豪;

所有影響輸出的因素可見;

可自動檢測、報告內部錯誤诡曙;

錯誤輸出易于識別吕粹,無論通過日志自動分析還是界面高亮顯示的方式,要能有助于發(fā)現(xiàn)岗仑;

增加輸出參數(shù)匹耕、減少變量重用,包括打印內部信息荠雕、將局部變量作為輸出稳其、增加斷言、增加局部變量等炸卑。

可控制(能否容易的控制程序的行為既鞠、輸入和輸出)

提供適當?shù)氖侄危谕饨缰苯踊蜷g接的控制系統(tǒng)的狀態(tài)及變量盖文,例如對于某些全局類型的變量嘱蛋、特殊結構等,可以進行分類并封裝到接口中五续;

采用模塊化設計洒敏,各模塊支持獨立測試,對于每個相對獨立的模塊設計專用的測試驅動和測試樁疙驾,模塊異常時不影響其他模塊的測試(控制測試范圍凶伙,就能更快地分解、定位問題)它碎;

業(yè)務流程和場景易于分解函荣,可以針對單獨業(yè)務流程進行測試;

提供對外接口扳肛,便于構造測試環(huán)境模擬外部系統(tǒng)傻挂;(如單獨針對測試的一些配置/開關等)

定時觸發(fā)、固定大小/空間觸發(fā)等

提供適當?shù)氖侄瓮谙ⅲ梢源蜷_或關閉調試輸出或打印函數(shù)金拒。

測試人員、維護人員能夠控制程序的流程旋讹、場景殖蚕、輸入和輸出,才能有針對性的執(zhí)行各種用例或實驗沉迹。通過接口開放流程控制睦疫、參數(shù)讀寫功能,也是支持實現(xiàn)自動化測試的基礎鞭呕。

可追蹤(能否容易的跟蹤程序的操作蛤育、狀態(tài)、性能、錯誤瓦糕、GUI事件以及通信情況)

跟蹤記錄關鍵函數(shù)的持續(xù)時間底洗、外部庫調用;

跟蹤記錄關鍵流程的函數(shù)執(zhí)行過程咕娄、輸入輸出參數(shù)亥揖;

嚴格遵從日志規(guī)范,正確設置日志級別圣勒,輸出日志格式標準統(tǒng)一的费变,便于自動查詢和分析;

定義日志類別圣贸,區(qū)分安全類挚歧、業(yè)務類、性能類日志吁峻,便于問題分析滑负;

約定不同類別、不同級別日志的作用及意義用含;

日志文件至少保存 15 天矮慕,以便對以“周”為頻次發(fā)生的異常分析。

追蹤的目的是可見耕餐。日志是一種維護性可見的方式凡傅;運行時以及調試時可見,可以通過專門的追蹤回顯代碼或者各種追蹤工具軟件實現(xiàn)肠缔,這兒就不詳細說了。

可理解(是否提供了足夠的信息哼转,易于獲取明未、易于理解、易于使用)

遵循行業(yè)的標準及規(guī)范壹蔓;

提供用戶文檔(使用手冊等)趟妥、工程師文檔(設計文檔等)、程序資源(軟件源代碼等)以及質量信息(測試報告等)佣蓉;

文檔披摄、接口、流程勇凭、代碼疚膊、注釋、提示信息易于理解虾标。

待測模塊是否可以/易于自動化測試

針對自動化測試關鍵環(huán)節(jié)的一些接口寓盗、權限設計等

具體的可測試性典型案例

可控制性

案例1(文件控制)

當某文件存在的時候,該模塊自動退出;

當某pid.lock文件存在時傀蚌,該模塊不能啟動基显,即使啟動也退出。

上面的狀態(tài)改變都是由一個外部的文件控制善炫,擁有可控性撩幽。

案例2(參數(shù)/配置控制)

nvs云主機的單節(jié)點的disable特性,可通過配置disable的屬性控制節(jié)點是否外部可見/可用

上面的狀態(tài)由配置/參數(shù)控制箩艺,擁有可控性

案例3:nlb網關

nlb的網關部分窜醉,目前不具有disable的特性,故該部分網關新增時舅桩,實際上有一定的風險酱虎,如果該網關有問題的話,可能業(yè)務就會直接受損了

上面的狀態(tài)擂涛,由于nlb網關沒有針對節(jié)點外部使用的可控性读串,導致無法控制新增節(jié)點階段的網關從上線到驗證ok階段的外部使用控制,所以缺少從部分來看撒妈,不具有可控性

可觀測性

案例1

老云neutron實現(xiàn)中句惯,svlan的擴容網段功能克婶,因創(chuàng)建ip部分無法指定具體的vlan網段,故新增的網段從測試層面,是無法保證新建的ip會創(chuàng)建在新增的網段中的捧挺,所以該部分從可測試性角度來說,是有一定的不足的(目前通過bridge檢查以及dhcp namespace層面的互通性檢查等方式來完成覆蓋)

案例2

zk與數(shù)據(jù)庫之間的數(shù)據(jù)一致性岛抄,前期該部分沒有單獨的接口進行檢測判斷數(shù)據(jù)庫和zk中的數(shù)據(jù)是否一致璃诀,所以對測試和運維來說,進行某次操作以后谷暮,就很難觀測到對應的一致性情況是否完好蒿往,在目前提供了該部分的接口以后,該部分的可觀測性就有了很好的保障

案例3

為了保證存儲的數(shù)據(jù)高可用湿弦,分布式系統(tǒng)會采取多機存儲副本方法瓤漏。即一個數(shù)據(jù)被N(>=2)個機器以一定的算法存儲相同的數(shù)據(jù)副本。這個時候經常會遇到的問題:

機器間的數(shù)據(jù)由于數(shù)據(jù)復制順序的不同颊埃,會有數(shù)據(jù)差異蔬充。a、b班利、c三臺機器饥漫,a、b機器可能已完成一次數(shù)據(jù)的更新到最新數(shù)據(jù)版本data1肥败,c還處于老版本data0.

由于版本差異趾浅,內部必須維護副本revision的版本號以進行數(shù)據(jù)同步和異常處理愕提。

這種情況, 好的設計原則上要保證多機副本的必要狀態(tài)信息被外部獲取皿哨。

數(shù)據(jù)的副本分布信息浅侨、副本的revision版本號等需要提供接口獲得

由于機器宕機造成的副本分布變化要能夠及時反映和更新。(比如帶一定間隔周期的更新)

只有在這種必要信息被獲取的情況下证膨,測試人員才能更好的掌握系統(tǒng)狀態(tài)并根據(jù)系統(tǒng)狀態(tài)進行清晰的測試結果預期如输。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市央勒,隨后出現(xiàn)的幾起案子不见,更是在濱河造成了極大的恐慌,老刑警劉巖崔步,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稳吮,死亡現(xiàn)場離奇詭異,居然都是意外死亡井濒,警方通過查閱死者的電腦和手機灶似,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑞你,“玉大人酪惭,你說我怎么就攤上這事≌呒祝” “怎么了春感?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長虏缸。 經常有香客問我鲫懒,道長,這世上最難降的妖魔是什么刽辙? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任刀疙,我火速辦了婚禮,結果婚禮上扫倡,老公的妹妹穿的比我還像新娘。我一直安慰自己竟纳,他們只是感情好撵溃,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锥累,像睡著了一般缘挑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桶略,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天语淘,我揣著相機與錄音诲宇,去河邊找鬼。 笑死惶翻,一個胖子當著我的面吹牛姑蓝,可吹牛的內容都是我干的。 我是一名探鬼主播吕粗,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼纺荧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了颅筋?” 一聲冷哼從身側響起宙暇,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎议泵,沒想到半個月后占贫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡先口,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年型奥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片池充。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡桩引,死狀恐怖,靈堂內的尸體忽然破棺而出收夸,到底是詐尸還是另有隱情坑匠,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布卧惜,位于F島的核電站厘灼,受9級特大地震影響,放射性物質發(fā)生泄漏咽瓷。R本人自食惡果不足惜设凹,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茅姜。 院中可真熱鬧闪朱,春花似錦、人聲如沸钻洒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽素标。三九已至称诗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間头遭,已是汗流浹背寓免。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工癣诱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袜香。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓撕予,卻偏偏與公主長得像,于是被迫代替她去往敵國和親困鸥。 傳聞我的和親對象是個殘疾皇子嗅蔬,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容