迈向自动化边界值测试与代码自然性助力搜索空间探索
自动化边界值测试
在软件测试领域,边界值分析是一种重要的测试方法。为了实现自动化边界值测试,我们引入了程序导数的概念,它可以看作是微积分中单值数学函数导数的推广。
传统的数学导数和微分学主要关注数字,而我们提出使用信息距离和压缩技巧,将这一概念推广到任何输入和输出数据类型,从而使其能够应用于任何程序。
距离函数的选择
在进行边界值分析时,距离函数的选择至关重要。最通用的距离函数选择是对输入和输出都使用归一化信息距离(NID),因为它具有通用性和一般性,能够捕捉任何重要的差异。我们将这种理论度量称为信息差异商(IDQ)。
通过使用Cilibrasi和Vitanyi的“压缩技巧”,我们可以用压缩函数C近似替代柯尔莫哥洛夫复杂度,从而定义程序P对于输入a和b的压缩差异商(CDQ):
[CDQ_C(a, b) = PDQ_{NCD_C,NCD_C}(a, b) = \frac{NCD_C(P(a), P(b))}{NCD_C(a, b)}]
其中,NCD是归一化压缩距离。不过,如果输入或输出是数字、数值向量或矩阵,使用特定数据类型的距离函数可能更为合适。一般来说,我们讨论的是$PDQ_{d_1,d_2}$,其中$d_1$和$d_2$默认是NCD,但也可以选择任何合适的距离函数。
程序导数及其商意味着可以实例化一系列具体的度量,用于不同的测试和分析目的。通过选择特定的距离函数并计算上述公式定义的量,我们应该能够检测到对软件理解和质量保证任务具有特殊意义的区域。
与基于搜索的软件测试的联系
基于搜索的软件测试与边界值
超级会员免费看
订阅专栏 解锁全文
2542

被折叠的 条评论
为什么被折叠?



