敏捷測(cè)試的方法和實(shí)踐

有一次陋守,當(dāng)開發(fā)人員完成當(dāng)前Sprint 任務(wù)的代碼之后震贵,測(cè)試人員與開發(fā)人員、產(chǎn)品經(jīng)理一起來(lái)瀏覽產(chǎn)品水评、從頭到尾走一邊猩系,產(chǎn)品經(jīng)理發(fā)現(xiàn)了問題,認(rèn)為需要對(duì)功能進(jìn)行比較大的修改中燥。這時(shí)開發(fā)人員估計(jì)需要兩天時(shí)間才能完成代碼寇甸,但測(cè)試人員反對(duì)這樣做,我們本來(lái)只有5天測(cè)試時(shí)間疗涉,加上這次新做的功能比較多拿霉、開發(fā)代碼質(zhì)量不高,驗(yàn)收測(cè)試已經(jīng)很緊張咱扣。如果再延遲兩天绽淘,測(cè)試沒法完成。產(chǎn)品經(jīng)理說(shuō)闹伪,你們不是在用敏捷測(cè)試方法沪铭,應(yīng)該測(cè)得很快壮池,三天應(yīng)該能完成測(cè)試工作啊杀怠!

什么是敏捷測(cè)試呢椰憋?敏捷測(cè)試當(dāng)然不能簡(jiǎn)單地理解測(cè)得更快,絕對(duì)不是比以前用更少時(shí)間進(jìn)行測(cè)試赔退,也不是將測(cè)試的范圍縮小了或?qū)①|(zhì)量降低來(lái)減少測(cè)試任務(wù)橙依。也有人說(shuō),只有敏捷開發(fā)硕旗,沒有敏捷測(cè)試窗骑。下面我們就要討論一下:

l? 究竟什么是敏捷測(cè)試?

l? 敏捷測(cè)試有哪些流程改進(jìn)漆枚?

l? 測(cè)試人員如何面對(duì)敏捷測(cè)試的挑戰(zhàn)慧域?

l? 在敏捷測(cè)試中如何制定相應(yīng)的自動(dòng)化測(cè)試策略?

等等各種問題浪读。

什么是敏捷測(cè)試

? ? ? 假如將過(guò)去傳統(tǒng)的測(cè)試流程和方法硬塞入敏捷開發(fā)流程中,測(cè)試工作可能會(huì)事倍功半辛藻,測(cè)試人員可能會(huì)天天加班碘橘,而不能發(fā)揮應(yīng)用的作用。敏捷測(cè)試應(yīng)該是適應(yīng)敏捷方法而采用的新的測(cè)試流程吱肌、方法和實(shí)踐痘拆,對(duì)傳統(tǒng)的測(cè)試流程有所剪裁,有所不同的側(cè)重氮墨,例如減少測(cè)試計(jì)劃纺蛆、測(cè)試用例設(shè)計(jì)等工作的比重,增加與產(chǎn)品設(shè)計(jì)人員规揪、開發(fā)人員的交流和協(xié)作桥氏。在敏捷測(cè)試流程中,參與單元測(cè)試猛铅,關(guān)注持續(xù)迭代的新功能字支,針對(duì)這些新功能進(jìn)行足夠的驗(yàn)收測(cè)試,而對(duì)原有功能的回歸測(cè)試則依賴于自動(dòng)化測(cè)試奸忽。由于敏捷方法中迭代周期短堕伪,測(cè)試人員盡早開始測(cè)試,包括及時(shí)對(duì)需求栗菜、開發(fā)設(shè)計(jì)的評(píng)審欠雌,更重要的是能夠及時(shí)、持續(xù)的對(duì)軟件產(chǎn)品質(zhì)量進(jìn)行反饋疙筹。簡(jiǎn)單地說(shuō)富俄,敏捷測(cè)試就是持續(xù)地對(duì)軟件質(zhì)量問題進(jìn)行及時(shí)地反饋禁炒,如圖1所示。


圖1 敏捷測(cè)試定義的形象描述

2.? 敏捷測(cè)試流程的優(yōu)化

