TDD学习笔记【一】----序言
提到TDD大多数程序员的疑问:
- 为什么我要写两份程序?
- 为什么我要写程序来验证我已经知道的结果?
- 我又不是SA,可能也不懂domain,怎么产生一开始的test case?
最后的感想就变成是:
1.Unit Test,那都是说说而已
2.Unit Test?没那时间搞!
3、TDD 只不过是被拿来炒作而已,现实开发中,谁用TDD 写过一整个大系统?
4.TDD 只是先写测试程式而已,有什么特别的?
TDD 的开发顺序
ATDD和BDD
TDD
测试[testing]
重构[Refactoring]
因为每一个环节都紧紧相扣,所以有一些阶段不是这么容易区分清楚。例如Testing其实在ATDD, BDD , TDD中,都有包含在里面,这边独立的Testing,或许用Unit Testing会更加合适。
主要的大纲与精神
本系列学习顺序
预计将TDD分成四份,分别是Testing, Refactoring, TDD,最后辅以「ATDD与BDD」。设计的目标则是:working software。
一 测试
- 单元测试(单元测试)
- 整合测试(集成测试)
- 表现层测试
二 重构
- 让程序会说话( Let code can talk )
- 简单就是美(简单就是美)
- 不要过度设计(从来没有超过设计)
- 运用基本的面向对象原则(需要了解面向对象的技术和原理)
三 TDD,ATDD,BDD
- 满足使用者需求(达致与用户要求)
- 如何产生测试案例(如何获得验收测试案例)
- 如何由测试案例开始设计程序(How to start by test cases )
四、开发实例
- 用户故事
- ATDD
- BDD
- TDD
- 重构
五、总结
- 面向对象
- 单元测试
- 集成测试
- 重构
- CI与自动测试
- 敏捷/ XP(连续反馈)
最后则是用来贯穿整系列文章的总结:
程序的存在是为了,也只为了满足使用者需求,而不是写给工程师自己爽的
名词解释:TDD:测试驱动开发 ATDD:验收测试驱动开发 BDD:行为驱动开发 CI:持续集成 XP:极限编程
备注:这个系列是我毕业后时隔一年重新开始进入开发行业后对大拿们的博文摘要整理进行学习对自我的各个欠缺的方面进行充电记录博客的过程,非原创,特此感谢91 等前辈
TDD学习笔记【一】----序言的更多相关文章
- TDD学习笔记【四】--- 如何隔离相依性 - 基本的可测试性
前言 相信许多读者都听过「可测试性」,甚至被它搞的要死要活的,还觉得根本是莫名其妙,徒劳无功.今天这篇文章,主要要讲的是对象的相依性,以及对象之间直接相依,会带来什么问题.为了避免发生因相依性而导致设 ...
- TDD学习笔记【三】---是否需针对非public方法进行测试?
前言 在Visual Studio 2012 中,针对Unit Test 的部分,有一个重要的变动: 原本针对「测试对象非public 的部分」,开发人员可通过Visual Studio 2010 自 ...
- TDD学习笔记【二】---单元测试简介
大纲 Testing 的第一个切入点:单元测试. 本篇文章将针对单元测试进行简介,主要内容包含了5W: Why What Where Who When 而How 的部分,属于实现部分,将于下一篇文章介 ...
- Asp.Net Core + Dapper + Repository 模式 + TDD 学习笔记
0x00 前言 之前一直使用的是 EF ,做了一个简单的小项目后发现 EF 的表现并不是很好,就比如联表查询,因为现在的 EF Core 也没有啥好用的分析工具,所以也不知道该怎么写 Linq 生成出 ...
- TDD学习笔记【五】一隔绝相依性的方式与特性
前言 在上一篇文章中,提到了如何通过 IoC 的设计,以及 Stub Object 的方式,来独立测试目标对象. 这一篇文章,则要说明有哪些设计对象的方式,可以让测试或需求变更时,更容易转换. 并说明 ...
- TDD学习笔记【六】一Unit Test - Stub, Mock, Fake 简介
这篇文章简介一下,如何通过 mock framework,来辅助我们更便利地模拟目标对象的依赖对象,而不必手工敲堆只为了这次测试而存在的辅助类型. 而模拟目标对象的部分,常见的有 stub objec ...
- Algorithms学习笔记-Chapter0序言
0.开篇 <Algorithms>源自Berkeley和UCSD课程讲义,由 Sanjoy Dasgupta / Christos H. Papadimitriou / Umesh V ...
- STL学习笔记序言
笔者作为计算机科学与技术专业的学生,学习并使用C++已经有3年了.在接触STL之前的编程习惯是,所有程序的功能包括数据结构.算法等都是亲自实现,效率极其缓慢.后来从使用STL的vector开始慢慢的感 ...
- STM32学习笔记——序言
写AVR已经两年了.如果初中时候玩Arduino也算的话,就是6年. 两年以来,我用AVR单片机完成了两个大项目: AVR单片机教程,一时兴起写的,效果不好: MEDS,参赛用的课题,半完成,比赛都结 ...
随机推荐
- Struts2--属性设置方式
Struts2自动获取/设置数据的方式一共分为两种 属性驱动(FieldDriven) 模型驱动(ModelDriven) 属性驱动 属性又分为两种: |- 基本数据类型 |- JavaBean属性类 ...
- ASP.NET MVC移动M站建设-使用51Degree 移动设备的识别
上一篇,介绍了移动M站的建设.说的很简单.觉得好像也没把M站给讲清楚.估计是对移动M站 认识还不够深刻吧.这里,在讲一讲51Degree 这个组件. 51degrees 号称是目前最快.最准确的设备检 ...
- css zoom属性兼容ie,firefox,chrome
jquery代码: $("body").css({ "zoom":"2", "transform":"scal ...
- Java特性之多态父类与子类之间的调用
问题描述: Java三大特性,封装.继承.多态,一直没搞懂其中多态是什么,最近研究了一下,关于父类和子类之间的调用.下面是一个测试类,源代码如下: package com.test; public c ...
- async await
参考:https://blogs.msdn.microsoft.com/windowsappdev_cn/2012/04/30/winrt-await/
- CSS常用技术总结!~~
//放大屏幕,背景图不变 background: url(x.png) no-repeat 0 0; background-image: -webkit-image-set(url(logo_db.p ...
- netlink优势
netlink相对其他应用进程和内核之间通信的方式(ioctrl或者系统文件等方式),全双工,可由内核发起,应用进程可用epoll监听,而其他方式只能由应用进程发起. 顺便记下隧道,隧道可以通过在ip ...
- pywin32 创建一个窗口
import win32con,win32gui class MyWindow(): def __init__(self): #注册一个窗口类 wc = win32gui.WNDCLASS() wc. ...
- es6中的promise对象
Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resol ...
- 为select 设置样式
问题: 在为表单添加下拉菜单时,有时候对菜单的样式没有特别的要求,就是需要修改下select元素的宽度和高度,但众所周知select元素的样式很难修改: select在各个浏览器,字体大小为14px时 ...