胡繼東,鞠煒剛
(中興通訊南京研究所,江蘇南京 210012)
基于領(lǐng)域驅(qū)動的測試用例設(shè)計開發(fā)方法研究
胡繼東,鞠煒剛
(中興通訊南京研究所,江蘇南京 210012)
隨著軟件產(chǎn)品的交付周期越來越短,敏捷研發(fā)模式的應(yīng)用范圍更加廣泛。為解決敏捷團(tuán)隊中測試用例設(shè)計、開發(fā)不能滿足產(chǎn)品持續(xù)快速交付的問題,采用領(lǐng)域驅(qū)動方法,從需求特性出發(fā),采用實例化需求的方法設(shè)計測試用例,然后對被測領(lǐng)域進(jìn)行建模,通過領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析用領(lǐng)域語言描述測試用例,對領(lǐng)域?qū)ο竽P瓦M(jìn)行分析,采用面向?qū)ο笤O(shè)計、開發(fā),通過不斷演進(jìn)和重構(gòu),迭代地完成測試用例的開發(fā)。一方面使得測試用例的組織、設(shè)計、開發(fā)更加有效,提高了測試用例的開發(fā)和維護(hù)效率,測試用例更加易于理解、清晰簡潔,能夠通過重構(gòu)快速應(yīng)對變化;另一方面可以采用ATTD的方法來驅(qū)動產(chǎn)品的開發(fā)。該方法在通信系統(tǒng)測試中得到了應(yīng)用推廣,取得了很好的效果。
測試用例;領(lǐng)域驅(qū)動;實例化需求;領(lǐng)域建模;面向?qū)ο?重構(gòu)
隨著市場競爭的加劇,軟件產(chǎn)品需要高質(zhì)量的持續(xù)快速交付,越來越多的團(tuán)隊采用敏捷[1]研發(fā)模式取得了不錯的效果,但隨著軟件產(chǎn)品的需求特性越來越復(fù)雜,傳統(tǒng)的測試用例設(shè)計、開發(fā)方法越來越不能適應(yīng)敏捷的要求,需要采用新的技術(shù)和方法。
文中提出了一種基于領(lǐng)域驅(qū)動的測試用例設(shè)計開發(fā)方法,該方法不僅有助于提高敏捷測試的效率,同時也可以驅(qū)動產(chǎn)品的需求特性開發(fā),繼而很好地滿足敏捷測試對持續(xù)快速質(zhì)量的保證。
在敏捷研發(fā)模式中將測試進(jìn)行前移,做到早發(fā)現(xiàn)、早解決故障,提高了效率;但測試用例設(shè)計、開發(fā)一直采用傳統(tǒng)方式[2]。
對于測試用例設(shè)計,在需求分析完成后才開始在迭代周期中進(jìn)行,需求分析和測試設(shè)計間存在拋接,不能滿足快速測試的要求,也很難應(yīng)對需求變化。
對于測試用例開發(fā),用例腳本由復(fù)雜的流程和實現(xiàn)細(xì)節(jié)表示,存在以下問題:
(1)測試用例腳本細(xì)節(jié)眾多,編寫速度慢,效率低,可讀性差。
(2)一旦實現(xiàn)變化就需要修改所有相關(guān)用例腳本,不能快速應(yīng)對變化。
針對上述測試設(shè)計、開發(fā)存在的問題,需要一種新的測試用例設(shè)計方法來解決,為此開發(fā)了基于領(lǐng)域驅(qū)動的測試用例設(shè)計方法,并在通信系統(tǒng)產(chǎn)品的測試中進(jìn)行了有效應(yīng)用。
2.1 理念與實踐全景
基于領(lǐng)域驅(qū)動的測試用例設(shè)計、開發(fā)的理念與實踐全景圖如圖1所示。
全景圖縱向分為目標(biāo)和理念以及方法、實踐、工具兩大部分,橫向分為測試用例設(shè)計和測試用例開發(fā)兩大階段。其目標(biāo)是在產(chǎn)品持續(xù)快速交付過程中保證產(chǎn)品質(zhì)量,其核心理念是需求和用例設(shè)計統(tǒng)一,由領(lǐng)域來驅(qū)動測試用例的設(shè)計和開發(fā)。為了達(dá)成目標(biāo),在核心理念的指導(dǎo)下,采用以下方法、實踐和工具:
(1)在測試用例設(shè)計階段,采用需求實例化方法。依次采用定系統(tǒng)、用戶目的分析、劃分場景和功能分析等技術(shù)實踐,使用基于思維導(dǎo)圖的工具進(jìn)行具體設(shè)計,UML[3-4]作為輔助工具進(jìn)行分析。
(2)在測試用例開發(fā)階段,采用領(lǐng)域建模和用例/關(guān)鍵字開發(fā)方法[5-6]。其中,領(lǐng)域建模采用領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析和領(lǐng)域?qū)ο竽P头治鰞蓚€核心的分析方法;用例/關(guān)鍵字開發(fā)采用模型驅(qū)動設(shè)計、TDD[7]和面向?qū)ο蟮燃夹g(shù)實踐。
(3)在測試用例設(shè)計和開發(fā)整個過程中,隨著需求特性的增加采用演進(jìn)式設(shè)計,不斷進(jìn)行重構(gòu)和優(yōu)化。結(jié)對是一個重要的技術(shù)實踐,在測試用例設(shè)計和開發(fā)過程中用戶、BA、測試SE、QA進(jìn)行結(jié)對,測試建模專家全程參與。
2.2 實例化需求
實例化需求[8]是需求分析的一種方法,它的分析過程是以用例驅(qū)動、以場景為中心、迭代和增量的,并且采用聚焦“用戶目的”和“使用場景”的描述方式。
在傳統(tǒng)分析方式中,對需求過早的抽象導(dǎo)致有價值信息的丟失,可能會導(dǎo)致功能放大,方案過于復(fù)雜,不利于形成共識和傳遞,采用實例化方法后實例成為需求傳遞的橋梁,在規(guī)劃、開發(fā)和測試間形成統(tǒng)一語言,也是對有效性和正確性驗收的標(biāo)準(zhǔn)。
從測試角度來看,采用實例化需求,測試用例的設(shè)計可以和需求分析過程有效統(tǒng)一起來,一方面測試設(shè)計提前,需求實例直接就是驗收測試用例,另一方面可以很好地適應(yīng)敏捷迭代中需求的變化。
2.3 領(lǐng)域建模
領(lǐng)域建模從測試系統(tǒng)的領(lǐng)域模型出發(fā),從測試角度進(jìn)行建模,逐步分析出領(lǐng)域的測試模型,是測試用例開發(fā)重要的基礎(chǔ)。
在建模時應(yīng)通過研討發(fā)現(xiàn)領(lǐng)域模型的關(guān)鍵性概念和元素以及描述它們的通用語言,這種語言應(yīng)該具有一致性,必須消除歧義和混亂,并且能夠清晰準(zhǔn)確地交流[9-10]。
領(lǐng)域建模首先要從測試用例出發(fā)進(jìn)行領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析,逐層分析出測試領(lǐng)域的關(guān)鍵字結(jié)構(gòu)模型樹,然后在此基礎(chǔ)上逐步分析出領(lǐng)域?qū)ο竽P停麄€分析過程是演進(jìn)式和不斷優(yōu)化的。
2.4 演進(jìn)式設(shè)計和重構(gòu)
需求特性是不斷增長和變化的,測試用例設(shè)計和開發(fā)也需要進(jìn)行演進(jìn)式設(shè)計和重構(gòu)[11]。其中,領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹是隨著測試用例的增加演進(jìn)式生長的,而領(lǐng)域?qū)ο竽P蛣t隨著關(guān)鍵字結(jié)構(gòu)模型樹的生長而演進(jìn),領(lǐng)域?qū)ο竽P驮诮r切勿大而全。
采用實例化需求方法,測試設(shè)計提前,和需求分析融合,需求實例直接就是驗收測試用例,同時隨著迭代過程中需求發(fā)生變化,用例直接適應(yīng)這種變化。實例化需求主要由用戶、BA、測試SE、QA一起結(jié)對完成,建模人員和DEV參與,在這個過程中用戶是領(lǐng)域?qū)<摇嵗枨蟮幕玖鞒倘鐖D2所示。
需求是用戶為解決問題或達(dá)成業(yè)務(wù)目標(biāo),要求系統(tǒng)提供的功能或滿足的非功能性約束。需求有三個重要因素:用戶目的、系統(tǒng)(承接者)和功能要求。因此需求實例化基本流程也是圍繞這三個要素展開,依次是定系統(tǒng)、用戶目的分析(找用戶、問目的)、功能要求分析(畫場景、設(shè)功能),其中在功能要求分析中要確定驗收準(zhǔn)則和用戶接口定義。
3.1 定系統(tǒng)
實例化需求的第一步是定系統(tǒng)。首先用戶介紹背景,包括要解決的基本問題和達(dá)成的總體業(yè)務(wù)目標(biāo),然后結(jié)對繪制系統(tǒng)架構(gòu),包括物理實體關(guān)系和邏輯結(jié)構(gòu)以及新舊差異。然后劃定系統(tǒng)邊界,這里系統(tǒng)邊界是指能力邊界而非物理邊界,即待開發(fā)、測試的系統(tǒng),并達(dá)成一致共識。
3.2 用戶目的分析
實例化需求的第二步是用戶目的分析,分為找用戶和問目的兩個步驟。
首先是找用戶,用戶是外部使用系統(tǒng)的角色,具有以下三個重要特征:
(1)系統(tǒng)之外通過系統(tǒng)邊界與系統(tǒng)進(jìn)行有意義交互的任何事物,可以是人、設(shè)備和系統(tǒng);
(2)是系統(tǒng)行為和流程的觸發(fā)者; (3)必須是直接使用系統(tǒng)的用戶。
對于一些系統(tǒng)可以用干系人法直接找到用戶,對于較復(fù)雜的新領(lǐng)域系統(tǒng),找用戶可以采用流程法,畫出各種業(yè)務(wù)流程,從流程中尋找相關(guān)的用戶,從用戶角度來畫,通過外部交互體現(xiàn)輸入、輸出。
然后是問目的,可以從Want(表象)、Need(背后的動機和訴求),由淺及深兩個層次來探尋用戶目的。其中Want層次目的不少是易變化的,可能是以解決方案形式呈現(xiàn)的,需要通過挖掘探尋來理解Need層次背后的動機和訴求。
尋找目的可以從業(yè)務(wù)目的、管理目的和維護(hù)目的三個維度進(jìn)行,其中業(yè)務(wù)目的是關(guān)注業(yè)務(wù)目標(biāo)本身,管理目的是關(guān)注業(yè)務(wù)目標(biāo)達(dá)成的過程,而維護(hù)目的則關(guān)注的是業(yè)務(wù)目標(biāo)的過程評估與監(jiān)控。對每個維度又可以從關(guān)注點和擔(dān)憂點兩個角度來分析,關(guān)注點是希望通過系統(tǒng)解決的問題,而擔(dān)憂點是擔(dān)憂系統(tǒng)會帶來的影響,避免出現(xiàn)的問題。
3.3 場景功能分析
實例化需求的第二步是場景功能分析,又分為畫場景和設(shè)功能兩個步驟。
(1)畫場景。
針對已分析用戶的每個目的進(jìn)行場景分析,畫出各種場景,可以根據(jù)不同的業(yè)務(wù)特點采用不同形式,如時序圖、活動圖、數(shù)據(jù)流圖等。獲得基本場景后再根據(jù)變化和挑戰(zhàn),從橫向和縱向兩個方面來擴展新的場景,對于變化一般主要有:時間、地點和周邊的變化;對于挑戰(zhàn)一般有:困難、業(yè)務(wù)變化、系統(tǒng)異常和威脅等;此外還可以從上下游、協(xié)作等角度來擴充場景。
(2)設(shè)功能。
針對每一個場景進(jìn)行深度遍歷,逐步細(xì)化功能點,完成需求實例并給出相應(yīng)的驗收條件,同時也完成了測試用例設(shè)計??梢圆捎盟季S導(dǎo)圖工具來對測試用例全景圖進(jìn)行描述。
在使用實例化需求方法完成測試用例設(shè)計后,就可以用領(lǐng)域建模方法進(jìn)行測試用例開發(fā)了,主要步驟是:領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析、領(lǐng)域?qū)ο竽P头治?、面向?qū)ο笤O(shè)計和開發(fā),在完成測試用例開發(fā)的同時,還可以應(yīng)用ATTD方法來驅(qū)動產(chǎn)品開發(fā)。
4.1 領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析
領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析由建模人員、DEV、測試SE、QA來一起結(jié)對研討完成,建模人員進(jìn)行引導(dǎo),可以從核心測試用例出發(fā),逐步分析出領(lǐng)域的關(guān)鍵字結(jié)構(gòu)模型樹,具體方法如下:
(1)初始化領(lǐng)域關(guān)鍵字結(jié)構(gòu)樹。
首先對最核心的測試用例進(jìn)行分析,分層次生成一棵關(guān)鍵字結(jié)構(gòu)模型樹。從用戶角度出發(fā),描述第一層次的領(lǐng)域關(guān)鍵字步驟,這里采用自然語言的方式,用通用語言來描述,需要注意的是關(guān)鍵字是從做什么的角度來描述,而不考慮實現(xiàn)細(xì)節(jié),采用對象+動作的方式,第一層次從大的步驟方面來描述,不考慮細(xì)節(jié)。然后對第一層次的各領(lǐng)域關(guān)鍵字根據(jù)需要再進(jìn)行分解拆分,形成第二層次的領(lǐng)域關(guān)鍵字,逐層展開,一直到最底層節(jié)點,如果一個節(jié)點的領(lǐng)域關(guān)鍵字可以使用基礎(chǔ)設(shè)施來完成,就不用再分解展開了。
(2)擴展領(lǐng)域關(guān)鍵字結(jié)構(gòu)樹。
根據(jù)核心測試用例初始化領(lǐng)域關(guān)鍵字結(jié)構(gòu)樹后,再按優(yōu)先級對其他測試用例進(jìn)行逐步分析,根據(jù)需要在已有關(guān)鍵字結(jié)構(gòu)模型樹上進(jìn)行擴展。對于測試用例還是先分析出第一層次的領(lǐng)域關(guān)鍵字,然后逐層展開,對于已經(jīng)在領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹中存在的關(guān)鍵字,則直接使用,對于不存在的領(lǐng)域關(guān)鍵字,則需要加入關(guān)鍵字結(jié)構(gòu)模型樹,并進(jìn)行分層展開分析。
通過對各個測試用例的逐個分析,最終生成一棵全領(lǐng)域的關(guān)鍵字結(jié)構(gòu)模型樹,由兩個測試用例生成的模型樹如圖3所示。
整個分析過程是由測試用例來驅(qū)動的,是演進(jìn)式逐步迭代完成的。在開發(fā)過程中,可以直接在Robot-Framework工具上寫測試用例,將測試用例用領(lǐng)域關(guān)鍵字逐層進(jìn)行組織,然后一步步驅(qū)動實現(xiàn)。在領(lǐng)域關(guān)鍵字拆分方面還需要遵循兩個基本原則:領(lǐng)域關(guān)鍵字一定是語義明確、清晰的;領(lǐng)域關(guān)鍵字是具有一定可復(fù)用性的[12]。
對于領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析有以下關(guān)鍵技巧:
①向上整合和向下細(xì)化。關(guān)鍵字結(jié)構(gòu)模型樹可以根據(jù)需要進(jìn)行向上整合和向下細(xì)化,形成更高層次和更低層次的領(lǐng)域關(guān)鍵字,高層關(guān)鍵字提供易用性,而低層關(guān)鍵字提供靈活性,通過關(guān)鍵字結(jié)構(gòu)模型樹可以輕松進(jìn)行。
②修剪。隨著領(lǐng)域建模的深入,對關(guān)鍵字結(jié)構(gòu)模型樹需要進(jìn)行修剪,刪除一些可能重復(fù)的關(guān)鍵字,對于一些幾乎只在一處使用的關(guān)鍵字也可以根據(jù)需要進(jìn)行裁剪。
采用領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹分析方法后,可以將各節(jié)點的關(guān)鍵字落實到相關(guān)開發(fā)人員進(jìn)行狀態(tài)跟蹤,同時對關(guān)鍵字的開發(fā)、組裝、聯(lián)調(diào)提供了良好的視圖。
4.2 領(lǐng)域?qū)ο竽P头治?/p>
在完成領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型分析之后可以進(jìn)行領(lǐng)域?qū)ο竽P头治觯@一步由建模人員、DEV結(jié)對完成。領(lǐng)域?qū)ο竽P褪腔陬I(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹進(jìn)行分析的,目標(biāo)是分析出實現(xiàn)關(guān)鍵字結(jié)構(gòu)模型的領(lǐng)域?qū)ο竽P?,為后續(xù)的領(lǐng)域關(guān)鍵字實現(xiàn)提供依據(jù),具體的分析方法如下:
(1)識別領(lǐng)域?qū)ο蟆?/p>
從領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型的根節(jié)點出發(fā)對結(jié)構(gòu)樹進(jìn)行遍歷,一般按層次遍歷,不考慮細(xì)節(jié)。首先從領(lǐng)域關(guān)鍵字中逐層挖掘出核心的領(lǐng)域?qū)ο?,由于是按層次遍歷,一般是先識別出高層次的領(lǐng)域?qū)ο?,然后是低層次的領(lǐng)域?qū)ο蟆?/p>
(2)識別對象的關(guān)鍵行為、屬性和關(guān)系。
再次層次遍歷,分析每個領(lǐng)域關(guān)鍵字的動作行為,從中發(fā)現(xiàn)相應(yīng)領(lǐng)域?qū)ο笮枰峁┑暮诵姆椒ê蛯傩?,同時需要分析本領(lǐng)域?qū)ο蠛推渌I(lǐng)域?qū)ο笾g的相互關(guān)系,這包括了關(guān)聯(lián)關(guān)系、聚合關(guān)系、組合關(guān)系、依賴關(guān)系、繼承關(guān)系等。
(3)分析領(lǐng)域?qū)ο蟮慕换ァ?/p>
對第一層的每個關(guān)鍵字進(jìn)行逐層展開,直到最底層,通過對業(yè)務(wù)流程細(xì)節(jié)的分析,分析領(lǐng)域關(guān)鍵字如何通過現(xiàn)有對象模型的領(lǐng)域?qū)ο笙嗷ソ换f(xié)作來實現(xiàn)其功能,如果有必要,還需要引入一些新增對象(領(lǐng)域?qū)ο蠡蜉o助對象)或者在已有對象上增加行為、屬性來實現(xiàn)。
4.3 模型驅(qū)動設(shè)計和面向?qū)ο箝_發(fā)
在領(lǐng)域?qū)ο竽P头治鰰r,采用模型驅(qū)動設(shè)計方法,將模型和設(shè)計緊密聯(lián)系,進(jìn)行綁定,不再分離,在一起共同迭代。模型驅(qū)動設(shè)計應(yīng)遵循以下原則:
(1)模型是設(shè)計的基礎(chǔ),應(yīng)支持有效的設(shè)計,否則模型將不實用,設(shè)計就可能脫離模型,模型和設(shè)計漸行漸遠(yuǎn);
(2)設(shè)計應(yīng)該反映領(lǐng)域模型;
(3)設(shè)計過程中總會發(fā)現(xiàn)一些關(guān)鍵的知識點和細(xì)節(jié),需要反饋補充模型;
(4)模型驅(qū)動設(shè)計,并不是考慮純粹的技術(shù)細(xì)節(jié),不能因技術(shù)問題削弱模型。
采用面向?qū)ο笤O(shè)計可以有效地將領(lǐng)域模型映射為實現(xiàn)對象,同時可以采用面向?qū)ο笤O(shè)計的一些原則,使用一些設(shè)計模式,達(dá)到優(yōu)化設(shè)計的目的[13-15]。
4.4 應(yīng)用ATTD驅(qū)動產(chǎn)品開發(fā)
根據(jù)ATTD的思想,從驗收測試用例驅(qū)動產(chǎn)品開發(fā),主要采用以下步驟:
(1)在詳細(xì)的迭代計劃會議之前,在需求研討會上討論需求特性,用需求實例化方法將需求特性用驗收測試用例表示;
(2)實現(xiàn)測試用例/產(chǎn)品需求的任務(wù)分別在詳細(xì)的迭代計劃會議上創(chuàng)建,并在迭代中并行開發(fā)實現(xiàn),所有的活動幾乎同時開展,包括測試領(lǐng)域和產(chǎn)品領(lǐng)域并行建模,測試用例和產(chǎn)品需求并行開發(fā)、測試等;
(3)通過驗收測試在迭代演示會議上交付驗收并討論。
在測試某產(chǎn)品需求特性“QoS策略控制專用承載”時,采用了基于領(lǐng)域驅(qū)動的測試用例設(shè)計開發(fā)方法。首先采用需求實例化方法進(jìn)行測試用例設(shè)計,用思維導(dǎo)圖畫出測試用例全景,如圖4所示,這里僅畫出最核心的部分。
如圖4所示,QoS策略控制專用承載是需求特性,分為網(wǎng)絡(luò)和用戶發(fā)起控制兩大場景,其中網(wǎng)絡(luò)發(fā)起的又分為承載建立和修改兩大子場景,在網(wǎng)絡(luò)發(fā)起的專用承載建立子場景中,又分為采用QoS策略1和策略2兩個功能,分別對應(yīng)兩個測試用例,進(jìn)一步可以描述其驗收條件。
接下來從核心測試用例出發(fā)逐步分析出領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹,以圖4中的2個測試用例為例,領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹如圖5所示。
從上述領(lǐng)域關(guān)鍵字結(jié)構(gòu)模型樹出發(fā),分析出領(lǐng)域?qū)ο竽P?,并采用面向?qū)ο蠓椒ㄟM(jìn)行了實現(xiàn),迭代完成了需求特性所有測試用例的開發(fā),并驅(qū)動了QoS策略控制專用承載需求特性的開發(fā),及時有效地進(jìn)行了驗收。而且在迭代過程中能夠快速適應(yīng)需求的變化和接口命令的調(diào)整,持續(xù)快速地保證了需求特性的高質(zhì)量交付,比采用傳統(tǒng)方法整個交付周期縮短了近二分之一,質(zhì)量提升明顯。
基于領(lǐng)域驅(qū)動的測試用例設(shè)計、開發(fā)方法是一種通用方法,在產(chǎn)品需求階段用需求實例化方法進(jìn)行需求分析的同時完成測試用例設(shè)計,在迭代周期中根據(jù)產(chǎn)品需求特性開發(fā)的優(yōu)先級,從相應(yīng)的測試用例出發(fā)進(jìn)行測試領(lǐng)域建模,逐步演進(jìn)式地完成測試用例和領(lǐng)域關(guān)鍵字的開發(fā),并同時驅(qū)動產(chǎn)品需求的開發(fā),進(jìn)行驗收測試,很好地滿足了敏捷測試對持續(xù)快速質(zhì)量保證的要求。
未來可以從測試領(lǐng)域建模和產(chǎn)品需求領(lǐng)域建模的結(jié)合方面繼續(xù)進(jìn)行一些探索和研究。
[1] 陳國棟,羅省賢.Scrum敏捷軟件開發(fā)方法實踐中的改進(jìn)和應(yīng)用[J].計算機技術(shù)與發(fā)展,2011,21(12):97-99.
[2] 郭 群.軟件測試設(shè)計技術(shù)[J].電腦知識與技術(shù):學(xué)術(shù)交流,2007(9):1323-1324.
[3] Roff J T.UML a beginner’s guide[M].張 瑜,譯.北京:清華大學(xué)出版社,2003:9-13.
[4] 冀振燕.UML系統(tǒng)分析設(shè)計與應(yīng)用案例[M].北京:人民郵電出版社,2003.
[5] 王 君,朱美正,李 欣.關(guān)鍵字驅(qū)動測試框架的研究與實現(xiàn)[J].計算機工程與設(shè)計,2010,31(10):2246-2248.
[6] 馮玉才,唐 艷,周 淳.關(guān)鍵字驅(qū)動自動化測試的原理和實現(xiàn)[J].計算機應(yīng)用,2004,24(8):140-142.
[7] Beck K.Test-driven development by example[M].Upper Saddle River:Addison Wesley,2003:95-128.
[8] Adzic G.實例化需求[M].北京:人民郵電出版社,2012.
[9] Evans E.領(lǐng)域驅(qū)動設(shè)計[M].北京:人民郵電出版社,2010.
[10]易利濤,周肆清,丁長松.信息抽取中領(lǐng)域本體建模方法研究[J].計算機技術(shù)與發(fā)展,2011,21(10):23-27.
[11]付友濤,許林英.軟件工程新方法-軟件重構(gòu)[J].微型機與應(yīng)用,2003,22(10):4-6.
[12]Sametinger J.Software engineering with reusable components [M].Berlin,Germany:Springer-Verlag,1997.
[13]邵維忠,楊芙清.面向?qū)ο蟮南到y(tǒng)設(shè)計[M].北京:清華大學(xué)出版社,2003:160-174.
[14]Szysperski C.Component software:beyond object-oriented programming[M].[s.l.]:Addison Wesley,2002.
[15]屈喜龍.UML及面向?qū)ο蟮姆治雠c設(shè)計的研究[J].計算機應(yīng)用研究,2005,22(9):74-76.
Research on Test Cases Design and Development Method Based on Domain-driven
HU Ji-dong,JU Wei-gang
(ZTE Nanjing Institute,Nanjing 210012,China)
As the delivery period of software products becomes shorter,the application scope of agile R&D mode becomes wider.In order to solve the problem that test case design and development in agile teams cannot satisfy the requirement of constant rapid product delivery,the domain-driven method is adopted,and test case is designed based on feature requirements by using instantiation.Then the test domains is modeled,and test cases is described in domain language by using the domain keyword structure,and domain object model is analyzed,using design and development of object-oriented mode for implementing test cases in iterations via continuous evolution and refactoring.On the one hand,this method makes organization,design and development of test cases more efficient,thus improving efficiency in development and maintenance of test cases,and test cases become easy to understand,clear and concise,which satisfy quick changes requirements by using restructuring.On the other hand,it allows driving product development by using ATTD method.Thus,it is widely deployed in telecommunication system tests with good results.
test case;domain driven;specification by example;domain modeling;object-oriented;restructuring
TP301
A
1673-629X(2016)09-0056-05
10.3969/j.issn.1673-629X.2016.09.013
2015-10-06< class="emphasis_bold">修回日期:2
2016-02-24< class="emphasis_bold">網(wǎng)絡(luò)出版時間:
時間:2016-08-23
國家自然科學(xué)基金資助項目(61402482)
胡繼東(1979-),男,碩士研究生,工程師,研究方向為軟件測試、敏捷測試。
http://www.cnki.net/kcms/detail/61.1450.TP.20160823.1359.040.html