在敏捷方法中蛙酪,需求變化比較快齐苛、產(chǎn)品開發(fā)周期很短,我們目前采用四周時(shí)間桂塞,也就是每個(gè)月發(fā)布一個(gè)新版本凹蜂。開發(fā)周期短,功能不斷累加阁危,給軟件測(cè)試帶來(lái)很大的挑戰(zhàn)玛痊,軟件測(cè)試流程要做相應(yīng)的調(diào)整。例如狂打,我們?cè)械臏y(cè)試規(guī)范明確規(guī)定擂煞,首先要建立項(xiàng)目的主測(cè)試計(jì)劃書,然后再建立每個(gè)功能任務(wù)的測(cè)試計(jì)劃書趴乡,測(cè)試計(jì)劃書有嚴(yán)格的模板对省,而且需要和產(chǎn)品經(jīng)理、開發(fā)人員討論晾捏,并和測(cè)試團(tuán)隊(duì)其他人員(包括測(cè)試經(jīng)理)討論蒿涎,最終得到大家的認(rèn)可和簽字才能通過(guò),僅測(cè)試計(jì)劃經(jīng)過(guò)“起草惦辛、評(píng)審和簽發(fā)”一個(gè)完整的周期就需要一個(gè)月劳秋。在敏捷方法中,不再要求寫幾十頁(yè)的測(cè)試計(jì)劃書胖齐,而是在每個(gè)迭代周期玻淑,寫出一頁(yè)紙的測(cè)試計(jì)劃,將測(cè)試要點(diǎn)(包括策略呀伙、特定方法补履、重點(diǎn)范圍等)列出來(lái)就可以了。

在原有測(cè)試規(guī)范中剿另,要求先用Excel寫出測(cè)試用例干像,然后進(jìn)行討論、評(píng)審驰弄,評(píng)審?fù)ㄟ^(guò)以后再導(dǎo)入測(cè)試用例庫(kù)(在線管理系統(tǒng))中麻汰。在敏捷測(cè)試中,可能不需要測(cè)試用例戚篙,而是針對(duì)use case 或user story直接進(jìn)行驗(yàn)證五鲫,并進(jìn)行探索性測(cè)試。而節(jié)約出來(lái)的時(shí)間岔擂,用于開發(fā)原有功能的自動(dòng)化測(cè)試腳本位喂,為回歸測(cè)試服務(wù)浪耘。自動(dòng)化測(cè)試腳本將代替測(cè)試用例,成為軟件組織的財(cái)富塑崖。原有測(cè)試規(guī)范還要求進(jìn)行兩輪回歸測(cè)試七冲,在敏捷測(cè)試中,只能進(jìn)行一輪回歸測(cè)試规婆。綜合這些考慮澜躺,敏捷測(cè)試的流程簡(jiǎn)單有效,如下圖2所示抒蚜。


圖2 敏捷測(cè)試流程簡(jiǎn)要圖

在敏捷測(cè)試流程中掘鄙,如前所述,測(cè)試是一個(gè)持續(xù)的質(zhì)量反饋過(guò)程嗡髓,測(cè)試中發(fā)現(xiàn)的問題及時(shí)反饋給產(chǎn)品經(jīng)理和開發(fā)人員操漠,而且某些關(guān)鍵方面也要得到我們足夠的關(guān)注,主要有:

l? 測(cè)試人員不僅要全程參與需求饿这、產(chǎn)品功能設(shè)計(jì)等討論浊伙,而且要面對(duì)面地、充分地討論(包括帶語(yǔ)言长捧、視頻的即時(shí)通訊)吧黄,僅僅通過(guò)郵件是不夠的。

l? 參與代碼復(fù)審(code review)唆姐,并適當(dāng)輔助開發(fā)人員進(jìn)行單元測(cè)試。

l? 在流程中增加一個(gè)環(huán)節(jié)“產(chǎn)品走查(Product work-through)”——測(cè)試人員和產(chǎn)品經(jīng)理廓八、開發(fā)人員等在一起奉芦,從頭到尾將新功能看一遍,可直觀剧蹂、快速地發(fā)現(xiàn)問題声功。

新功能的測(cè)試和回歸測(cè)試策略

測(cè)試任務(wù)簡(jiǎn)單地可分為新功能測(cè)試和回歸測(cè)試。在敏捷方法中宠叼,針對(duì)這兩部分的測(cè)試建立相應(yīng)的策略先巴,以提高測(cè)試的效率,最大限度地降低質(zhì)量風(fēng)險(xiǎn)冒冬。新功能測(cè)試的策略主要有:

