这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
前端自动化测试
一、什么是自动化测试
在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差别。经过将测试自动化,可让正式的测试过程当中的必要测试,能够反复进行;经过这种方法,也能够将难以手动进行的测试,交由软件来作。
- 单元测试(Unit Test)
单元测试是最容易实现的:代码中多个组件共用的工具类库、多个组件共用的子组件等。
- 通常情况下,在公共函数/组件中一定要有单元测试来保证代码能够正常工作。单元测试也应该是项目中数量最多、覆盖率最高的。能进行单元测试的函数/组件,一定是低耦合的,这也从一定程度上保证了我们的代码质量。
- 集成测试(Integration Test)
集成测试通常被应用在:耦合度较高的函数/组件、经过二次封装的函数/组件、多个函数/组件组合而成的函数/组件等。
- 集成测试的目的在于,测试经过单元测试后的各个模块组合在一起是否能正常工作。会对组合之后的代码整体暴露在外接口进行测试,查看组合后的代码工作是否符合预期。
- 集成测试是安全感较高的测试,能很大程度提升开发者的信心,集成测试用例设计合理且测试都通过能够很大程度保证产品符合预期。
- UI 测试(UI Test) 在我学习查阅文献的过程中,我发现国内不少文章都将 UI 测试(UI Test)和端到端测试(E2E Test)混为一谈,认为是同一个测试类型。
二、为什么要做自动化测试
- 统一代码风格
- 组件Readme用例化,保持时效性
- 有效审视代码中的耦合逻辑
- 避免后续迭代影响到历史功能,发布breaking change
三、自动化测试的技术选型
- 测试框架:mocha
- 断言库:chai
- 测试报告:mochawesome
- 测试覆盖率:Istanbul
- 测试浏览器:chrome
- 浏览器驱动:selenium-webdriver/chrome
- 接口测试http请求断言:supertest
- react组件测试:enzyme
- 基准测试:benchmark