范围

开发人员-dev的对代码质量的保证方式,进行的代码级别验证或者方法论驱动写出质量能达到要求的代码,非测试人员范围内的测试。

概念区分

  1. 单元测试 单元测试只测试程序单元自身的功能

  2. 集成测试 将所有模块按照概要设计要求组装成为子系统或系统,验证组装后功能以及模块间接口是否正确的测试工作

  3. tdd:方法论:写代码只为修复失败了的测试,基于单元测试

  4. atdd:ATDD是一种团队行为及过程,基于集成测试

例如:如果需要启动spring容器来进行,已经属于集成测试范围,参考springdoc,spring-test包本身定义为集成测试,单元测试需要mock注入;

mock东西太多,所以我们会启动spring容器来注入;但如果是tdd这种运行速度肯定不是我们能接受的。
方法论

现状与问题

有鄙视没有单元测试的代码,有觉得没有测试就没法写代码的,但项目里面很多处于中断使用或者干脆没有。原因各种各样,最后结果是没有做或者中途停止。

常见如下:

  1. 没有流程上统一约束,全靠开发自身决定

  2. 没有可度量的方式,无法衡量

  3. 进度原因放弃,意味着价值比例总体还是体现占比较小

  4. 简单业务crud,很明显,没几行业务代码,是否值得测试,大量依赖其他系统的测试又需要很多mock

  5. 集成测试调用外部系统无法反复进行,对其他系统造成的脏数据问题

尝试改进

通过测试增加代码质量,这件事本身可能会遇到很多难点,不是搭建一个demo的测试框架就可以解决。测试可能会促进你代码的改变,比如mock太多

提供统一框架,仅可能解决一些常见点,但具体问题还是一个个解决。ATDD要求整体流程配合,先做单元测试与集成测试的交集点。

简单crud通过测成准备数据解决,复杂逻辑需要单元测试覆盖,再集成测试仅可能覆盖。集成测试一些点可以mock,比如外部调用。

准备结合我们项目选用测试集成如下:支持动态语言groovy并支持java
spock spring-test H2 junit jersey-test Mockito


nojava
36 声望1 粉丝

java/scala/groovy