敏捷测试指引(1)-简介 软件测试
在XP Agile Universe上,两个人-或许更多-告诉我说,我在敏捷测试的发展方面贡献不够。我在过去5年里花了太多的时间说我不知道敏捷测试会怎样,没有足够的指示和指导。“但是让我们看看,也许我们可以找到。”他们可能是对的。因此我让本文作为这方面的一个起点。
我先重申一些普遍的概念区别,以作为起点。
如果你听到别人在谈论敏捷项目中的测试,问一下那些测试是面向业务的还是面向技术的,会对你有很大的帮助。面向业务的测试是你可以用一个业务专家感兴趣的术语来向他描述测试。如果你通过电话描述测试回答了什么问题,你可以使用业务领域的术语:“如果你支取超过你的账户余额的现金,系统是否会自动给予你一笔与超出部分等额的贷款?”
面向技术的测试是你使用程序员的领域的术语来描述测试:“不同的浏览器会通过不同的方式实现Javascript,所以我们测试产品是否能在最主要的浏览器上工作。”或者:“如果用户记录不存在,PersistentUser#delete不应该执行。”
(这些分类有着很多模糊的界线,例如,选择测试哪个浏览器配置,部分是业务决定。)
问一下正在讨论测试的人,他们希望测试支援编程还是批判产品。对于“支援编程”,我的意思是程序员把测试作为编程的主要组成部分。例如,一些程序员编写测试用例来告诉他们下一步应该写什么代码。通过编写那些代码,他们改变一些程序的行为。这些更改之后通过运行这部分的测试来保证他们修改的是他们需要的。运行其它的测试来确保更改的行为不会影响其它不需要更改的部分。
批判产品的测试则不是专注于编程方面。而是在已完成的产品上查找发现产品的不足之处。
如果把这两类区别放到一起,就得到下面的矩阵图:
接下来,我会谈谈这个矩阵的每个区域,我关于它们的发展的预测。