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

現(xiàn)在很多的項(xiàng)目團(tuán)隊(duì)都只是依靠手工的驗(yàn)收測(cè)試來(lái)驗(yàn)收軟件是否滿(mǎn)足它的功能需求和非功能需求挤悉。他們也知道這樣會(huì)大大的影響項(xiàng)目的交付質(zhì)量和進(jìn)度,但他們依舊會(huì)這么做,因?yàn)樗麄兛赡芤呀?jīng)嘗試過(guò)去寫(xiě)測(cè)試,嘗試著搭建自動(dòng)化測(cè)試的相關(guān)服務(wù)乳丰,但最終并沒(méi)能從中獲取到很大的好處而且浪費(fèi)了大量的精力,所以他們寧愿去手動(dòng)去測(cè)試内贮,遇到 bug 了手動(dòng)去排除并修復(fù)产园。

當(dāng)然了,這并不是說(shuō)寫(xiě)測(cè)試不好夜郁,相反的什燕,寫(xiě)測(cè)試是非常重要的,但更重要的是我們必須要認(rèn)識(shí)到相關(guān)的測(cè)試策略并正確的選用它竞端,從而為自動(dòng)的項(xiàng)目實(shí)現(xiàn)一套合適自身的部署流程線秋冰。測(cè)試策略的設(shè)計(jì)目的主要是識(shí)別和評(píng)估項(xiàng)目風(fēng)險(xiǎn)的優(yōu)先級(jí),以決定采用哪些行動(dòng)來(lái)緩解風(fēng)險(xiǎn)的一個(gè)過(guò)程婶熬。這也就意味著,寫(xiě)一次測(cè)試并不是一勞永逸的埃撵,對(duì)于一些自動(dòng)化測(cè)試赵颅,我們應(yīng)還需要不斷的去維護(hù)測(cè)試以保證客戶(hù)需要的功能被正確的實(shí)現(xiàn),在開(kāi)發(fā)功能之前我們就應(yīng)該將測(cè)試寫(xiě)好暂刘,一開(kāi)始就將質(zhì)量?jī)?nèi)嵌到自動(dòng)化測(cè)試中饺谬,這樣我們才能從中獲取最大的好處。

一 測(cè)試的分類(lèi)


為了確保交付高質(zhì)量的應(yīng)用軟件谣拣, Brian Marick 對(duì)測(cè)試進(jìn)行了相應(yīng)的建模募寨,他根據(jù)兩個(gè)維度對(duì)測(cè)試進(jìn)行了分類(lèi):

  • 業(yè)務(wù)導(dǎo)向還是技術(shù)導(dǎo)向
  • 支持開(kāi)發(fā)過(guò)程還是為了對(duì)項(xiàng)目進(jìn)行評(píng)價(jià)
分類(lèi)

** 1、業(yè)務(wù)導(dǎo)向且支持開(kāi)發(fā)過(guò)程的測(cè)試**

對(duì)應(yīng)的分類(lèi)

這一象限的測(cè)試也叫功能測(cè)試或驗(yàn)收測(cè)試森缠,目的是為了驗(yàn)收當(dāng)前開(kāi)發(fā)的功能需求是否被正確的完成拔鹰,驗(yàn)收測(cè)試也可以測(cè)試系統(tǒng)特性的各方面,比如功能贵涵、容量列肢、易用性和可變性等。一般我們應(yīng)該在開(kāi)發(fā)一個(gè)功能前就把驗(yàn)收測(cè)試寫(xiě)好宾茂,并采取自動(dòng)化的形式去驗(yàn)收瓷马,提前寫(xiě)驗(yàn)收測(cè)試也可以很好的明確功能需求,通過(guò)這些測(cè)試我們可以知道我們要做哪些功能跨晴。

系統(tǒng)的驗(yàn)收測(cè)試應(yīng)該運(yùn)行在類(lèi)生產(chǎn)環(huán)境欧聘,自動(dòng)化測(cè)試的一些特性:

  • 加快反饋的速度
  • 減少了測(cè)試人員的工作負(fù)荷
  • 讓測(cè)試人員可以集中精力去做探索性測(cè)試和一些必須手動(dòng)測(cè)試的活動(dòng)。
  • 驗(yàn)收測(cè)試也是一組回歸測(cè)試
  • 寫(xiě)出可讀的測(cè)試套件端盆,這樣就可以從測(cè)試中生成需求說(shuō)明文檔怀骤。這樣也就可以保證了文檔不會(huì)過(guò)時(shí)费封。

2、技術(shù)導(dǎo)向且支持開(kāi)發(fā)過(guò)程的測(cè)試

對(duì)應(yīng)的分類(lèi)

