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

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

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