摘 要:軟件測(cè)試是提高軟件質(zhì)量的關(guān)鍵方法之一,軟件單元測(cè)試是軟件測(cè)試中一個(gè)重要的步驟,充分的單元測(cè)試對(duì)發(fā)現(xiàn)和排除軟件中的缺陷非常有效,并且成本很小。但在軟件項(xiàng)目實(shí)踐中,軟件測(cè)試的作用還沒(méi)有受到特別的重視,許多軟件項(xiàng)目組的工程師還存在對(duì)軟件測(cè)試的認(rèn)知誤區(qū),這嚴(yán)重影響了軟件測(cè)試工作高品質(zhì)的開(kāi)展。文章針對(duì)嵌入式軟件單元測(cè)試,結(jié)合工程實(shí)踐,明確了單元測(cè)試的要求以及重點(diǎn),介紹了一種高效、容易操作單元測(cè)試流程。
關(guān)鍵詞:軟件測(cè)試;認(rèn)知誤區(qū);嵌入式;單元測(cè)試流程
1 軟件測(cè)試簡(jiǎn)述
軟件測(cè)試是在軟件投入商用前,對(duì)軟件需求分析報(bào)告、設(shè)計(jì)規(guī)格說(shuō)明書(shū)和編碼的最終復(fù)查,是軟件質(zhì)量保證的關(guān)鍵方法,軟件測(cè)試并不等于程序測(cè)試。它貫穿于軟件定義和開(kāi)發(fā)的整個(gè)過(guò)程,因此,軟件需求分析、軟件概要設(shè)計(jì)、軟件詳細(xì)設(shè)計(jì)和程序編碼等各階段所得到的文檔,包括需求規(guī)格說(shuō)明書(shū)、概要設(shè)計(jì)說(shuō)明書(shū)、詳細(xì)設(shè)計(jì)說(shuō)明書(shū),以及源代碼都是軟件測(cè)試的測(cè)試對(duì)象。隨著軟件規(guī)模的不斷擴(kuò)大,以及軟件設(shè)計(jì)復(fù)雜程度不斷的提高,軟件開(kāi)發(fā)中出現(xiàn)失誤或缺陷的概率越來(lái)越大。隨著市場(chǎng)對(duì)軟件質(zhì)量重要性的認(rèn)知程序的提高,因此軟件測(cè)試在軟件項(xiàng)目實(shí)施過(guò)程中的重要性尤為突出。軟件測(cè)試將會(huì)成為一個(gè)具有很大發(fā)展前景的行業(yè),市場(chǎng)將需要更多具有豐富測(cè)試技術(shù)和先進(jìn)管理經(jīng)驗(yàn)的測(cè)試技術(shù)員和項(xiàng)目經(jīng)理。
2 軟件開(kāi)發(fā)項(xiàng)目測(cè)試的誤區(qū)
軟件測(cè)試從1990年左右進(jìn)入中國(guó),目前國(guó)內(nèi)大的測(cè)評(píng)中心、大型企業(yè)已經(jīng)完全掌握了軟件測(cè)試的測(cè)試策略和測(cè)試方法。小企業(yè)普遍存在測(cè)試人員不懂什么是單元測(cè)試,怎樣進(jìn)行單元測(cè)試,很少能看懂代碼的細(xì)節(jié)。而開(kāi)發(fā)人員很少能夠提供完整的詳細(xì)設(shè)計(jì)報(bào)告、需求報(bào)告。導(dǎo)致單元測(cè)試,以拼湊測(cè)試報(bào)告為目的。
認(rèn)知誤區(qū)一:軟件測(cè)試是軟件開(kāi)發(fā)的最后一道步驟,工程師們一般認(rèn)為,軟件實(shí)際項(xiàng)目要經(jīng)過(guò)下面六個(gè)階段:需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),軟件編碼,軟件測(cè)試,軟件發(fā)布。因而,認(rèn)為軟件測(cè)試只是編碼后的一個(gè)孤立的階段,這就是不了解軟件測(cè)試流程的認(rèn)知偏差。軟件測(cè)試是一個(gè)系列的活動(dòng)過(guò)程,是一個(gè)開(kāi)放的體系,包括軟件測(cè)試需求分析,測(cè)試計(jì)劃設(shè)計(jì),測(cè)試用例設(shè)計(jì),執(zhí)行測(cè)試。從而,軟件測(cè)試應(yīng)當(dāng)貫穿于軟件項(xiàng)目的整個(gè)生命周期,并不是軟件開(kāi)發(fā)后最后一道步驟。認(rèn)知誤區(qū)二:軟件商用后如果發(fā)現(xiàn)質(zhì)量問(wèn)題,就武斷認(rèn)為是軟件測(cè)試人員的工作失誤。這種認(rèn)識(shí)很狹隘,很是打擊軟件測(cè)試人員的工作積極性。軟件測(cè)試只能確認(rèn)軟件存在錯(cuò)誤,不能保證軟件沒(méi)有錯(cuò)誤。因?yàn)閺母旧现v,軟件測(cè)試不可能發(fā)現(xiàn)全部錯(cuò)誤,軟件發(fā)布后的錯(cuò)誤可能來(lái)自軟件項(xiàng)目中的各個(gè)過(guò)程。認(rèn)知誤區(qū)三:軟件測(cè)試對(duì)測(cè)試人員技術(shù)要求不高,任何人都可以做。很多工程師認(rèn)為軟件測(cè)試就是安裝并運(yùn)行程序,按按鍵盤(pán)的重復(fù)性工作。隨著軟件測(cè)試技術(shù)的不斷改進(jìn)和完善,新測(cè)試方法、新流程、新工具都在不斷被開(kāi)發(fā)出來(lái)。這就需要軟件測(cè)試工程師掌握和學(xué)習(xí)很多專(zhuān)業(yè)測(cè)試新理念和新技能。認(rèn)知誤區(qū)四:只有編寫(xiě)程序的高手才是軟件專(zhuān)家,而軟件測(cè)試沒(méi)有前途。由于我國(guó)軟件行業(yè)整體研發(fā)能力比較低,軟件開(kāi)發(fā)過(guò)程不規(guī)范。不少軟件項(xiàng)目的開(kāi)發(fā)都還停留在“累加堆疊“階段。項(xiàng)目開(kāi)發(fā)依靠個(gè)別程序員決定,他們一人負(fù)責(zé)總體設(shè)計(jì)和代碼編寫(xiě),給人的印象是程序員是真正的牛人,完成了所有的軟件項(xiàng)目開(kāi)發(fā)工作。但在微軟等世界知名軟件企業(yè)里,軟件測(cè)試人員的待遇和數(shù)量與一般程序員沒(méi)有多少差異,優(yōu)秀測(cè)試人員的待遇甚至比普通程序員要高的多。
3 嵌入式軟件單元測(cè)試流程
單元測(cè)試是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證。單元是規(guī)格說(shuō)明書(shū)中的最小單元,包括函數(shù)、子程序、程序。單元測(cè)試關(guān)注獨(dú)立的函數(shù)功能,是測(cè)試過(guò)程中最低級(jí)別的測(cè)試活動(dòng)。需要開(kāi)發(fā)一個(gè)或多個(gè)測(cè)試用例執(zhí)行單元測(cè)試。把代碼問(wèn)題縮小范圍在開(kāi)發(fā)階段鎖定Bug是單元測(cè)試的主旨要求,以下將介紹一種容易操作的嵌入式單元測(cè)試實(shí)戰(zhàn)流程。
第一階段,制定測(cè)試記錄表,記錄測(cè)試過(guò)程,和測(cè)試情況。測(cè)試記錄表包含:源文件名,子函數(shù)名,用例標(biāo)號(hào),用例名稱(chēng),用例個(gè)數(shù),用例通過(guò)個(gè)數(shù),語(yǔ)句覆蓋率,分支覆蓋率,MC/DC覆蓋率,測(cè)試結(jié)果,問(wèn)題描述,測(cè)試人員,測(cè)試時(shí)間。針對(duì)第一階段的測(cè)試結(jié)果,此時(shí)需要大家分析出問(wèn)題的代碼,各抒己見(jiàn),總結(jié)問(wèn)題,給出解決方法。
第二階段,解決部分測(cè)試用例failed問(wèn)題,找出阻止生成用例的共性。常見(jiàn)問(wèn)題匯總:局部變量未初始化,調(diào)用函數(shù)未聲明,局部變量直接賦值,結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問(wèn)題、聲明位置問(wèn)題,函數(shù)指針,大循環(huán)、死循環(huán),絕對(duì)地址,指針變量,C語(yǔ)言程序中帶有g(shù)oto語(yǔ)句。解決辦法:局部變量聲明后,需要賦初值再使用。調(diào)用函數(shù)未聲明,該問(wèn)題發(fā)生在隔離測(cè)試階段,屬于代碼書(shū)寫(xiě)不規(guī)范問(wèn)題。解決方法:自定義的函數(shù)都需要在頭文件中做統(tǒng)一聲明。局部變量直接賦初值:該問(wèn)題發(fā)生在測(cè)試用例無(wú)法生成階段,屬于代碼書(shū)寫(xiě)不規(guī)范問(wèn)題。解決方法,結(jié)構(gòu)體局部變量,指針變量需要先聲明后賦初值。結(jié)構(gòu)體嵌套、結(jié)構(gòu)體指針、聲明問(wèn)題、聲明位置問(wèn)題:該問(wèn)題也屬于代碼書(shū)寫(xiě)不規(guī)范問(wèn)題。解決方法:根據(jù)MISRA代碼書(shū)寫(xiě)規(guī)范,結(jié)構(gòu)體需要放在頭文件中統(tǒng)一聲明。大循環(huán)、死循環(huán):?jiǎn)卧獪y(cè)試需要有程序結(jié)束的出口。解決方法:把大循環(huán)改為小循環(huán),注釋掉死循環(huán)(if(1)、for(; ;),while(1))。絕對(duì)地址:?jiǎn)卧獪y(cè)試不連接真實(shí)的硬件設(shè)備。遇到寄存器等絕對(duì)地址時(shí),需要對(duì)寄存器做變量處理。指針變量:需要聲明一個(gè)同類(lèi)的數(shù)組,然后把數(shù)組的首地址,賦給指針變量。函數(shù)指針:需要虛構(gòu)一個(gè)函數(shù)實(shí)體,取函數(shù)地地址賦給函數(shù)指針,完成映射。C語(yǔ)言程序中帶有g(shù)oto語(yǔ)句:需要改變程序結(jié)構(gòu),增加判斷語(yǔ)句,去除所有的goto語(yǔ)句,以便確保C語(yǔ)言程序的穩(wěn)定性。
測(cè)試第三階段:基本圈復(fù)雜度高于MISRA閥值要求的函數(shù),先考慮把復(fù)雜函數(shù)改為幾個(gè)小函數(shù)。改不了的由開(kāi)發(fā)人員寫(xiě)聲明以及具體原因,再按照路徑分支來(lái)設(shè)計(jì)測(cè)試用例。匯總測(cè)試結(jié)果,提交測(cè)試問(wèn)題報(bào)告單,并提交行業(yè)標(biāo)準(zhǔn)測(cè)試報(bào)告。
4 結(jié)束語(yǔ)
文章簡(jiǎn)述了軟件測(cè)試的基本概念,澄清了軟件測(cè)試工程實(shí)踐中的幾個(gè)誤區(qū),依據(jù)單元測(cè)試實(shí)踐的具體案例,介紹了一種高效、容易操作的嵌入式單元測(cè)試的流程。
參考文獻(xiàn)
[1]胡丹,杜新華.基于目標(biāo)機(jī)的嵌入式軟件單元測(cè)試[J].電子測(cè)量技術(shù),2006(2).
[2]趙正海,王寧.跟蹤雷達(dá)“指示引導(dǎo)”功能軟件測(cè)試方法研究[J].現(xiàn)代電子技術(shù),2013(36).
[3]于園園.軟件測(cè)試技術(shù)與測(cè)試管理研究[J].江蘇科技信息,2016(7).
[4]王琨.嵌入式計(jì)算機(jī)軟件測(cè)試關(guān)鍵技術(shù)探討[J].科技創(chuàng)新與應(yīng)用,2016(7).
[5]張金環(huán),田洪濤.淺析設(shè)備軟件測(cè)試與質(zhì)量保證[J].電子工業(yè)專(zhuān)用備,2016,45(1).
作者簡(jiǎn)介:張軍(1988-),男,陜西武功人,工學(xué)碩士,助理工程師,主要研究方向:雷達(dá)信號(hào)處理算法、數(shù)字中頻收發(fā)機(jī)和嵌入式軟件測(cè)試。
李攀(1987-),男,陜西西安人,工學(xué)碩士,助理工程師,主要研究方向:相控陣?yán)走_(dá)天線技術(shù)與測(cè)試。
邢光輝(1990-),男,陜西大荔人,工學(xué)學(xué)士,助理工程師,主要研究方向:數(shù)字中頻收發(fā)機(jī)技術(shù)與測(cè)試。