FIT For .NET(2)

來源:互聯網
上載者:User
    在前面介紹了FIT(FIT For .NET(0),FIT For .NET(1)),下面介紹如何使用它.

 客戶的參與對軟體成功是關鍵的.作為一名程式員,你需要一種方法來理解客戶的需求,因此你才能寫出很好的軟體.FIT為你和你的客戶提供了一種方法來精確的交流和協作.

    對於其核心,FIT只是一個非常簡單的工具.是一個“整合測試的架構“(Framework For Integrate Test,其實就是FIT的全稱),也就是說,它是一個翻譯HTML編寫的文檔,在你的軟體上運行他們,然後以HTML格式報告結果的架構.這些是你的客戶編寫例子的測試.用來鉤住這些測試到你的軟體中去的fixture則由你自己來編寫.

.  FIT的簡單掩蓋了它的實用性.儘管FIT運行測試,但是它不是關於測試.它給你的客戶提供一種你的軟體做什麼的方法.以及給你提供一種你和你客戶討論詳情的途徑.

 因為FIT可以讀寫HTML,又因為Word和類似的商業工具可以讀寫HTML,所以你的客戶可以直接編寫FIT文檔.這是至關重要的.需求文檔的一個問題是這些文檔通常不是由客戶自己來編寫的.甚至客戶很少閱讀他們.  結果,我們失去了寶貴的合作機會.這種事情的發生不計其數...對於大項目也是如此.我們每個錯誤的詳情就是軟體中的一個Bug.我們需要一種方式讓客戶考慮細節,並且和我們一起討論.

   FIT是一種方法.它允許客戶提供正確行為的執行個體,並且看軟體利用這些執行個體可以作什麼.他允許客戶擁有這些執行個體.這是非常重要的.鼓勵他們這樣去做.給他們反饋和他們將得到的控制.客戶的參與對軟體成功來說非常重要.FIT將協助你得到這些,如果你這樣去做,你的軟體會更好.

 使用FIT和客戶一起工作

    使用FIT的一大部分是協助客戶參與,因此你應該從閱讀IntroductionToFit 和CustomersQuickStartGuide.開始.注意FIT的生命週期,尋找你能協助客戶參與的方式,從程式員的角度上,本節不會反映CustomersQuickStartGuide .

  當你開始開發一個新的特性時,你應該和你的客戶討論(在這裡,對於“客戶“,我們是指:“從業務的角度上說,知道特性最多的人“,“有些人稱他們為'主題事件專家“)通過白板收集,傾聽客戶的解釋.然後要求他/她描述特性使用的例子.

   許多客戶更樂意討論應用程式的介面,而不是底層的需求.在初期,你可能得到使用者討論的例子,而不是底層的商務規則.這些例子模糊了客戶的真正的需要,並且他們非常難以編寫和維護.

你應該逐步掌舵你的客戶朝討論圍繞商務規則的例子的方向上去.例如,如果客戶說“會計師按這個按鈕,將會得到一個時間卡,然後計算僱員的薪資“,你可以問時間卡和最後薪資的例子.

   你的客戶描述例子,你應該儘可能的想問題.利用這些問題得到描述問題答案的額外例子.有時候你的客戶不知道,或者被這個問題纏繞住.在這種情況下,把它放在一邊.

你有一些關鍵例子後,協助你的客戶把例子轉化為表.現在就要試著將表格和FIT Fixture工作.(下面有更多的fixture),得到例子.一旦你對錶感到滿意,重新定義他們的格式,使你能容易的用FIT實現.在你做的時候,當心不要遺漏了客戶的觀點.

   你實現特徵時,你肯會越過執行個體沒有覆蓋到的問題.把這些問題反饋給客戶,和前面一樣,使用他們協助你指導客戶產生額外的例子. 

 FIT不僅是從客戶得到詳情的途徑,也是你的客戶從你的程式裡得到反饋的方法.向你的客戶展示如何使用FIT,描述他/她如何對FIT作出改變,返回FIT,和查看結果.這將允許你的客戶實驗和產生更多的例子.你想讓你的客戶說:“我想知道軟體如何處理這種情況...?“,然後通過在FIT文檔增加額外的例子來得到答案.

運行FIT

 剩下的文檔討論使用FIT的技術方面.為了得到你的FIT版本的更多資訊,參看TechnicalReference.我們快速覆蓋了許多方面,因此你也可以在FitDocumentation,看其例子,像SimpleExample.

 FIT是命令列工具(參看“TechnicalReference.的FIT Command Line“),這允許你在你的指令碼裡很容易的包含他.它得到一單個HTML檔案,處理它,輸出結果(其即時輸入檔案的一個備份,只不過儲存格用紅色和綠色標記)

   許多商業級的工具儲存文檔為HTML,例如.Word.僅需要“File-->Save As“,然後選擇HTML.FIT對儲存為HTML的檔案工作良好.

  Excel也可以將文檔儲存為HTML.但是它儲存整個文檔為一個巨大的表格.結果,FIT不能直接對Excel文檔工作.可以將Excel文檔剪下複製到Word裡.他們將作為表格跨越,而且工作良好.

表和 Fixtures 

  

   FIT執行個體存貯在表裡.FIT通過查詢HTML的<table>,<tr>和<td>標記得到他們.一般情況下,它實際不知到如何分解HTML.這個有意的設計決定允許FIT保持簡單,並且可以和更多複雜的,甚是是很難看的HTML工作.

FIT從文檔的第一個表開始,接著處理每個表.每個表都有一個fixture和它相關.這個fixture就是用來處理這個表的.Fixture運行代碼,對他們的表做出改動(比如標記為紅色和綠色),以及返回結果給FIT.

Fixture由你自己編寫(參看 TechnicalReference.的“Fixture基礎“),一個Fixture就像是表的一個小型翻譯器.每個客戶建立的表需要一個Fixture,但是你為多個表可以使用他們.

. 例如,在下面的圖中,表由一個稱為 "Payroll.Fixtures.WeeklyCompensation"來處理,FIT需要知道那個fiture執行哪個表.把fixture的全名放在表的最左上儲存格裡.例如,在中,表格由Payroll.Fixtures.WeeklyCompensation".來處理.

 

Fixture內幕

  你的fixture對錶可以做任何他們想做的,包括增加行和儲存格(參看TechnicalReference ,尋找如何進行),但是大多數fixture僅僅標誌儲存格為對和錯.這裡由一些標記的規則:

  • 綠色 Fixture比較儲存格和軟體,他們匹配
  • 紅色 (包括 "expected" 和 "actual" 部分): Fixture比較儲存格和軟體,他們不匹配
  • 黃色: fixture有錯誤
  • 灰色文本 在白底: 儲存格是空,因此fixture顯示自己的答案
  • 黑色文本 灰底: fixture忽略儲存格

這裡有Fixture在表中尋找的一些關鍵詞:

  • 一個完全的空格(Blank cell):Fixture試著在裡面填充答案(它將給儲存格著上面描述的灰白顏色)
  •  單詞"Blank":Fixture把它翻譯為一個Null 字元串.(它這樣做是因為一個實際是空的儲存格意味者"給我一個答案",如前面提到一樣)
  • 單詞"error": Fixture期望一個錯誤.如果錯誤發生,儲存格將標著綠色,不是正常的黃色.

這些跟隨你可以達到你自己目的的fixture.他們描述如下.簡單的說,他們是:

  • ColumnFixture
  • RowFixture
  • ActionFixture
  • SummaryFixture

ColumnFixture

ColumnFixture 是最簡單的一種編程fixture,也是最有用的一種,你應該經常使用ColumnFixture

一個ColumnFixture 是為表格裡的單行所表達的例子的.一個表可以包含多個執行個體,一行一個,見下面:

 

為什麼稱之為"column"fixture呢?因為表中的每列映射你的fixture裡的一個對象或者方法.FIT使用第二行列頭實現映射.

當一個列頭以括弧結尾,fixture調用一個方法,而不是設定一個變數.fixture看看從方法返回的值,然後把它和表裡面的值比較,然後根據情況著紅色獲綠色.

結果,所有這些使你編寫自己的ColumnFixture顯得幾乎微不足道的.描述了上面用C#編寫的Fixture:

 

ColumnFixtures從左至右,從上到下處理.根據上面的2個圖,它好像是你和客戶已經寫了類似如下的代碼:

 // Row 1 StandardHours = 40;     // the StandardHours column HolidayHours = 0;     // the HolidayHours column Wage = new Currency("20");     // the Wage column CompareResults(new Currency($800), Pay());  // the Pay() column

// Row 2 StandardHours = 45; HolidayHours = 0; Wage = new Currency("20"); CompareResults(new Currency($950), Pay());

// etc...

注意變數在行之間沒有清除.

後面的文章將對FIT的ColumnFixture和RowFixture兩個重要的類作介紹

(---Continued--)

以上來於來源http://fit.c2.com/wiki.cgi?ProgrammersQuickStartGuide,一部分自己所寫,一部分翻譯原文檔.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.