我正在为Clojure编写一个突变测试系统,我想知道,当一个测试导致一个突变体抛出一个异常或进入一个“无限”循环(我的系统判断一个突变体的运行时间比平均时间要长得多,进入无限循环)时,一般的共识是什么?在最初的程序中(即突变的直接结果),它不会这样做。
就我个人而言,我想说,在这种情况下,测试已经杀死了突变,因为它已经暴露了突变,但我不是专家,所以不完全确定。
发布于 2018-10-07 08:57:53
变异测试的目的是验证一个测试套件能够检测到突变测试系统在被测试代码中引入的错误类型。这意味着突变测试系统使用两种软件:受测试代码受突变影响的代码和一组试图确定测试代码是否正确工作的测试。
当出现意外异常时,好的测试框架将测试用例标记为失败(而坏的框架会由于未处理的异常而中止运行)。这意味着,如果突变体抛出异常,这将导致不同的测试结果,并且该异常不应在突变测试系统中可见。
测试框架通常不会捕捉到测试用例的不终止,尽管一些测试框架可能基于经常调用的模拟函数来捕获它。
对于突变测试系统,我会将测试运行的不终止看作是通过测试套件和人工操作员组合检测到的故障。
在我看来,如果异常出现在突变测试系统中,那么应该将其标记为测试套件中的问题,而不是测试中的代码。
在这两种情况下,突变体都可以被认为是被杀死的。
https://softwareengineering.stackexchange.com/questions/379559
复制相似问题