已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TDD敏捷开发实践,黄贝,TDD and XP,What is TDD,Test Driven Development Test Driven Design Too Difficult to Do,TDD Procedure,重构,代码,测试用例,Why not Unit Test,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。,I am Right!,Right or Wrong,我们迫切证明程序正确性的恶果: 模块耦合度高 接口不明确 模块(类)定义混乱 可读性差 还有。,How to do TDD,纠正我们的思想 站在使用者的角度 抛弃细节的考虑,Example,需求描述:开发一个堆栈的数据结构,该堆栈的容量是10,存储正整数。请实现堆栈的基本操作,包括PUSH、IsEmpty。 PUSH:压栈操作,向堆栈的顶部添加一个数据。 IsEmpty:判断该堆栈是否为空?返回一个布尔值。,Page 10,Example,TEST(test_stack_isEmpty, test_should_return_true_if_stack_is_empty) Stack stack; ASSERT_TRUE (stack.isEmpty(); ;,Page 11,$ make clean all Test_stack.cpp(17) : error C2146: 语法错误 : 缺少“;”(在标识符“stack”的前面) Test_stack.cpp(17) : error C4430: 缺少类型说明符 - 假定为 int。注意: C+ 不支持默认 int Test_stack.cpp(17) : error C4430: 缺少类型说明符 - 假定为 int。注意: C+ 不支持默认 int Test_stack.cpp(22) : error C2065: “stack”: 未声明的标识符 Test_stack.cpp(24) : error C3861: “isEmpty”: 找不到标识符 ,Example,Page 12,class Stack public: bool isEmpty(); ;,bool Stack:isEmpty() return true; ,Example,Page 13,$ make clean all = Running 1 test from 1 test case. - Global test environment set-up. - 1 test from TestStack RUN TestStack.test_should_return_true_if_stack_is_empty OK TestStack.test_should_return_true_if_stack_is_empty - Global test environment tear-down = 1 test from 1 test case ran. PASSED 1 test.,Example,Page 14,TEST(test_stack_isEmpty, test_should_return_true_if_stack_is_empty) Stack stack; ASSERT_TRUE (stack.isEmpty(); ; TEST(test_stack_isEmpty, test_should_return_false_if_stack_is_not_empty) Stack stack; stack.push(10); ASSERT_FALSE (stack.isEmpty(); ;,Example,Page 15,$ Compiling. Test_Stack.cpp .utsrcsampleTest_Stack.cpp(21) : error C2039: push : is not a member of Stack e:utprojincludestack.h(4) : see declaration of Stack,class Stack public: void push(); ;,void Stack:push() ,Example,Page 16,= Running 2 tests from 1 test case. - Global test environment set-up. - 2 tests from TestStack RUN TestStack.test_should_return_true_if_stack_is_created OK TestStack.test_should_return_true_if_stack_is_created RUN TestStack.test_should_return_false_if_push_one_element .utsrcsampleTest_Stack.cpp(22): error: Value of: stack.isEmpty() Actual: true Expected: false FAILED TestStack.test_should_return_false_if_push_one_element - Global test environment tear-down = 2 tests from 1 test case ran. PASSED 1 test. FAILED 1 test, listed below: FAILED TestStack.test_should_return_false_if_push_one_element 1 FAILED TEST,Example,Page 17,class Stack public: Stack(); void push(); private: unsigned int elementNum; ;,stack.h,Stack:Stack():elementNum(0) bool Stack:isEmpty() return elementNum = 0; void Stack:push(unsigned int element) elementNum+; ,stack.cpp,Example,Now, What do We have?,一份模块使用文档 一份接口说明文档 一个简单且合理的设计 一套用例 一个满足要求的模块 一份空闲,What do we know about TDD,TDD并不专注于效率,但是不损失效率 TDD不能帮你得到卓越的设计 TDD不能取代其它测试 TDD不是针对函数/方法的测试,遗留系统上的TDD,最好使用TDD的场合 新开发的功能 全新的代码 重写的代码 对于旧代码 如果还没有烦扰到你,也就别打扰它 使用适配器模式对新老代码进行隔离,适配部分也无必要进行TDD,TDD is Too DifficultTo Do?,TDD本身不是问题,问题在于实践它的人 思维方式 个人追求 经验和技能 下列情况,最好不要实践TDD 如果你并不追求成为一个出色的程序员,只是把它当作一份养家糊口的职业,或者当作升职的阶梯 如果你认为微观设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 法庭实践课件
- 2026年体育健康类技能鉴定考试知识点巩固习题及答案
- 关于2026年产品技术升级合作事宜的确认函(7篇)
- 工程品质控制绩效考核表
- 交接与台账登记标准作业卡V1.15
- 分时酒店课件
- 仿生合成技术课件
- 公关活动策划方案评估表
- 防损管理课件
- 放射辐射培训课件
- 一年级上册数学期中质量检测卷(青岛版五四学制)(含答案)
- 2026年行政执法人员试题库及答案
- 2026秋新教材人教PEP版六年级上册英语全册教案(单元整体教学设计)
- 2026年浙江中考(语文)考试试卷真题(含答案)
- 2026新教科版四年级科学上册第一单元第5课《空气流动有力量》课件
- 2026年广东省春季高考(学考)语文真题(含解析)
- 2026年资产评估师资产评估实务(二)考试真题及答案
- 2025 先进涂层材料及表面处理技术研讨会:SAE AS1701F标准及其适用的干膜润滑剂介绍
- 混凝土地面硬化工程施工方案
- 中古珠宝专业知识培训课件
- 蒙古族酒盅舞教学课件
评论
0/150
提交评论