美文网首页
单元测试实施指引

单元测试实施指引

作者: 梦想又照进现实 | 来源:发表于2019-10-17 19:41 被阅读0次

    一、单元测试要求

    通过单元测试在设计、编写代码阶段,验证我们的设计及代码实现是否符合需求,满足既定业务规则,及时发现问题、解决问题,提高代码质量,提高项目的迭代速度,提升小组的开发效能,具体有以下目标:

    1)、新立项项目有单元测试案例的分析设计产出到需求细分,参见模板;

    2)、新立项新工程代码上有test目录,下面有domain层下对应的目录的单元测试类,要求一个模型对应要给类;

    3)、新立项项目提交st前单元测试均要对照1)做过检视,并且能跑通;

    4)、流水线管理中需要对有单元测试的开启单元测试,跑通流水线能看到测试报告;

    二、单元测试分析

    1、精益专题故事

    精益模式下的开发时间变化,项目需求分析设计工作前置,对需求澄清会的需求故事进行认真确认及时提出问题,涉及的角色主要有:BA 、 开发人员

    1)、在需求澄清会前,BA与 开发人员明确需求范围,对故事细节及是否需要单元测试达成一致;

    2)、在需求澄清会中,BA与业务方对业务验收标准进行确认;

    3)、在需求澄清会后,BA与 开发人员根据已确认验收标准,根据情况适当增加系统面的单元测试;

    2、实施策略方法论

    对于单元测试范围的实时策略按着“四象限”法则进行评定,具体细则有:

    1)、对现有技术债较高的功能改造、重构,需整理具体的业务模型,按“四象限”法则进行评定确定实施单元测试的范围;

    2)、对新增的功能测单元测试需要组织项目经理、产品负责人一起,结合“四象限”法则进行评定;

    三、单元测试开发

    1、功能设计要求

    组内项目程序设计注重结构化的设计评审,推行DDD&TDD分析设计方法,具体细则有:

    1)、对新增的较简单的故事,需在分析设计阶段产出领域模型层设计文档,以Visio图方式交付;

    2)、对重要领域模型设计单元测试案例,更新到需求细分中,以Excel交付方式;

    3)、根据单元测试的设计进行领域模型、服务、资源层代码编写,以代码方式交付;

    2、开发模式变化

    以测试驱动开发TDD为原则,先编写单元测试用例代码,后编写业务功能代码,逐步测试通过所有的测试用例,达到业务功能的开发完成,具体要求:

    1)、当工程创建完成,先在Test目录下编写单元测试案例,包括编写和模型对应的单元测试类以及测试案例的方法;

    2)、根据测试案例不断迭代模型的行为及方法,要求迭代的代码行功能完整尽可能少,保持边写代码边跑单元测试UT;

    3)、对于需要被隔离的代码如果确实需要依赖其他模型,可通过使用模拟对象(MOCK)实现隔离;

    3、常见开发场景单元测试编写规范

    1)、领域模型开发

    1.1、需要对实体、值对象、聚合进行单元测试案例编写,要求纯业务逻辑测试,不能连接数据库及外部接口调用;

    1.2、单元测试方法命名格式:give中文描述_when中文描述_then中文描述;

    1.3、单元测试方法体编写需按give_when_then三段进行编写,需要注释出来;

    1.4、对于数据准备需要放到@Before中,可以根据需要Mock或者Spy对象;

    2)、应用服务开发

    包含领域服务、应用服务的开发,需要进行集成测试,建议配置H2内存数据库进行;

    3)、UI交互层开发

    前台交互建议做契约测试;

    四、单元测试评审

    1、检视规范

    在项目管理过程中新增单元测试检视环节,将单元测试评审纳入代码检视过程中,具体细则有:

    1)、代码检视阶段新增单元测试检视环节,在检视规则中新增单元测试案例登记要求,具体登记地址详见: [每日代码检视跟进]

    2)、代码检视流程优化,按功能设计检视-》单元测试案例检视-》跑通单元测试-》具体功能实现检视,四个步骤进行;

    五、单元测试验收

    1、流水发布报告验收

    通过流水线跑通中“sonar静态代码扫描”tab页的测试报告进行验收,具体流水线及项目POM文件操作如下:

    1)、Devops流水线中配置单元测试及覆盖率报告

    在流水线的“Sonar静态代码扫描”步骤中,添加“单元测试”和“单元测试覆盖率”

    需要看到单元测试数量还需自定义参数sonar.tests=src/test

    2)、在pom文件内配置如下内容

    <pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;"> <!-- 生成单元测试覆盖率报告的插件 -->
    <plugin>
       <groupId>org.jacoco</groupId>
       <artifactId>jacoco-maven-plugin</artifactId>
       <version>0.8.1</version>
       <executions>
          <execution>
             <id>default-prepare-agent</id>
             <goals>
                <goal>prepare-agent</goal>
             </goals>
          </execution>
          <execution>
             <id>default-report</id>
             <phase>prepare-package</phase>
             <goals>
                <goal>report</goal>
             </goals>
          </execution>
       </executions>
    </plugin></pre>
    
    

    3)、跑完流水线得到报告

    参考资料:

    1、[单元测试和自动化测试](

    2、[编写单元测试与流水线添加单元测试]

    相关文章

      网友评论

          本文标题:单元测试实施指引

          本文链接:https://www.haomeiwen.com/subject/trnvmctx.html