Data coverage testing

Data coverage testing
复制标题

数据覆盖测试

DOI:
--
复制
发表时间:
2002
期刊:
Ninth Asia-Pacific Software Engineering Conference, 2002.
影响因子:
--
通讯作者:
J. Morris
J. Morris
中科院分区:
--
文献类型:
--
作者:
P. Netisopakul;L. White;J. Morris

文献摘要

被引文献

相似文献

如果手动执行,则生成足够大以有效覆盖在软件组件可以被证明为可靠之前所需的所有测试的测试数据集是一项耗时且容易出错的任务。测试集合时的一个关键参数是要测试的集合的大小:自动测试生成器构建一组包含n个元素的集合,其中n的范围从0到n/subcrit/。数据覆盖率分析允许我们严格确定集合大小,以便测试大小为>n/subcrit/的集合不会提供任何进一步的有用信息,即不会发现任何新的错误。我们对C++标准模板库中存在错误的模块进行了一系列实验。使用适用于每个模块的测试模型,我们生成了大小达到和超过预测值n/subcrit/的数据集,并验证了在测试了所有大小/spl les/n/subcrit/的集合后,没有发现进一步的错误。数据覆盖率还与语句覆盖率测试和随机测试数据集生成进行了比较。与使用的测试数据集的数量相比,这三种测试技术在揭示错误方面的有效性进行了比较。语句覆盖测试被确认为最便宜的,因为它在应用的测试数量最少的情况下产生最大的效果,但就发现的错误数量而言,它是最不有效的技术。数据覆盖率明显好于随机测试生成:它在每个点上都用更少的测试发现了更多的错误。
Generating test data sets which are sufficiently large to effectively cover all the tests required before a software component can be certified as reliable is a time consuming and error-prone task if carried out manually. A key parameter when testing collections is the size of the collection to be tested: an automatic test generator builds a set of collections containing n elements where n ranges from 0 to n/sub crit/. Data coverage analysis allows us to determine rigorously a collection size such that testing with collections of size > n/sub crit/ does not provide any further useful information, i.e. will not uncover any new faults. We conducted a series of experiments on modules from the C++ Standard Template Library which were seeded with errors. Using a test model appropriate to each module, we generated data sets of sizes up to and exceeding the predicted value of n/sub crit/ and verified that after all collections of size /spl les/n/sub crit/ have been tested, no further errors are discovered. Data coverage was also compared with statement coverage testing and random test data set generation. The three testing techniques were compared for effectiveness at revealing errors compared to the number of test data sets used. Statement coverage testing was confirmed as the cheapest, in the sense that it produces its maximal effect for the smallest number of tests applied, but the least effective technique in terms of numbers of errors uncovered. Data coverage was significantly better than random test generation: it uncovered more faults with fewer tests at every point.