本周阅读论文《Know You Neighbor: Fast Static Prediction of Test Flakiness》,主要了解了FLAST方法的思想和flaky tests的概念。
Flaky Tests:
指在被测对象和测试条件都不变的情况下,有时失败、有时成功的测试。
本文提出了FLAST方法,使用k-Nearest Neighbor分类器来预测测试是否flaky。
本文贡献:
-
Idea:一种基于测试代码静态分析的基于相似性的flakiness检测方法。
-
Evaluation:对13个项目的研究,包括总计超过28K种测试方法,其中1400个是flaky的。
-
Replication package:相关实验的复制包
步骤:
-
向量空间建模:使用词袋模型对测试用例建模
-
向量cosine距离
-
降维:【关注点】sparse random projection:稀疏随机投影(降维技术,样本有限,但描述样本的维度过大?)
-
预测是否flaky:k-Nearest Neighbor分类器
FLAST步骤:
未知测试用例s映射到向量空间,根据向量距离使用k--Nearest Neighbor搜索距离s最近的一组Nk,计算s的φs和ψs(flakiness / non-flakiness度量),并以此判断s与Nk的相似性。
本质思想:检查每个未知测试的邻域,根据邻域的性质来预测未知测试是否flaky。