Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 自动测试的NodeJS代码覆盖率_Node.js_Rest_Testing_Code Coverage - Fatal编程技术网

Node.js 自动测试的NodeJS代码覆盖率

Node.js 自动测试的NodeJS代码覆盖率,node.js,rest,testing,code-coverage,Node.js,Rest,Testing,Code Coverage,作为nodejsrestapi定制测试框架的一部分,我希望通过将所有可能的结果与测试套件收到的结果进行比较,自动检测我的测试何时不再提供适当的覆盖率 有什么方法可以做到这一点?我们可以假设它用于RESTAPI,其中包含需要覆盖率分析的入口函数(API端点)列表,每个入口函数将以一个已知的“出口函数”结束,该函数以标准方式响应请求者 以下是我到目前为止的发现: 1:基本解决方案(目前已实施) 在编写每个REST端点时,手动创建所有可能结果“代码”的列表,例如[Success、FailureDue

作为nodejsrestapi定制测试框架的一部分,我希望通过将所有可能的结果与测试套件收到的结果进行比较,自动检测我的测试何时不再提供适当的覆盖率

有什么方法可以做到这一点?我们可以假设它用于RESTAPI,其中包含需要覆盖率分析的入口函数(API端点)列表,每个入口函数将以一个已知的“出口函数”结束,该函数以标准方式响应请求者

以下是我到目前为止的发现:

1:基本解决方案(目前已实施)

  • 在编写每个REST端点时,手动创建所有可能结果“代码”的列表,例如[Success、FailureDueToox、FailureDueToo]
  • 测试运行后,确保列表中的每个代码都已被每个端点的测试套件看到
优点:非常基本且易于使用;不会改变性能测试时间

缺点:大量手动检查极易出错;如果有5种“FailDueToX”方法,并且您只测试其中1种,则不会标记任何问题。“覆盖范围”的基本定义

2:静态分析

  • 将代码解析为某种解析树,并查找“exit function”的所有实例
  • 向上遍历树,直到到达API端点,并将该出口实例作为预期输出添加到端点(需要保留堆栈跟踪记录,才能通过哈希或类似方式到达该端点)
  • 运行测试时,端点返回堆栈跟踪哈希或类似值,并将其与预期的输出列表进行比较
优点:自动;捕获可能导致相同输出代码的不同分支

缺点:生成解析树非常重要;不会检测到从未运行过的死代码;测试套件需要保持同步

3:Profiling

我曾经在嵌入式系统上使用

  • 启动一个分析器,如,并分别记录每个测试的堆栈日志
  • 解析堆栈日志并将“测试”分配给每行代码
  • 手动分析带有注释的代码,以查找差距
优点:半自动;向开发人员提供有关总覆盖率的更多信息;看得见

缺点:减慢测试速度;无法并行进行性能测试;当可能的结果永远不会发生时不进行标记


还有什么工具可以帮助我实现静态分析和分析目标

组合测试(请提供不同名称的建议)

  • 松散地基于
  • 需要初始提取端点(以及#2中提到的静态分析),创建所有潜在端点和参数的列表,并执行它们
  • 验证:
    • 灯:应用程序应稳定,以处理所有可能的输入
    • strong:需要关于端点的书面规范,以便能够根据它进行验证
优点::半自动(有合适的工具)

缺点::规范验证很棘手。我不知道现有的实现

可能有用的节点模块:


组合测试(请提供不同名称的建议)

  • 松散地基于
  • 需要初始提取端点(以及#2中提到的静态分析),创建所有潜在端点和参数的列表,并执行它们
  • 验证:
    • 灯:应用程序应稳定,以处理所有可能的输入
    • strong:需要关于端点的书面规范,以便能够根据它进行验证
优点::半自动(有合适的工具)

缺点::规范验证很棘手。我不知道现有的实现

可能有用的节点模块: