请输入您要查询的百科知识:

 

词条 测试用例序列化
释义

鉴于尽早的发现错误能有效的提高软件开发的效率。另一方面,在软件迭代开发的情况下,尽早发现错误所节省的时间更是意味着节约开发成本。 测试用例执行的顺序会对测试用例集的效果产生明显的影响,好的顺序使得测试用例能更早的发现错误。这就是测试用例序列化的基本理念。

概述

通常一项大的软件工程会有成百上千的单元测试用例,而一次测试中测试用例集的执行也会很耗时,例如有的开发中用到的测试用例全部执行甚至耗时一周。另外,在发现并修正错误后,还要对软件进行回归测试 --- 在修改后再次测试,保证被测应用(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.

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/27 9:12:42