-
Notifications
You must be signed in to change notification settings - Fork 267
Test Selection
@gnauhca
(来源: https://2019.stateofjs.com/zh/testing/调查报告)
Vue组件库使用:Vue Test Utils + jest React组件库使用:ReactTestingLibrary + jest
集成测试主要对组件集成的运行进行测试。初步确认对文档中实现的 Demo进行测试。主要方式体现为 Demo 的单元测试
自研开发工具,测试输出文件或目录结构是否有效。
使用Jest进行测试,配置 Jest 的 testEnvironment 选项为 node 以在服务端环境执行单元测试。
初定使用:cypress
理由: Puppeteer 的使用率较大,用户调研结果也比较满意,国内的框架使用比较多。但 Vue CLI 没有可选配置 cypress 支持兼容性测试,录制功能,使用比较方便。 nightwatch 支持兼容性测试,但是使用率较小。
Karma: https://github.com/karma-runner/karma
使用 Puppeteer 自动化输出 chrome 内存快照的方式进行性能测试。考虑到需要用到这个的情况不多,投入产出比较低,后期加入。
收集到需要性能测试的使用场景: 表格 虚拟滚动 组件函数的调用次数,函数出现死循环。
-
如何保障覆盖率保证(控制 feature) pr 提交 feature的时候,必须书写单测 由组件的 owner 负责把控覆盖率 pr 提交 bugfix的时候,可以不附带单测 由组件的 owner 负责把控覆盖率
-
如何进行单测质量把控? Code Review,ESLINT,公司代码规范控制,Code Review的要求: 对属性的边界值进行把控 对组件属性进行测试 props | slots 对组件行为测试 events 对组件公开的方法测试 methods
接入公司内部CI工具,通过Bash脚本运行测试,获取覆盖率跟测试结果,设置质量红线。如测试不通过,不可以合入。
问题:每次是否按需测试?只跑对应组件的测试?
讨论结果: 暂时选全部,后面运行时间太长再考虑按需测试。
CI 触发时机:往主干支合并代码(暂定)
测试环境 -> 输出测试用例 Demo (测试规范) -> 测试文档
- https://sinonjs.org/releases/v9.0.1/ - sinonjs文档
- https://vue-test-utils.vuejs.org/zh/ - Vue Test Util 文档
- https://juejin.im/post/5de603586fb9a008af1b2c9d - 掘金(Jest Mocha Ava 比较)
- https://www.zhihu.com/question/28729261 - 知乎 单元测试提问
- https://2019.stateofjs.com/zh/testing/ - 前端测试框架调查
- http://tnpm.oa.com/package/puppeteer-cn - puppeteer 内网下载地址
- https://zhuanlan.zhihu.com/p/48361267 - 知乎专栏 Nightwatch.js简介
- https://enzymejs.github.io - Enzymejs
- https://nightwatchjs.org/ - Nightwatchjs
- https://mochajs.org/ - Mochajs
- https://github.com/avajs/ava - Avajs
- https://jasmine.github.io/ - Jasmine
- https://karma-runner.github.io/latest/index.html - karma
- https://github.com/puppeteer/puppeteer - Puppeteer
- https://www.cypress.io/ - Cypress
- https://www.npmjs.com/package/dekko - Dekko
访问 TDesign 官网