模型驅(qū)動(dòng)測(cè)試可以將需求與設(shè)計(jì)聯(lián)系起來(lái),幫助開(kāi)發(fā)人員以一種通用語(yǔ)言生成結(jié)果,將設(shè)計(jì)過(guò)程中的每個(gè)人聯(lián)系起來(lái)。這改善了工作流程并清楚地傳達(dá)了設(shè)計(jì)。
在系統(tǒng)和軟件測(cè)試社區(qū)中,生成基于代碼的結(jié)果被認(rèn)為是軟件測(cè)試的黃金標(biāo)準(zhǔn)。但是,軟件復(fù)雜性的增加和上市時(shí)間的縮短迫使許多組織重新考慮他們?nèi)绾翁幚頊y(cè)試過(guò)程。隨著基于模型的測(cè)試 (MBT) 的引入,開(kāi)發(fā)人員獲得了更快的自動(dòng)化流程,可以幫助他們獲得完整的模型和代碼覆蓋率。
即便如此,一些開(kāi)發(fā)人員認(rèn)為 MBT 未能達(dá)到預(yù)期,因?yàn)樗鼪](méi)有提供基于代碼的結(jié)果。然而,隨著 MBT 技術(shù)的最新進(jìn)展,這種看法不再準(zhǔn)確。新的 MBT 工具使測(cè)試人員能夠通過(guò)基于代碼的結(jié)果實(shí)現(xiàn)性能分析、內(nèi)存分析和代碼覆蓋。
模型驅(qū)動(dòng)測(cè)試 (MDT) 流程通過(guò)讓開(kāi)發(fā)人員在實(shí)際應(yīng)用程序上執(zhí)行場(chǎng)景并執(zhí)行這些測(cè)試來(lái)增強(qiáng)此工作流程。但關(guān)鍵問(wèn)題是開(kāi)發(fā)人員在運(yùn)行這些基于場(chǎng)景的測(cè)試時(shí)需要基于代碼的測(cè)試結(jié)果。
入門(mén)
MDT 方法可以幫助組織滿(mǎn)足緊縮的上市時(shí)間窗口,因?yàn)樗试S開(kāi)發(fā)人員使用他們?cè)O(shè)計(jì)時(shí)使用的相同語(yǔ)言進(jìn)行測(cè)試,即統(tǒng)一建模語(yǔ)言 (UML)。除了節(jié)省時(shí)間之外,MDT 還提供了另一個(gè)優(yōu)勢(shì),它以場(chǎng)景為需求,使測(cè)試與客戶(hù)的規(guī)范保持一致。
盡管 MDT 提供了許多好處,但批評(píng)者強(qiáng)調(diào)它有一個(gè)弱點(diǎn):缺乏基于代碼的測(cè)試結(jié)果,這對(duì)于調(diào)試故障、泄漏和性能差距至關(guān)重要。
在深入探討有關(guān)基于代碼的測(cè)試的問(wèn)題之前,讓我們解釋一下 MDT 過(guò)程?;?UML 的測(cè)試用例可以用許多不同的格式編寫(xiě),包括 UML 序列圖、流程圖,甚至代碼(使用斷言樣式語(yǔ)句)。簡(jiǎn)而言之,MDT 流程迫使開(kāi)發(fā)人員以上述格式之一閱讀他們的需求并基于它們?cè)O(shè)計(jì)場(chǎng)景。接下來(lái),將模型構(gòu)建到滿(mǎn)足這些場(chǎng)景的可執(zhí)行文件中。然后將原始場(chǎng)景轉(zhuǎn)變?yōu)闇y(cè)試。最后,在軟件經(jīng)過(guò) MDT 過(guò)程之后,這些相同的場(chǎng)景可以作為測(cè)試執(zhí)行。
使用傳統(tǒng)代碼和流程圖來(lái)捕獲測(cè)試用例行為
可以使用代碼或流程圖或序列圖來(lái)描述測(cè)試用例行為,提供比傳統(tǒng)編碼更高的生產(chǎn)力。使用代碼描述測(cè)試用例與目前描述測(cè)試用例的過(guò)程基本相同,不同之處在于,如圖1所示,測(cè)試用例需要關(guān)注刺激和預(yù)期結(jié)果。測(cè)試用例執(zhí)行的上下文是從模型中自動(dòng)生成的。
圖 1:開(kāi)發(fā)人員可以使用代碼來(lái)描述測(cè)試用例的純粹行為。
捕獲代碼中的測(cè)試用例行為并讓它執(zhí)行是利用 MDT 的最直接方法,而且風(fēng)險(xiǎn)最小且?guī)缀鯖](méi)有學(xué)習(xí)曲線(xiàn)。這種方法的另一個(gè)優(yōu)點(diǎn)是它允許輕松重用現(xiàn)有的基于代碼的測(cè)試用例。但是由于測(cè)試用例行為的邏輯通常很重要,開(kāi)發(fā)人員傾向于將測(cè)試用例描繪成非正式的流程圖。由于將流程圖映射到代碼相對(duì)簡(jiǎn)單,MDT 環(huán)境允許開(kāi)發(fā)人員將測(cè)試用例行為捕獲為流程圖,從該流程圖生成測(cè)試代碼,將其鏈接到測(cè)試架構(gòu),然后運(yùn)行測(cè)試。
將測(cè)試用例描述為流程圖,如圖 2 所示,具有與編碼相同的表達(dá)能力,但它更容易捕獲并與項(xiàng)目的所有利益相關(guān)者進(jìn)行溝通。
圖 2:在流程圖/活動(dòng)圖中比在代碼中更容易捕獲測(cè)試用例行為。
用序列圖描述測(cè)試用例行為
序列圖提供了在基于代碼的測(cè)試環(huán)境中很少使用的設(shè)計(jì)的獨(dú)特視圖。這些圖可以描述整個(gè)系統(tǒng)和與之交互的參與者之間的操作場(chǎng)景。在其他情況下,它們可能包括有關(guān)內(nèi)部設(shè)計(jì)組件之間消息的排序和交換的詳細(xì)信息。
在系統(tǒng)級(jí)分析期間,設(shè)計(jì)人員確定了許多高級(jí)需求,并且大多數(shù)行為需求被描述為序列圖。這構(gòu)成了系統(tǒng)分析師創(chuàng)建基本要求的許多變體以及基本要求的“未雨綢繆”排列的過(guò)程的基礎(chǔ)。此過(guò)程將作為序列圖捕獲的高級(jí)需求轉(zhuǎn)換為具體的測(cè)試用例。
開(kāi)發(fā)人員可以查看描述需求的序列圖并將其作為測(cè)試用例以交互方式應(yīng)用,將輸入注入被測(cè)系統(tǒng)并檢查輸出以查看它們是否與序列圖中定義的匹配。這些測(cè)試的來(lái)源包括記錄應(yīng)用程序的執(zhí)行并手動(dòng)編寫(xiě)它們。每個(gè)來(lái)源都有自己的好處。記錄執(zhí)行不測(cè)試需求,但有助于回歸測(cè)試。手寫(xiě)序列在測(cè)試需求中很有用。無(wú)論如何創(chuàng)建測(cè)試,都需要基于代碼的結(jié)果。
實(shí)現(xiàn)基于代碼的結(jié)果
今天的開(kāi)發(fā)人員可以通過(guò)多種方式獲得基于代碼的結(jié)果,所有這些都需要在某些工具中重寫(xiě)測(cè)試然后執(zhí)行。完成后,團(tuán)隊(duì)將收到結(jié)果。
對(duì)某些人來(lái)說(shuō),這似乎是一種完全合乎邏輯的方法,但是在使用這種測(cè)試方法時(shí)會(huì)發(fā)現(xiàn)一些問(wèn)題。首先,開(kāi)發(fā)人員必須確定原始需求與軟件可交付成果相匹配。要正確執(zhí)行此操作,開(kāi)發(fā)人員必須重寫(xiě)相同的基于場(chǎng)景的測(cè)試,否則代碼結(jié)果可能無(wú)法映射到需求。開(kāi)發(fā)人員需要能夠編寫(xiě)符合其要求的測(cè)試并實(shí)現(xiàn)完整的基于場(chǎng)景和代碼的結(jié)果。當(dāng)前的測(cè)試工具使這成為可能,因?yàn)榛?MDT 的工具執(zhí)行實(shí)際代碼。
鑒于這些進(jìn)步,為什么軟件測(cè)試社區(qū)遲遲沒(méi)有采用 MDT?這有幾個(gè)原因,首先是早期基于模型的測(cè)試沒(méi)有提供基于代碼的測(cè)試結(jié)果。此外,許多開(kāi)發(fā)人員需要代碼覆蓋率、內(nèi)存分析和性能分析指標(biāo)。當(dāng)工具缺乏這些功能時(shí),有些人會(huì)認(rèn)為 MDT 是一種負(fù)擔(dān)而不是解決方案,這是有道理的。
彌合這些差距是成功實(shí)施 MDT 的挑戰(zhàn)。市場(chǎng)上有幾種有效的基于代碼的測(cè)試工具,重新創(chuàng)建此功能為開(kāi)發(fā)人員喜歡的基于代碼的結(jié)果樣式提供了更少的選擇。另一種選擇是執(zhí)行基于模型的測(cè)試并包含基于代碼的結(jié)果。這是可能的,因?yàn)樵谶\(yùn)行基于模型的測(cè)試時(shí),開(kāi)發(fā)人員可以執(zhí)行實(shí)際代碼,而不是模擬。如果開(kāi)發(fā)人員使用基于代碼的測(cè)試工具來(lái)檢測(cè)代碼,則 MDT 可以運(yùn)行,并且結(jié)果將在完成時(shí)出現(xiàn)。
分布式開(kāi)發(fā),更好的代碼
尋找方法幫助分布式團(tuán)隊(duì)更好地協(xié)同工作,同時(shí)推動(dòng)高質(zhì)量的可交付成果是許多組織的首要任務(wù)。當(dāng)開(kāi)發(fā)過(guò)程采用 MDT 方法時(shí),團(tuán)隊(duì)可以實(shí)現(xiàn)基于代碼的測(cè)試結(jié)果。關(guān)鍵的支持技術(shù)是執(zhí)行實(shí)際應(yīng)用程序的 MDT 測(cè)試。這意味著使用可以直接提供測(cè)試結(jié)果的基于代碼的測(cè)試工具運(yùn)行 MDT 測(cè)試?;诖a的測(cè)試工具跟蹤正在執(zhí)行的應(yīng)用程序,使其成為最佳方法。
MDT 在改進(jìn)測(cè)試過(guò)程方面有著良好的記錄,但它沒(méi)有被廣泛采用,因?yàn)樗粫?huì)產(chǎn)生基于代碼的測(cè)試結(jié)果?,F(xiàn)在這是可能的,提供了兩全其美的優(yōu)勢(shì)——在 MDT 流程中輕松創(chuàng)建和理解測(cè)試——以及開(kāi)發(fā)人員可以使用的完整和徹底的測(cè)試結(jié)果。通過(guò)利用 MDT 方法的收益,開(kāi)發(fā)人員也可以得到他們的蛋糕并吃掉它。
審核編輯:郭婷
-
測(cè)試
+關(guān)注
關(guān)注
8文章
5354瀏覽量
126856 -
代碼
+關(guān)注
關(guān)注
30文章
4808瀏覽量
68814
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論