【问题标题】:How Stryker (mutation testing framework) generate mutants?Stryker(突变测试框架)如何生成突变体?
【发布时间】:2020-02-02 07:34:15
【问题描述】:

我正在研究突变测试并尝试将 Stryker 集成到我的代码库中。我的应用程序是用 React、Nodejs 编写的,目前使用 Jest 进行客户端测试,使用 Mocha 进行服务器端测试。我对此有几个问题:

  1. 以前有没有人尝试过/研究过突变测试?关于利弊,您对此有任何想法/担忧吗?

  2. 在Stryker框架方面,我很好奇Stryker是如何生成突变体的? Stryker 中是否有任何算法用于生成突变体?

任何意见将不胜感激。先感谢您。

【问题讨论】:

    标签: javascript mutation-testing stryker


    【解决方案1】:

    对于通用变异测试概念,我完全推荐 Pitest(Java 的 MT 实现)文档:

    前段时间我也写过这个话题:https://pedrorijo.com/blog/intro-mutation/

    对于您的问题,这应该让您对现有的可能性有一个很好的了解。不确定前锋的具体细节

    【讨论】:

      【解决方案2】:
      1. 突变测试是一种以有意义的方式提高测试“覆盖率”的好工具。如果您想在自动化单元测试套件中获得更完整的回归覆盖,变异测试可以帮助您找到测试覆盖中的漏洞,这有助于发现和防止错误。但请注意:您仍然需要考虑所需的测试类型。仅仅为了杀死突变体而添加测试可能会造成破坏。通过这种方式,您的测试最终可能与您的实现过度耦合。但是,这并不会使突变测试变得糟糕,它只是意味着您必须像大多数工具一样智能地使用该工具。另一个需要注意的是,突变测试可能会很慢,但由于您不必像常规测试套件那样频繁地运行突变测试,这并不是一个可怕的问题。
      2. Stryker 使用特定的变异器来寻找它知道如何变异的代码。您可以找到突变器列表in the handbook。如果您喜欢冒险,可以添加自己的突变器。但该算法的基本工作方式是:
        1. 将代码解析为可由算法检查的内容
        2. 寻找适合特定模板的代码
        3. 以一种仍应是有效语法的方式修改该代码,但以一种可能“错误”的方式更改行为。 (最简单的例子是完全移除行为)

      【讨论】:

        猜你喜欢
        • 2021-10-26
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 2010-09-19
        • 2010-12-25
        • 2019-07-06
        • 2019-06-15
        相关资源
        最近更新 更多