Concrete meta research - how to collect, manage, and read papers?
Testing survey
1. 001 Test generation through programming in UDITA
Milos Gligoric, Tihomir Gvero, Vilas Jagannath, Sarfraz Khurshid, Viktor Kuncak, Darko Marinov.
Test generation through programming in UDITA. Proceedings of the 32nd ACM/IEEE
International Conference on Software Engineering - Volume 1, ICSE 2010, Cape Town, South
Africa, 1-8 May 2010.
摘要
背景
基于规格说明的测试生成(systematic test generation based on specifications) ,符号执行
(symbolic execution),具体执行的混种(hybrids with concrete executions)。
systematic test generation based on specifications [5, 24]
symbolic execution [8, 26]
hybrids with concrete executions [6, 9, 13, 20, 25, 34, 35, 38]
关键字
test generation
问题
现代的符号执行技术局限于测试单元的代码行数(不能处理成千上万行的单元) ,产生输入
比 Java 程序源码简单太多(这里隐含的意思是我们不能为编译程序自动生成测试的输入)。
解决
本文提出了一个描述测试的实现,使用了非确定性的测试用例生成程序(test generation
programs)。UDITA,基于非确定性选择符和生成链结构。文章也描述生成具体测试的新算
法,该算法有效地探索了所有非确定性 UDITA 程序执行的空间。
贡献
1. 描述测试的新语言
2. 新的测试生成算法
2. 3. 实现
4. 评价方法
评价
文章使用了黑盒的方法评价 UDITA。
具体的数据有:
1. 数据结构(data structures),与 JPF 的有界测试生成进行对比实验,六组,分别为:
a) DAG
b) HeapArray
c) NQueens
d) RBTree
e) SearchTree
f) SortedList
2. 重构引擎(refactoring engines)
,与 ASTGen[11]进行对比实验;
3. JPF,用 UDITA 测试 UDITA 的某些部分。
4. 比较 UDITA 与 Pex [38]。
同时,使用 UDITA,作者发现了 Eclipse,NetBeans,Sun javac,JPF 中的一些 bug。
原文摘抄
Recent techniques aim to reduce the burden of manual testing using systematic test generation
based on specifications [5, 24] or on symbolic execution [8, 26] and its hybrids with concrete
executions [6, 9, 13, 20, 25, 34, 35, 38]. Modern (hybrid) symbolic execution techniques can
handle advanced constructs of object-oriented programs, but practical application of these
techniques were largely limited to testing units of code much smaller than hundred thousand lines,
or generating input values much simpler than representations of Java programs.
Modern (hybrid) symbolic execution techniques can handle advanced constructs of object-oriented
programs, but practical application of these techniques were largely limited to testing units of code
much smaller than hundred thousand lines, or generating input values much simpler than
representations of Java programs. Automatically handling programs of the complexity of a
compiler remains challenging for current systematic approaches.
We performed several experiments to evaluate UDITA. UDITA is most applicable for black-box
testing. The first set of experiments, on six data structures, compares delayed choice with base JPF
for bounded-exhaustive test generation. The second set of experiments, on testing refactoring
engines, compares UDITA with ASTGen [11]. The third set of experiments uses UDITA to test
parts of the UDITA implementation itself. UDITA can be also used for white-box testing. The
3. fourth set of experiments compares UDITA with symbolic execution in Pex [38]. We ran the
experiments
on an AMD Turion 1.80GHz laptop with Sun JVM 1.6.0 12, Eclipse 3.3.2, NetBeans 6.5, and Pex
0.19.41110.1.
评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 22 日
Question Result Validation
Method/Means Technique Analysis | Experience
002 Automatic system testing of programs without test
oracles
Murphy, C., Shen, K., and Kaiser, G. 2009. Automatic system testing of programs without test
oracles. In Proceedings of the Eighteenth international Symposium on Software Testing and
Analysis (Chicago, IL, USA, July 19 - 23, 2009). ISSTA '09. ACM, New York, NY, 189-200.
DOI= http://doi.acm.org/10.1145/1572272.1572295
摘要
背景
蜕变测试(Metamorphic Testing)用于保证软件质量,简单有效,并且不必使用标准输出
(oracle),特别是对于哪些随意的输入,我们并不知道标准输出。在蜕变测试中,已存在的
测试用例的输入被修改以产生新的测试用例,同时,也要根据原输出产生新的输出,例如原
输入 x 产生原输出 f(x);然后,我们创建新的 x’,并根据 f(x)预测出 f(x’)。
问题
蜕变测试常常能加强测试用例。对于大型的输入数据集,测试用例输入的变化常常是非常费
力的,另外对于不是人能够阅读的格式,测试用例输入的手工变化是不可能的。并且对于一
些大型的输出,比较输出结果也容易出错,应该大型输出的格式可能不是确定的。
10. 原文摘抄
The subjects used in our study are the Siemens programs. The Siemens programs include seven C
programs whose numbers of net lines of code (not counting whitespace or commenting lines)
range from 137 to 513. Hutchins et al. [20] first introduced the Siemens programs in 1994, and
since then many researchers (e.g., Rothermel et al. [34, 35], Elbaum et al. [14], Li et al. [24], Jones
et al. [22], and Andrews et al. [3, 37]) used the Siemens programs as subjects in testing
experiments. In particular, a recent study on mutant selection by Siami Namin et al. [37] used only
the Siemens programs as subjects.
Similar to Siami Namin et al. [37], we considered the following three reasons when choosing our
subjects. First, the Siemens programs contain typical structures that also appear in various large
programs in C. Second, there is a large test pool for each of the Siemens programs. As measuring
the effectiveness of selected mutants relies on the use of different test suites (see Section 2.5 for
the details of measurement in our study), a large test pool allows us to construct a large number of
test suites containing different test cases. Third, as Proteum generates a large number of mutants
for even a small program, using programs significantly larger than the Siemens programs as
subjects may result in huge computational cost.
评述
文章还对变异测试选择 (mutant selection)的实验评价方法进行了非常详细而有意义的综述。
在 2.4 Subject Programs 一节。
我们从此综述中可以了解到正在做变异测试选择(mutant selection)研究的学者。
页数 重要性 理解度 最后阅读
10 重要 一般 2010 年 9 月 22 日
Question Result Validation
Characterization Analytic Model Analysis
006 Using symbolic evaluation to understand behavior in
configurable software systems.
Reisner, E., Song, C., Ma, K., Foster, J. S., and Porter, A. 2010. Using symbolic evaluation to
understand behavior in configurable software systems. In Proceedings of the 32nd ACM/IEEE
international Conference on Software Engineering - Volume 1 (Cape Town, South Africa, May 01
- 08, 2010). ICSE '10. ACM, New York, NY, 445-454. DOI=
http://doi.acm.org/10.1145/1806799.1806864
18. 贡献
技术上,新型的基于污点的模糊测试技术。
结果上,基于两个开源应用,发布出描述本文技术实验结果。
评价
作者使用 BuzzFuzz 自动的找到了两个开源 C 程序(Swfdec,MuPDF)的错误。
作者使用的 Flash,PDF 集来自于:
Pedram Amini: Adobe Flash files
Adam Kiezun of MIT: Adobe PDF files
结果显示 BuzzFuzz 更能暴露大型软件更深层的错误。更适合有复杂输入格式的应用。
原文摘抄
评述
页数 重要性 理解度 最后阅读
11 重要 一般 2010 年 9 月 22 日
Question Result Validation
Method/Means Technique Analysis
011 Testing pervasive software in the presence of context
inconsistency resolution services
Lu, H., Chan, W., and Tse, T. 2008. Testing pervasive software in the presence of context
19. inconsistency resolution services. In Proceedings of the 30th international Conference on Software
Engineering (Leipzig, Germany, May 10 - 18, 2008).
摘要
背景
普适计算软件(Pervasive computing software)可以根据上下文来改变它的行为。上下文常
常很多噪音,因此需要上下文的不一致性解析。
问题
普适软件中的错误,即在解析上下文中产生了错误的结果。
解决
本文研究普适软件中的错误怎样被服务影响的。作者建了一套模型,持续解析上下文不一致
性,开发出了一套数据流公式,去分析潜在影响,形式化了此类软件测试充分性标准。
贡献
1. 提出了研究 CIR 服务与上下文相关应用的数据流公式框架。
2. 提出了一种新的测试充分性标准,适合基于上下文与 CIR 服务的应用。
3. 构造了第一个评价此类研究的实验。
评价
与随机测试做对比。
使用 Cabot [23, 24]作为测试平台
20. 原文摘抄
评述
页数 重要性 理解度 最后阅读
10 一般 不理解 2010 年 9 月 22 日
Question Result Validation
Method/Means Technique, Analytic Model Analysis
012 ARTOO: adaptive random testing for object-oriented
software
Ciupa, I., Leitner, A., Oriol, M., and Meyer, B. 2008. ARTOO: adaptive random testing for
21. object-oriented software. In Proceedings of the 30th international Conference on Software
Engineering (Leipzig, Germany, May 10 - 18, 2008). ICSE '08.
摘要
背景
评价测试的标准包含了测试用例找到多少错误,速度多快。在随机测试中,如果产生的输入
平均分布在输入域中,随机测试的效力就会提高。
自适应随机测试 ART(Adaptive Random Testing)适合类似于数字的输入,不同输入的距离
可以计算出来,随机生成的输入就能平均的分布在输入域中。
问题
ART 的思想可以拓展到测试面向对象软件中么?
解决
本文提出基于一种对象之间的距离(distance between objects)的方法 ARTOO。
贡献
1. ARTOO 的实现,在 AutoTest 工具中。
2. 与朴实方法比,做实验对比评价。
3. 提出一些想法, 推广对象距离 (object distance)的概念,例如对象聚类,对象集成(object
clustering and integration)。
评价
与朴实的随机方法 RAND 比较,ARTOO 减少了第一个错误被发现之前的测试次数, 一些例
子中较少了两个数量级。同时,ARTOO 比朴实随机方法 RAND 发现了更多错误。
实验集为 EiffelBase 库[2]中的类:ACTION_SEQUENCE,ARRAY,ARRAYED_LIST,
BOUNDED_STACK,FIXED_TREE,HASH_TABLE,LINKED_LIST,STRING。
原文摘抄
22. 评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 22 日
Question Result Validation
Method/Means Technique Analysis
013 Time will tell: fault localization using time spectra
Yilmaz, C., Paradkar, A., and Williams, C. 2008. Time will tell: fault localization using time
spectra. In Proceedings of the 30th international Conference on Software Engineering (Leipzig,
Germany, May 10 - 18, 2008). ICSE '08. ACM, New York, NY, 81-90.
摘要
背景
调试(debugging),错误定位(fault localization technique)
。
问题
时间特性(Time spectra)过去用于性能调试,那能不能用于功能性正确性的调试呢?例如,
查看代码的片段是否花费了“可疑”的时间。
解决
收集失败和成功运行的时间特性信息,用成功运行的信息对程序行为建模,再用失败运行的
信息标记错误疑似度。
评价
在三个真实项目中(nanoXML, XMLsecurity, and ant)实验,有效减少了疑似错误的数目。
评价指标如摘抄。
23. 原文摘抄
The columns of this table depict the subject application used, the average runtime overhead of
collecting and persisting time spectrum for a run, the average number of method invocations
encountered in passing and failing runs, the average time needed to sample data tables, the
average time needed to create observed behavior model for a method, and the average time needed
to diagnose a failure, respectively. Note that model creation times are given per method whereas
the diagnosing times are given per failure.
评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 23 日
Question Result Validation
Method/Means Technique Analysis
014 Precise memory leak detection for java software using
container profiling
Xu, G. and Rountev, A. 2008. Precise memory leak detection for java software using container
profiling. In Proceedings of the 30th international Conference on Software Engineering (Leipzig,
Germany, May 10 - 18, 2008). ICSE '08. ACM, New York, NY, 151-160.
摘要
背景
Java 程序中的内存泄漏(memory leak)是指,当对象引用不再被使用,对象却被不必要地
维护的内存中。
问题
静态分析不能准确识别多余的引用,动态分析难以解释,准确率有限。
24. 解决
作者提出一种基于容器的堆跟踪技术(container-based heap-tracking),基于观察 Java 程序中
由于容器保持着引用的内存泄漏。此技术分两步:1.只跟踪容器,直接标记泄漏源码;而不
是分析未使用的引用;2.根据内存消费和元素的陈旧度的组合,为每个容器计算置信度。
贡献
1. 动态分析每个容器置信度,提供容器的标记和排序。
2. 基于置信度的 Java 的内存泄漏探测技术。
3. 内存泄露标记和运行时表现的实验研究。
评价
Sun 报告的两个 bugs 和 SPECjob 中的一个著名 bug。
首先两个 bugs 来自于 The Sun bug database [23],Java AWT/Swing bugs,JDK 中大约有一半的
bugs 来自于 AWT 和 Swing。这两个 bugs 编号为#6209673 和 #6559589。
评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 23 日
Question Result Validation
Method/Means Technique Analysis
015 The effect of program and model structure on mc/dc test
adequacy coverage
Rajan, A., Whalen, M. W., and Heimdahl, M. P. 2008. The effect of program and model structure
on mc/dc test adequacy coverage. In Proceedings of the 30th international Conference on Software
Engineering (Leipzig, Germany, May 10 - 18, 2008). ICSE '08. ACM, New York, NY, 161-170.
25. 摘要
背景
航空以及其他关键领域, 测试集的充分性(adequacy of test suites)可以用 MC/DC 矩阵衡量。
MC/DC 矩阵建立在源码或者模型驱动开发的模型之上。
问题
MC/DC 矩阵与其程序实现的结构相关,
可能会误导测试充分性标准(test adequacy criterion)。
解决
本文使用实验方法调查了关于程序结构影响的猜想。
评价
作者使用了 6 个实际的民用航空(civil avionics domain)系统和两个玩具程序。
对于每个系统,我们使用了它的两个版本:使用和不使用内联(inline) 。为了估计 MC/DC
的敏感性,作者首先生成满足非内联实现的 MC/DC 的测试集,然后再把测试集拿去有内联
的程序上跑。结果内联版本的 MC/DC 降低了 29.5%,在 5%的统计显著性级别(statistical
signicance level)。
评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 23 日
Question Result Validation
Evaluation Analytic Model Analysis
016 Static detection of cross-site scripting vulnerabilities
Wassermann, G. and Su, Z. 2008. Static detection of cross-site scripting vulnerabilities. In
Proceedings of the 30th international Conference on Software Engineering (Leipzig, Germany,
May 10 - 18, 2008). ICSE '08. ACM, New York, NY, 171-180.
26. 摘要
背景
互联网应用(web application)有许多缺陷,例如跨站攻击脚本 XSS(cross-site scripting),
一个攻击者利用浏览器端对服务器的信任,让浏览器执行某些被注入的脚本。2006 年起,
XSS 成为了最流行的攻击。
问题
XSS 漏 洞 是由 于对于 输入的 验证 不足。 最常见的 扫 描 XSS 漏洞 的方 法是 基 于污 点
(taint-based),常常会漏掉真实的漏洞,又有许多错误报告。
解决
本文提出一种静态分析查找 XSS 漏洞方法,直接定位出脆弱或者不充分的输入验证。作者
的工作结合了污点信息流与字符串分析。 正确的输入验证非常复杂, 因为有多种方法去调用
JavaScript 解释器。作者基于 W3C 的建议,Firefox 的源码,以及闭源浏览器的网上教程,
形式化了一套策略来定位漏洞。
贡献
1. 提出了一种查找 XSS 漏洞的实现,用以检测不充分的输入验证。
2. 提出了一种基于布局引擎行为的算法,用以检测 HTML 文档中的不被信任的脚本。
3. 评价了某些真实的 PHP 互联网应用,证明此工具能够用于大型互联网应用,找到了已
知的或者未知的验证不足错误。
评价
作者首先提出三个问题:大型互联网应用,检测验证代码,输入错误共性。
然后使用七个开源项目来做实验: Claroline,FishCart,GecBBLite,PhPetition,PhPoll,Warp,
Yapig。实验统计了时间,是否找到错误。
原文摘抄
In evaluating our implementation, we sought to answer the following questions:
1. How well does it scale on large, real-world web applications?
2. How well does it check manually written input validation code?
3. How common are manual input validation errors?
27. 评述
页数 重要性 理解度 最后阅读
10 一般 一般 2010 年 9 月 23 日
Question Result Validation
Method/Means Technique Analysis
017 Korat: automated testing based on Java predicates
Boyapati, C., Khurshid, S., and Marinov, D. 2002. Korat: automated testing based on Java
predicates. In Proceedings of the 2002 ACM SIGSOFT international Symposium on Software
Testing and Analysis (Roma, Italy, July 22 - 24, 2002). ISSTA '02. ACM, New York, NY, 123-133.
摘要
关键字
test generation
背景
基于规格说明的测试生成(test generation based on specifications)。
问题
能够根据规格说明来自动化测试么?
解决
提出一套规范,基于前置条件生成若干用例,根据后置条件预测输出,自动执行测试用例。
该技术的核心在于测试生成(test generation),它根据前置条件,生成输入的范围生成测试。
为了提高效率,该技术还通过检测用例的执行,对搜索空间进行剪枝。
贡献
产生非同构的测试输入,使用了回溯搜索,监听并剪枝的方法。