工程實(shí)踐報(bào)告_第1頁
工程實(shí)踐報(bào)告_第2頁
工程實(shí)踐報(bào)告_第3頁
工程實(shí)踐報(bào)告_第4頁
工程實(shí)踐報(bào)告_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE1目錄1.測試項(xiàng)目背景…………………..41)嵌入式軟件的發(fā)展趨勢…………………….42)單元測試對嵌入式軟件的重要性………….42.項(xiàng)目工作階段與技術(shù)應(yīng)用……….53.項(xiàng)目中存在的問題及認(rèn)識……….74.項(xiàng)目總結(jié)及單元測試工具市場前景10測試項(xiàng)目背景1.嵌入式軟件的發(fā)展趨勢自從上個世紀(jì)90年代以來,以計(jì)算機(jī)技術(shù)、通信技術(shù)和軟件技術(shù)為核心的信息技術(shù)取得了更加迅猛的發(fā)展,各種裝備與設(shè)備上嵌入式計(jì)算與系統(tǒng)的廣泛應(yīng)用大大地推動了行業(yè)的滲透性應(yīng)用。嵌入式系統(tǒng)被描述為:“以應(yīng)用為中心、軟件硬件可裁剪的、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等嚴(yán)格綜合性要求的專用計(jì)算機(jī)系統(tǒng)”,由嵌入式硬件和嵌入式軟件兩部分組成。硬件是支撐,軟件是靈魂,幾乎所有的嵌入式產(chǎn)品中都需要嵌入式軟件來提供靈活多樣、而且應(yīng)用特制的功能。由于嵌入式系統(tǒng)應(yīng)用廣泛,嵌入式軟件在整個軟件產(chǎn)業(yè)中占據(jù)了重要地位,并受到世界各國的廣泛關(guān)注;如今已成為信息產(chǎn)業(yè)中最為耀眼的“明星”之一。2.單元測試對嵌入式軟件的重要性單元測試是檢查嵌入式系統(tǒng)軟件缺陷的最有效的一種方法,更確切而言也即在宿主機(jī)環(huán)境下或在仿真器上進(jìn)行的API測試。這能使測試盡早開始并且最大程度地降低了測試工作對目標(biāo)硬件平臺的依賴性。嵌入式系統(tǒng)軟件的單元測試的一個前提是能夠讓軟件獨(dú)立于硬件進(jìn)行測試,這是由樁函數(shù)對目標(biāo)硬件平臺的模擬而實(shí)現(xiàn)的。在這種情況下,代碼的絕大多數(shù)功能性測試都能夠獨(dú)立于目標(biāo)硬件系統(tǒng)進(jìn)行測試。這對嵌入式系統(tǒng)開發(fā)者而言主要有兩方面的好處:1)單元測試能讓開發(fā)者在目標(biāo)硬件平臺準(zhǔn)備好之前就開始測試周期,開發(fā)者可以直接在宿主開發(fā)環(huán)境下開始初始測試(而不需要目標(biāo)硬件平臺)。2)單元測試采取一種“各個擊破”的策略,允許用戶將復(fù)雜的系統(tǒng)分為相對較簡單的準(zhǔn)獨(dú)立系統(tǒng)進(jìn)行測試。測試工具能夠管理模塊之間的關(guān)聯(lián)性并使用樁函數(shù)來模擬這些模塊的行為。圖:使用樁函數(shù),開發(fā)者可以模擬真實(shí)環(huán)境和程序之間的相互影響對程序的某個模塊進(jìn)行測試,而不需要目標(biāo)硬件平臺以及暫時(shí)還未完成的其它代碼模塊。在測試環(huán)境中,樁函數(shù)充當(dāng)了為待測模塊提供外部關(guān)聯(lián)性橋梁的作用。項(xiàng)目工作階段與技術(shù)應(yīng)用談?wù)勛约航衲?-8月間在長沙做項(xiàng)目的認(rèn)識吧。測試項(xiàng)目的前期階段工作第一部分是在甲方單位指定的機(jī)器上搭載環(huán)境,建立測試平臺,同時(shí)安裝以下工具軟件:1)CCS(CodeComposerStudio)2.2:是TI公司推出的DSP集成開發(fā)環(huán)境,集代碼編輯、編譯、調(diào)試等多功能于一體的工具,其主要作用是進(jìn)行函數(shù)的拆分,編寫樁、驅(qū)動等功能。2)CRESTSTESS:全數(shù)字仿真平臺的自動化測試工具,全稱是基于仿真目標(biāo)機(jī)的半物理仿真平臺系統(tǒng)CRESTS/TESSC(SCT-Cast),以下對其進(jìn)行簡介:TESSC由宿主機(jī)系統(tǒng)(HostSystem)和仿真處理模塊組成。仿真處理模塊包含一個目標(biāo)處理器的復(fù)制(targetCPU,如DSP3X)和支持與控制系統(tǒng)(supportsystem)。目標(biāo)處理器的復(fù)制執(zhí)行匯編語言程序,Ada語言程序,C語言程序程序的最終二進(jìn)制代碼。支持與控制系統(tǒng)控制目標(biāo)處理器復(fù)制的行為并仿真低一級硬件的接口。宿主機(jī)用于應(yīng)用測試和全面控制,以及提供更復(fù)雜環(huán)境的仿真模擬。匯編語言程序,高級語言程序,混合語言程序最終二進(jìn)制代碼無需任何修改,直接執(zhí)行于真實(shí)目標(biāo)處理器的復(fù)制中,應(yīng)用于目標(biāo)軟件真實(shí)的外界感知環(huán)境的仿真系統(tǒng)中。

