葉素梅

摘要:當軟件產品的代碼被修改,特別是在產品的版本更新時,會對原有的代碼產生影響。為了保證產品的整體性能,必須對整個代碼進行回歸測試。回歸測試的重復度較高,工作量較大,自動化測試可以大大提高測試的效率。通過設計并生成測試腳本,在服務器上執行測試命令,并調取用例庫中的測試用例,可以實現回歸測試的自動化。對測試結果進行分析后,自動生成測試報告。
關鍵詞:回歸測試;自動化測試;用例庫;測試用例復用
中圖分類號:TP311.52 ? ? 文獻標識碼:A? ? ?文章編號:1009-3044(2018)35-0055-02
Abstract: When the code of the software product is modified, especially when the product version is updated, it will affect the original code.In order to ensure the overall performance of the product, the entire code must be tested for regression.Regression testing has high repeatability and heavy workload. Automated testing can greatly improve the efficiency of testing.The automation of regression testing can be realized by designing and generating test scripts, executing test commands on the server and calling test cases from the test case database.After analyzing the test results, the test report is automatically generated.
Keywords:Regression Testing; Automated Testing;Testcase Database; Testcasereuse
在軟件開發的整個過程中,對代碼的任何一次修改,都有可能給軟件帶來問題。軟件代碼的修改一般是增加新功能,或者是對已有代碼進行缺陷修正和性能提升。新加入的代碼除了本身可能存在問題外,也有可能會對原有的代碼產生影響[1]。同樣的,對缺陷進行修正的同時,又可能引發了其他的缺陷。因此,每當代碼發生改變時,需要對代碼進行回歸測試,再一次測試所有的功能[2]。對新增的代碼需要對應的增加新的測試用例,對原有的代碼需要再次運行所有的測試用例,以便確定修改后的代碼達到了預期的目標。
回歸測試在整個軟件開發周期中,有著很重要的作用,保障著整個產品的質量和安全。但是回歸測試在軟件測試環節的工作量很大,手動測試的效率不高[3]。在回歸測試中引入自動化測試,通過控制被測軟件的執行,模擬手動測試,可以大大提高測試的效率,節約開發的成本[4]。本文通過對測試用例庫中用例的復用,在多個服務器之間進行腳本設計與執行,構建了一個適用于回歸測試的自動化平臺。
1 系統設計
軟件測試過程中,有很多重復性的工作,特別是在產品的回歸測試中尤為明顯。我們設計了一個由多臺服務器構成的測試平臺,能夠自動執行測試腳本,并通過測試結果的比較分析,最終生成測試報告。
1.1 系統的構成
回歸測試平臺包含4個服務器系統,分別是代碼服務器、編譯服務器、用例庫服務器和測試執行服務器等。
代碼服務器上保存著產品所有被測代碼,可以進行產品的版本管理。在這個服務器上可以根據版本號,自動簽出需要測試的所有代碼。代碼被簽出后,在編譯服務器上進行產品編譯,并根據測試任務生成測試命令腳本。
用例庫服務器管理著產品測試中的可復用測試用例。通過接口可以向庫中手動添加用例,對庫中已有的用例可以通過用例號自動調取。測試執行服務器主要是在服務器上搭建了產品運行的所有環境,以確保產品能夠正常運行。根據產品需求的不同,不同版本的產品所需要的硬件、設備參數、性能參數等環境不太一致。在專門的測試執行服務器上執行產品測試,最大程度上模擬了最終產品的運行環境,避免了多系統多版本的干擾,能夠得到最真實的測試結果。
1.2 系統的邏輯關聯
系統所涉及的四類服務器都構建在局域網環境內。編譯服務器負責從代碼服務器上簽出需要測試的代碼,并開始進行編譯。編譯成功后的產品會回傳到代碼服務器進行版本管理。當編譯結束后,在編譯服務器上會生成測試腳本,也就是生成不同的測試命令清單,并根據測試命令,拉取測試用例清單。測試用例清單會傳送到測試用例庫,用于測試用例的校驗。這個過程主要是為了確保測試用例庫中有全部所需的用例,以免自動執行時,因為無法調取測試用例而報錯。
測試命令會下發到測試執行服務器中,針對每一條執行命令,調取合適的測試用例,并分析結果,最終生成一個測試報告。圖1給出了在各服務器之間數據流轉的示意圖。通過這個平臺,能夠有效地進行產品的回歸測試,盡可能檢測出因為代碼的修改而造成的軟件缺陷,而且測試效率得到很大的提升。
2 系統實現
2.1 回歸測試的預處理
在對一個新版本的產品進行回歸測試之前,必須有針對性地進行軟硬件方面的前期準備。在編譯服務器上需要構建編譯環境,我們的產品主要是要區分Linux系統和windows系統。測試用例庫服務器上需要根據代碼的更新,設計并手動新增合適的測試用例。這些用例需要事先進行手動測試,以確保新增的用例真實有效。一般而言,測試用例庫中更多的是新增用例,不太會刪除用例。新增的用例都有對應的用例編號,以便能存入到用例庫中進行復用管理。測試執行服務器上需要構建產品運行的真實環境。對于我們的產品而言,就是需要機、電、光等各部分都配合到位。
2.2 測試的設計
當產品編譯成功并且測試用例庫完備以后,就可以進行回歸測試的腳本設計了。這個過程需要測試人員人工干預,是一個半自動的過程。測試人員根據產品的業務邏輯,選擇產品的業務編號。每個業務都有相應的測試命令和測試用例列表。測試人員完成選擇后,編譯服務器上會根據業務邏輯自動生成測試腳本。
測試命令腳本示例如下所示:
<TestCommandID = 0101.10>
<Parameter1> a </ Parameter1>
<Parameter2> b </ Parameter2>
……
<InputSet>//192.168.1.1/in.dat</InputSet>
<OutSet>//192.168.1.7/result.dat</OutSet>
<TestCase Suits ID>0101</ TestCase Suits ID>
</ TestCommandID>
一個測試任務一般僅生成一個測試腳本,該腳本依據不同的業務邏輯分成若干段落,每個段落有若干條測試命令,并定義了命令執行的一些參數。對于環境參數一般使用文件附件的形式調入。測試結果的輸出也是記錄在對應的文件中。同時測試命令中給出了需要到測試用例庫中去調取的用例套編號。
2.3 腳本的執行
測試任務腳本在專門的服務器上執行,由測試人員根據任務編號輸入腳本啟動命令后開始。腳本在執行過程中,會對硬件環境的情況進行檢測,對于硬件沒有準備好或者某些場景沒有保存的情況,都會一一記錄在測試結果內。在測試命令執行過程中,會自動調取用例庫中的用例。在測試用例測試過程中,如果出現錯誤,一般會有三種情況。第一種情況是測試用例沒有準備好。這種情況比較少見,一般是由于軟件功能新增后,配套的測試用例沒有同步。第二種情況是測試用例結果錯誤。針對特定的用例值,運行后的結果是錯誤的。這就是需要捕捉的軟件缺陷。還有一種情況是測試命令結果返回錯誤。這種情況是指用例運行結果正確,但是測試命令返回的結果有誤。這個情形出現后,要根據具體情況分析,看看缺陷到底是出現在軟件產品上,還是出現在測試工具本身。
2.4 報告生成
當測試腳本運行結束后,系統會生成當前測試的報告。測試報告給出了測試的統計信息和明細信息。整個報告一般分為三部分:第一部分是測試的統計信息,給出每種缺陷發生的數目;第二部分給出測試用例的運行結果明細;第三部分給出測試命令的運行結果明細。測試報告的示例如下所示:
Test Time: 2018-11-9 09:08:55
Test Task ID: 201811005
Excuting Machine: 192.168.1.7
Object Machine: 192.168.1.2
Summary of Test:
Pass:? 300
EnvNotReady: 0
ExeError: 0
RltError: 0
EnvNotRestore: 0
Test cases detail:
0101 → pass
……
Test command detail:
0101.10 → pass
……
3 結論
當產品的版本進行更新時,隨著代碼的修改或增加,對原有代碼會產生影響。此時需要對整個產品進行回歸測試,以盡可能保證產品整體的穩定性和安全性。回歸測試的重復率較高,而且工作量較大。通過測試任務腳本的生成與執行,并結合測試用例的復用,能夠實現回歸測試的自動化,避免測試用例執行的遺漏,大大提高軟件測試的效率。
參考文獻:
[1] 李丹, 劉杰. 軟件回歸測試及其實踐[J]. 電子產品可靠性與環境試驗, 2001(6):23-25.
[2] 李剛毅, 金蓓弘. 自動化回歸測試的技術和實現 [J]. 計算機應用研究, 2006, 23(2):192-194+213.
[3] 張麗波. 軟件自動化測試的設計與實施[J]. 佳木斯大學學報:自然科學版, 2004, 22(4):568-572.
[4] 朱芳, 李曦, 趙振西. 一種多平臺自動化測試工具的設計和實現 [J]. 計算機工程, 2004, 30(24):186-188.
[通聯編輯:梁書]