自动缺陷定位技术综述——Automated Fault Localization Techniques; A Survey [2012年]

版权声明:如需转载或引用,请注明出处。 https://blog.csdn.net/weixin_39278265/article/details/82564146

前言

为什么要看这篇2012年的文章?(Mohammad Amin Alipour. “Automated fault localization techniques: a survey.” Oregon State University (2012).)

因为我觉得很有意义。

1)我本身其实对自动缺陷定位技术还缺乏一个系统的了解,刚好这篇综述应该能够让我学到一些基本知识,对领域有个更加全面、宏观+微观的理解;
2)遇见就是缘分,读吧读吧。

本文内容

本文旨在介绍2012年的文章Automated fault localization techniques: a survey. 不是很出名,谷歌上引用次数只有11次,但是应该能学到东西。

1 基本介绍

作者:Mohammad Amin Alipour
单位:School of Electrical Engineering and Computer science, Oregon State University

俄勒冈州立大学(Oregon State University),简称OSU,创办于1868年,是一所世界著名的公立研究型大学,该校由当时的美国总统亚伯拉罕·林肯亲自主持建立,作为全美国仅有的两所获得政府赠地同时用于参与海洋、航空、能源计划的大学之一而享有独特的荣誉,被誉为 “公立大学之典范”。

2 感慨,同样是对fault localization的survey,Eric Wong的直接上TSE,但是这篇却几乎要消失在时间长河中。

3 摘要说了啥?

Automated fault localization techniques aim to facilitate this task by guiding the developers to a small portion of program that are likely to be culpable for the program failures.

culpable
英 [ˈkʌlpəbl] 美 [ˈkʌlpəbəl]
adj.
应受谴责的,应受处罚的,有罪的
adj.
(formal) 应受责备的;难辞其咎的
responsible and deserving blame for having done sth wrong

4 作者工作

In this paper, we look at important techniques for automated fault localization and categorize them based on their common features. We also briefly
discuss some of challenges and shortcomings in this field.

1) look at important FL techniques
2) categorize them based on their common features
3) discuss some of challenges and shortcomings in this field.


我感觉这里写的不妥,为什么要说 briefly呢,为什么要说some呢,给人一种很不确定的感觉,像是初步研究一样。

5 introduction说了啥?

1)我总感觉作者写的很轻松写意…就是随意的意思
Software developers request more time to investigate the problems. customers call in to complain about bugs. Project managers face such situations everyday.
这些句式都是我在顶会论文中没有看到过的,比如call in,比如 request,比如face,everyday,感觉似乎都不太正式??

2)让我明白了specification就是expected behaviors:

It requires good understanding of the
specification (i.e. expected behaviors), moreover, proper abstraction and design
and, proper implementation of algorithms, interfaces and data structures.

render
英 [ˈrendə(r)] 美 [ˈrɛndɚ]
v. 给予;使成为;递交;表达
(formal) 给予;提供;回报
to give sb sth, especially in return for sth or because it is expected
[VN-ADJ] (formal) 使成为;使变得;使处于某状态
to cause sb/sth to be in a particular state or condition
(用不同的语言)表达;翻译;把…译成
to express sth in a different language

specification
英 [ˌspesɪfɪˈkeɪʃn] 美 [ˌspɛsəfɪˈkeʃən]
a detailed description of how sth is, or should be, designed or made
A specification is a requirement which is clearly stated, for example about the necessary features in the design of something.

所以specification的意思就是 对某个事情的一个详细的说明(要求)

3)学到了debugging的概念(过程)
Studies on software debugging1 suggest that debugging is an iterative process that includes hypothesizing the location of faults, proposing a fix and finally
validating the hypothesis by testing

原来debug是一个迭代的过程。

4)学到了fault localization的概念
Fault localization is essentially a search over the space of program components (e.g. statements, variables, values, predicates) to find suspicious entities
that might have participated in a program failure. It often involves inspection of
numerous components and their interactions with the rest of system. In practice,
there are many suspects in a program for a failure, i.e. faults.

也算是一个搜索过程吧。

5)学到了 automated fault localization的概念(原来也和search space有关???!!!神奇)
Automated fault localization techniques attempt to assist developers by refining and reducing the search space for faults.

Thus, developers need to focus
on smaller number of entities. This would save time in debugging; hence it may
reduce maintenance costs. Moreover, since most companies are under market
pressure, they tend to release software with known and unknown bugs [32].
Automated fault localization techniques can help companies debug more known
bugs before shipping their products. It would improve the dependability of software products by facilitating timely debugging.

我觉得这一段写的挺好的
shipping their products,学到了。

还有facilitate timely debugging等等,

这篇文章还是有很多值得学习、值得看的地方。

