JUnit 假定測(cè)試的所有方面都是開發(fā)人員的地盤,而集成測(cè)試框架(FIT)在編寫需求的業(yè)務(wù)客戶和實(shí)現(xiàn)需求的開發(fā)人員之間做了協(xié)作方面的試驗(yàn)。這是否意味著 FIT 和 JUnit 是競(jìng)爭(zhēng)關(guān)系呢?不是!代碼質(zhì)量完美主義者 Andrew Glover 介紹了如何把 FIT 和 JUnit 兩者好的地方結(jié)合在一起,實(shí)現(xiàn)更好的團(tuán)隊(duì)工作和有效的端到端測(cè)試。
在軟件開發(fā)的生命周期中,每個(gè)人都對(duì)質(zhì)量負(fù)有責(zé)任。理想情況下,開發(fā)人員在開發(fā)周期中,用像 Junit 和 TestNG 這樣的測(cè)試工具保證早期質(zhì)量,而質(zhì)量保證團(tuán)隊(duì)用功能性系統(tǒng)測(cè)試在周期末端跟進(jìn),使用像 Selenium 這樣的工具。但是即使擁有的質(zhì)量保證,有些應(yīng)用程序在交付的時(shí)候仍然被認(rèn)為是質(zhì)量低下的。為什么呢?因?yàn)樗鼈儾]有做它們應(yīng)當(dāng)做的事。
在客戶、(編寫應(yīng)用程序需求的)業(yè)務(wù)部門和(實(shí)現(xiàn)需求的)開發(fā)團(tuán)隊(duì)之間的溝通錯(cuò)誤,通常是摩擦的原因,有時(shí)還是開發(fā)項(xiàng)目徹底失敗的常見原因。幸運(yùn)的是,存在一些方法可以幫助需求作者和實(shí)現(xiàn)者之間盡早 溝通。
下載 FIT
集成測(cè)試框架(FIT)初是由 Ward Cunningham 創(chuàng)建的,他是 wiki 的發(fā)明人。請(qǐng)?jiān)L問 Cunningham 的 Web 站點(diǎn)了解關(guān)于 FIT 的更多知識(shí)并 免費(fèi)下載它。
FIT 化的解決方案
集成測(cè)試框架 (FIT)是一個(gè)測(cè)試平臺(tái),可以幫助需求編寫人員和把需求變成可執(zhí)行代碼的人員之間的溝通。使用 FIT,需求被做成表格模型,充當(dāng)開發(fā)人員編寫的測(cè)試的數(shù)據(jù)模型。表格本身充當(dāng)輸入和測(cè)試的預(yù)期輸出。
圖 1 顯示了用 FIT 創(chuàng)建的結(jié)構(gòu)化模型。第一行是測(cè)試名稱,下一行的三列是與輸入(value1 和 value2)和預(yù)期結(jié)果(trend())有關(guān)的標(biāo)題。
圖 1. 用 FIT 創(chuàng)建的結(jié)構(gòu)化模型
好消息是,對(duì)于編程沒有經(jīng)驗(yàn)的人也能編寫這個(gè)表格。FIT 的設(shè)計(jì)目的是讓消費(fèi)者或業(yè)務(wù)團(tuán)隊(duì)在開發(fā)周期中,盡早與實(shí)現(xiàn)他們想法的開發(fā)人員協(xié)作。創(chuàng)建應(yīng)用程序需求的簡(jiǎn)單表格式模型,可以讓每個(gè)人清楚地看出代碼和需求是否是一致的。
清單 1 是與圖 1 的數(shù)據(jù)模型對(duì)應(yīng)的 FIT 代碼。不要太多地?fù)?dān)心細(xì)節(jié) —— 只要注意代碼有多么簡(jiǎn)單,而且代碼中沒有包含驗(yàn)證邏輯(例如,斷言等)?赡苓會(huì)注意到一些與表 1 中的內(nèi)容匹配的變量和方法名稱;關(guān)于這方面的內(nèi)容后面介紹。
清單 1. 根據(jù) FIT 模型編寫的代碼
package test.com.acme.fit.impl;
import com.acme.sedlp.trend.Trender;
import fit.ColumnFixture;
public class TrendIndicator extends ColumnFixture {
public double value1;
public double value2;
public String trend(){
return Trender.determineTrend(value1, value2).getName();
}
}
清單 1 中的代碼由研究上面表格并插入適當(dāng)代碼的開發(fā)人員編寫。后,把所有東西合在一起,F(xiàn)IT 框架讀取表 1 的數(shù)據(jù),調(diào)用對(duì)應(yīng)的代碼,并確定結(jié)果。
FIT 和 JUnit
FIT 的優(yōu)美之處在于,它讓組織的消費(fèi)者或業(yè)務(wù)端能夠盡早參與測(cè)試過程(例如,在開發(fā)期間)。JUnit 的力量在于編碼過程中的單元測(cè)試,而 FIT 是更高層次的測(cè)試工具,用來判斷規(guī)劃的需求實(shí)現(xiàn)的正確性。
例如,雖然 JUnit 擅長(zhǎng)驗(yàn)證兩個(gè) Money 對(duì)象的合計(jì)與它們的兩個(gè)值的合計(jì)相同,但 FIT 可以驗(yàn)證總的訂單價(jià)格是其中商品的價(jià)格減去任何相關(guān)折扣之后的合計(jì)。區(qū)別雖然細(xì)微,但的確重大!在 JUnit 示例中,要處理具體的對(duì)象(或者需求的實(shí)現(xiàn)),但是使用 FIT 時(shí)要處理的是高級(jí)的業(yè)務(wù)過程。