Skip to content

Make some tests great again. - #579

Merged
leeyeh merged 17 commits into
masterfrom
test-env
Sep 23, 2019
Merged

leeyeh merged 17 commits into
masterfrom
test-env

Conversation

@hjiang

@hjiang hjiang commented Sep 18, 2019

Copy link
Copy Markdown
Contributor

用重播的方式使部分测试不再依赖线上的 API 和云引擎,运行更快结果也更稳定。
还有一些测试依赖 Date、random(),或者每次测试会生成不同的 x-lc-session header,
导致还是需要实际发请求到线上,需要后续修改。这些每次生成新数据的测试大多是没有清理
测试数据,所以用随机数据来绕过冲突的问题。

Some tests rely on random() and Date, which need to be rewritten. The revised
tests are moved forward to prevent being affected by global states from other
tests.
@codecov-io

codecov-io commented Sep 18, 2019 •

Copy link
Copy Markdown

Codecov Report

Merging #579 into master will decrease coverage by 3.92%.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff            @@
##           master   #579      +/-   ##
========================================
- Coverage   68.92%    65%   -3.93%     
========================================
  Files          37     37              
  Lines        3205   3206       +1     
========================================
- Hits         2209   2084     -125     
- Misses        996   1122     +126
Impacted Files Coverage Δ
src/user.js 61.78% <ø> (-1.26%) ⬇️
src/uploader/s3.js 17.39% <0%> (-52.18%) ⬇️
src/file.js 34.66% <0%> (-41.78%) ⬇️
src/utils/parse-base64.js 40% <0%> (-40%) ⬇️
src/app-router.js 57.57% <0%> (-24.25%) ⬇️
src/conversation.js 65.85% <0%> (-7.32%) ⬇️
src/av.js 80.89% <0%> (-0.57%) ⬇️
src/object.js 84.66% <0%> (-0.32%) ⬇️
src/init.js 81.81% <0%> (+1.51%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8d42c68...f1c9bdb. Read the comment docs.

Some of those headers may be affected by Node versions.
@hjiang

hjiang commented Sep 18, 2019

Copy link
Copy Markdown
Contributor Author

从 CI 的时间看没有变快。还需要在 Linux 下测一下,可能 Linux 下 header 不太一样。

@leeyeh

leeyeh commented Sep 19, 2019 •

Copy link
Copy Markdown
Contributor

ci 时间没有变快可能是因为:

  1. pollyjs 会「重放」请求,包括请求的耗时?
  2. record 的时候用的是华东节点的测试应用,ci 上用的是美国节点的应用,所以请求没有命中。

这些测试属于集成测试,之前也确实有通过这些测试发现了服务端的问题,所以可能需要有一个参数来控制是否使用指定的线上的环境进行测试(似乎直接删除 record 目录来运行也行)。

此外,尽管没有在 ci 上运行,这些测试用例是支持在浏览器上运行的(test/test.html),目前的改动应该会造成浏览器上无法运行。尽管 pollyjs 也是支持浏览器的,但是应该还是需要一些额外的适配工作。

@hjiang

hjiang commented Sep 19, 2019

Copy link
Copy Markdown
Contributor Author

是的,后面需要加个环境变量在 polly.js 里面来控制初始化,在需要的时候可以跳过 polly。它默认是不会在重放的时候模拟延迟的,在我本地是会快很多(修改的几个文件里的大部分测试都不会因为太慢而显示出时间)。

刚才在 Linux VPS 里用 Node 10 没重现 CI 里 polly 似乎没起作用的现象。我一会儿用 VM 把网络断了看看有没有漏掉的请求。

@hjiang

hjiang commented Sep 19, 2019

Copy link
Copy Markdown
Contributor Author

record 的时候用的是华东节点的测试应用,ci 上用的是美国节点的应用,所以请求没有命中。

刚才没注意看,应该是这个原因。

@hjiang

hjiang commented Sep 23, 2019

Copy link
Copy Markdown
Contributor Author

@leeyeh 这个 PR 应该可以 merge 了,主要改了以下几点:

  • 增加了 test:real 这个 target 用来用真实后端跑测试。test:node 会用 PollyJS 的 log 来 replay,如果没有 match 的 log,会请求真实后端并修改 log,这样做改动后通过看 log 的 diff 可以看到 request/response 的变化。PollyJS 会只在 node 环境起作用(通过检查 NODE_ENV)。浏览器也可以用 PollyJS 但是需要的 setup 毕竟多暂时忽略了。
  • 在用 PollyJS 时会跳过 test/file.js 里的测试。否则会卡住,还没仔细看原因。
  • 修改了原来测试中依赖随机数或日期的部分,增加了测试数据的清理。
  • 在 Travis 上也使用和本地同样的 AppID 和 AppKey,避免和生成 request log 的环境不一样。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants