隨著軟硬件協(xié)同應(yīng)用復(fù)雜性日益增加,,其中軟件必須通過全面的測試才可以保證質(zhì)量和可靠性。但由于研發(fā)時(shí)間的限制,,軟件測試需要選擇合適的方法,同時(shí)選擇合適的測試工具,以便達(dá)到足夠的測試效率,。在一個(gè)基于FPGA的軟硬件協(xié)同應(yīng)用中,本文從占用資源,、運(yùn)行速度等方面比較了Rational Visual Test和QuickTest Professional兩大自動(dòng)化測試工具,,得出前者有較好的速度和可用性,。
前言
軟件測試是程序的一種執(zhí)行過程,,目的是盡可能發(fā)現(xiàn)并改正被測試軟件中的錯(cuò)誤,, 提高軟件的可靠性,它是軟件生命周期中一項(xiàng)非常重要的非常復(fù)雜的工作,。在目前的情況下對軟件可靠性保證具有極其重要意義的,,仍然是軟件測試。但如何進(jìn)行測試,,如何提高測試的質(zhì)量和效率,,從而確保軟件產(chǎn)品的質(zhì)量和可靠性,仍是令人深感困惑的問題,。本文根據(jù)筆者的一些粗淺的體會(huì),,簡要介紹軟件測試的基本過程,以及一些常用的技術(shù)手段,、測試策略和準(zhǔn)則,,并介紹一個(gè)在工作中用到的Rational(現(xiàn)已被IBM收購)自動(dòng)化軟件測試工具Visual Test。
運(yùn)用這種自動(dòng)化測試工具可以省去很多手工運(yùn)行的麻煩,,而且準(zhǔn)確獲得測試數(shù)據(jù)和結(jié)果,。通過本文介紹,以期使愈來愈多的人在認(rèn)識到軟件測試重要性的同時(shí),,能夠更進(jìn)一步了解應(yīng)如何正確地選擇和有效地運(yùn)用各種各樣的測試方法,、技術(shù)以及自動(dòng)化測試工具提高軟件的質(zhì)量和可靠性。
軟件測試的基本過程
軟件測試是一個(gè)極為復(fù)雜的過程,。一個(gè)規(guī)范化的軟件測試過程通常須包括以下基本的測試活動(dòng) :①擬定軟件測試計(jì)劃 ,;②編制軟件測試大綱 ;③設(shè)計(jì)和生成測試用例 ,;④實(shí)施測試 ,;⑤生成軟件問題報(bào)告。
實(shí)際上,,軟件測試過程與整個(gè)軟件開發(fā)過程基本上是平行進(jìn)行的,。測試計(jì)劃早在需求分析階段即應(yīng)開始制定,其他相關(guān)工作,,包括測試大綱的制定,、測試數(shù)據(jù)的生成、測試工具的選擇和開發(fā)等也應(yīng)在測試階段之前進(jìn)行,。充分的準(zhǔn)備工作可以有效地克服測試的盲目性,,縮短測試周期,,提高測試效率,,并且起到測試文檔與開發(fā)文檔互查的作用。
此外,,軟件測試在每個(gè)測試周期中,,測試工程師將依據(jù)預(yù)先編制好的測試大綱和準(zhǔn)備好的測試用例,對被測軟件進(jìn)行完整的測試,。測試與糾錯(cuò)通常是反復(fù)交替進(jìn)行的,。
軟件測試工具
軟件測試的目的是用盡可能少的時(shí)間和人力發(fā)現(xiàn)并改正軟件中潛在的各種故障及缺陷,并能以更快的速度和更低的成本開發(fā)出高質(zhì)量的應(yīng)用程序,這就使測試人員的工作比以往任何時(shí)候都更加困難。在很多項(xiàng)目中,測試人員的所有任務(wù)大多是由手動(dòng)處理的,而實(shí)際上有很大一部分重復(fù)性強(qiáng)的測試工作是可以獨(dú)立開來,,自動(dòng)實(shí)現(xiàn)的,。在大型項(xiàng)目中測試團(tuán)隊(duì)和其他團(tuán)隊(duì)之間沒有足夠的合作,無法促進(jìn)彼此的交流,。實(shí)施測試自動(dòng)化可以提高測試工作效率,使用工具的目的只是為了減少部分手工測試,將更多人力資源投入到更有價(jià)值的工作中,。
一些受軟件開發(fā)人員歡迎的軟件測試工具為軟件測試提供了強(qiáng)有力的支持。本文將介紹美國Rational 公司(現(xiàn)已被IBM收購)的著名套裝軟件Rational Visual Test,。它的一個(gè)重要特點(diǎn)是可以自動(dòng)驅(qū)動(dòng)被測程序的運(yùn)行。并且可以自動(dòng)記錄和重放程序執(zhí)行過程,,從而實(shí)現(xiàn)了對測試進(jìn)行“復(fù)查”的自動(dòng)化,。由于測試是一個(gè)需要反復(fù)進(jìn)行的過程,常常要數(shù)十次甚至數(shù)百次地重復(fù),。因此,,這一特性大大地提高了軟件“再測試”(Re-Test)和“回歸測試”(Regression)的自動(dòng)化程度,把測試人員從繁雜的,、重復(fù)性的手工測試中解脫出來,,從而顯著地提高軟件測試效率,。除了這個(gè)最基本的自動(dòng)錄放功能外,它還提供了一系列的輔助支持功能,,比如被錄制的程序執(zhí)行過程可以被自動(dòng)轉(zhuǎn)換成具有良好可讀性的高級語言程序,,從而使這個(gè)測試驅(qū)動(dòng)程序可以由測試人員根據(jù)測試需要進(jìn)行必要的修改,甚至完全用手工方式編制,。自動(dòng)記錄和分析比較測試的執(zhí)行結(jié)果,。
測試實(shí)例介紹
接下來以實(shí)際工作中的一個(gè)測試項(xiàng)目為例,結(jié)合Visual Test這個(gè)自動(dòng)測試工具對所要測試的內(nèi)容進(jìn)行介紹,。為了方便介紹,,下文都以VT作為Visual Test的簡稱,QT作為工具QuickTest Professional的簡稱,。
Visual Test的軟件界面,,與Visual Stadio相似,所以很容易上手,,左面是建立的項(xiàng)目名,,右面是代碼,,最下面是信息輸出窗口。
接下來介紹所要測試的軟件ispLEVER,,它是Lattice公司的CPLD/FPGA集成設(shè)計(jì)工具?,F(xiàn)在所要測試的就是在ispLEVER環(huán)境下運(yùn)行一批FPGA器件的設(shè)計(jì)例子,產(chǎn)生最后的下載文件(.bit或者.jed),,并提取一些例如最大頻率,所用資源等參數(shù),,將這些參數(shù)與之前版本運(yùn)行后的結(jié)果相比較,,這樣就能分析出當(dāng)前所測試軟件版本的優(yōu)劣之處。
運(yùn)行Rational Visual test測試主要分為兩步,,先運(yùn)行所有的設(shè)計(jì)的case,,然后提取參數(shù)。
運(yùn)行所有case
首先讀取runlist文件,,runlist是一個(gè)包括了所有運(yùn)行例子的文件名的文件,,每一行對應(yīng)一個(gè)例子的文件名,程序逐行讀入,,參考圖1示的代碼,。
接下來整個(gè)代碼運(yùn)行的流程可以表示為:最小化VT窗口->在桌面上找到ispLEVER的圖標(biāo)并運(yùn)行->進(jìn)入工作目錄->處理一些彈出的窗口信息->打開需要運(yùn)行的例子->清除項(xiàng)目以前運(yùn)行的信息 ->保存項(xiàng)目->運(yùn)行布線->保存當(dāng)前的項(xiàng)目->把運(yùn)行完的例子復(fù)制到統(tǒng)一的備份目錄中->關(guān)閉當(dāng)前運(yùn)行的項(xiàng)目 ->運(yùn)行下一個(gè)例子 ……,直至運(yùn)行完所有的測試?yán)印?/p>
以上所有的菜單和窗口操作都是由VT執(zhí)行代碼完成操作,。接著測試工具將會(huì)按照代碼包含的子程序運(yùn)行,。
圖2所示的打開項(xiàng)目程序所進(jìn)行的操作依次為,選中ispLEVER為當(dāng)前窗口,,定義窗口的尺寸,,打開File下拉菜單的第二行命令,也就是open project命令,,接著用play命令輸入工作目錄和項(xiàng)目名,,接著點(diǎn)擊open來打開項(xiàng)目。
此外VT中還有例如點(diǎn)擊窗口中的關(guān)鍵字操作,,在當(dāng)前窗口中尋找關(guān)鍵字,,坐標(biāo)定位等指令,靈活運(yùn)用這些命令極大的豐富了VT自動(dòng)化測試的內(nèi)容,。
運(yùn)行完所有的例子后,,所要進(jìn)行的就是提取所需的各種參數(shù),也就是重要的測試數(shù)據(jù)。
運(yùn)行完的例子都會(huì)備份在一個(gè)統(tǒng)一的目錄中,,現(xiàn)在VT所要做的就是在這些對應(yīng)的目錄中找到.log和.twr文件,,這兩個(gè)文件是最后運(yùn)行完case的輸出信息文件,里面包含了測試所要提取的一些參數(shù)信息,。
圖3是在.log文件中的一段信息,,紅圈指示的內(nèi)容是需要提取的信息之一,,log文件是運(yùn)行完后軟件所生成的日志,里面包括了布線完后的一些資源信息,,在這里VT所要做的提取的是PIOs信息,,也就是輸入輸出端口數(shù)量的信息,可以用下面的代碼實(shí)現(xiàn),。
圖4實(shí)現(xiàn)的是把log文件中逐行輸入到tempstring中,,在這些輸入的信息中找到所需信息并處理,則需要在VT中用以下代碼實(shí)現(xiàn),。
圖5實(shí)現(xiàn)的是在字符串tempstring中尋找關(guān)鍵字"Number of external PIOs:”,,也就是I/O口端口數(shù)量信息的那行。如果找到的話,,用LTRIM$實(shí)現(xiàn)從這行第29個(gè)字符開始的內(nèi)容放入tempstring2中,。由于所要的有用信息只包括”out of”之前的數(shù)字,所以還需要用LEFT$來提取左面的信息,,也就是158,,這就是使用的I/O端口數(shù)量的信息,最后再用TRIM$ 去掉空格即可得到,。
類似的可以在特定的時(shí)序文件中得到最大頻率,,所用綜合工具,器件封裝,,所用到的資源等等信息,,把這些參數(shù)信息提取出來與之前版本的ispLEVE軟件所運(yùn)行得出的結(jié)果相比較,得出測試的結(jié)果,。
從上可看出,,對于測試所要運(yùn)行的例子比較多,如果采用手工的話,,工作量相當(dāng)大,,而且極不精確,容易出錯(cuò)?,F(xiàn)在采用自動(dòng)化測試工具將簡化測試的繁瑣程度,所有操作由自動(dòng)化測試工具完成,,而且代碼可以移植,,只要稍微改動(dòng)幾個(gè)參數(shù),代碼適用于每個(gè)版本的測試,,給測試工作帶來極大方便與準(zhǔn)確性,。
自動(dòng)化測試工具的比較
目前同類的主流自動(dòng)化測試軟件還有Mucury公司的QuickTest Professional。
它也是一款測試自動(dòng)化軟件,,與Visual Test有類似之處,,都是用于創(chuàng)建功能和回歸測試,,能自動(dòng)捕獲、驗(yàn)證和重放用戶的交互行為,。QuickTest Professional的特點(diǎn)是易于操作,,可以通過軟件中所集成的錄制能力來捕獲測試步驟,產(chǎn)品用簡單的英語以文檔形式記錄每個(gè)步驟,,并通過活動(dòng)屏幕將文檔與一個(gè)集成截屏相結(jié)合,。傳統(tǒng)的腳本記錄工具所生產(chǎn)的腳本不易修改,不同的是,,在QuickTest中的關(guān)鍵詞驅(qū)動(dòng)方式能便捷地插入,、修改數(shù)據(jù)驅(qū)動(dòng)和移除測試步驟,靈活性較強(qiáng),。
下面的數(shù)據(jù)表格是在PC上運(yùn)行VT和QT這兩個(gè)工具,,分別關(guān)于內(nèi)存占用以及打開ispLEVER工具的時(shí)間,兩者對比之下的結(jié)果,。其中Open project ,,F(xiàn)it Design是指打開設(shè)計(jì)和最后生成下載文件,Simulation是仿真,,Design Planner,、EPIC、IPexpress,、ispVM,、Power Calculator等都是ispLEVER開發(fā)環(huán)境下的工具,主要用于底層的交互式編輯,,調(diào)用ip以及下載程序,,分析功率等功能(表1,表2),。
根據(jù)上面兩個(gè)對比結(jié)果,,從內(nèi)存占用情況來看VT占用的資源要遠(yuǎn)小于QT;從打開工具所用時(shí)間來看,,VT打開絕大多數(shù)ispLEVER的工具的時(shí)間也要小于QT,。雖然QT具有較強(qiáng)的錄制修改腳本的特點(diǎn),但從實(shí)際應(yīng)用來看,,運(yùn)行的速度和占用資源對于軟件測試更為重要,,所以自動(dòng)測試工具VT要優(yōu)于QT。
結(jié)論
隨著軟硬件協(xié)同應(yīng)用復(fù)雜性日益增加,,軟件測試工作越來越受到重視,。 隨著軟件技術(shù)的發(fā)展,程序的規(guī)模逐漸增大,復(fù)雜度也逐漸增加,,使用軟件測試工具可以增強(qiáng)軟件測試的自動(dòng)化程度,。在兩個(gè)主流軟件的比較中,Visual Test相對較高的效率和速度在軟硬件設(shè)計(jì)的實(shí)際應(yīng)用中得到驗(yàn)證,,有助于軟件開發(fā)和測試人員進(jìn)一步提高測試效率和軟件的質(zhì)量,。這可以反映出在軟硬件設(shè)計(jì)的過程中,工具的選擇必須用實(shí)際應(yīng)用來作選擇,,來保障整體的開發(fā)效率的提高,。