测试驱动开发

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ (5)先写断言。测试代码编写时,应该首先编写对功能代码的判断用的断言 语句,然后编写相应的辅助语句。
9
1.什么是测试驱动开发
➢ (6)可测试性。功能代码设计、开发时应该具有较强的可测试性。其实遵循 比较好的设计原则的代码都具备较好的测试性。比如比较高的内聚性,尽 量 依赖于接口等。
➢ (7)及时重构。无论是功能代码还是测试代码,对结构不合理,重复的代码 等情况,在测试通过后,及时进行重构。
6
1.什么是测试驱动开发
➢ (4)为了更容易的写单元测试,我们会广泛的使用接口。这个会让 单元测试代码很容易读跟写, 因为测试代码里面没有多余的数据。如 果我们不用TDD而是直接写实现的话,我们经常会使用现成的类,测 试为了调用现成的类, 就不得不创建很多多余的数据,创建很巨型的 对象。
➢ (5)因为广泛的使用接口,我们的类之间就不会藕合,因此重用性 更好。
➢ (8)小步前进。软件开发是个复杂性非常高的工作,开发过程中要考虑很多 东西,包括代码的正确性、可扩展性、性能等等,很多问题都是因为复杂性 太大导致的。极限编程提出了一个非常好的思路就是小步前进。把所有的规 模大、复杂性高的工作,分解成小的任务来完成。对于一个类来说,一个功 能一个功能的完成,如果太困难就再分解。每个功能的完成就走测试代码- 功能代码-测试-重构的循环。通过分解降低整个系统开发的复杂性。这样 的效果非常明显。几个小 的功能代码完成后,大的功能代码几乎是不用调试 就可以通过。一个个类方法的实现,很快就看到整个类很快就完成啦。本来 感觉很多特性需要增加,很快就会看到 没有几个啦。你甚至会为这个速度感 到震惊。(个人理解,是大幅度减少调试、出错的时间产生的这种速度感)
10
1.什么是测试驱动开发
6.怎么编写测试用例
测试用例的编写就用上了传统的测试技术。
操作过程尽量模拟正常使用的过程。 全面的测试用例应该尽量做到分支覆盖,核心代码尽量做到路径覆盖。 测试数据尽量包括:真实数据、边界数据。 测试语句和测试数据应该尽量简单,容易理解。 为了避免对其他代码过多的依赖,可以实现简单的桩函数或桩类(Mock
➢ (6)发现比传统测试方式更多的Bug。 ➢ (7)完工时完工。表明我可以很清楚的看到自己的这段工作已经结
束了,而传统的方式很难知道什么时候编码工作结束了。
7
1.什么是测试驱动开发
4.测试驱动开发的过程
➢ 1) 明确当前要完成的功能。可以记录成一个 TODO 列表。 ➢ 2) 快速完成针对此功能的测试用例编写。 ➢ 3) 测试代码编译不通过。 ➢ 4) 编写对应的功能代码。 ➢ 5) 测试通过。 ➢ 6) 对代码进行重构,并保证测试通过。 ➢ 7) 循环完成所有功能的开发。
浅谈测试驱动开发
1
大纲
1.什么是测试驱动开发 2.测试驱动开发对各个阶段的影响 3.测试驱动开发存在的问题 4.当前面临的问题 5.单元测试 6.测试工具 7.总结 8.相关资料
2
1.什么是测试驱动开发
1.概述

测试驱开发,简称TDD,是一种不同于传统软
件开发流程的新型开发方法。

要求在编写某个功能代码之前先编写测试代码,然
后只编写测试同过的功能代码,通过测试来推动整个开发
的进行。

这有助于编写简洁可用和高质量的代码,并加速开
发过程。
3
1.什么是测试驱动开发
类似于工人师傅砌墙时,会先用桩子拉上线,以 便于砖能够垒的笔直,因为垒的时候都是以这根线为 基准的。TDD就像这样,先写测试代码,就像工人师 傅先用桩子拉上线,然后编码的时候以此为基准,只 编写符合这个测试的功能代码
5
1.什么是测试驱动开发
3.测试驱动开发的优点
跟测试后进行的开发方式相比,它有如下好处: ➢ (1)测试驱动开发最重要的功能还在于保障代码的正确性,能够迅速发现、
定位bug。针对 关键代码的测试集,以及不断完善的测试用例,为迅速发现、 定位bug提供了条件。 ➢ (2)通过编写代码的测试用例,对其功能的分解、使用过程、接口都进行了 设计。而且这种从使用角度对代码的设计通常更符合后期开发的需求。可测 试的要求,对代码的内聚性的提高和复用都非常有益。因此测试驱动开发也 是一种代码设计的过程。 ➢ (3)写单元测试的时候,很容易就可以为一个行为写一个测试用例,让它通 过,然后为另一种行为写另一个测试用例。也就是说,整个任务会被划分成 很多小的任务,独立完成。如果我们不用TDD而直接实现的话,我们很容易 就会同时把所有的行为都实现了。这样花的时间长,而且在这相当长的时间 里面,写的代码都是没有测试 过,不能保证准确性的。相反的,用TDD的话, 我们只实现要测的行为的代码。它只花费很少的时间(几分钟),而且可以 马上测试。
➢ (3)测试列表。需要测试的功能点很多。应该在任何阶段想添加功能需求问 题时,把相关功能点加到测试列表中,然后继续手头工作。然后不断的完 成 对应的测试用例、功能代码、重构。一是避免疏漏,也避免干扰当前进行的 工作。
➢ (4)测试驱动。这个比较核心。完成某个功能,某个类,首先编写测试代码, 考虑其如何使用、如何测试。然后在对其进行设计、编码。
简单来说,就是不可运行/可运行/重构。
8
1.什么是测试驱动开发
5.原则
➢ (1)测试隔离。不同代码的测试应该相互隔离。对一块代码的测试只考虑此 代码的测试,不要考虑其实现细节(比如它使用了其他类的边界条件)。
➢ (2)一顶帽子。开发人员开发过程中要做不同的工作,比如:编写测试代码、 开发功能代码、对代码重构等。做不同的事,承担不同的角色。开发人 员完 成对应的工作时应该保持注意力集中在当前工作上,而不要过多的考虑其他 方面的细节,保证头上只有一顶帽子。避免考虑无关细节过多,无谓地增加 复杂度。
4
1.什么是测试驱动Leabharlann Baidu发
2.背景 测试驱动开发(Test Driven Development,英文缩写
TDD)是极限编程的一个重要组成部分,它的基本思想就 是在开发功能代码之前,先编写测试代码。也就是说在明 确要开发某个功能后,首先思考如何对这个功能进行测试, 并完成测试代码的编写,然后编写相关的代码满足这些测 试用例。然后循环进行添加其他功能,直到完成全部功能 的开发。代码整洁可用(clean code that works) 是测试驱 动开发所追求的目标。
相关文档
最新文档