美文网首页
软件编译 - 简化错误

软件编译 - 简化错误

作者: YuduD | 来源:发表于2016-01-10 03:02 被阅读43次

作为一个有情操的测试,目标不能局限在找到问题,而是要能够精确的定位问题。在面对一大篇代码的时候,不能直接翻着白眼去找技术说,这一页里面有错,一怎么怎么执行就死了。。那样你也只能得到技术的白眼, 最好能精确的告诉技术,是具体的那一行导致的程序执行失败,这样技术也才有信念帮你解决问题。别忘了我们的目标是Get Work Done。

简单的结果能够更有效的解释事情也有助于他人更简单的理解你要说的东西。简化的过程嘛,就是一次判断问题的每一个条件是否于错误的发生有关系,如果没有关系就删除掉。最后剩下的就是导致问题出现的原因了。

测试过程中,我们当然可以手动的来做这件事,一部分一部分的排除。不过我们想要的是自动化,一个按键就解决问题。策略+自动化测试 就能完成这一点。

这里介绍一个算法 DELTA DEBUGGING:

  1. 将输入分成n个子集(n为粒度,初始值n=2)
  2. 如果任何一个子集没有通过测试代码,继续分解这个子集,设置n=max(n-1, 2),重复这个步骤。
  3. 否则(所有子集都通过测试),提高粒度 n=min(2n, len(input) )。
    <code>
def ddmin(s):
assert test(s) == "FAIL"
n=2
while len(s) >=2:
    start =0;
    subset_length = len(s) / n
    some_complement_is_failing =False
    while start<len(s):
        complement = s[:start] +s[start+subset_length:]
        if test(complement) =="FAIL":
            s=complement
            n = max(n-1,2)
            some_complement_is_failing = True
            break
        start = start+subset_length
    if not some_complement_is_failing:
        n=min(n*2,len(s))
        if n==len(s):
            break
return s

</code>

DELTA DEBUGGING 不仅能用于简化错误,也能用于简化代码变更。算法返回的是导致错误的原因。但是需要注意的一点在于一个真正导致代码失败的原因是只需要该改变一点点就能够对程序有影响的,所以我们在报告bug的时候,要确定他首先是一个错误,然后是它导致了程序失败。

更多文章请访问我的博客,谢谢。

相关文章

  • 软件编译 - 简化错误

    作为一个有情操的测试,目标不能局限在找到问题,而是要能够精确的定位问题。在面对一大篇代码的时候,不能直接翻着白眼去...

  • Java 常见的错误及避免方法!

    编译器错误 当Java软件代码通过编译器运行时,会创建编译器错误消息。谨记编译器可能会针对一个错误抛出许多错误消息...

  • centos软件集

    centos自身yum软件源版本比较旧,使用软件集可以简化编译安装。如何在 CentOS 上启用 软件集 Soft...

  • Python 的 异常

    Python 的运行时错误称作异常 语法错误:软件结构上有错误而导致不能被解释器解释或不能被编译器编译逻辑错误:...

  • Python异常

    Python的运行时错误称作异常 语法错误:软件结构上有错误而导致不能被解释器解释或不能被编译器编译 逻辑错误:由...

  • BreadStorm for Mac(制作面包学习软件) 3.2

    BreadStorm for Mac是教您制作面包学习软件,BreadStorm可以节省时间,捕获错误并简化沟通。...

  • 四款适合项目经理的协作软件

    本文编译自Rachel Burger在Capterra的博文。 我们都知道,应用软件解决了世上的很多问题:它们简化...

  • (三十二)单步调试技术

    编译错误与运行错误 编译错误:编译器提示的错误,低级错误,语法有错,根本无法生成exe文件 运行错误:程序运行的结...

  • 区别:编译时与运行时(Combile-time Vs Runti

    1. 什么是编译时和运行时 2. 编译时错误与运行时错误 编译时错误 编译时的错误一般指源代码中存在的语法错误,类...

  • 三 (八) 3 编写程序时的错误(按F7键显示)

    编译错误MetaEdtior 5显示编译期间内建编译器检测到的程序错误的错误消息。这些错误的列表如下表所示。要将源...

网友评论

      本文标题:软件编译 - 简化错误

      本文链接:https://www.haomeiwen.com/subject/awdqkttx.html