《测试驱动开发》读书笔记

最终目标是整洁可用的代码

 

我们不是从建立对象开始,而是从测试开始

 

了解需求-》设计测试 -》让测试通过

 

列出所有已知问题,然后一个一个解决;

 

培养将软件开发化为一小步一小步开发任务的能力

 

测试程序与代码所存在的问题不在于重复设计,而在于代码和测试程序之间的依赖关系

 

如何开始设计测试代码,通过方便测试的角度来修正程序的设计,如果两个方法之间有依赖关系怎么处理,

 

先写最简单的测试,只根据需求,然后发现实现有问题,修改测试,修改代码(or修改代码 修改测试)?

 

 

让测试迅速通过的方法:

 

伪实现,显明实现;

 

将一个设计缺陷(副作用)转化为一个由此缺陷导致运行失败的测试程序;

用伪实现使代码迅速编译通过;

输入正确的代码使测试尽快工作;

 

写一个测试程序;

让测试编译通过

测试程序运行失败

让测试程序可以运行

消除重复设计,优化设计结构;

 

Test DB:

 

1。 是否可以连接到数据库;

2。是否有权限执行存储过程;

 

 

DBTest test = new DBTest(connectstr);

MyTest mt = new mt(connectstr);

IsEquel(test.CanConnect(), mt.canconnect);

IsEquel(test.CanExe(sql), mt.CanExe(sql));

 

TDD的应用粒度:我觉得一个软件还是需要现有一个整体的设计,对于具体非常小的模块可以基于TDD来开发

光设计或做原型是不是比TDD更加清晰一点呢?TDD的似乎是摸着石头过河,高屋建瓴岂不是更好?

我觉得TDD最大的优点是从使用的角度而不是开发的角度来看待软件;能够生成更好的应用接口。

单元测试与Scrum:单元测试的优点是随着测试用例的累积,对于系统的修改有更多的质量保证,但是随着测试用例的增加,维护成本也是不断提升,特别是在scrum模型中,单元测试似乎很鸡肋了

 

安排,行动,断言

 

若在几个测试中用相似的对象,我们将一次创建所有对象来测试,但同时尽量避免测试用例之间的耦合

 

断言优先

 

什么时候写测试,在哪里写测试,什么时候停止写测试:

从计划列表里选择具有指导意义而且你有把握实现的测试;

从测试某个实质上不做任何工作的操作开始;

 

转载于:https://www.cnblogs.com/end/archive/2010/12/05/1896732.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

puppeteer api_使用Node.js和Puppeteer API生成PDF文件

