一、 被测对象结构的原因
当单元测试跑过之后并不代表系统没有问题,跑不到前端和容器层和缓存内部redis中的数据,跑不到消息和开关,这种单元测试价值非常有限。
1、前端代码包括js、css、图片、html
2、服务端代码
1)代码:单元测试命中点是代码层面的东西,解决代码正确性的问题,解决不了数据正确性的问题
2)数据库:①互联网业务代码逻辑并不复杂,基本是一些增删改查,主要是很多数据表组合起来形成了很多复杂的业务。②互联网的业务基本都在数据层,单元测试不太考虑数据层的内容
3)缓存: redis缓存
4)消息: kafka消息
5)开关: 很多逻辑在开关里面,开关的组合会产生不同的逻辑
3、容器层:基础软件配置
4、网络层
二、互联网是真正实践敏捷
1、代码:快抛型,代码从写出来到上线到重构时间有限,这种情况下的单元测试,成本和收益要进行考虑
2、代码逻辑并不复杂:微服务化加剧后,大应用拆成多个小应用,结构更加简单
3、单元测试收益有限:①维护成本高 ② CRUD逻辑和日志,异常处理
三、 比单元测试重要的事情多得很
1、 应用架构是否合理?
2、接入监控、接入灰度
3、 用户的业务诉求deadline:明天这个业务是否还能活下来
4、用户优先级问题处理:互联网问题处理oncall,有可能代码、集群、性能等问题
5、业务梳理:①做的业务是什么 ②代码熟悉
四、单元测试的部分业务
1、金融类底层业务
2、高质量要求核心部件
3、普通方式很难测的业务
4、复杂计算类业务