npm 包 @stryker-mutator/api 使用教程

阅读时长 5 分钟读完

简介

@stryker-mutator/api 是一个用于 JavaScript 测试的自动化测试工具,使用了 mutation testing 技术,可以在代码变异后运行测试并提供测试覆盖率的报告。

安装

可以通过 npm 安装该包:

使用

创建 Stryker 实例

首先需要创建 Stryker 实例,并传入配置项:

配置项

Stryker 的配置项非常丰富,包括但不限于以下内容:

  • files: 需要进行变异测试的代码文件路径
  • mutator: 变异器,可以选择预先定义的或自己实现的
  • transpilers: 用于将代码转换成浏览器或 Node.js 可执行的代码,可以选择预先定义的或自己实现的
  • reporters: 报告器,用于生成测试过程和结果的报表,可以选择预先定义的或自己实现的
  • testFramework: 测试框架,可以选择 Mocha、Jest 等
  • coverageAnalysis: 使用哪种方式计算测试覆盖率,可以选择 allperTest

具体的配置项可以参考 Stryker 官方文档

运行

配置项设置完毕后,就可以运行 Stryker 实例了:

测试结果以 Promise 的形式返回,结果包含测试过程中产生的信息和各项指标分析,可以根据需要进行处理。

示例

以下是一个变异测试的示例代码:

-- -------------------- ---- -------
-- ------------------
------ - ---- ---- - ---- ------------------

--------------- -- -- -
  ------ - - - ---- --- -- -- -
    ------------- ------------
  ---
---

---------------- -- -- -
  ------ - - - ---- --- -- -- -
    -------------- ------------
  ---
---

以上代码中,src/index.js 实现了两个函数 sumdifftest/index.spec.js 对这两个函数进行了测试。我们可以对 src/index.js 进行变异,添加或修改部分代码,然后使用 Stryker 进行变异测试。

-- -------------------- ---- -------
-- --------
----- ------- - ----------------------------------------

-- -- ------- --
----- ------- - --- ---------
  ------ ------------ -------------
  -------- -
    ----- -------------
    ------------------ ----------------------- ----------------
  --
  -------------- --------
  ----------------- ------
  ---------- ------------ ------------- --------
---

-- ------
--------------------------------------- -- -
  -- ------
  --------------------
---

以上代码使用了 Stryker 的默认配置,其中 mutator 选择的是 JavaScript 变异器,在排除了两种变异点之后,使用 Mocha 作为测试框架进行测试,测试覆盖率使用 all 模式,同时生成 progress、clear-text 和 html 三种类型的报告。运行结果如下:

-- -------------------- ---- -------
----  ------- --- ------ ------ ----- - --------
----- ------- ---------- -
----- -------- - -------
----- ----- ---- --
------ ------ ----
-------- --------- ----
-------- -------- -
---------- -------- -
-------- -------- -

------ --------
----- ------- ---------- -
----- ------- ------- -
----- ------- --------- -
----- ----- -
------ -------- -
--------- -------- -
----- --- ------ -
-- -------- ----------- --- -------- -

------ ---- ------ ------- ---  --------------------------------

------ ---- -------- ----- -- -----

上述测试结果表明变异测试通过,mutation score 为 100%,即所有变异点都被测到了。其中 reports/mutation/html/index.html 为 html 报告的路径,可以打开该文件进行查看。

总结

@stryker-mutator/api 是一个非常实用的 JavaScript 变异测试工具,它可以将程序中的语句变异为其他语句、表达式变异为其他表达式等,并据此运行测试代码来确认程序是否具有可靠性和健壮性。本文主要介绍了如何使用 @stryker-mutator/api 进行变异测试,包括创建 Stryker 实例、配置参数、运行测试实例等。希望本文对初学者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/181596