软件测试策略
作者:网络转载 发布时间:[ 2011/4/19 10:07:43 ] 推荐标签:
1.2 软件测试的组织
对每一个软件项目来说,在测试开始的时候总会产生一些固有的利益冲突。开发软件的人们现在开始被要求对软件进行测试。这本身来说似乎是无害的:毕竟,谁能比开发人员更了解这个软件呢?不幸的是,这些开发人员有很高的兴趣要急于证明他们的程序是毫无错误的,是按照用户的需求开发的,而且完全能够按照预定的进度和预算完成。这些兴趣和认真地测试是相互冲突的。
从心理学的角度上来讲,软件分析和设计(包括编码)是建设性的工作。软件工程师构造一个计算机程序、程序文档、还有相关的数据结构。和其他任何建设者们一样,软件工程师也对自己的“大厦”感到非常骄傲,而对任何试图摧毁其“大厦”的人嗤之以鼻。当测试开始的时候,会存在一种微妙的、但确实存在着的、试图要“摧毁”软件工程师建立起来的东西的企图。从开发者的观点来看,测试可以被看作是(从心理上来说)破坏性的。所以开发者只是简单地设计和进行能够证明程序正确性的测试,而不是去尽量发现错误。不幸的是,错误是确确实实地存在着的,而且如果软件工程师不能找到错误,那么客户会找到它们。
通过上面的这些讨论,常常会导致人们产生如下的误解:
(1)软件的开发人员根本不应当参与测试;
(2)软件应当给那些会无情地挑毛病的陌生人来测试;
(3)测试者只有在测试的步骤即将开始的时候才参与项目。这些想法都是错误的。
软件开发者总是负责程序的单个单元(模块)的测试,保证每个单元能够完成设计的功能。在很多情况下,开发者也进行集成测试??进行完整的程序结构构造(和测试)的步骤。仅仅在软件体系结构完成后,独立测试组织才开始介入。
独立测试组织(ITG)的功能是为了避免让开发者来进行测试时会引发固有问题。独立地测试可以消除可能存在的利益冲突。毕竟,独立组织中的人员是靠找错误来拿工资的。
然而,软件开发人员并不能把程序交给ITG一走了之,开发人员和ITG在软件项目中应当紧密合作,以保证测试顺利进行。而且在测试进行过程中,那么开发人员必须可以去修改测试过程中发现的错误。
ITG从需求说明过程开始,参与了一个大项目的整个过程(计划和确定测试过程),从这种意义上来说,它是软件项目组中的一部分。然而,在许多情况下,ITG是直接向软件质量保证组织负责的,这样它获得它作为软件开发组织的一部分而可能得不到的独立性。
1.3 一种软件测试策略
软件工程的过程可以看作是一个螺旋结构。初,系统工程定义了软件的功能,从而引出了软件需求分析,建立了软件的信息域、功能、行为、性能、约束和确认标准。沿着螺旋向内前进,经过设计阶段,终到达了编码。为了开发计算机软件,我们沿着流线的螺旋前进,每一圈都会降低软件的抽象层次。
软件测试策略也可以放在螺旋的语境里来考虑。单元测试从螺旋的漩涡中心开始,它着重于软件以源代码形式实现的各个单元;测试沿着螺旋向外前进到了集成测试,这时的测试则着重于对软件的体系结构的设计和构造;再沿着螺旋向外走一圈,我们遇到了确认测试,我们要用根据软件需求分析得到的需求对已经建造好的系统进行验证;后,我们要进行系统测试,也是把软件和其他的系统元素放在一起进行测试。为了对计算机软件进行测试,我们沿着螺旋的流线向外,每转一圈都扩宽了测试的范围。
从过程的观点来考虑测试的整个过程的话,在软件工程环境中的测试事实上是顺序实现的四个步骤的序列,这些步骤表示在图17-3中。开始,测试着重于每一个单独的模块,以确保每个模块都能正确执行,所以,我们把它叫做单元测试,单元测试大量地使用白盒测试技术,检查每一个控制结构的分支以确保完全覆盖和大可能的错误检查;接下来,模块必须装配或集成在一起形式完整的软件包,集成测试解决的是验证与程序构造的双重问题,在集成过程中使用多的是黑盒测试用例设计技术,当然,为了保证覆盖一些大的分支,也会用一定数量的白盒测试技术;在软件集成(构造)完成之后,一系列高级测试开始了,确认标准(在需求分析阶段已经确定了的)必须进行测试,确认测试提供了对软件符合所有功能的、行为的和性能的需求的后保证,在确认过程中,只使用黑盒测试技术。
后的高级测试步骤已经跳出了软件工程的边界,而属于范围更广的计算机系统工程的一部分,软件,一旦经过验证之后,必须和其他的系统元素(比如硬件、人员、数据库)结合在一起。系统测试要验证所有的元素能正常地啮合在一起,从而完成整个系统的功能/性能。
1.4 测试完成的标准
每当讨论软件测试的时候都会引发一个经典问题的讨论:“我们什么时候做测试呢?我们又怎样才能知道我们的测试已经足够了呢?”很遗憾的是,到目前为止对这个问题还没有一个确定性的答案,但是还是有一些在经验引导下的实际的答案和早期的尝试。
对上面问题的一个答复是:“你永远也不可能完成测试,这个重担将会简单地从你(或者开发人员)身上转移到你的客户身上”。每次客户/用户执行一个计算机程序的时候,程序是在一个新的数据集合下经受测试的考验,这个清醒的事实使得其他的软件质量保证活动更加重要。对上面问题的另一个答复是(有些讽刺,但无疑是准确的):“当你时间不够或者资金不够用的时候,完成了测试。”

sales@spasvo.com