求知
文章
文库
Lib
视频
Code
iProcess
课程
认证
咨询
工具
火云堂
讲座吧
成长之路
会员
找课
全部课程
|
技术学院
|
管理学院
|
嵌入式学院
|
在线学院
成功案例
品质保证
电话
English
追随技术信仰
随时听讲座
每天看新闻
成功案例
某轨道交 C/C++设计模式
华为 C++高级编程
丹佛斯 C++高级编程
北大方正 C语言单元测试实践
罗克韦尔 C++单元测试+重
罗克韦尔 C++单元测试+重
中国石油 C++单元测试
更多...
相关课程
C++并发处理+单元测试
C++程序开发
C++高级编程
C/C++开发
C++设计模式
C/C++单元测试
更多...
单元测试实战训练营
报名参课
授课讲师:
刘斌--曾任职IBM(中国)资深软件架构师
时间地点:
上海、北京、深圳根据报名开班
课程费用:
5000元/人(学生5折),详见
公开课学习手册
>
企业内训:
可以根据企业需求,定制内训,详见
内训学习手册
随着敏捷开发方法的流行,单元测试的思想也在遍地开花,越来越多的开发人员和公司开始学习和接受单元测试,并且已经开始应用在日常的开发工作之中。但是实践之中,却遇到了不少问题和障碍。比如,如何将单元测试思想传播给小组的每一位成员,并让他们心悦诚服的接受,如何坚持这种边写功能边测试的做法并最终养成一种习惯;如何进行高效测试;很多工程师认为我们是想些测试的,但我们在压力下没有足够的时间去写;我们一开始是写单元测试的,但两个星期后我们就没有动力继续下去了,再往后我们就放弃了编写单元测试。在该课程之中,我们将揭开这些问题的背后的原因。本课程不单单是单元测试基本概念的技能讲解,而是把技能和问题的场景结合,关注如何应用单元测试解决问题,尤其关注需要通过经验积累的高级技能。课程中的理论和经验来自于对大量开发人员常犯错误与所遇问题的归纳、分析与总结,有针对性的给出解决方法,课程将重现这些问题的经典案例,通过实例讲解,并对应到学员的实际工作问题,使学员能够把传授的经验和自己的问题结合起来,有效的启发思路、激发兴趣、并掌握解决问题的基本方法。
培训对象:
各类 IT/软件企业和研发机构的软件架构师、软件设计师、程序员。对于怀有设计疑问和问题,需要梳理解答的团队和个人,效果最佳。
学员基础:
学员学习本课程应具备下列基础知识:
1) 了解Java/C#/C++语言;
2) 简单了解XUnit框架的任何一种;熟悉一种开发工具IDE下单元测试环境。
授课方式:
定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练
培训
内容
: 2天
单元测试基础
内容一:理解单元测试
理解单元测试 第一个单元测试
单元测试框架提供了什么功能
好的测试是什么样子的
为什么要写单元测试,为什么不写单元测试
为什么要写"好"的单元测试
分析真实项目,如何做单元测试, 已经相关问题
理解单元测试框架—XUnit工具
内容一:理解单元测试XUnit 框架—(以Junit为案例介绍,其他简单介绍)
Junit设计目标
安装和使用JUnit
探索JUnit核心
参数化测试
测试异常
超时测试
引入Hamcrest匹配器
JUnit的测试运行器
用Suite来组合测试
Junit与IDE,Ant,Maven集成运行
JUnit与持续集成工具结合
通过案例分析,Junit的最佳实践
单元测试设计
内容一:构思单元测试
单元测试模型的设计
单元测试用例设计
为系统运行起来而设
为正向测试而设计
为逆向测试而设计用例
为满足特殊需求而设计用例
为代码覆盖而设计用例
通过案例分析单元测试编程前的测试用例的设计
内容二:单元测试设计—黑盒测试
单元测试黑盒设计
等价类设计法
边界值分析法
判定表(决策表)驱动化
状态转移测试设计
结对测试
分类树设计方法
用例/场景测试
动态分析法
通过大量案例分析,如何应用各种黑盒测试设计技术,进行设计单元测试
内容三:单元测试设计-白盒测试
单元测试白盒设计
标识单元测试点
语句覆盖
判定覆盖
基本路径测试法
域测试法
符号测试法
Z路径覆盖
程序变异
白盒测试综合策略
最少测试用例数计算
测试覆盖准则
通过大量案例分析,如何应用各种白盒测试设计技术,进行设计单元测试
内容四:单元测试点之测试技术选择
单元测试点之断言标准设计
单元测试点之测试数据设计
单元测试点集成测试场景设计
基于设计模式实现代码的单元测试设计(创建、结构与行为)
单元测试覆盖
内容一:逻辑覆盖
实施逻辑覆盖的原因
语句覆盖
判定覆盖
条件覆盖
条件判定组合覆盖
多条件覆盖
修正条件判定覆盖
结合案例分析,逻辑覆盖的度量
内容二:统计测试覆盖--(以Junit为案例分析)
使用clover为junit单元测试做覆盖率分析
使用Cobertura统计JUnit测试覆盖率
结合案例分析,通过测试覆盖率工具,分析覆盖率
单元测试之中如何解耦依赖
内容一:利用Stub打破依赖关系
利用Stub打破依赖关系 使用Stub的例子
重构设计以使依赖可被注入
分析真实项目,如何使用Stub
内容二:通过Mock对象测试交互
使用Mock的例子
对比基于状态的测试和基于交互的测试
分析真实项目,如何使用Mock, 以及相关问题
内容三:用好Mock与Stub
Mock与Stub的区别
同时使用Mock和Stub
每个测试只使用一个Mock
改进代码设计,利于应用Mock和Stub
Mock和Stub的局限性
结合多个案例项目进行分析,什么时间使用Mock ,什么时间使用Stub, 如何权衡
增强设计与代码的可测试性
内容一:设计和代码的可测试性
抽取接口,容许替换底层实现
在被测类中注入桩对象
What’s testable design?
Modular design
SOLID design principles
Modular design in context
Test-driving toward modular design
Testability issues
Can’t instantiate a class
Can’t invoke a method
Can’t observe the outcome
Can’t substitute a collaborator
Can’t override a method
Guidelines for testable design
Avoid complex private methods
Avoid final methods
Avoid static methods
Use new with care
Avoid logic in constructors
Avoid the Singleton
Favor composition over inheritance
Wrap external libraries
Avoid service lookups
结合多个大型案例项目进行分析,如何通过重构代码,实现可测试性
编写好的单元测试
内容一:好的单元测试测试标准-A-TRIP
单元测试的自动化-Automatic
单元测试彻底的-Thorough
单元测试可重复-Repeatable
单元测试独立的-Independent
单元测试专业的-Professional
通过案例分析,分析好的单元测试标准
内容二:如何编写好的单元测试测试
单元测试中的坏味道
如何编写容易被看懂的模式
如何编写容易维护的模式
如何编写信得过的模式
重构单元测试,改进代码设计
结合多个案例项目进行分析,分析什么是好的单元测试
TDD测试驱动开发基础
内容一:好的单元测试测试标准-A-TRIP
TDD的节奏
TDD的两个原则和TDD的目标
TDD与行为驱动开发(Behaviour Driven Development)
TDD与验收测试驱动开发(Acceptance Test Driven Development)
识别代码中的坏味道
重构工具及使用
常用重构技巧
重构与预先设计的区别
通过案例分析,TDD的最佳实践技巧,重构的技巧,坏味道等
历史遗留系统如何编写单元测试
内容一:遗留系统代码环境下如何编写单元测试
从哪里开始添加单元测试
确定抉择策略1-容易优先测类的优缺点
确定抉择策略2-困难优先测类的优缺点
遗留代码改动准则
重构前写集成测试
遗留代码整洁测试的常用工具
童子军原则
为第三方代码做学习测试
复杂遗留系统之中,如何增加单元测试以及遇到的问题
通过真实案例分析,在遗留系统的的难度和最佳实践
单元测试组织和管理
内容一:组织和管理测试
通过自动构建脚本运行测试
将测试与代码做同源版本管理
根据速度和类型为测试分类
创建和维护项目的测试辅助设施
结合我们研发中心, 如何做单元测试管理, 已经如何组织,以及遇到的问题
在研发团队如何引入单元测试
内容一:将测试引入到你的组织中
如何成功在组织中引入单元测试
为什么在组织中引入单元测试的努力会失败
如何将测试集成到开发流程中 - 敏捷测试流程
常见的疑惑和解答?
通过多个研发中心咨询经验,分析单元测试引入的方式和最佳实践
其他人还看了课程
数据分析与挖掘
红帽认证
企业战略与变革管理
软件架构设计方法
最新活动计划
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
LLM大模型应用与项目构建 12-26
[特惠]
UML和EA进行系统分析设计 12-20[线上]
数据建模方法与工具 12-3[北京]
SysML建模专家 1-16[北京]