您当前的位置:首页>课程>实战单元测试

实战单元测试

浏览:76
分享

Owen Dai Read more

百林哲咨询(北京)有限公司专家团队成员

现任职于某智能科技公司研发部总监、资深架构师,15年以上大型软件产品架构经验,负责带领团队研发计算机视觉、AI安防及大数据相关产品。擅长企业级系统架构,领域驱动设计,重构与模式。

课程简介

在浩如烟海单元测试领域知识中,大部分只是一些测试模板或空洞的测试理论,造成似懂非懂的局面,在实操单元测试技巧的过程中,很多实例还停留在Calculator的原始时代,若想在快速迭代的研发潮流之中找到单元测试引入到组织,必须舍弃陈词滥调和老生常谈,找到实际的成功案例。在测试领域,单元测试是开发者的职责,而不是QA职责,这已经是公认的事实。本课程将解决、剖析将单元测试引入组织流程时,面临一系列的问题时,单元测试价值、设计单元测试用例、单元测试覆盖率、编写单元测试方法、提高设计与代码的可测试性、历史遗留系统代码处理方式等等问题,剖析单元测试的核心技术讲述junit 与IDE,Ant,Maven集成运行构建测试 API如何遵循SOLID原则等。

课程收益

掌握单元测试的核心技术,junit断言、junit核心、与IDEAntMaven集成运行、与持续集成工具结合等

悉知测试层次和组织,掌握何编写优秀单元测试技巧

使用 Stub 破除依赖,使用Mock对象进行交互测试、

从企业级角度认识系统的单元测试

受众人群

软件研发管理者、架构师,软件设计师、程序员。对单元测试怀有疑问和问题,需要梳理解答的团队和个人等

课程周期

212H

课程大纲

标题

授课内容

单元测试基础

 

单元测试框架介绍

junit断言

junit核心

参数化测试

测试异常

超时测试

最小耦合原则

junit 与IDE,Ant,Maven集成运行

junit 与持续集成工具结合

编写第一个测试

使用参数重构测试

案例:如何测试系统状态改变

核心技术

1.使用 Stub 破除依赖

① Stub 简介

② 案例:使用 Stub 解耦对文件系统的依赖

③ 案例:如何重构代码以提升可测试性

④ 抽取借口使底层实现可替换

⑤ 依赖注入:在被测试单元中注入一个伪实现

⑥ 使用伪对象模型异常

⑦ 案例:使用工厂方法注入伪对象

2. 使用Mock对象进行交互测试

① 基于值的测试,基于状态的测试,基于交互的测试

② Mock 和 Stub 的区别

③ 案例:手工 Mock 对象示例

④ 同时使用 Mock 和 Stub

⑤ 每个测试一个 Mock 对象

⑥ 伪对象链:用 Stub 生成模 Mock 或其他 Stub

⑦ 手工 Mock 对象和 Stub 的问题

3. 隔离框架

① 为什么要使用隔离框架

② 动态生成伪对象

③ 案例:用动态伪对象替换为手工伪对象

④ 模拟值

⑤ 案例:测试事件监听与触发

⑥ 隔离框架的优缺点

⑦ 受限框架与非受限框架

测试代码

1.测试层次和组织

① 自动化构建

② 注入横切关注点

③ 为应用程序构建测试 API

④ 案例:使用测试类继承模式

⑤ 案例:创建测试工具类和方法

2.如何编写优秀的单元测试

① 案例:编写可靠的测试

② 避免测试中的逻辑

③ 只测试一个关注点

④ 案例:编写可维护的测试

⑤ 测试私有或受保护的方法

⑥ 以可维护的方式使用setup

⑦ 实施测试隔离

⑧ 案例:编写可读的测试

⑨ 单元测试命名

⑩ 变量命名

⑪ 有意义的断言

覆盖测试

覆盖度测试

语句覆盖

判定覆盖

条件覆盖

条件判定组合覆盖

多条件覆盖

修正条件判定覆盖

案例:实战Jacoco统计代码覆盖

代码可测试性

SOLID原则

单一职责:避免牵一发而动全身的修改

使用提炼类重构达成单一职责

开放封闭:代码中的接线板

如何做到对扩展开发,对修改封闭

如何拥抱变化:只被第一颗子弹击中

单测重构训练营:贷款计算模块优化

里氏替换:如何正确的使用继承

使用单元测试发现继承体系的问题

使用提升类重构达成里氏替换

接口隔离:避免接口腐化

使用Adapter模式达成接口隔离

依赖导致:将业务与技术相分离

结构化分析 VS 对象化分析

依赖于抽象

企业级系统的单元测试

企业应用系统特点

企业应用典型场景

系统分层架构与分层的单元测试

一个案例的分析

单元测试特点

UI层单元测试测试行(选取原则)

Controller层单元测试(选取原则)

Service层单元测试(选取原则)

数据库层单元测试(选取原则)

容器内的测试(选取原则)

通过企业应用案例项目进行分析单元测试的构建最佳实践




我要参加

可同时提交您的需求,我们会及时与您联系

预约内训

将课程带入到您的团队,为您的团队进行一对一辅导。

相关课程