《持續(xù)交付》 - 測試策略的實現(xiàn)

現(xiàn)在很多的項目團隊都只是依靠手工的驗收測試來驗收軟件是否滿足它的功能需求和非功能需求。他們也知道這樣會大大的影響項目的交付質(zhì)量和進度,但他們依舊會這么做,因為他們可能已經(jīng)嘗試過去寫測試,嘗試著搭建自動化測試的相關(guān)服務,但最終并沒能從中獲取到很大的好處而且浪費了大量的精力,所以他們寧愿去手動去測試,遇到 bug 了手動去排除并修復。

當然了,這并不是說寫測試不好,相反的,寫測試是非常重要的,但更重要的是我們必須要認識到相關(guān)的測試策略并正確的選用它,從而為自動的項目實現(xiàn)一套合適自身的部署流程線。測試策略的設計目的主要是識別和評估項目風險的優(yōu)先級,以決定采用哪些行動來緩解風險的一個過程。這也就意味著,寫一次測試并不是一勞永逸的,對于一些自動化測試,我們應還需要不斷的去維護測試以保證客戶需要的功能被正確的實現(xiàn),在開發(fā)功能之前我們就應該將測試寫好,一開始就將質(zhì)量內(nèi)嵌到自動化測試中,這樣我們才能從中獲取最大的好處。

一 測試的分類


為了確保交付高質(zhì)量的應用軟件, Brian Marick 對測試進行了相應的建模,他根據(jù)兩個維度對測試進行了分類:

  • 業(yè)務導向還是技術(shù)導向
  • 支持開發(fā)過程還是為了對項目進行評價
分類

** 1、業(yè)務導向且支持開發(fā)過程的測試**

對應的分類

這一象限的測試也叫功能測試或驗收測試,目的是為了驗收當前開發(fā)的功能需求是否被正確的完成,驗收測試也可以測試系統(tǒng)特性的各方面,比如功能、容量、易用性和可變性等。一般我們應該在開發(fā)一個功能前就把驗收測試寫好,并采取自動化的形式去驗收,提前寫驗收測試也可以很好的明確功能需求,通過這些測試我們可以知道我們要做哪些功能。

系統(tǒng)的驗收測試應該運行在類生產(chǎn)環(huán)境,自動化測試的一些特性:

  • 加快反饋的速度
  • 減少了測試人員的工作負荷
  • 讓測試人員可以集中精力去做探索性測試和一些必須手動測試的活動。
  • 驗收測試也是一組回歸測試
  • 寫出可讀的測試套件,這樣就可以從測試中生成需求說明文檔。這樣也就可以保證了文檔不會過時。

2、技術(shù)導向且支持開發(fā)過程的測試

對應的分類

這些自動化測試應該單獨由開發(fā)人員來創(chuàng)建和維護,這一象限的測試可以分為:

  • 單元測試:一般需要依賴測試替身來模擬數(shù)據(jù)。因為不需要使用數(shù)據(jù)庫、文件系統(tǒng)...,所以速度會很快,這也意味著會得到更快的反饋,單元測試也是回歸測試套件的主要部分。
  • 組件測試:用測試更大的功能集合,需要使用數(shù)據(jù)庫、文件系統(tǒng) ...,所以速度會相對較慢,組件測試也被稱為“集成測試”。
  • 部署測試:為了檢查部署過程是否正常,也就是程序是否被正確的安裝、配置。

3、業(yè)務導向且評價項目的測試

對應的分類

這類測試一般需要我們手工測試,目的是為了驗證實際交付給用戶的應用軟件是否符合其期望,包括需求規(guī)格說明是否滿足以及其正確性。
幾種測試的方案:

  • 演示:頻繁的向客戶演示新功能,以此快速的獲取反饋信息
  • 探索性測試:執(zhí)行測試時,測試人員因該積極的去發(fā)現(xiàn)隱藏的缺陷,并創(chuàng)建新的自動化測試集合去覆蓋
  • 易用性測試:驗證用戶是否能很容易的使用軟件完成工作(用戶體驗)
  • beta 測試:驗證用戶是否對隱藏的新功能感興趣,從而判斷該功能的價值

