为什么我应该测试?
我应该测试什么?
我在哪里测试?
我什么时候测试?
我如何指导测试?
从高层次的角度来看,这可能十分简单,但是在典型的软件开发中总会出现许多障碍。下面详细描述这些挑战。
没有足够的时间来测试
除了某些专门的或者任务十分重要的应用程序外,很少的软件项目在开发周期里拥有充足的时间完成高水平的质量度量。通常情况是,软件工程里本来就很短的“测试周期”总是不可避免地会被耽搁。即使是最好的项目也很有可能在测试工作上面临时间限制。在测试管理中这种障碍的影响是不断变换优先级,不断转换工作以及为测试结果和质量检测方法简化数据。
没有足够的资源来测试
除了缺少时间外,通常在取得执行必要的测试所需的合适资源方面也面临困难。资源可能被其他工作或项目分享。虽然测试的硬件资源会带来延迟和困难,但是人力资源的缺乏可能更加难以解决。在测试管理中这种障碍的影响和时间缺乏造成的影响大致相同。
测试团队并不是总在一个地方
这段时期更经常的情况是测试资源可能可以获得,但是它们不在同一个地方。在各地区协调人力以降低成本已成为家常便饭,但是这造成相当多的技术障碍。在另一区域的团队如何共享工件并保持协同合作,并不会造成延迟和影响整个团队的和谐?一个项目如何能将区域分布式开发的效率发挥到极至呢?
需求方面的难题
虽然有许多的测试策略,但是确认需求是需要完成的最主要的、优先级最高的测试工作。做到这一点需要完整的、明确的和可测试的需求。不够完美的需求管理会导致测试工作中更大的问题。使用像 RequisitePro 这样的工具可以帮助极大地提高需求管理并促进有效需求的开发。
对于有效的测试管理来说,必须有对于最新系统变更和业务需求的无缝接口。这种接口必须不只是针对需求的描述,也要针对优先级、状态和其他属性。此外,这需要开发需求说明的团队和执行测试的团队之间最大限度的协调分工和沟通。这种沟通必须在确保质量的所有方面进行。
与开发保持同步
软件质量所需的另一种团队协作存在与测试人员与开发人员之间的。除了关键缺陷之外,软件开发中总有一个惯例,那就是测试团队的工作只有测试人员关注。尽管如此,对于每一个人,特别是对开发人员来说了解当前的质量水平以及哪些已经被测试、哪些还没有被测试是十分重要的。
为了有效地使用他们的宝贵时间,测试团队必须跟上不断变化的代码、工作版本和测试环境。测试管理必须精确识别要测试的工作版本和测试的合适的环境。测试错误的工作版本(或功能)会导致时间的浪费,并严重地影响项目进度。测试人员必须也了解什么缺陷是已知的,不需要重新测试的以及哪些是需要确定的。而后测试人员必须将已发现的缺陷以及促进解决方案的充分信息提供给开发人员。
报告正确信息
如果能够为项目传达测试状态和一些质量评定标准,测试工作只是有用的。得出报告十分简单,但是提供恰当的信息(在合适的时间,为合适的人)是更加由意义的,主要有以下的原因:
如果只有非常少的信息,那么除了对测试团队来说减少了感知缺陷的价值外,项目涉众将不能充分了解影响质量的问题。
如果有过多的信息,那么主要信息的意义和影响就变得模糊。
在如何将信息与不同地方的不同角色分享上总是有技术障碍。
报告结果的另一个需要考虑的事项是如何安排信息以及以采用什么形式(也就是说,信息是基于工具的、基于浏览器的还是基于文件的形式)。如果有技术上或者其他限制报告的安排或形式上的约束,项目涉众对于测试和质量信息的了解将被减少。数据应该以一种清晰有逻辑的设计方式呈现出来,表示适当的意义,而不是以受局限的工具或技术的方式。因此对于项目管理来说在提供宽泛的报告格式方面考虑适应性和接受力的需要是十分重要的。
什么是质量度量?
测试团队的一个主要目标是评估并决定质量,但是如何准确地度量质量呢?有许多的方法可以实现,而且根据系统或应用软件的类型和开发项目的特殊性分为很多不同的种类。为了避免曲解,任何一个质量度量方法都是需要清晰明确的。更重要的是,测试方法必须可以获取和保存,否则它们可能不值得花费成本或者可能是不完整或者不准确的。