李偉中
(海南師范大學 物理與電子工程學院,海南 海口 570100)
軟件自動化測試系統(tǒng)的研究與實現(xiàn)
李偉中
(海南師范大學 物理與電子工程學院,海南 海口 570100)
軟件更新?lián)Q代的速度正在不斷加快,如何才能保證軟件的質(zhì)量,如今已經(jīng)成為了很多企業(yè)都十分關注的重點。如今,僅簡單的依靠傳統(tǒng)的手工測試,已經(jīng)無法滿足現(xiàn)代社會對于測試的需求。在這個時候自動化測試就成為良好的解決辦法。自動化測試降低測試的難度,縮短測試周期。
軟件自動化測試;系統(tǒng);研究與實現(xiàn)
如今,隨著時代的發(fā)展以及科技的不斷進步,軟件程序的規(guī)模正在不斷的擴大,因此就更需要在開發(fā)周期內(nèi)加入自動化測試。測試的自動化能夠減少開銷,并有效的提高產(chǎn)品的質(zhì)量。
1.1軟件測試的定義
測試這個詞匯,最早出現(xiàn)在古拉定字當中,原本的含義是罐子、容器。但在工業(yè)活動當中,測試被作為產(chǎn)品質(zhì)量檢驗的一種活動,在工業(yè)活動中的含義為“檢驗產(chǎn)品是否滿足需求”。在軟件測試的活動當中,也包含了很多十分重要的任務,其中就包括發(fā)現(xiàn)錯誤。
1.2軟件測試的原則
一般來講軟件測試的原則分為以下幾個方面:
1.2.1追溯用戶需求
軟件產(chǎn)生的目的就是為了滿足用戶的需求,而軟件測試恰恰能夠揭示軟件當中的缺陷,證明軟件是否能夠滿足需求。
抽象性和復雜性是軟件的顯著特點,軟件在任何時期都可能出現(xiàn)錯誤。正因如此,在進行軟件測試時,不應將軟件測試單純的看做只處于軟件開發(fā)階段的獨立工作,而需要在軟件開發(fā)的所有階段當中都貫穿軟件測試。在軟件的開發(fā)以及設計階段就應該開始測試工作,于此同時,應堅持開發(fā)的評審與驗證,杜絕缺陷以及隱患,提高質(zhì)量。只要對軟件進行充足的測試,就能夠有效的提升軟件的質(zhì)量,這是測試的基本原則。
1.2.2完全測試是不可能的
要對軟件進行完全測試,在時間和資源都有限的情況下,使得軟件變得完美,是不可能的,一個有足夠規(guī)模的程序,路徑的組合數(shù)是十分龐大的,而對每一種可能的路徑都進行完全的測試這是不可能的。此外我們應該認識到,對于軟件的測試也是需要一定的成本的,尤其是到了測試的后期,發(fā)現(xiàn)錯誤往往會付出巨大的代價,因此對于軟件的測試,也需要根據(jù)對軟件可靠性的要求來進行選擇。
1.2.3測試無法顯示潛在的缺陷
對軟件進行測試,能夠有效的找到軟件當中的漏洞,但與此同時我們應該注意到,雖然能夠通過測試的方法找到漏洞,但測試出來的報告并不代表所有的錯誤已經(jīng)全部找到,進行進一步的測試,很可能還會發(fā)現(xiàn)其余漏洞,測試能夠證明軟件存在錯誤,但是測試結果并不能說明軟件沒有錯誤。
2.1自動化執(zhí)行引擎總設計
自動化執(zhí)行引擎由User Interface、Execution Server等模塊組成,其內(nèi)部構架如下圖所示。

圖1 執(zhí)行引擎總體構架
在自動化執(zhí)行引擎當中,User Interface提供操作界面,講用戶的請求發(fā)送給Job Controller進行處理,并提供一個GUI界面,所有的請求都可以在GUI界面進行完成。
Job Controller用戶的請求一般分為與控制校本運行相關的請求以及其他操作請求,與控制腳本運行相關的操作請求有run job、killcase等;二請他求求有查詢結果等。第一類的請求會全部都通過Job controller來進行處理,而在Job不同的狀態(tài)下,也會有不同的處理方法,因此可以說,Job Controller是一個狀態(tài)機。除此之外,Job Controller的另一個功能是可以將job分發(fā)到不同的Execution Server來運行。為了能夠?qū)崿F(xiàn)分布式的運行模式,我們講Job Controller與Execution Server放在不同的服務器當中,同時保證一個Job Controller能夠同時控制多個Execution Server。
2.2執(zhí)行引擎各功能模塊設計
2.2.1Job Job Controller
作為一個特殊的請求處理器,Job Controller能夠處理Job相關的操作請求,例如Kill job、Modify job等。由于Job在每一種狀態(tài)下的處理方法各不相同,因此對于Job Controller的設計,可以采用狀態(tài)機的模式。如圖2所示。

圖2 Job Controller控制流程圖
在創(chuàng)建Job之后,用戶可以設置運行時間,Job Controller會判斷job的運行時間是在什么時間,如果是立即執(zhí)行,Job Controller會將job的狀態(tài)改為Running,并向Execution Server發(fā)送請求,如果是未來某時間執(zhí)行,則job的狀態(tài)則會被Job Controller改為Wait Start,在運行結束后,Job Controller會將job的狀態(tài)改為Done。
2.2.2Execution Server
在自動執(zhí)行引擎當中,Execution Server的功能就是運行job,Execution Server能夠?qū)ob組成一個Suite的隊列,然后一次執(zhí)行這些Suite,在所有的隊列都完成后,Execution Server就會通知Job Controller更改job的狀態(tài)。
Execution Server的操作請求,主要來自于Kill Job、Retry Job等中的Suite Result,Execution Server能夠為所有請求提供Handler。
2.2.3Suite Execute Layer
Suite Execute Layer的功能,主要是運行Suite,完成被測試對象的測試,一般來講,Suite主要由參數(shù)定義部分、初始化部分、清理部分等部分組成。參數(shù)定義部分可以定義在Case中使用的參數(shù),而初始化部分則可以進行初始化工作,清理部分能夠?qū)ο筮M行銷毀等工作,而Case作為Case的主體,包含Suite中所有的Case列表。
如今,隨著時代的發(fā)展以及科技的不斷進步,軟件的質(zhì)量問題已經(jīng)受到了全社會越來越多的重視。傳統(tǒng)的軟件開發(fā)模式應經(jīng)難以滿足現(xiàn)代軟件開發(fā)的要求,并對該產(chǎn)業(yè)帶來了很多不好的影響,而軟件測試工作就是為了提高軟件的質(zhì)量所產(chǎn)生的,因此,軟件測試工作對于軟件的開發(fā)是十分重要的。本文由于篇幅有限提出了一個自動化測試引擎的模型,以供同行參考,希望能夠起到借鑒的作用。
[1]金大海,宮云戰(zhàn).數(shù)據(jù)驅(qū)動自動化測試方法研究[J].裝甲兵工程學院學報.2014(02)
[2]秦斌,陶銳.Web應用的自動測試方法[J].深圳大學學報.2014(02)
[3]孫惠杰,楊曉紅.軟件測試的自動化[J].哈爾濱師范大學自然科學學報.2013(05)
G270.7
A
1003-5168(2015)-12-0138-2