這些自動(dòng)化測(cè)試應(yīng)該單獨(dú)由開(kāi)發(fā)人員來(lái)創(chuàng)建和維護(hù)晒喷,這一象限的測(cè)試可以分為:

  • 單元測(cè)試:一般需要依賴(lài)測(cè)試替身來(lái)模擬數(shù)據(jù)孝偎。因?yàn)椴恍枰褂脭?shù)據(jù)庫(kù)、文件系統(tǒng)...凉敲,所以速度會(huì)很快衣盾,這也意味著會(huì)得到更快的反饋,單元測(cè)試也是回歸測(cè)試套件的主要部分爷抓。
  • 組件測(cè)試:用測(cè)試更大的功能集合势决,需要使用數(shù)據(jù)庫(kù)、文件系統(tǒng) ...蓝撇,所以速度會(huì)相對(duì)較慢果复,組件測(cè)試也被稱(chēng)為“集成測(cè)試”。
  • 部署測(cè)試:為了檢查部署過(guò)程是否正常渤昌,也就是程序是否被正確的安裝虽抄、配置。

3独柑、業(yè)務(wù)導(dǎo)向且評(píng)價(jià)項(xiàng)目的測(cè)試

對(duì)應(yīng)的分類(lèi)

這類(lèi)測(cè)試一般需要我們手工測(cè)試迈窟,目的是為了驗(yàn)證實(shí)際交付給用戶(hù)的應(yīng)用軟件是否符合其期望,包括需求規(guī)格說(shuō)明是否滿(mǎn)足以及其正確性忌栅。
幾種測(cè)試的方案:

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

4、技術(shù)導(dǎo)向且評(píng)價(jià)項(xiàng)目的測(cè)試

對(duì)應(yīng)的分類(lèi)

非功能測(cè)試是指除了功能之外的系統(tǒng)及其它方面的質(zhì)量瑞驱,比如:容量娘摔、可用性、 安全性等唤反。對(duì)非功能性的測(cè)試也是非常重要的晰筛,因?yàn)檫@因素可能會(huì)導(dǎo)致很大的潛在風(fēng)險(xiǎn)。 當(dāng)然非功能性測(cè)試所需要的環(huán)境也更加苛刻拴袭,它需要專(zhuān)業(yè)的人員搭建一些特殊的環(huán)境來(lái)能實(shí)現(xiàn)读第,而且花費(fèi)的時(shí)間也較長(zhǎng),所以非功能性測(cè)試的頻率會(huì)比較低拥刻,而且應(yīng)該在開(kāi)發(fā)的后期去進(jìn)行測(cè)試怜瞒。

二 測(cè)試替身


在自動(dòng)化測(cè)試時(shí)測(cè)試替身扮演著一個(gè)非常重要的角色,比如在單元測(cè)試中通過(guò)模擬對(duì)象來(lái)代替系統(tǒng)的一部分,這樣就可以大大的提高測(cè)試的速度吴汪。
測(cè)試替身的分類(lèi):

  • 啞對(duì)象(dump object):指那些被傳遞但不被真正使用的對(duì)象惠窄,這些對(duì)象一般只是用于填充參數(shù)列表,只是起到一個(gè)占位的作用漾橙,沒(méi)有具體的含義杆融。(如測(cè)試A類(lèi)的run方法,需要在創(chuàng)建A類(lèi)的實(shí)例時(shí)需要傳入B類(lèi)實(shí)例霜运,但run方法并沒(méi)有用到B類(lèi)實(shí))
  • 假對(duì)象(fake object):假對(duì)象相對(duì)于啞對(duì)象來(lái)說(shuō)脾歇,要對(duì)耦合的組件有一些簡(jiǎn)單的實(shí)現(xiàn),實(shí)現(xiàn)我們?cè)跍y(cè)試中要用到的方法淘捡,指定期望的行為(如返回期望的值)藕各。假對(duì)象適用于替換產(chǎn)品代碼中使用的全局對(duì)象,或者創(chuàng)建的類(lèi)
  • 樁(stub):測(cè)試樁與假對(duì)象有點(diǎn)類(lèi)似焦除,也要實(shí)現(xiàn)與產(chǎn)品代碼耦合的組件激况,指定期望的行為。這里最大的不同是測(cè)試樁需要注入到產(chǎn)品代碼中膘魄,從而在測(cè)試產(chǎn)品代碼時(shí)替換組件乌逐,執(zhí)行樁的行為。使用測(cè)試樁不需要進(jìn)行備份和還原创葡。
  • spy:與測(cè)試樁類(lèi)似浙踢,但是可以記錄樁使用的記錄,并進(jìn)行驗(yàn)證蹈丸。
  • 模擬對(duì)象(mock):設(shè)定期望的行為,然后驗(yàn)證期望的行為是否發(fā)生呐芥,從而達(dá)到測(cè)試產(chǎn)品代碼行為的目的逻杖。適用于驗(yàn)證一些void的行為。

