1 / 15

JTester 专题培训 写好测试

JTester 专题培训 写好测试. 吴大瑞 2009-09-23. 大纲. 单元测试目标 示例:重构测试 测试结果分解 测试的坏味道 代码级坏味道 行为级坏味道 项目级坏味道 我们可以做的更好 Q&A. 单元测试目标. 提高产品质量 测试即规格 拒绝 bug 再次进入 快速错误定位 有助于理解需求 测试即文档 有助于降低风险 安全防护网 无害原则. 单元测试目标. 容易运行 自动化运行 可重复运行 自我检查 容易写测试 测试代码简洁 测试意图明显 测试焦点单一 容易维护测试 鲁棒性. 示例:重构测试.

irish
Download Presentation

JTester 专题培训 写好测试

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JTester专题培训写好测试 吴大瑞 2009-09-23

  2. 大纲 • 单元测试目标 • 示例:重构测试 • 测试结果分解 • 测试的坏味道 • 代码级坏味道 • 行为级坏味道 • 项目级坏味道 • 我们可以做的更好 • Q&A

  3. 单元测试目标 • 提高产品质量 • 测试即规格 • 拒绝bug再次进入 • 快速错误定位 • 有助于理解需求 • 测试即文档 • 有助于降低风险 • 安全防护网 • 无害原则

  4. 单元测试目标 • 容易运行 • 自动化运行 • 可重复运行 • 自我检查 • 容易写测试 • 测试代码简洁 • 测试意图明显 • 测试焦点单一 • 容易维护测试 • 鲁棒性

  5. 示例:重构测试 • 一个复杂的测试例子 • 重构过程 • 重构测试的断言(使用对象断言,或者自定义断言) • 消除IF语句 • 使用teardown方法 • 隐藏不关心的细节(使用Helper类) • 参数化测试

  6. 测试结构分解

  7. 测试结构分解 • SUT (system under test, 被测对象) • DOC (depended-on components, 依赖对象) • AAA过程 (given, when, then) • Arrange • Action • Assert • +1,清理战场 • 控制点 (直接输入,间接输入) • 观察点 (直接输出,间接输出)

  8. 测试的坏味道-代码级 • 难以理解的测试 • 想一口吃成胖子 • 隐藏了关键信息,神秘来客 • 大而全的准备数据 • 无关信息太多,分散了测试焦点 • 隔山打牛式的测试(间接测试) • 条件式测试 • 以不变应万变(IF-ELSE式测试) • Loop语句 • N组测试放在一起

  9. 测试的坏味道-代码级 • 难以测试的代码 • 没有适当的分层,高度耦合 • 没有采用DI方式管理依赖 (new, reflection) • 异步消息 • UI相关,其它…… • 产品代码依赖测试代码 • 产品代码中嵌入测试代码 • Api 依赖 • Jar 依赖 • 为了测试改写equals等

  10. 测试的坏味道-行为级 • 无法定位错误位置 • 大而全的测试 • 缺少assert信息 • 变化无常的测试 • 测试交叉影响 • 测试完毕资源不释放 • 依赖特定环境 • 脆弱的测试 • 牵一发而动全身

  11. 测试的坏味道-行为级 • 频繁的调试 • 人工干预测试过程 • 人工准备测试数据 • 人工判断测试 通过/失败 • 人工事件触发 • 你在跟我比慢吗? • 大而全的准备数据 • 异步测试 • 太多的测试在跑 (分而治之)

  12. 测试的坏味道-项目级 • 虫子回来了? • 你骗了我 • 狼来了? • 小洞不补,大洞叫苦。对bug熟视无睹? • 写代码的人不写测试 • 没有时间? • 缺少技能? • 代码难以测试? • 不屑?

  13. 测试的坏味道-项目级 • 测试代码难以管理 • Class/perTest Fixture/perTest Feature/perTest • 包管理混乱 • 命名意图不清 • 难以维护的测试代码 • 测试没有频繁运行,变化积重难返 • 没有做到一个分支一个测试 • 测试从不失败 • 难以维护的项目代码 • 没有单元测试(或没有足够的) • 不可测的代码

  14. 实例演示 我们可以做的更好

  15. Q&A Q & A

More Related