l? 不需要測(cè)試用例伸蚯,直接基于用例、基于對(duì)需求的理解來(lái)完成新功能的驗(yàn)證简烤。即使要寫測(cè)試用例剂邮,只要保證各個(gè)功能點(diǎn)被覆蓋,不要過(guò)于詳細(xì)(大顆粒度)横侦。

l? 持續(xù)地進(jìn)行驗(yàn)證挥萌,一旦某塊新代碼完成(code drop), 就開始驗(yàn)證绰姻,而不是等到所有代碼完成后才開始測(cè)試。這也包括參與到單元測(cè)試和集成測(cè)試中引瀑。

l? 實(shí)施端到端(end-to-end)的測(cè)試狂芋,確保完整的業(yè)務(wù)流程的實(shí)現(xiàn),同時(shí)憨栽,也容易發(fā)現(xiàn)業(yè)務(wù)邏輯不夠清晰帜矾、不夠合理等各方面的問題。

l? 閱讀代碼來(lái)發(fā)現(xiàn)問題徒像,可以和開發(fā)人員工作保持同步黍特,消除測(cè)試周期的壓力。

l? 基于經(jīng)驗(yàn)锯蛀,可以實(shí)施更多的探索性測(cè)試灭衷、組合交互性(interoperation)測(cè)試和用戶場(chǎng)景(user scenario)測(cè)試,更有效地發(fā)現(xiàn)埋藏較深的缺陷旁涤。

回歸測(cè)試是敏捷測(cè)試中需要面對(duì)的難點(diǎn)翔曲。每次迭代都會(huì)增加新的功能,一個(gè)產(chǎn)品可能會(huì)經(jīng)過(guò)十幾次劈愚、甚至幾十次迭代瞳遍,回歸測(cè)試范圍在不斷增大,而每次迭代周期沒變菌羽,可能還是一個(gè)月掠械。這樣驗(yàn)收測(cè)試的時(shí)間非常有限,所以回歸測(cè)試很大程度上依賴于自動(dòng)化測(cè)試注祖,因?yàn)楹茈y將回歸測(cè)試控制在非常有限的范圍內(nèi)猾蒂。當(dāng)然,還是有些辦法可以幫助我們減少回歸測(cè)試的范圍是晨,例如:

l? 通過(guò)執(zhí)行code diff來(lái)了解代碼變動(dòng)的所有地方肚菠,再做代碼關(guān)聯(lián)分析,就可以明確知道要進(jìn)行哪些地方的回歸測(cè)試罩缴,回歸測(cè)試范圍會(huì)大大縮小蚊逢。

l? 基于風(fēng)險(xiǎn)和操作面分析來(lái)減少回歸測(cè)試的范圍,例如回歸測(cè)試只是保證主要功能點(diǎn)沒有問題箫章,而忽視一些細(xì)節(jié)的問題烙荷。

l? 持續(xù)測(cè)試的過(guò)程,只要有時(shí)間檬寂,就進(jìn)行測(cè)試奢讨,包括開發(fā)人員、產(chǎn)品設(shè)計(jì)人員都參與到日常的試用和測(cè)試中來(lái)。

4?自動(dòng)化測(cè)試策略

由于開發(fā)周期短拿诸,需求扒袖、設(shè)計(jì)等方面溝通也需要花費(fèi)很多時(shí)間,沒有足夠時(shí)間開發(fā)自動(dòng)化測(cè)試腳本亩码,至少對(duì)新功能的測(cè)試很難實(shí)現(xiàn)自動(dòng)化測(cè)試季率。這時(shí)候,就需要正確的策略來(lái)提高自動(dòng)化測(cè)試的效益描沟,如圖30-3所示飒泻,并說(shuō)明如下。


圖3?自動(dòng)化測(cè)試的策略

建一個(gè)靈活的吏廉、開放的自動(dòng)化測(cè)試框架泞遗,如基于關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化框架,使測(cè)試腳本的開發(fā)簡(jiǎn)單易行席覆,腳本維護(hù)也方便史辙。

