什么是单测?
单元测试就是是指对 软件 中的最小可测试单元进行检查和验证。 通俗的讲,在前端,单元可以理解为一个独立的模块文件,单元测试就是对这样一个模块文件的测试。
什么是TDD和BDD
TDD
TDD(Test Driven Development),即测试驱动开发,就是先编写好测试代码,根据测试代码去编写我们的逻辑代码,使其通过我们开始写的测试用例,是一种以测试来驱动开发过程的开发模式。
BDD
BDD(Behavior Driven Development),即行为驱动开发,简单的来说就是先编写业务逻辑代码,然后以使得所有业务逻辑按照预期结果执行为目的,编写测试代码,是一种以用户行为来驱动开发过程的开发模式。
提到BDD,这里的测试一般是指集成测试。什么是集成测试呢?集成测试就是指对软件中的所有模块按照设计要求进行组装为完整系统后,进行检查和验证。通俗的讲,在前端,集成测试可以理解为对多个模块实现的一个交互完整的交互流程进行测试。
对于多个模块(ES6模块)组成的系统,需要首先将交互行为完善,才能按照预期行为编写测试代码。
为什么要进行单测?
1、将预期的行为文档化,通过阅读单元测试来理解功能方法的预期行为
2、提高代码质量,帮助我们发现代码中的错误
3、更高的测试覆盖率,能发现一些集成测试中很难发现的问题
4、提高团队效率,避免大量反复的手动测试
好的单测是怎么样的?
1、独立性:不能依赖运行环境、外部接口、数据库表、配置中心等,应具备独立运行的条件
2、可自动化:依赖现有的工具自动化运行,执行成功与否可以自行判断
3、可重复性:具备多次运行的能力
4、覆盖全面:能覆盖全部的分支,如多个if需要考虑全面组合的场景
需要避免
1、执行耗时太久
2、case多但覆盖率低
3、未持续维护:随着迭代版本的更新部分case已失效但仍未更新
人工编写单元测试(推荐)
单测工具:jest@29
UI测试库:@testing-library/react
AI生产单元测试(提效)
如何使用:
特别敏感的代码不适合用!避免数据泄露
安装EP-CodeReview插件
1、在需要编写的代码片前点击Gen test case
2、等待生成单测代码
3、点击open test case运行单测代码
流程:
1、代码AST分析,只抽取目标代码及依赖代码,降低无关代码对AI产生的负面影响
2、数据安全风险校验
3、向量化及加载模板,准备一个模板代码库,在库内搜索最相似的模板,告诉AI如何对复杂情况进行单测代码编写
4、添加规则,对运行环境、版本进行约束
5、调用AI接口,组合前面得到的信息
6、格式化返回结果,通过正则等方式对返回结果进行格式化
7、与现有的单测代码进行合并,将新增的方法插入到已存在的单测文件中