傳統的測試用例序列化技術都基於程式的執行信息,比如程式的語句覆蓋信息、方法覆蓋信息、分支覆蓋信息等來指導測試用例的排序過程。但是這些基於程式執行信息的技術[1,2,3]有如下不足:1,測試人員需對被測程式進行插樁來捕獲覆蓋信息,而運行插樁後的程式運行時間可能遠遠超乎想像;2,捕獲的覆蓋信息可能數據量很大,覆蓋信息的存儲和管理都會給測試人員帶來巨大的負擔; 3,在回歸測試的過程中,測試人員可能對測試用例或者被測程式源碼有所修改,從而造成以前捕獲的覆蓋信息與測試用例實際執行結果之間的不一致;4,傳統技術無法對新加的測試用例進行序列化。
基於傳統方法的不足,Lingming Zhang等人[4] 提出了一種靜態的測試用例序列化技術:Jupta。Jupta利用測試用例的方法調用圖來模擬實際的覆蓋信息,並採納了傳統技術總體式和增量式的兩種策略,經在JUnit測試框架下的一組實驗驗證,不需要程式執行信息的Jupta的穩定性和有效性都能近似達到傳統的基於方法覆蓋信息的技術。
[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] 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
[4] Lingming Zhang, Ji Zhou, Dan Hao, Lu Zhang and Hong Mei, "Prioritizing JUnit Test Cases in Absence of Coverage Information," Proceedings of 25th International Conference on Software Maintenance (ICSM 2009), 20-26 September 2009, pp. 19-28.