转自:http://www.51testing.com/?action_viewnews_itemid_10319.html
一句古老的谚语说的,世界上唯一永恒的东西就是改变。在软件开发过程当中,传统的开发模式的一个缺
点就是他能够呈现较少的改变甚至没有改变。真实世界每天都在改变。正因为此,其他的开发模式,如快
速应用开发(RAD)已经提升到可以包含改变并在计划过程中使用改变来精炼开发。
在RAD模式帮助软件开发者更早的得到更新的版本并更快的运行程序的同时,他也给测试人员带来很多令
人头疼的烦恼。因为每个改变都可能产生新的缺陷。找到新缺陷的唯一的方法就是使用回归测试,回归测
试可以完整的重复先前的测试过程并与得到的结论进行比较,以便找到不同的地方。
接下来就产生了2个问题:1)能否在快速变更的需求过程中进行彻底的测试?2)在测试快速变更的软件
时需要采用什么策略?
能否在快速变更的需求过程中进行彻底的测试?
答案是,不能。这是一个恶作剧式的问题,因为在大多数情况下,即便是在稳定的环境当中,进行彻底的
测试都是不可能的。我们可以将这个问题改成这样,“能否在快速多变的环境中进行有效的测试?”我们
能否期望在测试软件时能够充分有效的利用人力及其他资源?我们能否期望在测试中找到预期数量的缺陷
?
通过观察使用RAD模式进行开发的项目,我发现要找到缺陷和得到任何程度的成效的本质的部分就是测试
过程。由于在软件开发中,大多数我们使用的测试标准是规范是使用不重复的过程,所以很多人在测试
RAD环境的软件时,采用的方法是平时我们在其他环境中使用的方法——在各个不同的地方使用较少的用
例来查找问题和缺陷。
我们可以采用什么样的策略呢?
研究每个单独的环境当中需要采用的策略将会耗费过多的时间,这里有一些通用的策略,可以在快速改变
的测试环境中使用。
首先,你必须接受一个事实,那就是不可能花去6个星期的时间来测试一个天天都在改变的软件。这就意
味着你需要限定测试过程使得他可以快速并有效的进行。
做一个风险程度的估定。知道风险的标准是关键所在,因为你需要在一个较短的时间内来确定你要测试内
容的优先级。风险越高,册是的优先级越高。
自动化测试过程。回归测试工具帮助你在短时间内进行重复的测试工作。好的工具需要在软件及培训方面
进行重要的投资,但他不能一天不间断的工作。有一些事情需要在自动测试之前考虑并提前做好。
你必须拥有软件的工作标准文档来跟将来的测试进行比较。
你必须定义需求,测试用例和测试环境。工具只能记录并回放基于操作者的操作行为的活动。
数据维护是关键。你将怎样维护这些测试数据?例如,如果你使用回归测试工具来添加一个记录,脚本文
件将得到“重复的记录”这样的错误。
这将耗费相当多的时间以及金钱来使得这个工具融入到你们的公司。在此之前还必须对相关人员进行工具
使用的培训。因此,必须使人们相信,跟目前工作当中需要建立测试脚本和测试用例这些琐碎的事情相比
,这样做对于长期利益的发展是非常有价值的。
在快速多变的环境中进行测试并不是不可能的,但是他需要能够做出快速的响应,灵敏的进行操作,并且
与变更的轨迹保持一致。那些不愿意考虑新技术,如自动化测试的公司、组织将不能在快速多变的开发环
境中开展有效的测试工作。这就好比是手工工具来盖一座房子,很显然他最终是无法成功的。
在快速多变开发环境中同样也需要一个对于机构和过程的新观念。单独使用工具并不是最终的答案。
必须有一个能快速执行并且充分有效的利用人力资源和时间的操作程序。要达到工具使用、操作程序以及
人力的完美结合,必将是一个很大的挑战。
英文原文:
Testing During Rapid Change
As the old adage goes, "the one thing that remains constant is change." In software
development, one of the weaknesses of the classic waterfall approach is that it assumes
little or no change. The real world changes every day. Because of this, other development
models such as Rapid Application Development (RAD) have been promoted to embrace change and
use it to refine the software through planned iterations.
While RAD helps software developers get early versions up and running very quickly, it
causes testers many headaches. With each and every change is the opportunity to create new
defects. The only way to find new defects is to perform a regression test which completely
repeats a previous test and compares the results to find differences.
Two questions come to mind: 1) "Is it possible to completely test during rapid change?", and
2) "Which strategies can be used to test rapidly changing software?"
Is It Possible to Completely Test During Rapid Change?
Actually, no. However, that's a trick question because in most cases it is not possible to
completely test software even in stable environments1. The essence of this question might be
to ask, "Is it possible to test effectively during rapid change?" Can we expect to make the
best use of people and other resources to test software? Can we expect to find the expected
number of defects?
By observing projects using RAD, I have observed that a process for testing is essential to
finding defects with any degree of effectiveness. Since the norm is to have no repeatable
processes for most of what we do in building software, many people test in a RAD environment
the same way they do in other environments - try a few cases here and there and look for
problems.
Which Strategies Can Be Used?
It takes time to learn what works in each unique environment, but here are some general
strategies that can be used for testing during rapid change:
First of all, accept the fact that you do not have the luxury of performing a six week test
on software that changes every day. This means you will need to define a testing process
that can be performed quickly and efficiently.
Perform a risk assessment. Knowing the level of risk is crucial, since you will need to
prioritize your testing efforts to fit within a short window of time. The higher the risk,
the higher the testing priority.
Automate your testing. Capture/playback tools help you perform repeatable tests in an
unattended session. Good tools require a significant investment in software and training,
but it beats working 24 hours a day. Some things to consider before automating:
You must have a working baseline version of the software to perform comparisons with future
tests.
You must define business requirements, test cases and test scenarios. The tool can only
record and playback based on what actions the user performs.
Data is a key consideration. How will you maintain the test data? For example, if you use a
capture/playback tool to add a record, a reply of the scrīpt will get a "duplicate record on
file" error.
It takes time and a whole lot of spending money to integrate the tool into your
organization. People need to be trained in how to use the tool. In addition, people need to
be sold on the long-term benefits as compared to the short-term work required to setup the
test scrīpts and test cases.
Testing during rapid change is not impossible, but it does require rapid response, working
smart, and keeping track of changes. Organizations that have been unwilling to consider new
technologies such as automated testing tools will not be able to effectively test during
rapid change. It is like building a house with hand tools - sure it can be done, eventually.
Testing during rapid change also requires a new mindset of organization and processes. Tools
alone are not the answer. There must be a process that can be executed quickly and makes the
best use of people and time. It is arriving at the optimal combination of tools, processes,
and people that is the challenge.
一句古老的谚语说的,世界上唯一永恒的东西就是改变。在软件开发过程当中,传统的开发模式的一个缺
点就是他能够呈现较少的改变甚至没有改变。真实世界每天都在改变。正因为此,其他的开发模式,如快
速应用开发(RAD)已经提升到可以包含改变并在计划过程中使用改变来精炼开发。
在RAD模式帮助软件开发者更早的得到更新的版本并更快的运行程序的同时,他也给测试人员带来很多令
人头疼的烦恼。因为每个改变都可能产生新的缺陷。找到新缺陷的唯一的方法就是使用回归测试,回归测
试可以完整的重复先前的测试过程并与得到的结论进行比较,以便找到不同的地方。
接下来就产生了2个问题:1)能否在快速变更的需求过程中进行彻底的测试?2)在测试快速变更的软件
时需要采用什么策略?
能否在快速变更的需求过程中进行彻底的测试?
答案是,不能。这是一个恶作剧式的问题,因为在大多数情况下,即便是在稳定的环境当中,进行彻底的
测试都是不可能的。我们可以将这个问题改成这样,“能否在快速多变的环境中进行有效的测试?”我们
能否期望在测试软件时能够充分有效的利用人力及其他资源?我们能否期望在测试中找到预期数量的缺陷
?
通过观察使用RAD模式进行开发的项目,我发现要找到缺陷和得到任何程度的成效的本质的部分就是测试
过程。由于在软件开发中,大多数我们使用的测试标准是规范是使用不重复的过程,所以很多人在测试
RAD环境的软件时,采用的方法是平时我们在其他环境中使用的方法——在各个不同的地方使用较少的用
例来查找问题和缺陷。
我们可以采用什么样的策略呢?
研究每个单独的环境当中需要采用的策略将会耗费过多的时间,这里有一些通用的策略,可以在快速改变
的测试环境中使用。
首先,你必须接受一个事实,那就是不可能花去6个星期的时间来测试一个天天都在改变的软件。这就意
味着你需要限定测试过程使得他可以快速并有效的进行。
做一个风险程度的估定。知道风险的标准是关键所在,因为你需要在一个较短的时间内来确定你要测试内
容的优先级。风险越高,册是的优先级越高。
自动化测试过程。回归测试工具帮助你在短时间内进行重复的测试工作。好的工具需要在软件及培训方面
进行重要的投资,但他不能一天不间断的工作。有一些事情需要在自动测试之前考虑并提前做好。
你必须拥有软件的工作标准文档来跟将来的测试进行比较。
你必须定义需求,测试用例和测试环境。工具只能记录并回放基于操作者的操作行为的活动。
数据维护是关键。你将怎样维护这些测试数据?例如,如果你使用回归测试工具来添加一个记录,脚本文
件将得到“重复的记录”这样的错误。
这将耗费相当多的时间以及金钱来使得这个工具融入到你们的公司。在此之前还必须对相关人员进行工具
使用的培训。因此,必须使人们相信,跟目前工作当中需要建立测试脚本和测试用例这些琐碎的事情相比
,这样做对于长期利益的发展是非常有价值的。
在快速多变的环境中进行测试并不是不可能的,但是他需要能够做出快速的响应,灵敏的进行操作,并且
与变更的轨迹保持一致。那些不愿意考虑新技术,如自动化测试的公司、组织将不能在快速多变的开发环
境中开展有效的测试工作。这就好比是手工工具来盖一座房子,很显然他最终是无法成功的。
在快速多变开发环境中同样也需要一个对于机构和过程的新观念。单独使用工具并不是最终的答案。
必须有一个能快速执行并且充分有效的利用人力资源和时间的操作程序。要达到工具使用、操作程序以及
人力的完美结合,必将是一个很大的挑战。
英文原文:
Testing During Rapid Change
As the old adage goes, "the one thing that remains constant is change." In software
development, one of the weaknesses of the classic waterfall approach is that it assumes
little or no change. The real world changes every day. Because of this, other development
models such as Rapid Application Development (RAD) have been promoted to embrace change and
use it to refine the software through planned iterations.
While RAD helps software developers get early versions up and running very quickly, it
causes testers many headaches. With each and every change is the opportunity to create new
defects. The only way to find new defects is to perform a regression test which completely
repeats a previous test and compares the results to find differences.
Two questions come to mind: 1) "Is it possible to completely test during rapid change?", and
2) "Which strategies can be used to test rapidly changing software?"
Is It Possible to Completely Test During Rapid Change?
Actually, no. However, that's a trick question because in most cases it is not possible to
completely test software even in stable environments1. The essence of this question might be
to ask, "Is it possible to test effectively during rapid change?" Can we expect to make the
best use of people and other resources to test software? Can we expect to find the expected
number of defects?
By observing projects using RAD, I have observed that a process for testing is essential to
finding defects with any degree of effectiveness. Since the norm is to have no repeatable
processes for most of what we do in building software, many people test in a RAD environment
the same way they do in other environments - try a few cases here and there and look for
problems.
Which Strategies Can Be Used?
It takes time to learn what works in each unique environment, but here are some general
strategies that can be used for testing during rapid change:
First of all, accept the fact that you do not have the luxury of performing a six week test
on software that changes every day. This means you will need to define a testing process
that can be performed quickly and efficiently.
Perform a risk assessment. Knowing the level of risk is crucial, since you will need to
prioritize your testing efforts to fit within a short window of time. The higher the risk,
the higher the testing priority.
Automate your testing. Capture/playback tools help you perform repeatable tests in an
unattended session. Good tools require a significant investment in software and training,
but it beats working 24 hours a day. Some things to consider before automating:
You must have a working baseline version of the software to perform comparisons with future
tests.
You must define business requirements, test cases and test scenarios. The tool can only
record and playback based on what actions the user performs.
Data is a key consideration. How will you maintain the test data? For example, if you use a
capture/playback tool to add a record, a reply of the scrīpt will get a "duplicate record on
file" error.
It takes time and a whole lot of spending money to integrate the tool into your
organization. People need to be trained in how to use the tool. In addition, people need to
be sold on the long-term benefits as compared to the short-term work required to setup the
test scrīpts and test cases.
Testing during rapid change is not impossible, but it does require rapid response, working
smart, and keeping track of changes. Organizations that have been unwilling to consider new
technologies such as automated testing tools will not be able to effectively test during
rapid change. It is like building a house with hand tools - sure it can be done, eventually.
Testing during rapid change also requires a new mindset of organization and processes. Tools
alone are not the answer. There must be a process that can be executed quickly and makes the
best use of people and time. It is arriving at the optimal combination of tools, processes,
and people that is the challenge.