l? 針對(duì)穩(wěn)定的產(chǎn)品特性開發(fā)自動(dòng)化測(cè)試腳本,也就是針對(duì)前期完成的已有功能開發(fā)自動(dòng)化測(cè)試的腳本佩伤,而大部分新功能測(cè)試采用手工測(cè)試聊倔。

l? 集中精力在單元層次上實(shí)現(xiàn)自動(dòng)化測(cè)試,主要由開發(fā)人員實(shí)施生巡,測(cè)試人員提供單元測(cè)試框架耙蔑,并輔助完成一些所需的基礎(chǔ)工作。

l? 在產(chǎn)品設(shè)計(jì)孤荣、編程時(shí)就很好地考慮了自動(dòng)化測(cè)試的需求甸陌,使全面的、自動(dòng)化的底層測(cè)試盐股、接口測(cè)試成為可能钱豁,盡量避免用戶界面(UI)的自動(dòng)化測(cè)試。

l? 良好的IT基礎(chǔ)設(shè)施遂庄,包括自動(dòng)化構(gòu)建軟件包、自動(dòng)化版本驗(yàn)證(BVT)劲赠、自動(dòng)化部署涛目、覆蓋率自動(dòng)產(chǎn)生等。

5 敏捷測(cè)試工具

自動(dòng)化測(cè)試依賴于測(cè)試工具凛澎,所幸的是霹肝,目前已有很多敏捷測(cè)試工具。由于篇幅所限塑煎,這里只是簡(jiǎn)單地列出一些常用的敏捷測(cè)試工具沫换,不再深入討論了。

l? 單元測(cè)試工具:TestNG最铁、xUnit家族(如JUnit 讯赏、NUnit)垮兑、JMock、BizMock等漱挎。

l? 功能測(cè)試自動(dòng)化:ThoughtWorks Twist系枪。

l? Web功能測(cè)試(frontend):Selenium IDE/RC、WatiR磕谅、WatiN私爷。

l? Web service測(cè)試工具(backend):soapUI 。

l? 性能測(cè)試:JMeter+BadBoy膊夹。

l? 驗(yàn)收測(cè)試框架:Fitnesse衬浑、Tellurium。

l? 敏捷測(cè)試過(guò)程管理工具:微軟的Visual Studio 2010放刨,包括TFS 2010工秩、Scrum模板(MS VS Scrum 1.0)、Test Manager 2010宏榕、Coded UI Test等拓诸。

l? 業(yè)務(wù)智能(BI)應(yīng)用的測(cè)試框架:Oraylis BI.Quality (+ NUnit)。

l? 其它一些協(xié)作工具等麻昼,如TestLink奠支、BugZilla、BugFree抚芦、wiki倍谜、ant等。

6 測(cè)試人員在敏捷方法中的價(jià)值

在敏捷方法中叉抡,開發(fā)人員的主導(dǎo)作用更明顯尔崔,系統(tǒng)設(shè)計(jì)、編程實(shí)現(xiàn)褥民、單元測(cè)試季春、重構(gòu)等看似關(guān)鍵的一些任務(wù)都落在開發(fā)人員身上,測(cè)試人員容易被邊緣化消返。那么载弄,在敏捷方法中,測(cè)試人員的價(jià)值又如何體現(xiàn)呢撵颊?

l? 在需求和功能設(shè)計(jì)討論上宇攻,測(cè)試人員可以站在客戶角度上來(lái)闡述自己的觀點(diǎn),扮演“用戶代表”角色倡勇,強(qiáng)調(diào)用戶體驗(yàn)逞刷,真正體現(xiàn)測(cè)試人員和開發(fā)人員的互補(bǔ)作用。

l? 測(cè)試人員不僅扮演“用戶代表”角色,而且通過(guò)需求討論夸浅、代碼復(fù)審等各種活動(dòng)及時(shí)地提供質(zhì)量反饋仑最,包括代碼質(zhì)量、接口一致性等题篷,保證在產(chǎn)品構(gòu)造的整個(gè)過(guò)程中質(zhì)量受到足夠的關(guān)注词身,以提高質(zhì)量改進(jìn)的持續(xù)性和可視性。

l? 測(cè)試人員應(yīng)積極參與單元測(cè)試番枚,即使不參加單元測(cè)試法严,也應(yīng)督促開發(fā)人員進(jìn)行單元測(cè),確保單元測(cè)試達(dá)到80%以上覆蓋率葫笼,確保開發(fā)出具有良好可測(cè)試性的代碼深啤。

