版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第18章測試策略模模式18.1 記錄錄測試(也稱為為記錄與與回放測測試、機機器人用用戶測試、捕獲獲/回放測測試)如何準備軟軟件的自自動化測測試?通過記錄與與應用程程序的交交互并使使用測試試工具回回放它們們來自動動化測試試。圖18-11 記記錄測試試示意圖圖自動化測試試有幾個個目的。在在回歸測測試軟件件更改之之后,它們可可以用于于這些軟軟件。它它們有助助于歸檔檔軟件的的行為。在在寫軟件件之前,它它們可以以指定其其行為。如如何準備備自動化化測試腳腳本,對對可以將將它們用用于什么么目的、它它們對SSUT中中的變更更有多健健壯以及及準備它它們需要要多少技技能與努努力等產(chǎn)產(chǎn)生影響響。記錄測試使使得能夠夠
2、在構(gòu)建建SUTT之后、改改變它之之前迅速速創(chuàng)建回回歸測試試。18.1.1 運行原原理我們使用一一種工具具,它會監(jiān)監(jiān)控我們們與SUUT的交交互。這這種工具具記錄大大多數(shù)SSUT對對我們的的通信以以及我們們對SUUT的響響應。錄錄音會話話完成之之后,可可以將它它保存在在文件里里以便稍稍后回放放。準備備運行測測試時,可可以從工工具的“回放”部分開開始,并并讓它指指向錄音音會話。它它啟動SSUT,并并給它提提供響應應SUTT輸出的的記錄輸輸入。在在錄音會會話內(nèi),它也可可以比較較SUTT的輸出出及其響響應。錯錯誤匹配配可能導導致測試試失敗。有些記錄測測試工具具允許調(diào)調(diào)整錄音音會話內(nèi)內(nèi)SUTT表現(xiàn)與與回放
3、過過程中SSUT表表現(xiàn)之間間比較的的敏感性性。大多多數(shù)記錄錄測試工工具通過過用戶界界面與SSUT交交互。18.1.2 使用時時機如果應用程程序正在在運行,但不希希望對它它進行太太多變更更,就可以以使用記記錄測試試進行回回歸測試試。現(xiàn)有有應用程程序需要要重構(gòu)(預計修修改功能能性)而而沒有可可用的腳腳本測試試用作回回歸測試試時,也也可以使使用記錄錄測試。通通常,生生成一組組記錄測測試比準準備具有有相同功功能性的的腳本測測試更快快。在理理論上,任任何知道道如何運運行應用用程序的的人都可可以完成成測試記記錄,幾幾乎不需需要專業(yè)業(yè)技術(shù)。實實際上,許許多商業(yè)業(yè)工具都都值得深深入學習習。同時時,需要要一些專
4、專業(yè)技術(shù)術(shù)來添加加“檢查點點”,以便便調(diào)整回回放工具具的敏感感性,或或者調(diào)整整測試腳腳本(如如果記錄錄工具記記錄了錯錯誤信息息)。大多數(shù)記錄錄測試工工具通過過用戶界界面與SSUT交交互。如如果SUUT的用用戶界面面不斷發(fā)發(fā)展,這這種方法法特別容容易讓它它們變得得脆弱(接口敏敏感性,參參見“脆弱測測試”)。甚甚至是小小的變更更(例如如改變按按鈕或字字段的內(nèi)內(nèi)部名稱稱)也足足以讓回回放工具具產(chǎn)生錯錯誤。這這些工具具也傾向向于在低低級別詳詳細記錄錄信息,這這樣會讓讓測試難難以理解解(參見見“模糊測測試”)。因因此,如如果對SSUT的的變更中中止了這這些工具具,也很很難手動動修復它它們。所所以,如如果
5、SUUT不斷斷發(fā)展,就就要準備備有規(guī)律律地再記記錄測試試。如果要使用用作為文文檔的測測試或者者要使用用這些測測試驅(qū)動動新的開開發(fā),就應該該考慮使使用腳本本測試。使使用商業(yè)業(yè)記錄測測試工具具難以實實現(xiàn)這些些目標,因因為大多多數(shù)工具具不允許許定義用用于測試試記錄的的高級語語言。將將記錄測測試性能能構(gòu)建到到應用程程序本身身之中或或者使用用重構(gòu)的的記錄測測試可以以解決這這個問題題。變體:重構(gòu)構(gòu)的記錄錄測試這兩種策略略的混合合是,使使用“記錄、重重構(gòu)、回回放”1 名稱“記錄、重構(gòu)、回放”是Adam Geras提出來的。順序從從最新記記錄測試試中提取取一組“動作組組件”或“動詞”,然后通通過測試試用例來來
6、調(diào)用這這些“動作組組件”(而不是是使用詳詳細的內(nèi)內(nèi)聯(lián)代碼碼)。大大多數(shù)商商業(yè)捕獲獲/回放工工具提供供將字面面值轉(zhuǎn)換換為參數(shù)數(shù)的方法法,主要要的測試試用例可可以將這這些參數(shù)數(shù)傳遞到到“動作組組件”。屏幕幕改變時時,只需需再記錄錄“動作組組件”,所有有測試用用例自動動使用新新的“動作組組件”定義繼繼續(xù)運行行。這種種策略在在效能上上與使用用測試實實用程序序方法與與單元測測試中的的SUTT交互相相同。它它允許使使用重構(gòu)構(gòu)的記錄錄測試組組件作為為腳本測測試中的的高級語語言。像像Merrcurry IInteeracctivve的BPTT2 BPT是“業(yè)務進程測試(Business Process Tes
7、ting)”的縮寫。這樣的的工具以以自頂向向下的方方法將這這一范式式用于腳腳本測試試。開發(fā)發(fā)完高級級腳本并并指定了了測試步步驟所需需的組件1 名稱“記錄、重構(gòu)、回放”是Adam Geras提出來的。2 BPT是“業(yè)務進程測試(Business Process Testing)”的縮寫。18.1.3 實現(xiàn)方方式說明明使用記錄測測試策略略時,有兩種種基本選選擇:可可以獲得得第三方方工具,它它記錄與與應用程程序交互互時發(fā)生生的通信信;可以以將“記錄與與回放”機制內(nèi)內(nèi)置于應應用程序序。1. 變體體:外部測測試記錄錄在商業(yè)上有有許多測測試記錄錄工具可可用,每種工工具都有有自身的的優(yōu)缺點點。最好好的選擇擇
8、取決于于應用程程序用戶戶接口的的性質(zhì)、預預算、要要驗證的的功能性性的復雜雜性以及及其他可可能的因因素。如果要使用用測試來來驅(qū)動開開發(fā),就需要要挑選使使用測試試記錄文文件格式式的工具具,這種格格式可以以手動編編輯且易易于理解解。需要要手動編編寫內(nèi)容容,如果果使用“記錄與與回放”工具來來執(zhí)行測測試,這這種情況況也還是是腳本測測試的示示例。2. 變體體:內(nèi)置測測試記錄錄也可以將記記錄測試試性能內(nèi)內(nèi)置于SSUT。在在那種情情況下,可可以用相相當高的的級別定定義測試試腳本“語言”,級別別足夠高高,就可可以在構(gòu)構(gòu)建系統(tǒng)統(tǒng)之前手手動編寫寫測試。實實際上,有有報告說說Miccrossoftt Exxcell電
9、子數(shù)數(shù)據(jù)表的的VBA宏宏性能是是Exccel自自動化測測試機制制的開端端。18.1.4 示例:內(nèi)置測測試記錄錄從表面上看看,提供記記錄測試試的代碼碼樣本沒沒有意義義,因為這這種模式式處理生生成測試試的方法法,而不是是表示它它的方法法?;胤欧艤y試時時,實際際上就是是數(shù)據(jù)驅(qū)驅(qū)動測試試。同樣樣,通常常不重構(gòu)構(gòu)到記錄錄測試,因因為它經(jīng)經(jīng)常是項項目嘗試試的第一一種測試試自動化化策略。而而且,如如果發(fā)現(xiàn)現(xiàn)有過多多遺漏的的測試,還還可以在在嘗試腳腳本測試試之后引引入記錄錄測試,因因為手動動自動化化的成本本太高。在在那種情情況下,不不應該試試圖將現(xiàn)現(xiàn)有腳本本測試轉(zhuǎn)轉(zhuǎn)換為記記錄測試試,應該該記錄新新測試。下面是
10、應用用程序本本身記錄錄的測試試的示例例。該測測試用來來回歸測測試安全全關(guān)鍵的的應用程程序,并并且在它它從OSS2上的的C移植到到Winndowws上的的C+之后。請請注意,記記錄的信信息如何何形成用用戶易于于理解的的域?qū)S糜酶呒壵Z語言。 55566 SOOUTHH SSOUTTH NNORTTH SSOUTTH NNORTTH 該樣本表示示回放測測試的輸輸出。內(nèi)內(nèi)置回放放機制插插入了aactuual元元素。sstattus屬屬性表示示這些元元素是否否匹配eexpeecteed值。將樣樣式表應應用于這這些文件件來格式式化它們們,就像像具有彩彩色編碼碼結(jié)果的的Fitt測試一一樣。然然后項目目的商業(yè)
11、業(yè)用戶可可以進行行記錄、回回放和結(jié)結(jié)果分析析。在軟件的表表示層插插入掛鉤鉤可以記記錄用戶戶和用戶戶響應提提供的選選項列表表。其中中一個掛掛鉤的示示例如下下所示:if (pplayybacck_iis_oon() choicce = geet_cchoiice_forr_pllaybbackk(diialoog_iid, chooicees_llistt); elsse choicce = diispllay_diaalogg(chhoicces_lisst, roww, ccol, tiitlee, kkey); if (rrecoordiing_is_on() recorrd_cchoiic
12、e(diaalogg_idd, cchoiicess_liist, chhoicce, keyy); 方法gett_chhoicce_ffor_plaaybaack檢檢索ussed-vallue元元素的內(nèi)內(nèi)容,而不是是要求用用戶從選選項列表表中選取取。方法法reccordd_chhoicce生成成acttuall元素并并“斷言”exppectted元元素,記錄各各元素sstattus屬屬性的結(jié)結(jié)果。注注意,當處于于回放模模式時,recording_is_on()返回true以便記錄測試結(jié)果。18.1.5 示例:商業(yè)記記錄與回回放測試試工具幾乎有所商商業(yè)測試試工具都都使用“記錄與與回放”隱喻。每
13、每種工具具都定義義自己的的記錄測測試文件件格式,其其中大多多數(shù)都非非常冗長長。下面面是使用用Merrcurry IInteeracctivve的QuiickTTestt Prrofeessiionaal QTPP工具具記錄的的測試的的“簡短”摘要。它它顯示于于“專家視視圖”中,該視圖圖表示真真正記錄錄的內(nèi)容容:VbSScriipt程程序!該該示例包包括手動動插入的的注釋(前綴為為)來說明明測試在在做什么么,如果改改變導致致測試不不再運行行的應用用程序之之后記錄錄測試,那么就就會丟失失這些注注釋。 GooToPPageeMaiintaainTTaxoonommy()Browsser(Innf).
14、Paage(Innf).WeebBuuttoon(Loggin).CClicckBrowsser(Innf).Paage(Innf_22).Cheeck CheeckPPoinnt(Inff_2)Browsser(Innf).Paage(Innf_22).Liink(TAAXONNOMYY LIINKIING).CClicckBrowsser(Innf).Paage(Innf_33).Cheeck CheeckPPoinnt(Inff_3)Browsser(Innf).Paage(Innf_33).Linnk(MAIINTAAIN TAXXONOOMY).CClicckBrowsser(Inn
15、f).Paage(Innf_44).Cheeck CheeckPPoinnt(Inff_4) AdddTeerm(A,TTop Levvel, Topp Leevell Deefinnitiion)Browsser(Innf).Paage(Innf_44).Linnk(Addd).Cliickwait 4Browsser(Innf_22).Pagge(Inff).Cheeck CheeckPPoinnt(Inff_5)Browsser(Innf_22).Pagge(Inff).WebbEdiit(chiildCCodeeSufffi x).Seet ABrowsser(Innf_22).Pag
16、ge(Inff).WebEddit(taaxonnomyyDtoo.deescrriptt).Sett TTop Levvel Browsser(Innf_22).Pagge(Inff).WebEddit(taaxonnomyyDtoo.deefinnitii).Sett TTop Levvel Deffiniitioon Browsser(Innf_22).Pagge(Inff).WebbButttonn(SSavee).Cliick wait 4Browsser(Innf).Paage(Innf_55).Cheeck CheeckPPoinnt(Inff_5_2) SeelecctTeer
17、m(AA-TTop Levvel) Browsser(Innf).Paage(Innf_55).WebLiist(seeleccteddTaxxonoomyCCodee).Sellectt A-Topp Leevell AdddTeerm(B,SSecoond Topp Leevell, Seeconnd TTop Levvel Deffiniitioon)Browsser(Innf).Paage(Innf_55).Linnk(Addd).Cliick wait 4 Browsser(Innf_22).Pagge(Inff_2).CChecck CChecckPoointt(IInf_2_22
18、)infoffi lle_;_Innforrm_AAlbeertaa_211.innf_;_hiighttligght id_; _Browwserr(IInf_2).Paage(Innf_22)_;_ annd iit ggoess onn, aand on, annd oon 注意,測試試依據(jù)應應用程序序用戶界界面描述述所有輸輸入和輸輸出的方方法。這這樣主要要會產(chǎn)生生兩個問問題:模模糊測試試(由記記錄信息息的具體體性質(zhì)所所導致)和接口口敏感性性(導致致脆弱測測試)。18.1.6 重構(gòu)說說明讓該測試作作為文檔檔可以使使之更有有用,能能夠降低低或避免免高測試試維護成成本,支持使使用一系系列提取
19、取方法Fowwlerr重構(gòu)構(gòu)組成使使用高級級語言的的其他測測試。18.1.7 示例:重構(gòu)的的商業(yè)記記錄測試試下面的示例例顯示重重構(gòu)來交交流意圖圖的相同同測試:GoToPPagee_MaainttainnTaxxonoomy()AddTeerm(A,TTop Levvel, Topp Leevell Deefi nittionn)SelecctTeerm(AA-TTop Levvel)AddTeerm(B,SSecoond Topp Leevell, Seeconnd TTop Levvel Deffi nnitiion)注意,該測測試的意意圖變得得非常明明顯。提提取的測測試實用用程序方方法如下
20、下所示:Methood GGoTooPagge_MMainntaiinTaaxonnomyy()Browsser(Innf).Paage(Innf).WeebBuuttoon(Loggin).CClicck Browsser(Innf).Paage(Innf_22).Cheeck CheeckPPoinnt(Inff_2) Browsser(Innf).Paage(Innf_22).Linnk(TAXXONOOMY LINNKINNG).Cllickk Browsser(Innf).Paage(Innf_33).Cheeck CheeckPPoinnt(Inff_3) Browsser(Inn
21、f).Paage(Innf_33).Linnk(MAIINTAAIN TAXXONOOMY).CClicck Browsser(Innf).Paage(Innf_44).Cheeck CheeckPPoinnt(Inff_4)EndMethood AAddTTermm( ccodee, nnamee, ddesccripptioon)Browsser(Innf).Paage(Innf_44).Linnk(Addd).Cliickwait 4Browsser(Innf_22).Pagge(Inff).Cheeck CheeckPPoinnt(Inff_5)Browsser(Innf_22).Pa
22、gge(Inff).WebEddit(chhilddCoddeSuuffii x).SSet codde Browsser(Innf_22).Pagge(Inff).WebEddit(taaxonnomyyDtoo.deescrriptt).Sett naame Browsser(Innf_22).Pagge(Inff).WebEddit(taaxonnomyyDtoo.deefi nitti).Seet ddesccripptioon Browsser(Innf_22).Pagge(Inff).WebbButttonn(SSavee).Cliick wait 4Browsser(Innf).
23、Paage(Innf_55).Cheeck CheeckPPoinnt(Inff_5_2) endMethood SSeleectTTermm( ppathh )Browsser(Innf).Paage(Innf_55).WebLiist(seeleccteddTaxxonoomyCCodee).Sellectt paathBrowsser(Innf).Paage(Innf_55).Linnk(Addd).Cliickwait 4 end我將這個示示例編在在一起是是為了說說明與xxUniit中做做法的類類似之處處。不要要隨便運運行該示示例,因因為在語語句構(gòu)成成上它可可能不正正確。18.1.8
24、高級閱閱讀論文“Aggilee Reegreessiion Tesstinng UUsinng RRecoord andd PllayBBackk”ARRTRPP介紹紹了將記記錄測試試機制內(nèi)內(nèi)置于應應用程序序以利于于將它導導出到其其他平臺臺的經(jīng)驗驗。18.2 腳本本測試(也稱為為手寫測測試、手手動編碼碼測試、程程序測試、自動動化單元元測試)如何準備軟軟件的自自動化測測試?通過手動寫寫測試程程序來自自動化測測試。圖18-22 腳腳本測試試示意圖圖自動化測試試有幾個個目的。在在回歸測測試軟件件更改之之后,它們可可以用于于這些軟軟件。它它們有助助于歸檔檔軟件的的行為。在在寫軟件件之前,它它們可以以指
25、定其其行為。如如何準備備自動化化測試腳腳本,這這將影響響可以將將它們用用于什么么目的、它它們對SSUT中中的變更更有多健健壯以及及準備它它們需要要多少技技能與努努力。腳本測試允允許在開開發(fā)軟件件之前準準備測試試,以便它它們有助助于驅(qū)動動設(shè)計。18.2.1 運行原原理通過寫測試試程序來來自動化化測試,這些測測試程序序為了執(zhí)執(zhí)行其功功能性而而與SUUT交互互。和記記錄測試試不一樣樣,這些些測試可可以是客客戶測試試或單元元測試。這這些測試試程序通通常稱為為“測試腳腳本”,以便便與它們們測試的的產(chǎn)品代代碼區(qū)分分開來。18.2.2 使用時時機準備軟件的的單元測測試時,通常使使用腳本本測試。因因為它更更容
26、易從從用相同同編程語語言寫的的軟件中中直接訪訪問單個個單元。它它也允許許執(zhí)行所所有代碼碼路徑,包包括“不合理理的”??蛻魷y試稍稍微有些些復雜。當使用用自動化化故事測測試來驅(qū)驅(qū)動軟件件開發(fā)時時,應該使使用腳本本測試。記記錄測試試不能很很好滿足足這種需需要,因因為沒有有用來記記錄它們們的應用用程序時時它難以以記錄測測試。準準備腳本本測試可可以使用用編程經(jīng)經(jīng)驗以及及測試方方法中的的經(jīng)驗。項項目上的的大多數(shù)數(shù)業(yè)務用用戶不可可能對學學習如何何準備腳腳本測試試感興趣趣。在編編程語言言中進行行腳本測測試的方方法之一一是,定定義測試試SUTT的高級級語言,然然后作為為數(shù)據(jù)驅(qū)驅(qū)動測試試解釋程程序GGOF實現(xiàn)該該
27、語言。一一種定義義數(shù)據(jù)驅(qū)驅(qū)動測試試的開源源架構(gòu)是是Fitt及FittNessse。Cannoo WebbTesst是支支持這種種類型測測試的另另一種工工具。在現(xiàn)有遺留留應用程程序3 在測試驅(qū)動程序中,遺留應用程序是缺乏自動化測試安全網(wǎng)的系統(tǒng)。中,可以考考慮使用用記錄測測試作為為快速創(chuàng)創(chuàng)建一組組回歸測測試的方方法,這些回回歸測試試在重構(gòu)構(gòu)代碼引引入易測測性時可可以起到到保護作作用。隨隨后可以以準備可可測試應應用程序3 在測試驅(qū)動程序中,遺留應用程序是缺乏自動化測試安全網(wǎng)的系統(tǒng)。18.2.3 實現(xiàn)方方式說明明傳統(tǒng)上腳本本測試寫寫作“測試程程序”,通常使使用特定定的測試試腳本語語言?,F(xiàn)現(xiàn)在,我我們更
28、喜喜歡使用用測試自自動化架架構(gòu)來寫寫腳本測測試,例例如,用用與SUUT相同同的語言言寫的xxUniit。在在這種情情況下,通通常以測測試用例例類上測測試方法法的形式式捕獲各各測試程程序。要要最小化化手動干干預,各各測試方方法應該該實現(xiàn)自自檢測試試(也就就是可重重復的測測試)。18.2.4 示例:腳本測測試下面是用JJUniit寫的的腳本測測試的示示例:publiic vvoidd teestAAddLLineeIteem_qquanntittyOnne()finall BiigDeecimmal BASSE_PPRICCE = UNNIT_PRIICE;finall BiigDeecimmal
29、 EXTTENDDED_PRIICE = BBASEE_PRRICEE;/ SSet Up FixxturreCustoomerr cuustoomerr = creeateeACuustoomerr(NOO_CUUST_DISSCOUUNT);Invoiice invvoicce = crreatteInnvoiice(cusstommer);/ EExerrcisse SSUTinvoiice.adddIteemQuuanttityy(PRRODUUCT, QUUAN_ONEE);/ Veeriffy OOutccomeeLineIItemm exxpecctedd =creatteLii
30、neIItemm( QQUANN_ONNE, NO_CUSST_DDISCCOUNNT,EXTENNDEDD_PRRICEE, PPRODDUCTT, iinvooicee);asserrtCoontaainssExaactllyOnneLiineIItemm( iinvooicee, eexpeecteed );publiic vvoidd teestCChanngeQQuanntitty_sseveerallQuaantiity()finall innt OORIGGINAAL_QQUANNTITTY = 3;finall innt NNEW_QUAANTIITY = 55;finall
31、BiigDeecimmal BASSE_PPRICCE =UNIT_PRIICE.mulltipply( nnew BiggDeccimaal(NNEW_QUAANTIITY);finall BiigDeecimmal EXTTENDDED_PRIICE =BASE_PRIICE.subbtraact(BASSE_PPRICCE.mmulttiplly(CUST_DISSCOUUNT_PC.movvePoointtLefft(22);/ SSet Up FixxturreCustoomerr cuustoomerr = creeateeACuustoomerr(CUUST_DISSCOUUNT
32、_PC);Invoiice invvoicce = crreatteInnvoiice(cusstommer);Produuct prooducct = crreatteAPProdductt( UUNITT_PRRICEE);invoiice.adddIteemQuuanttityy(prroduuct, ORRIGIINALL_QUUANTTITYY);/ Exxerccisee SUUTinvoiice.chaangeeQuaantiityFForPProdductt(prroduuct, NEEW_QQUANNTITTY);/ Veeriffy OOutccomeeLineIItemm
33、 exxpecctedd = creeateeLinneIttem( NEEW_QQUANNTITTY,CUST_DISSCOUUNT_PC, EXXTENNDEDD_PRRICEE, PPRODDUCTT, iinvooicee);asserrtCoontaainssExaactllyOnneLiineIItemm( iinvooicee, eexpeecteed ); 18.2.5 關(guān)于名名稱自動化測試試程序通通常稱為為“測試腳腳本”,可能是是因為繼繼承了這這些測試試程序,這這些程序序最初在在解釋性性測試腳腳本語言言(例如Tccl)中實現(xiàn)現(xiàn)。稱它它們?yōu)槟_腳本測試試的不利利之處是是,該術(shù)術(shù)語
34、容易易將手動動測試過過程中應應遵循的的腳本與與不用腳腳本的測測試(例例如探測測測試)相混淆淆。18.2.6 高級閱閱讀介寫測及它動T的最以T-或TDDD-AAPG開始。18.3 數(shù)據(jù)據(jù)驅(qū)動測測試如何準備軟軟件的自自動化測測試?如何減減少測試試碼復制制?將各測試所所需的信信息存儲儲在數(shù)據(jù)據(jù)文件里里,并寫閱閱讀文件件和執(zhí)行行測試的的解釋程程序。圖18-33 數(shù)數(shù)據(jù)驅(qū)動動測試示示意圖測試可能有有很多重重復,不僅因因為必須須多次運運行相同同測試,而且因因為許多多測試只只是略有有不同。例例如,要要運行本本質(zhì)上相相同但系系統(tǒng)輸入入略有不不同的測測試,并并驗證實實際輸出出是不是是具有相相應改變變。每個個測試
35、都都由相同同的步驟驟組成。擁擁有這么么多測試試是確保保完好功功能性覆覆蓋率的的好方法法,但對對于測試試可維護護性而言言它卻不不是好方方法,因因為對某某個測試試算法的的變更一一定會傳傳播給所所有類似似測試。數(shù)據(jù)驅(qū)動測測試可以以獲得好好的覆蓋蓋率同時時又能最最小化需需要編寫寫和維護護的測試試碼的數(shù)數(shù)量。18.3.1 運行原原理寫數(shù)據(jù)驅(qū)動動測試解解釋程序序,它包含含測試的的所有公公共邏輯輯??梢砸詫㈦S著著測試改改變而改改變的數(shù)數(shù)據(jù)放置置到數(shù)據(jù)據(jù)驅(qū)動測測試文件件中,解解釋程序序讀取該該文件來來執(zhí)行測測試。對對于每個個測試而而言,它它實現(xiàn)相相同系列列的動作作來實現(xiàn)現(xiàn)四階段段測試。第第一階段段,解釋程程序
36、檢索索文件中中的測試試數(shù)據(jù),然后使使用文件件中的數(shù)數(shù)據(jù)建立立測試夾夾具。第第二階段段,它執(zhí)執(zhí)行具有有文件指指定參數(shù)數(shù)的SUUT。第第三階段段,它比比較SUUT生成成的實際際結(jié)果(例如返返回值、測測試后狀狀態(tài))與與文件的的預期結(jié)結(jié)果。如如果結(jié)果果不匹配配,它將將測試標標記為失失??;如如果SUUT拋出出異常,它它捕獲異異常并相相應地標標記測試試然后繼繼續(xù)。第第四階段段,解釋釋程序進進行必要要的夾具具拆卸,然然后繼續(xù)續(xù)執(zhí)行文文件中的的下一個個測試。需要一系列列復雜步步驟的測測試可以以簡化為為數(shù)據(jù)驅(qū)驅(qū)動測試試文件中中的一行行數(shù)據(jù)。Fit是寫數(shù)據(jù)驅(qū)動測試架構(gòu)的普遍示例。18.3.2 使用時時機數(shù)據(jù)驅(qū)動測
37、測試是記記錄測試試和腳本本測試的的可選策策略。然然而,它它也可以以用作腳腳本測試試策略的的一部分分。實際際上,回回放記錄錄測試時時,它們們就是數(shù)數(shù)據(jù)驅(qū)動動測試。數(shù)數(shù)據(jù)驅(qū)動動測試是是讓業(yè)務務人員寫寫自動化化測試的的理想策策略。保保持數(shù)據(jù)據(jù)文件格格式簡單單,就可可能讓業(yè)業(yè)務人員員用數(shù)據(jù)據(jù)填充文文件并執(zhí)執(zhí)行測試試,而無無需要求求技術(shù)人人員寫各各種測試試的測試試碼。當有許多不不同的數(shù)數(shù)據(jù)值,同時又又希望使使用這些些值來執(zhí)執(zhí)行SUUT(其中每每個數(shù)據(jù)據(jù)值都要要執(zhí)行相相同系列列的步驟驟)時,可以考考慮使用用數(shù)據(jù)驅(qū)驅(qū)動測試試作為腳腳本測試試的一部部分。通通常會發(fā)發(fā)現(xiàn)這種種相似性性會隨著著時間的的推移而而變化
38、,因因此要先先重構(gòu)到到參數(shù)化化測試,然然后重構(gòu)構(gòu)到數(shù)據(jù)據(jù)驅(qū)動測測試。也也可能在在具有不不同數(shù)據(jù)據(jù)值的不不同序列列中安排排一組標標準步驟驟,和在在遞增的的表格測測試(參參見“參數(shù)化化測試”)中一一樣。這這種方法法具有最最好的覆覆蓋率,同同時需要要維護的的測試碼碼數(shù)量也也最少,如如果需要要,還可可以很方方便地添添加更多多測試。決定是否使使用數(shù)據(jù)據(jù)驅(qū)動測測試的另另一個因因素,是是配置數(shù)數(shù)據(jù)是不不是硬編編碼或驅(qū)驅(qū)動要測測試的行行為。如如果使用用腳本測測試自動動化用于于數(shù)據(jù)驅(qū)驅(qū)動行為為的測試試,當配配置數(shù)據(jù)據(jù)改變時時,就必必須更新新測試程程序。這種行行為很不不正常,因因為它表表示,當當改變配配置數(shù)據(jù)據(jù)庫
39、中的的數(shù)據(jù)時時,必須須將變更更提交給給源代碼碼庫SSCM4 當然,也應該管理在版本控制庫里的測試數(shù)據(jù),但這個主題在另一本書中討論,詳情請參見RDb。讓測測試變成成數(shù)據(jù)驅(qū)驅(qū)動,對對配置數(shù)數(shù)據(jù)或元元對象的的變更就就由對數(shù)數(shù)據(jù)驅(qū)動動測試的的變更驅(qū)驅(qū)動,這這是一4 當然,也應該管理在版本控制庫里的測試數(shù)據(jù),但這個主題在另一本書中討論,詳情請參見RDb。18.3.3 實現(xiàn)方方式說明明實現(xiàn)方式選選擇取決決于是否否使用數(shù)數(shù)據(jù)驅(qū)動動測試作作為不同同的測試試策略或或作為基基于xUUnitt策略的的一部分分。使用用數(shù)據(jù)驅(qū)驅(qū)動測試試作為獨獨立的測測試策略略通常使使用開源源工具(例如FFit)或商業(yè)業(yè)記錄測測試工具具
40、(例如如QTPP)。使使用數(shù)據(jù)據(jù)驅(qū)動測測試作為為腳本測測試策略略的一部部分可能能要實現(xiàn)現(xiàn)xUnnit內(nèi)內(nèi)的數(shù)據(jù)據(jù)驅(qū)動測測試解釋釋程序。不管選擇哪哪種策略略,如果可可能,都應該該使用相相應的測測試自動動化架構(gòu)構(gòu)。這樣樣做可以以有效地地將測試試轉(zhuǎn)換為為兩個部部分:數(shù)數(shù)據(jù)驅(qū)動動測試解解釋程序序和數(shù)據(jù)據(jù)驅(qū)動測測試文件件。這兩兩個部分分都應該該保持在在版本控控制之下下,以便便可以知知道它們們隨著時時間推移移如何演演變,同同時還允允許收回回所有錯錯誤的變變更。將將數(shù)據(jù)驅(qū)驅(qū)動測試試文件存存儲在某某種類型型的庫中中至關(guān)重重要,雖雖然這種種概念與與業(yè)務用用戶不相相關(guān)。給給用戶提提供數(shù)據(jù)據(jù)驅(qū)動測測試文件件授權(quán)工工
41、具(例例如FiitNeessee)可以以讓這種種操作透透明,或或者可以以建立“用戶友友好”庫,例例如剛好好支持版版本控制制的文檔檔管理系系統(tǒng)。作為持續(xù)集集成過程程的一部部分運行行這些測測試,以便確確定曾經(jīng)經(jīng)通過的的測試沒沒有突然然失敗,這樣至至關(guān)重要要。沒有有這樣做做可能導導致缺陷陷進入未未檢測到到的軟件件,一旦旦檢測到到缺陷,就就要付出出更多努努力來檢檢修。在在持續(xù)集集成過程程中包含含客戶測測試要求求能夠記記錄通過過的客戶戶測試,因因為提交交所有代代碼之前前不能確確保所有有客戶測測試都通通過。一一種選擇擇是保持持兩組輸輸入文件件,將通通過的測測試從“仍是紅紅色”文件遷遷移到“都是綠綠色”文件
42、中中,該文文件作為為自動構(gòu)構(gòu)建過程程一部分分用于回回歸測試試。1. 變體體:數(shù)據(jù)驅(qū)驅(qū)動測試試架構(gòu)(Fitt)使用數(shù)據(jù)驅(qū)驅(qū)動測試試作為測測試策略略時,應該考考慮使用用預制數(shù)數(shù)據(jù)驅(qū)動動測試架架構(gòu)。WWardd Cuunniinghham最最初將FFit這這種架構(gòu)構(gòu)作為在在自動化化測試中中包含業(yè)業(yè)務用戶戶的方法法。雖然然Fitt通常用用于自動動化客戶戶測試,但但如果測測試數(shù)量量授權(quán)構(gòu)構(gòu)建必需需的夾具具,它也也可用于于單元測測試。FFit由由兩部分分組成:架構(gòu)和和用戶創(chuàng)創(chuàng)建的夾夾具。FFit架架構(gòu)是通通用數(shù)據(jù)據(jù)驅(qū)動測測試解釋釋程序,該解釋釋程序讀讀取輸入入文件并并找出其其中的所所有表。它它在每個個表的
43、左左上單元元查找夾夾具類名名,然后后搜索該該類的可可執(zhí)行測測試。當當它找到到類并讀讀取該表表的行和和列時,它它會創(chuàng)建建該類的的實例并并將控件件傳遞給給該實例例??梢砸灾貙懠芗軜?gòu)定義義的方法法來指定定表中各各單元出出現(xiàn)的情情況。因因此,F(xiàn)Fit夾夾具是適適配器,F(xiàn)it調(diào)用它來解釋數(shù)據(jù)表并調(diào)用SUT上的方法。Fit表也也可以包包含SUUT的預預期結(jié)果果。Fiit將指指定的值值與SUUT返回回的實際際值進行行比較。然而,與xUnit中的斷言方法不一樣,F(xiàn)it在遇到第一個不匹配預期值的值時不會終止測試。相反,它給表中的各個單元涂上顏色,綠色單元表示與預期值相匹配的實際值,紅色單元表示錯誤的或意料之外的
44、值。使用Fitt有幾個個好處:與構(gòu)建自己己的測試試解釋程程序GGOF相比,要要寫的代代碼更少少。輸出對業(yè)務務人員也也有意義義,而不不只是對對技術(shù)人人員有意意義。測試不會在在遇到第第一個失失敗的斷斷言時停停止。FFit可可以用一一種能夠夠很容易易看出失失敗模式式的方法法傳達多多種失敗敗/錯誤。照現(xiàn)在的樣樣子,有有大量夾夾具類型型可以用用來子類類化或使使用。那么,為什什么不在在所有單單元測試試中都使使用Fiit取代代xUnnit呢呢?使用用Fitt的主要要不足如如下所述述:在構(gòu)建Fiit夾具具之前,測測試場景景必須非非常易于于理解。因此需要將各種測試邏輯轉(zhuǎn)換為表格表示法,這不太合適,特別是對習慣于
45、從過程思考的開發(fā)人員而言尤其如此。它適合擁有可以為客戶測試寫Fit夾具的測試者的情況,但這種方法不適合于真正的單元測試,除非測試者與開發(fā)人員的比例為11。這些測試在在每個測測試中都都要采用用相同的的SUTT交互邏邏輯5 表格數(shù)據(jù)必須在夾具建立或執(zhí)行SUT階段注入SUT,或者在結(jié)果驗證階段從SUT中檢索。要要運行幾幾種不同同類型的的測試,很很可能就就必須為為每種類類型的測測試構(gòu)建建一個或或多個不不同的夾夾具。構(gòu)構(gòu)建新的的夾具通通常比寫寫一些測測試方法法更復雜雜。雖然然現(xiàn)在有有許多不不同夾具具類型可可以用來來子類化化或使用用,但這種種使用方方法與要要求開發(fā)發(fā)人員學學習以便便完成任任務的方方法不同同
46、。盡管管這樣,也也不是所所有單元元測試都都要使用用Fi5 表格數(shù)據(jù)必須在夾具建立或執(zhí)行SUT階段注入SUT,或者在結(jié)果驗證階段從SUT中檢索。Fit測試試通常沒沒有集成成到開發(fā)發(fā)人員通通過xUUnitt運行的的回歸測測試中。相反,這些測試必須單獨運行,這樣每次檢入時它們有可能不運行。有些團隊將Fit測試作為其持續(xù)集成構(gòu)建過程的一部分,以部分解決這個問題。有的團隊報告已經(jīng)擁有輔助“客戶”構(gòu)建服務或運行所有客戶測試的服務器。當然,這些些問題都都是可以以克服的的??偟牡膩碚f,xUnnit架架構(gòu)比FFit架架構(gòu)更適適合于單單元測試試;Fitt架構(gòu)比比xUnnit架架構(gòu)更適適合于客客戶測試試。2. 變體
47、體:天真xUUnitt測試解解釋程序序當需要作為為基于xxUniit的腳腳本測試試策略的的一部分分運行的的數(shù)據(jù)驅(qū)驅(qū)動測試試的數(shù)量量較小時時,最簡單單的實現(xiàn)現(xiàn)方式是是寫包含含循環(huán)的的測試方方法,該循環(huán)環(huán)從文件件讀取一一組輸入入數(shù)據(jù)值值以及預預期結(jié)果果。這與與將單個個參數(shù)化化測試及及其所有有調(diào)用者者轉(zhuǎn)換為為表格測測試(參參見“參數(shù)化化測試”)具有有相同意意義。和和表格測測試一樣樣,這種種構(gòu)建數(shù)數(shù)據(jù)驅(qū)動動測試解解釋程序序的方法法會產(chǎn)生生具有許許多斷言言的單個個測試用用例對象象。它有有以下幾幾種結(jié)果果:整組數(shù)據(jù)驅(qū)驅(qū)動測試試將計算算為單個個測試。因因此,將將一組參參數(shù)化測測試轉(zhuǎn)換換為單個個數(shù)據(jù)驅(qū)驅(qū)動測試
48、試會減少少執(zhí)行的的測試數(shù)數(shù)量。當遇到第一一個失敗敗或錯誤誤時會停停止執(zhí)行行數(shù)據(jù)驅(qū)驅(qū)動測試試。因此此,遺漏漏了許多多缺陷定定位。有有些xUUnitt變體允允許指定定失敗的的斷言不不中止測測試方法法的執(zhí)行行。需要確保出出現(xiàn)失敗敗時,斷言失失敗能說說出正在在執(zhí)行哪哪個子測測試。在循環(huán)中包包含trry/ccatcch語句句,同時包包含測試試邏輯然然后繼續(xù)續(xù)代碼執(zhí)執(zhí)行,這樣可可以解決決最后兩兩個問題題。然而而,仍然然需要能能夠以一一種有意意義的方方法報告告測試結(jié)結(jié)果(例例如,“失敗子子測試11、3和6以及”)。要更方便地地擴充數(shù)數(shù)據(jù)驅(qū)動動測試解解釋程序序來處理理相同數(shù)數(shù)據(jù)文件件中幾種種不同類類型的測測試
49、,可以包包含“動詞”或“動作單單詞”作為數(shù)數(shù)據(jù)文件件中各條條目的一一部分。解解釋程序序可以依依據(jù)動作作單詞分分派給不不同的參參數(shù)化測測試。3. 變體體:測試套套件對象象生成器器讓測試套件件工廠(參見“測試枚枚舉”)上的suitte方法法偽造與與測試發(fā)發(fā)現(xiàn)內(nèi)置置機制相相同的測測試套件件對象結(jié)結(jié)構(gòu),就可以以避免與與天真xxUniit測試試解釋程程序相關(guān)關(guān)的“第一次次失敗時時就停止止”這個問問題。要要這樣做做,可以以為數(shù)據(jù)據(jù)驅(qū)動測測試文件件中的每每個條目目構(gòu)建測測試用例例對象,然然后用特特定測試試的測試試數(shù)據(jù)初初始化每每個對象象6 這與xUnit的內(nèi)置測試方法發(fā)現(xiàn)(參見“測試發(fā)現(xiàn)”)機制的運行原理類
50、似,但后者接受的是測試數(shù)據(jù)和測試方法名稱。構(gòu)建建測試套套件時,該該對象知知道如何何執(zhí)行具具有加載載數(shù)據(jù)的的參數(shù)化化測試。這這樣即使使第一個個測試用用例對象象遇到斷斷言失敗敗,也可可以確保保數(shù)據(jù)驅(qū)驅(qū)動測試試能夠繼繼續(xù)執(zhí)行行。因此此,可以以讓測試6 這與xUnit的內(nèi)置測試方法發(fā)現(xiàn)(參見“測試發(fā)現(xiàn)”)機制的運行原理類似,但后者接受的是測試數(shù)據(jù)和測試方法名稱。4. 變體體:測試套套件對象象模擬器器構(gòu)建測試套套件對象象的方法法之一是是創(chuàng)建像像一個對對象那樣樣運行的的測試用用例對象象。要求求運行時時該對象象會閱讀讀數(shù)據(jù)驅(qū)驅(qū)動測試試文件并并重新執(zhí)執(zhí)行所有有測試。它它必須捕捕獲參數(shù)數(shù)化測試試拋出的的所有異異
51、常,然然后繼續(xù)續(xù)執(zhí)行后后面的測測試。完完成后,測測試用例例對象必必須給測測試運行行器報告告測試、失失敗和錯錯誤的準準確數(shù)量量。它也也要實現(xiàn)現(xiàn)測試運運行器依依賴的標標準測試試接口上上的其他他方法,例例如返回回“套件”中測試試的數(shù)量量、返回回套件中中每個測測試的名名稱和狀狀態(tài)(關(guān)關(guān)于圖形形測試樹樹探測器器,參見見“測試運運行器”)。18.3.4 啟發(fā)示示例假設(shè)有一組組測試如如下所示示:def ttestt_exxtreefsourcceXmml = expeccteddHtmml = abccgenerrateeAnddVerrifyyHtmml(ssourrceXXml,exppecttedHH
52、tmll,)enddef ttestt_teestttermm_noormaalsourcceXmml = expeccteddHtmml = abccgenerrateeAnddVerrifyyHtmml(ssourrceXXml,exppecttedHHtmll,)enddef ttestt_teestttermm_plluraalsourcceXmml = expeccteddHtmml = abccsgenerrateeAnddVerrifyyHtmml(ssourrceXXml,exppecttedHHtmll,)end如下定義參參數(shù)化測測試可以以簡化這這些測試試:def ggene
53、eratteAnndVeeriffyHttml( soourcceXmml, exppecttedHHtmll,messaage, &bblocck) mockFFilee = MocckFiile.neww sourcceXmml.ddeleete!(t)handdlerr = settupHHanddlerr(soourcceXmml, mocckFiile )blockk.caall unllesss bllockk = niil handdlerr.prrinttBoddyCoonteentss actuaal_hhtmll = mocckFiile.outtputt asserrt_
54、eequaal_hhtmll(exppecttedHHtmll, actuaal_hhtmll, messaage + htmml ooutpput) actuaal_hhtmll end這些測試存存在的主主要問題題是,這些測測試還是是用代碼碼寫的,而而實際上上它們之之間的唯唯一不同同是用作作輸入的的數(shù)據(jù)。18.3.5 重構(gòu)說說明當然,解決決方案是是將參數(shù)數(shù)化測試試的公共共邏輯提提取到數(shù)數(shù)據(jù)驅(qū)動動測試解解釋程序序中,并將所所有參數(shù)數(shù)集合到到任何人人都可以以編輯的的單個數(shù)數(shù)據(jù)文件件中。需需要寫“主”測試,它它知道從從哪個文文件閱讀讀測試數(shù)數(shù)據(jù),知知道閱讀讀和分析析測試文文件的一一些邏輯輯。該邏邏
55、輯可以以調(diào)用現(xiàn)現(xiàn)有的參參數(shù)化測測試邏輯輯,并讓讓xUnnit記記錄測試試執(zhí)行統(tǒng)統(tǒng)計。18.3.6 示例:使用XMML數(shù)據(jù)據(jù)文件的的xUnnit數(shù)數(shù)據(jù)驅(qū)動動測試本示例中,使用XMML形式式文件。每每個測試試都由ttestt元素組組成,它它有三個個主要部部分:告訴數(shù)據(jù)驅(qū)驅(qū)動測試試解釋程程序要運運行哪種種測試邏邏輯的動動作(例例如,ccrosssreef)。傳遞給SUUT的輸輸入,這這里是ssourrceXXml元元素希望SUTT(在exxpeccteddHtmml元素素中)生生成的HHTMLL這三個部分分包裝在在tesstsuuitee元素里里: croossrref aabc croossrre
56、f aabc croossrref aabcss 所有擁有XXML編編輯器的的人都可可以編輯輯這個XXML文文件,而不必必擔心引引入測試試邏輯錯錯誤。數(shù)數(shù)據(jù)驅(qū)動動測試解解釋程序序封裝用用來驗證證預期結(jié)結(jié)果的所所有邏輯輯,使用用的方法法與參數(shù)數(shù)化測試試使用的的方法相相同。出出于查看看的目的的,通過過定義樣樣式表對對用戶隱隱藏了XXML的的結(jié)構(gòu)。另另外,許許多XMML編輯輯器會將將XMLL轉(zhuǎn)換為為基于表表格的輸輸入以簡簡化編輯輯。為了避免處處理操作作XMLL的復雜雜性,解釋程程序也可可以使用用CSVV文件作作為輸入入。18.3.7 示例:使用CSSV輸入文文件的xxUniit數(shù)據(jù)據(jù)驅(qū)動測測試使用C
57、SVV文件,前面示示例中的的測試則則如下所所示:ID, Acttionn, SSourrceXXml, ExxpeccteddHtmml Extreef,ccrosssreef,abbc TTermm,crrosssreff,aabc TTermms,ccrosssreef,abbcs這個解釋程程序相對對簡單,并且建建立在為為參數(shù)化化測試而而開發(fā)的的邏輯之之上。它它閱讀CCSV文文件,并并使用RRubyy的spllit函函數(shù)分析析各行。def ttestt_crrosssreffexecuuteDDataaDriivennTesst CroossrrefHHanddlerrTesst.ttxt
58、 enddef eexeccuteeDattaDrriveenTeest fillenaame dataFFilee = Fille.oopenn(fiilennamee) dataFFilee.eaach_linne ddo | liine |desc, acctioon, parrt2 = llinee.spplitt(,) sourcceXmml, exppecttedHHtmll, llefttOveer = paart22.spplitt(,) if ccrosssreef=acctioon.sstriipgenerrateeAnddVerrifyyHtmml ssourrceXXm
59、l, exxpeccteddHtmml, desscelse # nnew veerbss ggo bbefoore herre aas eelsiifssreporrt_eerroor( unnknoown acttionn + acctioon.sstriip ) end end end除非將geenerrateeAnddVerrifyyHtmml的實實現(xiàn)方式式改變?yōu)闉椴东@斷斷言失敗敗和增加加失敗計計數(shù)器,這種數(shù)數(shù)據(jù)驅(qū)動動測試才才會在遇遇到第一一個失敗敗斷言時時停止執(zhí)執(zhí)行。而而回歸測測試可以以接受這這種行為為,雖然然它沒有有提供很很好的缺缺陷定位位。18.3.8 示例:使用Fiit架構(gòu)構(gòu)的
60、數(shù)據(jù)據(jù)驅(qū)動測測試如果要進一一步控制制用戶的的行為,可以創(chuàng)創(chuàng)建Fiit“列夾具具”,其中有有id、acttionn、souurcee XMML和exppectted Htmml()各列,讓用戶戶編輯HHTMLL Weeb頁面面(如表188-1所所示)。表18-11 使用用Fitt架構(gòu)構(gòu)構(gòu)建的數(shù)數(shù)據(jù)驅(qū)動動測試Com.xxuniitpaatteens.fitt.CroossrrefHHandleerFiixtuureidactioonsourcce XXMLexpecctedd HttrnllOExtreefcrosssreff?abcc?TestTTermmcrosssreff?abbc?Test
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 孕婦用品售后服務模式創(chuàng)新-洞察分析
- 網(wǎng)絡廣告?zhèn)惱韱栴}-洞察分析
- 醫(yī)療信息化應用分析-洞察分析
- 移動學習行為分析-洞察分析
- 藥品質(zhì)量控制方法-洞察分析
- 特色農(nóng)產(chǎn)品冷鏈技術(shù)-洞察分析
- 移動醫(yī)療與遠程教育-洞察分析
- 虛擬現(xiàn)實在網(wǎng)頁設(shè)計中的優(yōu)勢-洞察分析
- 循環(huán)利用產(chǎn)業(yè)鏈構(gòu)建-洞察分析
- 云端網(wǎng)絡功能虛擬化-洞察分析
- 二年級數(shù)學興趣小組活動記錄全記錄
- 車輛維修保養(yǎng)服務方案(完整版)
- 中藥硬膏管理規(guī)定、操作流程及評分標準(共3頁)
- 單值移動極差圖(空白表格)
- 電鍍生產(chǎn)工序
- 塔城地區(qū)事業(yè)單位專業(yè)技術(shù)各等級崗位基本任職資格條件指導意見
- 初中語文課外古詩文董仲舒《春秋繁露》原文及翻譯
- (完整)(電子商務軟件研發(fā)及產(chǎn)業(yè)化建設(shè)項目)監(jiān)理月報(201202)
- 旅游出行安全告知書
- (完整版)服裝生產(chǎn)工藝流程圖匯總,推薦文檔
- 優(yōu)秀團支部申報表
評論
0/150
提交評論