TESSC最重要的特性之一是目標(biāo)處理器的復(fù)制和所有和它相關(guān)的時(shí)間關(guān)系都可以被支持系統(tǒng)與控制系統(tǒng)管理、控制。這就意味著在TESSC上的目標(biāo)軟件(包括匯編語言程序,高級語言程序)的行為過程,完全可以控制,可以在測試期間對目標(biāo)軟件內(nèi)部的探查精確而詳細(xì)??梢赃M(jìn)行更多軟件測試,對目標(biāo)軟件深層問題進(jìn)行探究。3)Script.NETV2(免費(fèi)版):是一個集開發(fā)、編輯的TCL腳本的工具,主要用于TCl腳本開發(fā)。4)SourceInsigh:是一個代碼瀏覽器,能夠方便你分析源代碼并在你工作的同時(shí)動態(tài)維護(hù)它自己的符號數(shù)據(jù)庫,并自動為你顯示有用的上下文信息,進(jìn)行有效的代碼分析。5)Snagit9.0(試用版)屏幕截圖軟件,用于截取測試執(zhí)行時(shí)需要保存的一些圖片及屏幕提示信息,達(dá)到保存屏幕信息目的。項(xiàng)目的前期階段工作第二部分是在測試環(huán)境建立好后,我們先對甲方提供的項(xiàng)目文檔進(jìn)行閱讀,通過閱讀文檔,對項(xiàng)目有了大致的了解,除此之外仔細(xì)閱讀項(xiàng)目需求、概要、詳設(shè)等文檔還要對代碼進(jìn)行書面審查,在這里涉及到商業(yè)機(jī)密,就不詳談了,而后按照甲方的要求,我們對其代碼進(jìn)行單元測試,測試類型要求分為功能測試、邏輯測試,到了測試項(xiàng)目中期階段,我們的工作進(jìn)入實(shí)質(zhì)性階段,每個測試小組開始對各自審查的代碼進(jìn)行測試用例設(shè)計(jì),我需要設(shè)計(jì)用例的函數(shù)來自于兩個.C文件fun_1553.C和LIB_FK_861.C,共計(jì)是10個函數(shù),分別是計(jì)算校驗(yàn)和、計(jì)算關(guān)鍵性權(quán)威授權(quán)、懸掛物數(shù)據(jù)包、傳遞對準(zhǔn)數(shù)據(jù)包、任務(wù)加載數(shù)據(jù)包、UT1553B總線發(fā)送、INT6中斷處理函數(shù)、時(shí)鐘初始化、UART初始化、UTProcess(進(jìn)程處理)等函數(shù)。對每個函數(shù)測試用例設(shè)計(jì)完成后,就開始執(zhí)行測試用例的工作,執(zhí)行測試用例首先是在CCS(CodeComposerStudio)2.2環(huán)境中寫驅(qū)動函數(shù),通過驅(qū)動函數(shù)調(diào)用.C源文件中的函數(shù),之后要在CCS環(huán)境中編譯運(yùn)行通過后,然后在TESS自動化測試工具中載入該添加驅(qū)動函數(shù)的.C文件工程,在TESS中通過main函數(shù)調(diào)用覆蓋被測函數(shù)后,用Script.NET編輯TCL腳本,利用腳本在驅(qū)動函數(shù)和被測函數(shù)有輸出處進(jìn)行插樁、打點(diǎn),驗(yàn)看輸出結(jié)果的準(zhǔn)確性。通過執(zhí)行的結(jié)果,判定函數(shù)是否存在問題,若存在將其提交到Bug報(bào)告單中。到了測試項(xiàng)目后期階段,我們的工作是將測試用例與Bug報(bào)告單的一些基本情況進(jìn)行統(tǒng)計(jì),比如測試用例、Bug報(bào)告單的個數(shù)、發(fā)現(xiàn)問題的個數(shù)、以及用例與報(bào)告單的規(guī)范性調(diào)整,之后將統(tǒng)計(jì)的情況向甲方提交,并要參加由甲方組織的評審。項(xiàng)目中存在的問題及認(rèn)識在設(shè)計(jì)測試用例過程中,第一個問題是在計(jì)算校驗(yàn)和函數(shù)中出現(xiàn)的,該函數(shù)整體結(jié)構(gòu)主要是實(shí)現(xiàn)一個FOR循環(huán),在FOR循環(huán)體中通過對循環(huán)次數(shù)的控制,一些使得指針左移或右移相應(yīng)位數(shù)的語句和相位與、相或與語句來生成校驗(yàn)字(checkword)。從函數(shù)的結(jié)構(gòu)分析,進(jìn)行測試用例的設(shè)計(jì)從兩種測試類型功能測試與邏輯測試,其中邏輯測試又分為分支測試、語句測試。該函數(shù)功能測試的目的很明確,就是是否能實(shí)現(xiàn)生成數(shù)據(jù)幀的校驗(yàn)和的結(jié)果,而分支測試(邏輯測試)的目的則是判斷函數(shù)在何種情況下執(zhí)行FOR循環(huán)分支或不執(zhí)行該分支時(shí)分支覆蓋率的情況,語句測試則是在上述兩種分支覆蓋的情況下,語句執(zhí)行情況下,語句覆蓋率的情況。在設(shè)計(jì)該函數(shù)功能測試用例輸入數(shù)據(jù)時(shí)起初存在難點(diǎn),因?yàn)樵摵瘮?shù)的兩個輸入?yún)?shù)一個是指針,而另一個是數(shù)據(jù)幀的長度,數(shù)據(jù)幀的長度有合理輸入范圍1-32之間,因此容易設(shè)立輸入初值,而輸入?yún)?shù)為指針的因?yàn)樵诤罄m(xù)的其他函數(shù)中(比如懸掛物數(shù)據(jù)包、傳遞對準(zhǔn)數(shù)據(jù)包、任務(wù)加載數(shù)據(jù)包函數(shù))對其均有調(diào)用,調(diào)用時(shí)對應(yīng)輸入?yún)?shù)指針均是上述數(shù)據(jù)包頭字(headword)的地址,而該地址是由計(jì)算機(jī)隨機(jī)分配的,事先無參照值,后來想到用一組數(shù)組來代替該隨機(jī)分配得計(jì)算機(jī)地址,然后先將這些輸入數(shù)據(jù)帶入該函數(shù),通過人工計(jì)算得出函數(shù)結(jié)果,之后再由計(jì)算機(jī)在TESS中驗(yàn)看函數(shù)計(jì)算結(jié)果,通過兩個結(jié)果比對是否一致,來驗(yàn)證函數(shù)的功能。執(zhí)行該函數(shù)分支測試用例時(shí),也出現(xiàn)了大家共同關(guān)心的問題,這一問題使大家在設(shè)計(jì)測試用例初期產(chǎn)生了巨大的分歧,分歧在于功能測試與邏輯測試雖然在測試概念上完全不同,但在設(shè)計(jì)用例時(shí)可能設(shè)計(jì)出來的用例完全一致,(例如在計(jì)算校驗(yàn)和函數(shù)中,功能測試正反兩個用例一個是執(zhí)行FOR循環(huán)分支實(shí)現(xiàn)函數(shù)生成校驗(yàn)字功能;另一個是不執(zhí)行FOR循環(huán)分支未實(shí)現(xiàn)函數(shù)生成校驗(yàn)字功能;而分支測試正反兩個用例則與此設(shè)計(jì)完全一致)一方的意見是盡管一致但因?yàn)闇y試類型不同,所以測試用例還是應(yīng)該分開寫;另一方的意見則是因?yàn)橐恢拢梢钥紤]合并到一起,只要在測試類型處標(biāo)明即可;最后大家一致認(rèn)為同意將其合并,用同一組測試用例表示即可。后面的幾個函數(shù)如懸掛物數(shù)據(jù)包、傳遞對準(zhǔn)數(shù)據(jù)包、任務(wù)加載數(shù)據(jù)包在設(shè)計(jì)測試用例時(shí),都普遍存在一個問題,就是在來自于調(diào)用其他函數(shù)參數(shù)在給本函數(shù)參數(shù)進(jìn)行傳參賦值時(shí),都缺少對傳進(jìn)來的數(shù)據(jù)進(jìn)行正確性的判斷,很顯然程序員在寫這幾個函數(shù)的傳值、賦值的語句時(shí),心安理得的認(rèn)為傳值的數(shù)據(jù)正確性驗(yàn)證只用在該參數(shù)賦初值的函數(shù)里完成正確性驗(yàn)證即可,其他地方只要保證傳值的正常進(jìn)行就可以了,而我們測試人員卻要考慮傳值數(shù)據(jù)的正確性驗(yàn)證,盡管在我們測試的函數(shù)里找不到驗(yàn)證性的語句,可是在測試腳本里卻要設(shè)計(jì)各種范圍的數(shù)據(jù)進(jìn)行測試,這時(shí)如果在腳本里輸入非法數(shù)據(jù),函數(shù)本身無法發(fā)現(xiàn)其錯誤,這里也就設(shè)計(jì)到單元測試與被測函數(shù)之間的矛盾,將被測函數(shù)納入到一個完整.C文件去看,則不存在上述問題,但是單元測試將一個.C文件中的每個函數(shù)作為一個單獨(dú)單元來進(jìn)行測試,函數(shù)與函數(shù)之間的關(guān)系被測試割裂開來,使得有些函數(shù)在諸如傳遞參數(shù)方面在不具備獨(dú)立性的情況下,喪失了驗(yàn)證傳參數(shù)據(jù)的正確性。但在最后測試組討論形成統(tǒng)一的意見是對于被測函數(shù)出現(xiàn)的類似的通過其他函數(shù)參數(shù)進(jìn)行傳遞賦值的語句,不進(jìn)行被傳參數(shù)數(shù)據(jù)正確性的驗(yàn)證,一方面是不需要重復(fù)的測試(因?yàn)樵趨?shù)賦初值的函數(shù)里一定會進(jìn)行測試);另一方面是由于缺少限制參數(shù)賦值范圍的語句,根本無法保證被傳參數(shù)數(shù)據(jù)的正確性,不具備作為測試點(diǎn)前提條件;所以也不可以作為Bug提交成報(bào)告單。還有一個問題是在函數(shù)懸掛物數(shù)據(jù)包中出現(xiàn)的,在該函數(shù)中If條件的嵌套層次很多,在開始設(shè)計(jì)其測試用例時(shí),將分支測試與路徑測試混淆在一起,將基本的分支進(jìn)行分支與分支進(jìn)行了組合,誤認(rèn)為是新的分支,其實(shí)是路徑,在糾正了這個錯誤后,該函數(shù)的測試用例個數(shù)減少了許多,也因此弄清楚了分支測試與路徑測試的區(qū)別與聯(lián)系。在進(jìn)行TCL腳本語言設(shè)計(jì)時(shí),在源代碼打點(diǎn)處輸出遇到函數(shù)輸出不正確的問題,這個問題是在Uart初始化函數(shù)中碰到的,在該函數(shù)中主要實(shí)現(xiàn)是否能正確選擇串口通道、波特率值、合法FIFO級別設(shè)置、非法中斷使能設(shè)置四項(xiàng)要素,如果有一項(xiàng)未能正確取值,則利用Return語句跳出整個函數(shù),在該函數(shù)的TCL腳本中,是在這四個要素分別賦值,若其中由一個進(jìn)行非法賦值,就跳出函數(shù)并返回該處的返回值,在插入腳本打點(diǎn)前期,始終都只能返回正確返回值0,而其他非法情況下的返回值1、2、3、4均不能返回,后來發(fā)現(xiàn)原因在于在CCS中編寫驅(qū)動函數(shù)時(shí),在main函數(shù)中調(diào)用該初始化函數(shù)時(shí),語句只寫到該調(diào)用語句,也就是每次執(zhí)行腳本時(shí),返回值在總是被賦初值為0時(shí)就返回了,后來在驅(qū)動函數(shù)中又加了一條語句后,每次執(zhí)行腳本后,要執(zhí)行到調(diào)用該初始化函數(shù)語句后面一句時(shí),再顯示返回值時(shí)就會出現(xiàn)在非法情況下的返回值1、2、3、4,通過對這個問題的分析我們知道TCL腳本在執(zhí)行返回值時(shí)的特點(diǎn),對自己以后寫腳本時(shí)提高了一些認(rèn)識吧。后來在寫B(tài)ug問題報(bào)告單時(shí),也是這個Uart初始化函數(shù)基于其函數(shù)結(jié)構(gòu)是單入口、多出口函數(shù)結(jié)構(gòu),在測試規(guī)范上要求函數(shù)結(jié)構(gòu)是單入口、單出口結(jié)構(gòu),所以該函數(shù)在結(jié)構(gòu)上存在問題,但是根據(jù)該函數(shù)實(shí)現(xiàn)的功能來看,單入口、多出口函數(shù)結(jié)構(gòu)才符合其要求,這給程序員們提出了一個難題。項(xiàng)目總結(jié)及單元測試工具市場前景在這次測試項(xiàng)目中,自己了解到了做嵌入式軟件尤其是單元測試的基本操作流程和做單元測試所需的一些測試工具的使用特點(diǎn),對于編寫測試腳本和選取合適的腳本插入點(diǎn)也形成了自己的一些認(rèn)識,對于單元測試工具在做測試時(shí)需要哪些測試功能,提供給測試人員哪些信息和統(tǒng)計(jì)數(shù)據(jù)有助于測試人員的分析以及測試用例的設(shè)計(jì),是評價(jià)一款單元測試工具幾個重要特征,在我們公司提供的單元測試工具TESS中,除了可以進(jìn)行代碼靜態(tài)分析和插入測試人員編寫的TCL腳本以外,還可以查看各個函數(shù)調(diào)用覆蓋情況,另外還可以查看每次執(zhí)行腳本后,調(diào)用的函數(shù)中的分支和語句覆蓋率的情況,對于測試人員設(shè)計(jì)的測試用例中的預(yù)期結(jié)果和實(shí)際結(jié)果的分析有很直觀的比對作用。目前嵌入式軟件測

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論