测试驱动开发TDD(1)
作者:网络转载 发布时间:[ 2014/1/16 10:49:02 ] 推荐标签:测试驱动 驱动开发 TDD
TDD
今儿接到一需求如下:
比如一个给定的数字2975,让你去猜。6次机会。如果第一次输入2509,系统会提示 1A2B:其中数字“2”位置猜对&&数字也猜对。称为1A,而“9”和“5”数字猜对了但是位置没有猜对。称为2B。。如果输入2975那么是4个数字都猜对了并且位置也是对的系统提示4A0B。民间俗称猜数字游戏:百度百科传送门:http://baike.baidu.com/view/358630.htm。
做个简单分析。客户端输入一个数字,经过游戏内部的猜测,返回一个结果给客户端。嗯,还好,不算难。由于准备做TDD实践。所以我们Test First.Why? 如果您对TDD不是很了解。跟我一起做下去,显然我也是新手。我们的目标是“没有蛀牙!”。
准备工作:VS任意一个版本(C#)、任意一款测试工具、纸、笔(真彩0.5的)。
第一步:笔和纸拿出来。思考思考如何把这个小游戏拆分了。然后我们一步一步去完成它。写一个To-Do-List。
To-Do-List:
猜测数字
输入验证
生成答案
输入次数
输出猜测结果
...............
暂时想起这么多。比如还有选择游戏难度、输入日志、重新开始游戏、中途退出等等。
我要完成这个游戏的核心功能(猜测数字),我称它为Guesser。传入一个数字,返回一个结果。分析一下它可能输出的几种情况:4a0b(全对)、 0a4b(数字全对,位置全错)、2a2b(一半一半)、0a0b(全错)。这4个CASE应该Cover了所有情况了。如果有补充,请Follow。
的TO-DO-LIST:
假设我们这局游戏的答案是2975。
输入“2975” 输出4a0b。
输入“2957” 输出2a2b。
输入“9257” 输出0a4b。
输入“1348” 输出0a0b。
完成Guesser类.
新建一个TEST 写测试。
开始第一个CASE:输入2975 与答案正匹配,输出4a0b 。
[TestMethod]
public void Test1()
{
var inputNumber = "2975";
var actual = new Guesser().Guess(inputNumber);
Assert.AreEqual("4a0b", actual);
}
这个测试方法的命名一眼好像看不出它要测什么。单独看测试的名字很是迷茫。我们修改一下让它看起来很整洁。一眼看上去知道是啥意思。要测试什么。
[TestMethod]
public void should_return_4a0b_when_input_numbers_all_figures_and_positions_are_right()
{
var inputNumber = "2975";
var actual = new Guesser().Guess(inputNumber);
Assert.AreEqual("4a0b", actual);
}
修改完之后在看这个方法的命名。 是不是清晰了很多。看到方法的命名应该能够猜测到此方法是在什么情况下测试什么功能。
OK。我们的第一个CASE搞定了。Run一下。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11