l? 在敏捷方法中,往往將一個(gè)大的系統(tǒng)開發(fā)分解成多個(gè)小的子系統(tǒng)(模塊或組件)路星,集成測(cè)試和端到端(end-to-end)測(cè)試顯得更為重要溯街,測(cè)試人員在這些測(cè)試上能發(fā)揮更大的作用。

l? 產(chǎn)品發(fā)布前洋丐,驗(yàn)收測(cè)試和回歸測(cè)試依然不可缺少呈昔,這更是測(cè)試人員的用武之地。

l? 一個(gè)迭代周期結(jié)束后友绝,對(duì)缺陷根本原因進(jìn)行分析堤尾、總結(jié)規(guī)律,幫助開發(fā)人員建立良好的習(xí)慣迁客,預(yù)防缺陷郭宝,從根本上提高產(chǎn)品質(zhì)量。

理想情況下,測(cè)試人員掌握設(shè)計(jì)模式、具有很好的編程能力栓辜,可以和開發(fā)人員進(jìn)行角色互換,如在當(dāng)前版本開發(fā)(/迭代周期)中擔(dān)任測(cè)試人員角色衔统,在下一個(gè)版本開發(fā)(/迭代周期)中則擔(dān)任開發(fā)人員角色。這樣雙方對(duì)不同角色的工作有著更深刻的認(rèn)識(shí)海雪,消除溝通的障礙锦爵,開發(fā)的效率和質(zhì)量會(huì)有進(jìn)一步的提高。

小結(jié)

根據(jù)上面的討論和我們的實(shí)踐喳魏,最后針對(duì)敏捷測(cè)試進(jìn)行一個(gè)簡(jiǎn)單的總結(jié)棉浸,就是:

l? 敏捷測(cè)試就是持續(xù)測(cè)試怀薛、持續(xù)反饋刺彩,扮演“用戶代表”角色,確保產(chǎn)品滿足客戶的需求。

l? 敏捷功能測(cè)試 = 新特性的手工測(cè)試 (use case驗(yàn)證和探索性測(cè)試)? + 原有功能的自動(dòng)化測(cè)試 (回歸測(cè)試)

l? 敏捷測(cè)試人員和開發(fā)人員的區(qū)別越來(lái)越小创倔,理想情況下嗡害,敏捷方法中,測(cè)試人員和開發(fā)人員在不同的迭代周期可以互換畦攘。

l? 敏捷測(cè)試流程依據(jù)不同的團(tuán)隊(duì)特點(diǎn)霸妹、不同產(chǎn)品的特點(diǎn)而不同,因地制宜知押,適合才是最好叹螟。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市台盯,隨后出現(xiàn)的幾起案子罢绽,更是在濱河造成了極大的恐慌,老刑警劉巖静盅,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件良价,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蒿叠,警方通過(guò)查閱死者的電腦和手機(jī)明垢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)市咽,“玉大人痊银,你說(shuō)我怎么就攤上這事』晡瘢” “怎么了曼验?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粘姜。 經(jīng)常有香客問我鬓照,道長(zhǎng),這世上最難降的妖魔是什么孤紧? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任豺裆,我火速辦了婚禮,結(jié)果婚禮上号显,老公的妹妹穿的比我還像新娘臭猜。我一直安慰自己,他們只是感情好押蚤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布蔑歌。 她就那樣靜靜地躺著,像睡著了一般揽碘。 火紅的嫁衣襯著肌膚如雪次屠。 梳的紋絲不亂的頭發(fā)上园匹,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音劫灶,去河邊找鬼裸违。 笑死,一個(gè)胖子當(dāng)著我的面吹牛本昏,可吹牛的內(nèi)容都是我干的供汛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涌穆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怔昨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宿稀,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朱监,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后原叮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赫编,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年奋隶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了擂送。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唯欣,死狀恐怖嘹吨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情境氢,我是刑警寧澤蟀拷,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站萍聊,受9級(jí)特大地震影響问芬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寿桨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一此衅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亭螟,春花似錦挡鞍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扁掸,卻和暖如春翘县,著一層夾襖步出監(jiān)牢的瞬間衰琐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工炼蹦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸剃。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓掐隐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钞馁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虑省,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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