6)重要信息:缺陷定位技术的分类——
Fault localization techniques can be classified based on approaches that they
are based on. The major approaches are program slicing [46, 4, 21], spectra
based fault localization [40,39,27], statistical inference [34,?], delta debugging
[49] and model checking [?]. In this paper, we study techniques based on the
two last approaches: delta debugging, and model checking.

@1 program slicing (程序切片,听说过)
@2 spectra-based fault localization (SFL,略微熟悉)
@3 statistical inference (统计推理)
@4 delta debugging (这个听说过,但是不懂)
@5 model checking (模型检验,不懂)

inference
英 [ˈɪnfərəns] 美 [ˈɪnfərəns]
n. 推理;推断;推论
something that you can find out indirectly from what you already know

spectra
英 [ˈspektrə] 美 [ˈspɛktrə]
n. 波谱;范围,光谱;光谱( spectrum的名词复数 );范围;系列
Spectra is a plural form of spectrum.

7)文章竟然主要研究后面两种缺陷定位方法:

In this paper, we study techniques based on the two last approaches: delta debugging, and model checking.

8)文章组织
After establishing common taxonomy for the paper in Section 2, (建立分类)

we explain some efforts which utilize program slice for fault localization in Section 3. (介绍程序切片技术)

Then, in Section 4 we describe spectrumbased approaches that attempt to quantify the different behaviors of program in failure and success runs. Presence of high speed networks can justify collecting information from many execution over the Internet; (介绍SFL)

Section 5 outlines series of efforts to utilize this information for cooperative bug isolation.

Section 6 summarizes major efforts that exploit delta debugging [49] to find cause of failures. (介绍Delta debugging)

In Section 7, we look at some techniques that dynamically modify a failure execution of program to spot the statements which their modifications makes the execution succeed. (动态修改错误执行信息,从而是程序通过,这个有点像自动修复了?厉害。)

In 8, we point out some techniques for fault localization in model checking. (介绍model checking)

Section 9 discusses the current state of the art. (最新技术)

6 一些术语(作者对一些术语的定义是非常清晰的,对我有帮助)

In this Section, we introduce some terms that we use throughout this paper. In
this paper we use the term software and program interchangeably.

Definition 1 (Error) An error is an internal state of a program that deviates from
the expected behavior of the program.

Definition 2 (Fault/Bug/Flaw) Fault is set of statements which their execution
may perturb the state of program to error state. In other words, it may infects the
state of program.

Definition 3 (Failure) Failure is manifestation of error to an external entity (i.e.
oracle) which discern the program failure. In this case we say the program fails.

Definition 4 (Testable Program) A program is testable, if some error states can
be manifested.

从上述来看,program 和 software 在文中算一个概念。

Error是内在的状态。
fault和bug是会引起error的源代码
failure是外在的错误表露。

infect
英 [ɪnˈfekt] 美 [ɪnˈfɛkt]
vt. 使受影响,感染;传染,散布病毒,侵染;(电脑病毒)使(电脑的)存储器[数据]受到感染
to make a disease or an illness spread to a person, an animal or a plant
to make a computer virus spread to another computer or program
To infect people, animals, or plants means to cause them to have a disease or illness.

viability
英 [ˌvaɪə’bɪlətɪ] 美 [ˌvaɪə’bɪlətɪ]
n. 生存能力,发育能力;生活力
Something that is viable is capable of doing what it is intended to do.
Foetuses, seeds, or eggs are described as viable if they are capable of developing into living beings without outside help.

7 重要信息:在之前,都说symbolic execution是不能scalable的(scale up to large program)

The methods based on model checking and symbolic execution, Section ??, suffer from scalability. That is they cannot be used for large programs.

On the other hand, delta debugging techniques are able to scale better.

caveat
英 [ˈkæviæt] 美 [ˈkeviˌæt, ˈkævi-, ˈkɑviˌɑt]
n.警告,附加说明
a warning that particular things need to be considered before sth can be done

underlying
英 [ˌʌndəˈlaɪɪŋ] 美 [ˌʌndərˈlaɪɪŋ]
adj.
潜在的,含蓄的;基础的;表面下的,下层的;[法]优先的
v.
优先于(underlie的ing形式);构成…的基础(或起因),引起
important in a situation but not always easily noticed or stated clearly
existing under the surface of sth else

The basic underlying caveat of this techniques is that it relies on symbolic model checking and PBS that hardly scale to large programs.

8 仓促小结

天色已晚,现在已经11:57 pm 了,这篇文章还是很有意义的,尤其是让我对以前接触的很少的delta debugging和model checking有了一些了解。

而且以后这个也可以作为一篇缺陷定位的基础知识库来随时翻阅。

所以,今日只是把握其主框架,一些重点内容,其他一些更加数学的、需要更多时间的、更加细节的,留待后来细读。

猜你喜欢

转载自blog.csdn.net/weixin_39278265/article/details/82564146