三 現(xiàn)實(shí)中的情況和對(duì)應(yīng)策略


1思瘟、新項(xiàng)目

當(dāng)我們著手開(kāi)始一個(gè)項(xiàng)目的時(shí)候荸百,這也是最容易開(kāi)始做持續(xù)集成的時(shí)候,那么毫無(wú)疑問(wèn)最重要的事情應(yīng)該是先自動(dòng)化驗(yàn)收測(cè)試滨攻。我們需要

  • 選擇技術(shù)平臺(tái)和測(cè)試工具
  • 建立一個(gè)簡(jiǎn)單的自動(dòng)化構(gòu)建
  • 制定遵守 INVEST 原則(獨(dú)立的够话、可協(xié)商的、有價(jià)值的光绕、可估計(jì)的女嘲、小的、可測(cè)試的)的用戶(hù)故事及其考慮其驗(yàn)收條件

步驟:

  • 客戶(hù)诞帐、分析師和測(cè)試人員定義驗(yàn)收條件
  • 測(cè)試人員和開(kāi)發(fā)人員一起基于驗(yàn)收條件實(shí)現(xiàn)驗(yàn)收測(cè)試的自動(dòng)化
  • 開(kāi)發(fā)人員編碼來(lái)滿(mǎn)足驗(yàn)收條件
  • 只要有自動(dòng)化測(cè)試失敗欣尼,開(kāi)發(fā)人員都應(yīng)該將它定義為最高優(yōu)先級(jí)并修復(fù)它。

2停蕉、正在進(jìn)行中的項(xiàng)目

對(duì)一個(gè)正在進(jìn)行中的項(xiàng)目去做自動(dòng)化測(cè)試相比項(xiàng)目一開(kāi)始就寫(xiě)測(cè)試面臨著更大的壓力愕鼓。最好的自動(dòng)化測(cè)試的方式就是選擇應(yīng)用程序中那些最常見(jiàn)最重要的用例開(kāi)始寫(xiě)測(cè)試钙态,讓這些測(cè)試盡可能覆蓋更多的選項(xiàng),一般覆蓋的范圍都會(huì)寬于用戶(hù)故事級(jí)別的驗(yàn)收測(cè)試菇晃。

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

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

幾個(gè)概念

  • 可用性測(cè)試:讓用戶(hù)通過(guò)使用產(chǎn)品來(lái)評(píng)估產(chǎn)品的技術(shù)驻子。
  • 探索性測(cè)試:在進(jìn)行測(cè)試的時(shí)候同時(shí)探索開(kāi)發(fā)更多類(lèi)型的測(cè)試從而改善測(cè)試流程。
  • happy path:一個(gè)正確的執(zhí)行路徑
  • alternate path :多個(gè)可以相互替代的 path 册着,入口和過(guò)程可以不一樣拴孤,但是最終產(chǎn)生的用戶(hù)價(jià)值是一樣的
  • sad path :選擇一條執(zhí)行路徑產(chǎn)生的錯(cuò)誤處理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市甲捏,隨后出現(xiàn)的幾起案子演熟,更是在濱河造成了極大的恐慌,老刑警劉巖司顿,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芒粹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡大溜,警方通過(guò)查閱死者的電腦和手機(jī)化漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钦奋,“玉大人座云,你說(shuō)我怎么就攤上這事「恫模” “怎么了朦拖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)厌衔。 經(jīng)常有香客問(wèn)我璧帝,道長(zhǎng),這世上最難降的妖魔是什么富寿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任睬隶,我火速辦了婚禮,結(jié)果婚禮上页徐,老公的妹妹穿的比我還像新娘苏潜。我一直安慰自己,他們只是感情好变勇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布窖贤。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赃梧。 梳的紋絲不亂的頭發(fā)上滤蝠,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音授嘀,去河邊找鬼物咳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹄皱,可吹牛的內(nèi)容都是我干的览闰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巷折,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼压鉴!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锻拘,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤油吭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后署拟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體婉宰,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年推穷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了心包。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馒铃,死狀恐怖蟹腾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情区宇,我是刑警寧澤娃殖,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站萧锉,受9級(jí)特大地震影響珊随,放射性物質(zhì)發(fā)生泄漏述寡。R本人自食惡果不足惜柿隙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲫凶。 院中可真熱鬧禀崖,春花似錦、人聲如沸螟炫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掸屡,卻和暖如春封寞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仅财。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工狈究, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盏求。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓抖锥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親碎罚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磅废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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