【学习笔记】开源工业软件测试2395

278 阅读6分钟

什么是蜕变测试?

蜕变测试是一种新型软件测试技术,它允许通过检查被测软件的多对输入/输出之间的蜕变关系(metamorphic relations)来判断软件是否存在缺陷。

这种测试方法可以在不知道预期结果的情况下,通过在程序的不同部分上重复执行相同的操作比较结果来验证程序的正确性。蜕变测试主要用于解决Oracle问题即预期结果未知的问题。它依据被测软件的领域知识和实现方法建立蜕变关系,并利用这些蜕变关系生成新的测试用例,通过验证蜕变关系是否被保持来判断测试是否通过。

蜕变测试(Mutation Testing)是一种软件测试方法,旨在评估测试套件的质量和效果。它通过对程序中的源代码进行微小的修改(称为变异),来生成具有已知缺陷的变异体,然后运行测试套件来检测这些变异体是否被测试用例发现。

一个通俗易懂的例子是,假设我们有一个函数用于计算两个数的和:

def add(a, b):
    return a + b

为了进行蜕变测试,我们可以对源代码进行微小的修改,比如将加号改为减号:

def add(a, b):
    return a - b

这样就生成了一个变异体。接下来,我们运行原始的测试套件来检测这个变异体是否能被测试用例发现。如果测试套件能够检测到这个变异体产生的错误,说明测试套件是有效的;如果测试套件未检测到错误,说明测试套件可能存在不足之处。

在这个例子中,如果测试套件能够捕捉到变异体产生的错误,那么说明该测试套件具有较高的质量和覆盖率。但如果测试套件未能发现错误,那么可能意味着测试用例不够充分,没有覆盖到所有可能的代码路径或边界情况。

蜕变测试通过引入人为制造的缺陷来评估测试套件的效果,并帮助找出测试用例中可能存在的漏洞,提高软件测试的质量和可靠性。

人工智能系统测试分为很多步骤,其中比较典型的步骤包括模型离线的评估以及可靠性的测试

解释:

模型离线评估是指对人工智能系统的模型进行离线测试和评估,即在真实数据之外的环境中进行模型性能的检验和验证。它通常包括使用已知数据集对模型进行训练和测试,以评估其准确性、精度和性能。

举个例子来说明,假设我们有一个人工智能系统,用于识别猫和狗的图像。在模型离线评估中,我们会使用已标注好的图像数据集对模型进行训练和测试。我们将一部分数据用于训练模型,让其学习如何区分猫和狗的特征;然后,我们使用另一部分数据对模型进行测试,看它在未见过的图像上的预测准确率。通过这种方式,我们可以评估模型的性能如何,是否能够准确地识别猫和狗的图像。

而可靠性测试是指对人工智能系统的稳定性、鲁棒性和可靠性进行测试,以确保系统在各种情况下都能正常运行并产生可靠的结果。这通常涉及对模型进行各种边界情况和异常情况的测试,以检查系统在面对不同场景时的表现。

再举个例子,假设我们的人工智能系统被用于自动驾驶汽车。在可靠性测试中,我们会模拟多种情况,例如恶劣的天气条件、突发事件或糟糕的路况,以确保系统在这些特殊情况下仍能正确地感知和做出相应决策,保证驾驶安全。

通过模型离线评估和可靠性测试,我们可以更好地了解人工智能系统的性能、局限性和可靠性,从而为其进一步的优化和改进提供指导。


a)准确率(accuracy):对于给定的数据集,预测正确的样本数占总样本数的比率

准确率=预测正确的样本数/总样本数*100%

b) 查准率(也叫精确率,Precision):对于给定的数据集,预测为正例的样本中真正例样本的比率

“查准率(也叫精确率,Precision)”是指在给定的数据集中,预测为正例的样本中,真正例样本的比率。换句话说,查准率是指模型预测为正例的样本中,真正是正例的样本所占的比例。 例如,假设我们有一个二分类问题,其中正例是指某种疾病的患者,负例是指没有该疾病的人。我们使用一个模型来预测某个人是否患有该疾病,如果模型预测为正例,那么我们就称该人为“预测为正例”的样本。查准率就是指在所有预测为正例的样本中,真正患有该疾病的样本所占的比例。 正例是指我们希望预测的结果,也就是模型需要正确预测的结果。在上面的例子中,正例就是指患有该疾病的人。在其他问题中,正例可能是其他类型的结果,例如在文本分类问题中,正例可能是某个类别的文本,而在图像分类问题中,正例可能是某个物体的图像。

查准率=预测正确的正例样本数/预测为正例的总样本数*100%

c) 查全率:(也叫召回率、敏感度、Recall):对于给定的数据集,预测正确的正例样本占所有实际为正例样本的比率查全率=预测正确的正例样本数/实际为正例的总样本数*100%

例如,假设我们有一个二分类问题,其中正例是指某种疾病的患者,负例是指没有该疾病的人。我们使用一个模型来预测某个人是否患有该疾病,如果模型预测为正例,那么我们就称该人为“预测为正例”的样本。查全率就是指在所有实际患有该疾病的样本中,模型正确预测出的样本所占的比例。 举个例子,假设我们有一个数据集,其中有100个实际患有该疾病的人,模型正确预测出了其中的80个人,那么查全率就是80/100=0.8,也就是80%。这意味着模型正确预测出了80%的实际患有该疾病的人。 查全率通常用于评估模型的准确性和可靠性,特别是在正例样本比较少的情况下,查全率更加重要。

d) F1 值:查准率和查全率的调和平均数F1=2∗(查准率∗查全率)/(查准率+查全率)*100%

F1值的作用是评估分类器在单个类别上的分类性能,F1值越高,表示分类器的分类性能越好。