gpt4 book ai didi

javascript - 如何测试 JavaScript 缩小输出

转载 作者:可可西里 更新时间:2023-11-01 01:26:16 24 4
gpt4 key购买 nike

我们最近升级到更新版本的 JavaScript 压缩库。

在测试团队进行了大量的质量保证工作后,我们发现新版本的压缩器存在一个问题,该问题改变了一段代码背后的意图和含义。

(人生教训:除非你真的确信你需要新版本,否则不要升级 JS minifiers。)

压缩器用于客户端 JavaScript 代码,重点放在与 DOM 相关的事件上,而不是“业务逻辑”。

缩小器升级破坏的简化示例:

function process(count)
{
var value = "";
value += count; //1. Two consecutive += statements
value += count;
count++; //2. Some other statement
return value; //3. Return
}

被错误地缩小为以下内容:

function process(n){var t="";return t+n+n,n++,t}

虽然我们可以编写一些单元测试来捕捉一些潜在的问题,但鉴于 JavaScript 对 DOM 交互(数据输入等)很重要,如果没有用户测试(非自动化),很难进行彻底的测试。我们考虑过使用像 Esprima 这样的 JS 到 AST 库,但考虑到可以对缩小代码进行更改的性质,它会产生太多误报。

我们还考虑过尝试编写具有代表性的测试,但这似乎是一项永无止境的任务(而且很可能会遗漏案例)。

仅供引用:这是一个非常复杂的 Web 应用程序,包含数十万行 JavaScript 代码。

我们正在寻找一种方法来测试缩小过程,而不是“再次、彻底和重复地测试所有内容”。我们希望在流程中应用更严谨/更科学的东西。

理想情况下,如果我们有更好的科学测试方法,我们可以尝试多个压缩器而不用担心每个压缩器都会以新的微妙方式破坏我们的代码。

更新:

我们的一个想法是:

  1. 对旧版本进行压缩
  2. 美化它
  3. 缩小新版本,
  4. 美化和
  5. 视觉差异。

这看起来确实是个好主意,但差异是如此普遍,以至于 diff 工具几乎将每一行都标记为不同。

最佳答案

有没有考虑过单元测试框架,比如QUnitjs ?编写单元测试需要大量工作,但最终您将拥有可重复的测试过程。

关于javascript - 如何测试 JavaScript 缩小输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com