張淑娟++周艷萍
摘 要:本文系統(tǒng)地總結了構建軟件測評中心所必須具備的條件,給出了軟件測試的詳細過程以及各個階段的測試工具。經過充分的市場調研,并結合嵌入式軟件的特點及工作需求,開發(fā)了一個嵌入式軟件評測的平臺,對嵌入式軟件測試平臺配置的研究有一定的參考價值。
關鍵詞:軟件質量與測試 嵌入式軟件 測試平臺
中圖分類號:TP2 文獻標識碼:A 文章編號:1672-3791(2014)01(a)-0011-02
微電子技術的發(fā)展創(chuàng)新帶來了嵌入系統(tǒng)在航天、軍事、通信等行業(yè)的廣泛應用,尤其是軍方軟件對嵌入式的質量要求極高,一定要經過第三方評測,如果一味等待最終軟件測試就會很被動,而且過程中的錯誤沒能及時發(fā)現(xiàn)的話也會給最終集成測試的檢測帶來很大麻煩,所以創(chuàng)建自己的軟件測試平臺尤為重要。從軟件設計之初就利用軟件測試工具檢測各個階段的成果,及時發(fā)現(xiàn)并糾正錯誤,從而達到軟件測試與軟件研發(fā)同步。筆者結合市場調研和嵌入式軟件自身的特點,搭建了自己的軟件評測平臺。
1 建立軟件評測中心管理體系
軟件評測中心一定要有規(guī)范化的體系,做到評測的實時性和準確性,而要實現(xiàn)評測規(guī)范一定要做到以下幾點。
(1)首先要具備專業(yè)測試的資格,擁有設備齊全的專業(yè)實驗室;(2)要有網(wǎng)絡和連接設備,使之滿足不同的測試需求;(3)要搭建完整的軟件運行和數(shù)據(jù)庫支持平臺;(4)有專業(yè)的測試工具和一流的測試人員。
這套管理系統(tǒng)應該采用過程方法和系統(tǒng)方法來建立,對各個過程進行監(jiān)測管理以實現(xiàn)既定目標,與此同時也要使得整個系統(tǒng)相互協(xié)調與配合,達到總體作用大于分過程作用之和的目標。之所以要建立這樣的評測管理系統(tǒng),是為了在既定的限制之下能最大程度地排除軟件錯誤和缺陷。
2 軟件評測的過程
通常,為了保證測試的有效性和準確性,我們會人為地將測試過程分成幾個步驟,詳見圖1的流程圖,如下分別是幾個步驟的主要任務。
2.1 代碼會審
由幾個人通過讀代碼和討論代碼對程序的邏輯性進行分析的過程。一份高質量的代碼應該具備較高的可靠性和安全性,內部模塊的劃分要符合邏輯,市場上已有檢查這一階段的測試工具,如CodeWizard、QAC/C++等;這一階段除了要保證代碼正確性之外還要對代碼質量進行檢測,這類的檢測工具主要包括McCable、Logiscope等。
2.2 單元測試和集成測試
其中,單元測試著眼于軟件的最小設計單位—— 模塊,測試的主要內容是檢測該模塊的實際功能與最初的設計是否符合,同時也能夠檢查編碼是否有錯誤。單元模塊一般規(guī)模較小,實現(xiàn)的功能也簡單,測試工作很容易。單元測試采用結構測試為主,功能測試為輔的方法,這樣對于合理與不合理的情況都有反饋和甄別,只有每個模塊都能正常正確地工作,整個系統(tǒng)才有可能實現(xiàn)既定功能。
有些時候每個單元測試的結果都沒有問題,但是模塊集成之后卻錯誤不斷沒辦法正常工作,這種現(xiàn)象的產生究其原因主要是集成的時候模塊之間相互調用的接口有可能會出現(xiàn)問題,比如,主模塊在調用自模塊的時候出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象,子功能的集成只是簡單疊加邏輯性出現(xiàn)問題導致無法完成主功能等。這時候,集成測試的任務主要是把各個模塊組合起來之后進行檢測以排除與接口或者調用相關的錯誤。各個程序員的編程習慣不同,有些人習慣將所有模塊組裝之后進行最終的測試,稱之為非增量式集成,這種方式容易導致錯誤疊出,且不容易定位錯誤位置查找錯誤原因,而且經常改一個錯誤的時候引進了新的錯誤;有些人習慣增量式集成,即將程序一個模塊一個模塊地擴展,每增加一個模塊立刻進行相應的測試,這樣可以很容易定位錯誤并及時糾正。
常用的增量式測試方法有兩種:一種是自頂向下的集成,即以主模塊為測試驅動,依據(jù)深度優(yōu)先原則或者廣度優(yōu)先原則每次都用實際模塊替代一個樁模塊并立即測試,檢測結果正常之后再進行下一項測試,在這個過程中不斷重復回歸測試以避免引進新的錯誤類型;另一種方法是自底向上的集成,即將最底層的幾個模塊組裝成能夠實現(xiàn)某個功能的模塊集,利用開發(fā)的測試驅動模塊分別測試組裝而成的幾個模塊集,最終刪除測試用的驅動模塊并利用更高層的功能模塊把這些模塊集組成可以完成更多功能的新模塊集,不斷重復上述的遞歸過程直到完成實際功能的主模塊完成。這部分的測試工具主要有Vector Cast、Rational Real Time等。
2.3 系統(tǒng)驗收測試
這一過程主要是向軟件用戶展示軟件的運行效果能夠達到用戶的預期,實現(xiàn)用戶需求。經過代碼會審、單元測試和集成測試之后,一個完整且能正常運行的軟件就已基本上完成了,剩下要做的就是檢測軟件的有效性,即是否能夠滿足開發(fā)需求和實現(xiàn)用戶的基本需求,這一步如果檢測無誤即可進行軟件交付。這部分的測試工具主要CodeTest、LDRA的TRInsight等。
3 軟件評測工具的選擇
從市場上現(xiàn)有的軟件測試工具來看,沒有哪種工具可以完成整個軟件評測過程所有階段的測試,這時候就需要通過仔細分析各個測試工具的功能及特點,采用一種測試工具組合,使得能夠既經濟又高效地完成測試任務。通過我們的調研和實地實驗,將測試系統(tǒng)進行了更為細致的劃分并給每個階段都選擇了合適的集中測試工具,如圖2所示。
這樣的搭配無疑盡可能地實現(xiàn)了自動化測試的目的,同時又使得測試工具出錯帶來的影響降低到了最小。各項測試獨立運行,避免相互影響;又彼此協(xié)調,同時服務于集成功能的測試,最大程度上提高了測試效率。
4 典型軟件測試工具簡介
筆者通過自己做測試工作以來的一些經驗,根據(jù)實際工作中使用的記錄,針對幾款主流測試工具做一簡單的介紹。
4.1 CodeTest
這款軟件是由三個子軟件組成,分別完成不同階段的測試,分別是:用于檢測主機上軟件開發(fā)完成后運行情況的CodeTestNative;用于檢測軟件遷移到目標系統(tǒng)后是否正常的CodeTestSoftware-In-Circuit;用于系統(tǒng)測試的CodeTest Hardware-In-Circuit,系統(tǒng)測試需要軟硬件結合做綜合測試。
這款測試軟件具有如下特點:(1)測試性能比較高,可在同一時間監(jiān)測32000個函數(shù)、1000個任務;(2)具有分析存儲器分配的功能,能夠以最快速度發(fā)現(xiàn)存儲器分配的隱患,更迅速地發(fā)現(xiàn)運行中的錯誤;(3)可以進行代碼覆蓋率的檢測;(4)能夠追蹤代碼,追蹤的緩沖空間很大,給大規(guī)模軟件系統(tǒng)的代碼追蹤分析帶來了便捷。同時,該軟件還可以進行其他方面的分析,如動態(tài)內存的分配等,測試結果具有高可靠性。近來,該軟件新推出的VME測試卡真正解放了程序員,使得程序員將注意力更多的集中在代碼設計上,而不必再為硬件系統(tǒng)、測試方案、以太網(wǎng)連接等方面費神。
4.2 Cantata/Cantata++
這款軟件主要針對C或者C++進行測試,可以分為靜態(tài)分析和動態(tài)測試兩部分,分別由StaticAnalysis和DynamicTesting進行分析和實際測試。靜態(tài)分析方面主要由Cantata檢查代碼的復雜性,然后根據(jù)復雜度的實際情況檢測數(shù)據(jù)流,確定軟件系統(tǒng)可維護的程度,靜態(tài)分析的最終結果可由專業(yè)軟件處理得到直觀的圖表分析報告。
動態(tài)測試方面主要是確定軟件運行過程是否一切正常,這部分測試結果的有效性主要取決于動態(tài)測試的代碼覆蓋率,覆蓋率越高測試結果越準確。
這款軟件可以自動分析源代碼,得到TCD,即測試用例模板,利用輸入輸出模擬實際環(huán)境。測試過程與軟件工程的建立過程一一對應,可以做到開發(fā)與測試同時進行,無需轉換開發(fā)環(huán)境,對于操作者來說使用起來相當方便。
4.3 McCabe
這款軟件名字來源于著名學者McCabe,利用的原理是結構化測試理論,即V(G)圈的復雜度與該模塊獨立路徑數(shù)的復雜度相等。其最顯著的特點在于可視化,在分析源代碼的基礎上可以非常準確直觀地得到系統(tǒng)結構圖,充分利用圖論原理,用直觀的圖形代替通讀性不高的代碼,不僅方便測試人員理解而且可以得到各種標準的靜態(tài)復雜度。一方面,該軟件可以將軟件質量和版本變化用波動曲線的形式呈現(xiàn)出來,方便檢測軟件質量變化情況;另一方面,流程圖與代碼一一對應并做出相應的標注,方便迅速而準確地找出問題。
該軟件主要用于動態(tài)集成測試,從宏觀層面上掌控軟件結構,同時面向源代碼分析,具有很強的普適性,可以用于軟件開發(fā)的各個階段,貫穿始終。它采用客觀的評估方式,保證覆蓋所有的獨立路徑,能夠提供整個軟件系統(tǒng)的整體結構圖,對于用戶來說,可以更直觀全面地了解軟件,提高了編程人員的軟件分析能力。
參考文獻
[1] 孫昌愛,靳若明,劉超,等.實時嵌入式軟件的測試技術[J].小型微型計算機系統(tǒng),2000,9:920-924.
[2] 李虎,史曉華,楊海燕,等.軟件質量評價技術[J].計算機研究與發(fā)展,2002,1:61-67.
這款測試軟件具有如下特點:(1)測試性能比較高,可在同一時間監(jiān)測32000個函數(shù)、1000個任務;(2)具有分析存儲器分配的功能,能夠以最快速度發(fā)現(xiàn)存儲器分配的隱患,更迅速地發(fā)現(xiàn)運行中的錯誤;(3)可以進行代碼覆蓋率的檢測;(4)能夠追蹤代碼,追蹤的緩沖空間很大,給大規(guī)模軟件系統(tǒng)的代碼追蹤分析帶來了便捷。同時,該軟件還可以進行其他方面的分析,如動態(tài)內存的分配等,測試結果具有高可靠性。近來,該軟件新推出的VME測試卡真正解放了程序員,使得程序員將注意力更多的集中在代碼設計上,而不必再為硬件系統(tǒng)、測試方案、以太網(wǎng)連接等方面費神。
4.2 Cantata/Cantata++
這款軟件主要針對C或者C++進行測試,可以分為靜態(tài)分析和動態(tài)測試兩部分,分別由StaticAnalysis和DynamicTesting進行分析和實際測試。靜態(tài)分析方面主要由Cantata檢查代碼的復雜性,然后根據(jù)復雜度的實際情況檢測數(shù)據(jù)流,確定軟件系統(tǒng)可維護的程度,靜態(tài)分析的最終結果可由專業(yè)軟件處理得到直觀的圖表分析報告。
動態(tài)測試方面主要是確定軟件運行過程是否一切正常,這部分測試結果的有效性主要取決于動態(tài)測試的代碼覆蓋率,覆蓋率越高測試結果越準確。
這款軟件可以自動分析源代碼,得到TCD,即測試用例模板,利用輸入輸出模擬實際環(huán)境。測試過程與軟件工程的建立過程一一對應,可以做到開發(fā)與測試同時進行,無需轉換開發(fā)環(huán)境,對于操作者來說使用起來相當方便。
4.3 McCabe
這款軟件名字來源于著名學者McCabe,利用的原理是結構化測試理論,即V(G)圈的復雜度與該模塊獨立路徑數(shù)的復雜度相等。其最顯著的特點在于可視化,在分析源代碼的基礎上可以非常準確直觀地得到系統(tǒng)結構圖,充分利用圖論原理,用直觀的圖形代替通讀性不高的代碼,不僅方便測試人員理解而且可以得到各種標準的靜態(tài)復雜度。一方面,該軟件可以將軟件質量和版本變化用波動曲線的形式呈現(xiàn)出來,方便檢測軟件質量變化情況;另一方面,流程圖與代碼一一對應并做出相應的標注,方便迅速而準確地找出問題。
該軟件主要用于動態(tài)集成測試,從宏觀層面上掌控軟件結構,同時面向源代碼分析,具有很強的普適性,可以用于軟件開發(fā)的各個階段,貫穿始終。它采用客觀的評估方式,保證覆蓋所有的獨立路徑,能夠提供整個軟件系統(tǒng)的整體結構圖,對于用戶來說,可以更直觀全面地了解軟件,提高了編程人員的軟件分析能力。
參考文獻
[1] 孫昌愛,靳若明,劉超,等.實時嵌入式軟件的測試技術[J].小型微型計算機系統(tǒng),2000,9:920-924.
[2] 李虎,史曉華,楊海燕,等.軟件質量評價技術[J].計算機研究與發(fā)展,2002,1:61-67.
這款測試軟件具有如下特點:(1)測試性能比較高,可在同一時間監(jiān)測32000個函數(shù)、1000個任務;(2)具有分析存儲器分配的功能,能夠以最快速度發(fā)現(xiàn)存儲器分配的隱患,更迅速地發(fā)現(xiàn)運行中的錯誤;(3)可以進行代碼覆蓋率的檢測;(4)能夠追蹤代碼,追蹤的緩沖空間很大,給大規(guī)模軟件系統(tǒng)的代碼追蹤分析帶來了便捷。同時,該軟件還可以進行其他方面的分析,如動態(tài)內存的分配等,測試結果具有高可靠性。近來,該軟件新推出的VME測試卡真正解放了程序員,使得程序員將注意力更多的集中在代碼設計上,而不必再為硬件系統(tǒng)、測試方案、以太網(wǎng)連接等方面費神。
4.2 Cantata/Cantata++
這款軟件主要針對C或者C++進行測試,可以分為靜態(tài)分析和動態(tài)測試兩部分,分別由StaticAnalysis和DynamicTesting進行分析和實際測試。靜態(tài)分析方面主要由Cantata檢查代碼的復雜性,然后根據(jù)復雜度的實際情況檢測數(shù)據(jù)流,確定軟件系統(tǒng)可維護的程度,靜態(tài)分析的最終結果可由專業(yè)軟件處理得到直觀的圖表分析報告。
動態(tài)測試方面主要是確定軟件運行過程是否一切正常,這部分測試結果的有效性主要取決于動態(tài)測試的代碼覆蓋率,覆蓋率越高測試結果越準確。
這款軟件可以自動分析源代碼,得到TCD,即測試用例模板,利用輸入輸出模擬實際環(huán)境。測試過程與軟件工程的建立過程一一對應,可以做到開發(fā)與測試同時進行,無需轉換開發(fā)環(huán)境,對于操作者來說使用起來相當方便。
4.3 McCabe
這款軟件名字來源于著名學者McCabe,利用的原理是結構化測試理論,即V(G)圈的復雜度與該模塊獨立路徑數(shù)的復雜度相等。其最顯著的特點在于可視化,在分析源代碼的基礎上可以非常準確直觀地得到系統(tǒng)結構圖,充分利用圖論原理,用直觀的圖形代替通讀性不高的代碼,不僅方便測試人員理解而且可以得到各種標準的靜態(tài)復雜度。一方面,該軟件可以將軟件質量和版本變化用波動曲線的形式呈現(xiàn)出來,方便檢測軟件質量變化情況;另一方面,流程圖與代碼一一對應并做出相應的標注,方便迅速而準確地找出問題。
該軟件主要用于動態(tài)集成測試,從宏觀層面上掌控軟件結構,同時面向源代碼分析,具有很強的普適性,可以用于軟件開發(fā)的各個階段,貫穿始終。它采用客觀的評估方式,保證覆蓋所有的獨立路徑,能夠提供整個軟件系統(tǒng)的整體結構圖,對于用戶來說,可以更直觀全面地了解軟件,提高了編程人員的軟件分析能力。
參考文獻
[1] 孫昌愛,靳若明,劉超,等.實時嵌入式軟件的測試技術[J].小型微型計算機系統(tǒng),2000,9:920-924.
[2] 李虎,史曉華,楊海燕,等.軟件質量評價技術[J].計算機研究與發(fā)展,2002,1:61-67.