敏捷测试指引(2) - 测试与例子 软件测试
原文:Agile Testing Directions – Tests and Examples (Brian Marick)
'It all depends on what you mean by home.'
[...]
'Home is the place where, when you have to go there,
They have to take you in.'
'I should have called it
Something you somehow haven't to deserve.'
-- Robert Frost, "The Death of the Hired Man"
“这在于你如何理解家的概念。”
…
“家是你随时随地可以去的地方,是他们会让你进去的地方”
“我应该把它称为你不知何故,不值得拥有的东西”
-- Robert Frost,“The Death of the Hired Man”
上次,我画了这样一张矩阵图:
左边是偏向“支援编程”的测试,右边是偏向“批判产品”的测试。但是两种测试的意义和内涵存在很大的不同。
对于支援编程,测试主要作为准备和保证。你通过写测试代码来阐明关于问题的思考。你把它作为说明性的例子来描述代码应该怎样做。幸运地是,它同时是活跃地检查代码的说明性例子,即重新保证。这些测试也会找bug,但是那是第二目的。
在另一方面,测试是关于暴露主要错误和遗漏。这里,测试的原义就是关于bug。有其它的意义,但是首要的意义是最主要的。(很多测试员,尤其是最好的测试员,在他们的身上已经融入了那些词语的内涵。)
我想做个尝试。如果我们在矩阵的左边不使用“testing”和“test”这些词语会怎样?如果我们把它叫做“checked examples”(检查例子)怎样?
设想两个XP程序员坐在代码前面。他们开始构建一个例子来说明下一步要做什么。他们会检查,在代码还没写之前。(如果写了,那是很特殊个别的情况。)他们编写代码。检查例子是否运行正确,其他例子也保持正确。然后继续下一个例子用于展示下一步应该做的事情。
替换词语有意义吗?是否只是文字上的替换而已?你做一些尝试,然后回答这些问题吧。尝试经常使用“example(例子)”,经常使用让它听起来不会感觉很奇怪。现在,当你坐在代码前面时,是否根本改变了你的观点?是否有了一些不同:在你向客户要求一个例子,而不是一个测试时。加上一些形容词:example(例子)是否看起来更具激发性、更生动、更有深刻内涵?与强大的测试存在怎样的区别?(“强大”作为附加给测试的典型的形容词。)测试人员在XP项目中,每个人都在制作例子,没有人做测试,这样是否看起来更轻松些?