puppeteer apiPuppeteer is a Node library developed by Google and provides a high-level API for developers. Puppeteer是Google开发的Node库,并为开发人员提供了高级API。 With Node.js already up and running, we will install puppeteer via NPM (node pa…

php中进制转换

我们知道,进制有二进制、八进制、十进制、十六进制,但在php中只能存取八进制、十进制、十六进制 在讲进制转换之前,我们先说一下进制单词的缩写: 二进制:bin八进制:oct十进制:dec十六进制&…

python rgb 图像_在Python中查找RGB图像的互补图像

python rgb 图像Complementary image is a transformed image such that it consists of complementary colours of the ones, which is present in the original image. 互补图像是一种变换后的图像 ,它由原始图像中存在的互补色组成。 For finding the complemen…

php的字符串、双引号输出变量的问题、转义字符

字符串 php中字符串可以用单引号和双引号表示&#xff0c;但单引号效率比双引号高&#xff0c;因为单引号是真正的字符串&#xff0c;双引号要做运算&#xff0c;即将字符串中的变量替换成值&#xff0c;单引号不需要 看下面的例子 <?phpheader(content-type:text/html;…

jmeter从mysql取值_Jmeter获取数据库值并作为参数请求(转载)

转载自&#xff1a;https://www.cnblogs.com/mawenqiangios/p/11088672.html01Jmeter连接数据库1、添加JDBC Connection Configuration(右键测试计划-->配置元件-->JDBC Connection Configuration)2、配置数据库连接信息&#xff0c;其中DataBase URL&#xff1a;jdbc:my…

ASCII码

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码&#xff0c;使用7 位二进制数&#xff08;剩下的1位二进制为0&#xff09;来表示所有的大写和小写字母&#xff0c;数字0 到9、标点符号&#xff0c;以及在美式英语中使用…

php中对ASCII码的处理ord() 、chr()

和ASCII有关的部分函数 ord(): 函数返回字符串的首个字符的 ASCII 值 <?phpheader(content-type:text/html;charsetutf-8);echo ord(A),<br>;echo ord(ABC),<br>; ?>chr():指定的 ASCII 值返回字符&#xff0c;ASCII 值可被指定为十进制值、八进制值或十…

PHP中字符串定界符

作用&#xff1a;为输出大量的文本提供简单方法 格式&#xff1a; <<<名字 //代码 名字;注意&#xff1a; 开始和结束的名字必须一样&#xff0c;名字的命名格式和变量一样&#xff0c;结束的名字必须顶格写 <?phpheader(content-type:text/html;charsetutf-8);…

java实现递归层次遍历_Java实现二叉树的前序、中序、后序、层序遍历(递归方法)...

在数据结构中&#xff0c;二叉树是树中我们见得最多的&#xff0c;二叉查找树可以加速我们查找的效率&#xff0c;那么输出一个二叉树也变得尤为重要了。二叉树的遍历方法分为四种&#xff0c;分别为前序遍历、中序遍历、后序、层序遍历。下图即为一个二叉树。前序遍历&#xf…

Object之MemberwiseClone方法

示例: 代码 usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.Data;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;usingSystem.Web.UI.WebControls;usingSystem.Web.UI…

php数组的声明和类型

数组的声明 方法一&#xff1a;使用array()&#xff0c;自动分配索引&#xff0c;从0开始 <?phpheader(content-type:text/html;charsetutf-8);$personarray("DL_one",18,man);print_r($person); ?>方法二&#xff1a;手动分配索引 <?phpheader(conte…

php数组的下标、extract函数

下标的变化 用例子解释&#xff0c;看懂了例子就知道了&#xff0c;很简单&#xff0c;就不解释了 <?phpheader(content-type:text/html;charsetutf-8);$numarray(0>1,2,3,4);print_r($num);echo <br>;$numarray(1,2>2,3,4);print_r($num);echo <br>;$…

php多维数组

php多维数据我的理解是一个数组的元素是数组&#xff0c;然后又嵌套&#xff0c;就变成多维数组了&#xff0c;比如说二维数组是一维数组的元素变成数组就成二维数组了 <?phpheader(content-type:text/html;charsetutf-8);$cars array(array("Volvo",100,96),a…

Mapx的VC开发实践

摘 要 阐述了在VC环境下引入MapX控件的方法&#xff0c;以及在文档视图架构下如何使用MapX控件的问题&#xff0c;介绍了MapX数据绑定的方法及其与MapX专题图创建的关系&#xff0c;阐明了创建MapX专题图的一般方法&#xff0c;并给出了具体实例。 关键词 MapX&#xff1b;V…

php的特殊类型

资源 PHP引用的外部数据称为资源&#xff0c;所以资源只能读取&#xff0c;不能创建 <?phpheader(content-type:text/html;charsetutf-8);$mysql_linkmysql_connect(localhost,root,123456);var_dump($mysql_link);echo <br>;$filefopen(./1.txt,r);var_dump($file…

php中自动转换、强制转换、其他数据类型和bool转换

0x01 自动转换 运算过程需要的数据类型和提供的数据类型不一致&#xff0c;将数据类型转为自己需要的类型 <?phpheader(content-type:text/html;charsetutf-8);echo 1aa7c;echo <br>; ?>加号做数字运算&#xff0c;会将字符串转为数字 0x02 强制转换 强制将…

php字符串连接符、三元运算符

字符串连接符&#xff1a;. <?phpheader(content-type:text/html;charsetutf-8);echo my name is. .DL_one; ?>三元运算符 形式&#xff1a;表达式&#xff1f;值1&#xff1a;值2 表达式为true&#xff0c;返回值1&#xff0c;为false&#xff0c;返回值2 <?ph…

java多线程知识_学习知库丨Java多线程知识大全

进程&#xff1a;每个进程都有独立的代码和数据空间(进程上下文)&#xff0c;进程间的切换会有较大的开销&#xff0c;一个进程包含1--n个线程。线程&#xff1a;同一类线程共享代码和数据空间&#xff0c;每个线程有独立的运行栈和程序计数器(PC)&#xff0c;线程切换开销小。…

螺旋遍历_螺旋形式的水平阶遍历

螺旋遍历Problem statement: 问题陈述&#xff1a; Write a program to print Level Order Traversal in spiral form of a binary tree. 编写一个程序以二叉树的螺旋形式打印Level Level Traversal 。 Example: 例&#xff1a; For the above tree:Basic level order trave…

SharePoint2007安装图文详解二:安装AD(活动目录)及DNS

在上一篇SharePoint2007安装图文详解一&#xff1a;安装IIS及相关组件中已经介绍了IIS及相关组件的安装&#xff0c;本篇将详细介绍AD&#xff08;活动目录&#xff09;的安装。 打开“管理您的服务器”&#xff0c;点击“添加或删除角色” 点击“添加或删除角色”后弹出“配置…