4、技術(shù)導向且評價項目的測試

對應的分類

非功能測試是指除了功能之外的系統(tǒng)及其它方面的質(zhì)量,比如:容量、可用性、 安全性等。對非功能性的測試也是非常重要的,因為這因素可能會導致很大的潛在風險。 當然非功能性測試所需要的環(huán)境也更加苛刻,它需要專業(yè)的人員搭建一些特殊的環(huán)境來能實現(xiàn),而且花費的時間也較長,所以非功能性測試的頻率會比較低,而且應該在開發(fā)的后期去進行測試。

二 測試替身


在自動化測試時測試替身扮演著一個非常重要的角色,比如在單元測試中通過模擬對象來代替系統(tǒng)的一部分,這樣就可以大大的提高測試的速度。
測試替身的分類:

  • 啞對象(dump object):指那些被傳遞但不被真正使用的對象,這些對象一般只是用于填充參數(shù)列表,只是起到一個占位的作用,沒有具體的含義。(如測試A類的run方法,需要在創(chuàng)建A類的實例時需要傳入B類實例,但run方法并沒有用到B類實)
  • 假對象(fake object):假對象相對于啞對象來說,要對耦合的組件有一些簡單的實現(xiàn),實現(xiàn)我們在測試中要用到的方法,指定期望的行為(如返回期望的值)。假對象適用于替換產(chǎn)品代碼中使用的全局對象,或者創(chuàng)建的類
  • 樁(stub):測試樁與假對象有點類似,也要實現(xiàn)與產(chǎn)品代碼耦合的組件,指定期望的行為。這里最大的不同是測試樁需要注入到產(chǎn)品代碼中,從而在測試產(chǎn)品代碼時替換組件,執(zhí)行樁的行為。使用測試樁不需要進行備份和還原。
  • spy:與測試樁類似,但是可以記錄樁使用的記錄,并進行驗證。
  • 模擬對象(mock):設定期望的行為,然后驗證期望的行為是否發(fā)生,從而達到測試產(chǎn)品代碼行為的目的。適用于驗證一些void的行為。

三 現(xiàn)實中的情況和對應策略


1、新項目

當我們著手開始一個項目的時候,這也是最容易開始做持續(xù)集成的時候,那么毫無疑問最重要的事情應該是先自動化驗收測試。我們需要

  • 選擇技術(shù)平臺和測試工具
  • 建立一個簡單的自動化構(gòu)建
  • 制定遵守 INVEST 原則(獨立的、可協(xié)商的、有價值的、可估計的、小的、可測試的)的用戶故事及其考慮其驗收條件

步驟:

  • 客戶、分析師和測試人員定義驗收條件
  • 測試人員和開發(fā)人員一起基于驗收條件實現(xiàn)驗收測試的自動化
  • 開發(fā)人員編碼來滿足驗收條件
  • 只要有自動化測試失敗,開發(fā)人員都應該將它定義為最高優(yōu)先級并修復它。

2、正在進行中的項目

對一個正在進行中的項目去做自動化測試相比項目一開始就寫測試面臨著更大的壓力。最好的自動化測試的方式就是選擇應用程序中那些最常見最重要的用例開始寫測試,讓這些測試盡可能覆蓋更多的選項,一般覆蓋的范圍都會寬于用戶故事級別的驗收測試。

3、遺留的系統(tǒng)

去測試那些你修改的代碼就可。前提是你已經(jīng)搭建好自動化構(gòu)建流程。

幾個概念

  • 可用性測試:讓用戶通過使用產(chǎn)品來評估產(chǎn)品的技術(shù)。
  • 探索性測試:在進行測試的時候同時探索開發(fā)更多類型的測試從而改善測試流程。
  • happy path:一個正確的執(zhí)行路徑
  • alternate path :多個可以相互替代的 path ,入口和過程可以不一樣,但是最終產(chǎn)生的用戶價值是一樣的
  • sad path :選擇一條執(zhí)行路徑產(chǎn)生的錯誤處理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容