測試用例序列化

測試用例序列化,鑒於儘早的發現錯誤能有效的提高軟體開發的效率。另一方面,在軟體疊代開發的情況下,儘早發現錯誤所節省的時間更是意味著節約開發成本。測試用例執行的順序會對測試用例集的效果產生明顯的影響,好的順序使得測試用例能更早的發現錯誤。這就是測試用例序列化的基本理念。

概述

通常一項大的軟體工程會有成百上千的單元測試用例,而一次測試中測試用例集的執行也會很耗時,例如有的開發中用到的測試用例全部執行甚至耗時一周。另外,在發現並修正錯誤後,還要對軟體進行回歸測試 --- 在修改後再次測試,保證被測套用(AUT)在系統被修改或擴充後,各項功能依然正確。這就是說,整個測試過程會很耗時,而且會執行多次。那么,這就是Rothermel提出的測試用例序列化問題,並給出了如下定義1:

定義

1

給定測試用例集T,令PT為T的所有全排列的集合,函式f為PT到實數的映射。那么,測試用例序列化問題可定義為:
找到T’∈ PT,使得 ("T’’)(T’’∈PT)(T’’ ≠T’ )[f(T’) ≥f(T’’)]
在這個定義中,PT是測試用例集所有可能排列的集合,f則是對於PT中某個排列的一個測度函式,例如它可以是APSC和APFD計算函式。
對於這一問題,人們進行了大量的研究,並提出了很多有效的測試用例序列化技術來解決這一問題。但是在實踐中,人們發現由於受資源限制,最典型的就是受時間的限制,無法將測試用例全部執行,這樣測試用例序列化問題就不是一個簡單的排序問題,而是一個選取合適測試用例子序列的問題。根據Rothermel的定義,Walcott將在時間約束條件下的測試用例序列化問題定義2如下:

2

給定測試用例集T,令PT為T的所有全排列的集合,函式f和函式time為兩個PT到實數的映射,timemax為時間約束,那么,有時間約束的測試用例序列化問題可定義為:
找到T’∈ PT且time(T’)≤tmax,使得
("T’’)(T’’∈PT)(T’’ ≠T’ )(time( T’’) ≤ timemax)[f(T’) ≥f(T’’)]
對於時間約束條件下的測試用例序列化問題的研究剛剛起步,人們提出了一些有效的在時間約束條件下的測試用例序列化技術。
這樣,測試用例序列化問題就可以分為兩部分:無時間約束的測試用例序列化和有時間約束的測試用例序列化問題。
所有提出解決用例序列化問題的技術都是將測試用例集在執行前進行排序,使得測試用例序列能夠更有效地實現某些測試目標。

測試用例序列化技術

Rothermel等人[5]在2001年提出了一系列基於覆蓋信息的方法,對後來的序列化算法影響比較大。他的方法主要是基於方法覆蓋和語句覆蓋信息的貪心算法,稱為total和addtional方法,另外,他還提出了基於用例潛在發現錯誤的能力進行排序的方法。
Elbaum等人[1,2]在Rothermel的基礎上在方法覆蓋的層面進行了進一步的研究。Do等人則考慮了java程式的方法和塊覆蓋信息進行了實驗。Jones和Harrold提出覆蓋信息可以在很具體的層面,如被修改的條件、分支覆蓋信息。
Korel等人則更巨觀,研究了系統模型的覆蓋。
總體而言,雖然使用了不同的覆蓋信息,但大多數使用兩種貪心算法,就是total和additional方法.
Lu Zhang等人[7]提出了使用線性規劃方法求解這一問題的方法,以期得到更優解。
Lingming Zhang等人[8]則考慮使用了不基於代碼覆蓋信息的測試用里序列化方法。

參考文獻

[1]

S. Elbaum, A. Malishevsky, and G. Rothermel. Prioritizing test cases for regression testing. In Proc. International Symposium on Software Testing and Analysis, pages 102-112, 2000.

[2]

S. Elbaum, A. Malishevsky, and G. Rothermel. Test case prioritization: A family of empirical studies. IEEE Transactions on Software Engineering, 28(2):159-182, 2002.

[3]

Hyunsook Do, Siavash Mirarab, Ladan Tahvildari, and Gregg Rothermel. An Empirical Study of the Effect of Time Constraints on the Cost-Benefits of Regression Testing. In Found. Softw. Eng.,pages 70,nov.2008.

[4]

(英)沃特金斯(Watkins,J)著,賀紅衛等譯. 實用軟體測試過程. 北京:機械工業出版社, 2004,第一版,75頁

[5]

G.Rothermel, R.Untch, C,Chu, and M.J. Harrold. Prioritizing Test Cases for Regression Testing. IEEE Trans. Software Eng., vol.27, no.10, pp. 929-948, Oct. 2001

[6]

K. R. Walcott, M. L. Soffa, G. M. Kapfhammer, and R. S. Roos. Time aware test suite prioritization. In Proc. International Symposium on Software Testing and Analysis, pages 1-11, 2006.

[7]

Lu Zhang, Shan-Shan Hou, Chao Guo, Tao Xie, Hong Mei, “Time-Aware Test-Case Prioritization using Integer Linear Programming,” Proceedings of International Symposium on Software Testing and Analysis (ISSTA 2009), 19-23 July, 2009, pp. 213-224.

[8]

Lingming Zhang, Ji Zhou, Dan Hao, Lu Zhang and Hong Mei, “Prioritizing JUnit Test Cases in Absence of Coverage Information,” Proceedings of the 25th International Conference on Software Maintenance (ICSM 2009), 20-26 September 2009, pp. 19-28.

相關搜尋

熱門詞條

聯絡我們