您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > Nunit
Visual Studio 2010 Ultimate敏捷測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/2 14:21:41 ] 推薦標(biāo)簽:

  在微軟Visual Studio 2010 Ultimate Beta2版本中,MSF for Agile Software Development 5.0過(guò)程框架,是以Scrum模型為基礎(chǔ)導(dǎo)向擴(kuò)展,并且結(jié)合了VSTS2010工具的眾多測(cè)試功能特性,為更多的從事微軟.NET技術(shù)相關(guān)的開(kāi)發(fā)人員以實(shí)現(xiàn)高質(zhì)量的軟件產(chǎn)品。

  在本文中,筆者將介紹Visual Studio 2010 Ultimate Beta2版本中的MSF for Agile的Scrum和XP敏捷思想與VSTS2010強(qiáng)大的測(cè)試功能,通過(guò)對(duì)這些內(nèi)容的闡述,讓讀者了解在VSTS2010中的敏捷測(cè)試驅(qū)動(dòng)開(kāi)發(fā)方法,以便于.NET開(kāi)發(fā)人員能把敏捷驅(qū)動(dòng)開(kāi)發(fā)為導(dǎo)向的技術(shù),應(yīng)用在自己的項(xiàng)目和團(tuán)隊(duì)中,從而構(gòu)筑出敏捷的開(kāi)發(fā)團(tuán)隊(duì)。

  1.引言

  在前幾篇的文章中提到過(guò)的Scrum,相信讀者們都應(yīng)該已經(jīng)不陌生了,它的核心在于迭代,并且以每個(gè)sprint時(shí)間段的周期進(jìn)行產(chǎn)品功能迭代。團(tuán)隊(duì)首先瀏覽開(kāi)發(fā)需求,考慮可用技術(shù),并對(duì)自身技術(shù)及能力做出評(píng)估,所有實(shí)踐是圍繞著一個(gè)迭代和增量的過(guò)程來(lái)展開(kāi),而在每個(gè)迭代內(nèi)部,可以使用測(cè)試驅(qū)動(dòng)和持續(xù)集成的XP(eXtreme Programming,極限編程)工程實(shí)踐。

  XP,是輕量級(jí)的開(kāi)發(fā)流程,其主要的精神是“在客戶有系統(tǒng)需求時(shí),給予及時(shí)滿意的可執(zhí)行程序”,所以適合需求快速變動(dòng)的方案。Scrum與XP所不同的是,Scrum只是一個(gè)敏捷過(guò)程框架,它并沒(méi)有提供核心的價(jià)值觀與指導(dǎo)原則,也缺乏具體的實(shí)踐方法,例如,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、結(jié)隊(duì)編程等。Scrum僅僅規(guī)定了實(shí)施的基本流程與檢查表,它是一個(gè)開(kāi)放的管理框架,重心在于項(xiàng)目管理,而不是指導(dǎo)團(tuán)隊(duì)成員如何進(jìn)行開(kāi)發(fā)。這既是Scrum的優(yōu)點(diǎn),因?yàn)樗莒`活,能夠適應(yīng)大多數(shù)場(chǎng)景,也可以兼容并包地引入其他方法學(xué)所提倡的實(shí)踐;同時(shí)也是Scrum存在的固有缺陷,使得它難以被實(shí)踐。如果沒(méi)有一位的Scrum Master,而團(tuán)隊(duì)成員又缺乏自我組織和管理的能力,會(huì)讓開(kāi)發(fā)過(guò)程變得一團(tuán)糟,團(tuán)隊(duì)成員將會(huì)無(wú)所適從。

  在團(tuán)隊(duì)中開(kāi)發(fā)人員隨時(shí)可以與客戶進(jìn)行有效溝通,撰寫(xiě)user stories以確認(rèn)需求。簡(jiǎn)易快速的系統(tǒng)設(shè)計(jì),撰寫(xiě)?yīng)毩⒌尿?yàn)證程序以解決特殊困難的問(wèn)題,并找出演算法即可丟棄驗(yàn)證程式。規(guī)劃多次小型階段的方案計(jì)劃,并且以快得速度完成每一階段的程序交付客戶,客戶負(fù)責(zé)Acceptance tests;Coding前必須完成Unit Test與Acceptance tests程序,所有模組整合前都須經(jīng)過(guò)Unit Tests;開(kāi)發(fā)人員必須快速回應(yīng)Bug和需求變更;要求二人一組使用一臺(tái)電腦設(shè)計(jì)程序,當(dāng)一人coding時(shí),另一人負(fù)責(zé)思考與設(shè)計(jì)(結(jié)對(duì)編程);程序必須符合程序規(guī)范,并常做程序的重構(gòu)(Refactoring)。

  在Agile開(kāi)發(fā)實(shí)踐方面,Scrum可以借鑒XP提倡的結(jié)隊(duì)編程以及測(cè)試驅(qū)動(dòng)開(kāi)發(fā)實(shí)現(xiàn)編碼,通過(guò)重構(gòu)對(duì)編碼進(jìn)行調(diào)整以適應(yīng)需求的變化,Scrum為體,XP為用。XP開(kāi)發(fā)流程的基本步驟,如圖1所示。

圖1 XP開(kāi)發(fā)流程的基本步驟

  測(cè)試驅(qū)動(dòng)開(kāi)發(fā)意味著你要先寫(xiě)一個(gè)自動(dòng)測(cè)試,然后編寫(xiě)恰好夠用的代碼,讓它通過(guò)這個(gè)測(cè)試,接著對(duì)代碼進(jìn)行重構(gòu),主要是提高它的可讀性和消除重復(fù),這將會(huì)對(duì)Agile Team整體素質(zhì)要求較高。

  時(shí)至,Agile Process的精神已經(jīng)成為共識(shí),但是沒(méi)有一種固定的流程可以重復(fù)使用在不同的方案上,而且不管是RUP、XP、SCRUM、或其他的開(kāi)發(fā)流程都允許相當(dāng)大的彈性,我們必須按方案性質(zhì)的不同,調(diào)整或混合出適合的開(kāi)發(fā)流程,并允許團(tuán)隊(duì)在進(jìn)行中做必要的彈性修改,才能夠達(dá)成目標(biāo)。

  2.敏捷之驅(qū)動(dòng)開(kāi)發(fā)

  在XP開(kāi)發(fā)實(shí)踐中的TDD(Test Driven Development),它有一個(gè)別稱叫 Test-First Programming,要求開(kāi)發(fā)的第一步是根據(jù)需求,必須先寫(xiě)單元測(cè)試程序,然后再寫(xiě)實(shí)現(xiàn)程序讓符合需求的測(cè)試通過(guò)。我們知道XP中的需求是以“用戶故事”(User Story)的形式描述的,而用戶故事實(shí)質(zhì)上是一種軟件“特性”(Feature)。TDD 講的是如何通過(guò)編寫(xiě)“測(cè)試”,尤其是單元測(cè)試,來(lái)驅(qū)動(dòng)軟件的設(shè)計(jì)和編程。

  系統(tǒng)測(cè)試從哪里來(lái)?來(lái)自系統(tǒng)需求。系統(tǒng)需求從哪里來(lái)?來(lái)自用戶目標(biāo),TDD則也不例外。在需求不穩(wěn)定的情況下,這樣的TDD會(huì)有什么問(wèn)題?會(huì)不會(huì)帶來(lái)許多冗余的工作?答案是肯定的,這樣必然會(huì)帶來(lái)單元測(cè)試的不穩(wěn)定,這需要敏捷開(kāi)發(fā)人員有相當(dāng)強(qiáng)的抽象能力,抽象、界定出主要相對(duì)穩(wěn)定需求可以實(shí)施TDD。

  敏捷團(tuán)隊(duì)可以采用在軟件工程學(xué)里有比較成熟的OOAD(Object Orient Analysis & Design,面向?qū)ο蟮姆治龊驮O(shè)計(jì))軟件開(kāi)發(fā)方法(參見(jiàn)筆者著作《我也能做CTO之程序員職業(yè)規(guī)劃》的高級(jí)程序員技術(shù)能力),在用戶需求層面找到,并抽象出相對(duì)不變的需求。OOAD科學(xué)分析法體現(xiàn)的是‘現(xiàn)實(shí)事實(shí)的抽象理解能力’,以業(yè)務(wù)為中心來(lái)分析解決問(wèn)題,不涉及求解方案。分析階段所做的主要工作是理解問(wèn)題和需求構(gòu)模,將現(xiàn)實(shí)世界中的問(wèn)題映射到問(wèn)題域,從而穩(wěn)定主要需求。OOAD包括‘設(shè)計(jì)模式能力’,反映計(jì)算機(jī)世界來(lái)體現(xiàn)現(xiàn)實(shí)世界。

  分析階段主要是明確用戶的功能需求,滿足用戶所需的系統(tǒng)部件及其結(jié)構(gòu)。設(shè)計(jì)階段則主要是確定實(shí)現(xiàn)用戶需求的方法,即怎樣做才能滿足用戶需求,并構(gòu)造出系統(tǒng)的實(shí)現(xiàn)藍(lán)圖。

  OOAD方法要求在設(shè)計(jì)中要映射現(xiàn)實(shí)世界中(指問(wèn)題域,如圖2所示)的對(duì)象和實(shí)體,如程序員、汽車、項(xiàng)目實(shí)施人員等。這需要在設(shè)計(jì)中盡可能地接近現(xiàn)實(shí)世界,以自然的方式表述實(shí)體。所以,面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn)是能夠構(gòu)建與現(xiàn)實(shí)世界相對(duì)應(yīng)的問(wèn)題模型(橋梁),并保持它們的結(jié)構(gòu)關(guān)系和行為模式。

  例如,我們通常做的系統(tǒng)分析是在假定需求不變的情況下進(jìn)行的,這樣可以把企業(yè)的資源配置到優(yōu)的程度,但是企業(yè)的需求是變化、不穩(wěn)定的,那么以變化的需求為基礎(chǔ)建立起來(lái)的軟件系統(tǒng)當(dāng)然也不穩(wěn)定了。需求是項(xiàng)目的根本,既然需求都是不穩(wěn)定的,那么何以建立起穩(wěn)定的企業(yè)信息系統(tǒng)呢?

圖2 軟件需求抽象示意圖

上一頁(yè)123456下一頁(yè)
關(guān)鍵詞閱讀
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd