• 增量调试的个人疑问,菜鸟求助!


    一、实验程序

    https://files.cnblogs.com/files/xiaojieshisilang/tcas.tar.gz

    链接中是西门子tcas测试程序。

    source下是正确版本,versions/v1下是一个错误版本。两个版本的差异是:

    二、测试用例

    执行脚本是:

    ../source/tcas.exe  958 1 1 2597  574 4253 0  399  400 0 0 1

    ../versions/v1/tcas.exe 958 1 1 2597  574 4253 0  399  400 0 0 1

    测试输入如下:

    tcas

     测试输入

     测试输入

    Cur_Vertical_Sep

    958

    627

    High_Confidence

    1

    0

    Two_of_Three_Reports_Valid

    1

    0

    Own_Tracked_Alt

    2597

    621

    Own_Tracked_Alt_Rate

    574

    216

    Other_Tracked_Alt

    4253

    382

    Alt_Layer_Value

    0

    1

    Up_Separation

    399

    400

    Down_Separation

    400

    641

    Other_RAC

    0

    1

    Other_Capability

    0

    1

    Climb_Inhibit

    1

    0

    V1版本tcas

    1

    0

    正确版本tcas

    0

    0

    V1版本执行结果:

    FAIL

    PASS

    三、定位Failure Cause

    现在要在不知道上述错误代码(由>=变为>)位置的情况下,调试出错误代码位置。

    先使用增量调试(见参考文献):Delta Debugging先找到failure_introducing input

    编号

    tcas

    第一步

    第二步

    第三步

    2

    1

    Cur_Vertical_Sep

    958

    958

    958

    958

    627

    2

    High_Confidence

    1

    1

    1

    1

    0

    3

    Two_of_Three_Reports_Valid

    1

    1

    1

    1

    0

    4

    Own_Tracked_Alt

    2597

    2597

    2597

    2597

    621

    5

    Own_Tracked_Alt_Rate

    574

    574

    574

    574

    216

    6

    Other_Tracked_Alt

    4253

    382

    4253

    382

    382

    7

    Alt_Layer_Value

    0

    1

    0

    1

    1

    8

    Up_Separation

    399

    400

    399

    400

    400

    9

    Down_Separation

    400

    641

    400

    641

    641

    10

    Other_RAC

    0

    1

    1

    0

    1

    11

    Other_Capability

    0

    1

    1

    0

    1

    12

    Climb_Inhibit

    1

    0

    0

    1

    0

    V1版本

    1

    0

    0

    0

    0

    正确版本

    0

    0

    0

    0

    0

    执行结果:

    FAIL

    P

    P

    P

    BUt为什么?

    PASS

    在上述第三步,本来应该继续在10,11,12对应的输入中继续二分查找的。我手残,想试试另一半,于是将0,399,400替换成了1,400,641。

    结果也是PASS,but为什么呢?

    求助大神!!!是不是自己对增量调试理解有误。

    寻找真正导致failure的输入。这里的failure是指的是不满足功能正确性,即不满足预期输出(比较而言,西门子测试程序的正确版本的输入,我们认为是预期输出)。

    四、增量调试参考文献:

    Zeller A. Isolating cause-effect chains from computer programs[J]. Acm Sigsoft Software Engineering Notes, 2002, 27(6):1-10.

    Zeller A, Hildebrandt R. Simplifying and Isolating Failure-Inducing Input[J]. Software Engineering IEEE Transactions on, 2002, 28(2):183-200.

  • 相关阅读:
    RedHat Linux AS 5下memcached的安装
    System.Diagnostics.Debug和System.Diagnostics.Trace
    设置c#windows服务描述及允许服务与桌面交互的几种方法
    在WinForm中使用WebServices来实现软件自动升级(AutoUpdate)(C#)
    从客户端中检测到有潜在危险的 Request.Form 值
    discuz数据库迁移,改密码后,相关配置文件修改
    C#取得页面执行时间的代码
    RedHat 解决 ifconfig命令不能使用的问题
    System.ServiceProcess 命名空间下10个类的列表
    Excel导入,导出,模板生成公共模块整理
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/7449219.html
Copyright © 2020-2023  润新知