Skip to content

Test Selection

azhe edited this page Jul 1, 2022 · 1 revision

@gnauhca

测试方案

image (来源: https://2019.stateofjs.com/zh/testing/调查报告)

单元测试

Vue组件库使用:Vue Test Utils + jest React组件库使用:ReactTestingLibrary + jest

集成测试

集成测试主要对组件集成的运行进行测试。初步确认对文档中实现的 Demo进行测试。主要方式体现为 Demo 的单元测试

构建产物测试

自研开发工具,测试输出文件或目录结构是否有效。

服务端渲染测试

使用Jest进行测试,配置 Jest 的 testEnvironment 选项为 node 以在服务端环境执行单元测试。

e2e测试

初定使用: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 工具对接(蓝盾,OrangeCI)

接入公司内部CI工具,通过Bash脚本运行测试,获取覆盖率跟测试结果,设置质量红线。如测试不通过,不可以合入。

问题:每次是否按需测试?只跑对应组件的测试?
讨论结果: 暂时选全部,后面运行时间太长再考虑按需测试。

CI 触发时机:往主干支合并代码(暂定)

后续工作安排

测试环境 -> 输出测试用例 Demo (测试规范) -> 测试文档

调研记录

相关链接