课程简介
在浩如烟海单元测试领域知识中,大部分只是一些测试模板或空洞的测试理论,造成似懂非懂的局面,在实操单元测试技巧的过程中,很多实例还停留在Calculator的原始时代,若想在快速迭代的研发潮流之中找到单元测试引入到组织,必须舍弃陈词滥调和老生常谈,找到实际的成功案例。在测试领域,单元测试是开发者的职责,而不是QA职责,这已经是公认的事实。本课程将解决、剖析将单元测试引入组织流程时,面临一系列的问题时,单元测试价值、设计单元测试用例、单元测试覆盖率、编写单元测试方法、提高设计与代码的可测试性、历史遗留系统代码处理方式等等问题,剖析单元测试的核心技术,讲述junit 与IDE,Ant,Maven集成运行,构建测试 API,如何遵循SOLID原则等。
课程收益
掌握单元测试的核心技术,junit断言、junit核心、与IDE,Ant,Maven集成运行、与持续集成工具结合等
悉知测试层次和组织,掌握何编写优秀单元测试技巧
使用 Stub 破除依赖,使用Mock对象进行交互测试、
从企业级角度认识系统的单元测试
受众人群
软件研发管理者、架构师,软件设计师、程序员。对单元测试怀有疑问和问题,需要梳理解答的团队和个人等
课程周期
2天(12H)
课程大纲
标题 | 授课内容 |
单元测试基础
| 单元测试框架介绍 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层单元测试(选取原则) 数据库层单元测试(选取原则) 容器内的测试(选取原则) 通过企业应用案例项目进行分析单元测试的构建最佳实践 |
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员
Owen Dai
百林哲咨询(北京)有限公司专家团队成员