UML软件工程组织

测试方法和测试工具解决方案(1)
太平洋软件(中国)有限公司

 

  随着软、硬件技术的发展,计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂。这就使保证软件的质量,保证软件的高度可靠性,面临巨大的挑战。特别是诸如军事、航空航天、通讯、交通医疗等行业,软件的微小瑕疵就可能造成对生命安全、天文数字的巨额财产、甚至对国家安全严重威胁。

  因此,对软件产品质量的度量、评估和保证,成了用户和项目承揽公司都十分关注的问题。基于这些原因,国际上的标准化和认证组织已经制定出了一些软件标准(在ISO-9001以及SEI CMM框架中)。对于软件的开发过程即可通过这些标准进行约束和度量。

  为了确保软件的质量,达到软件工程的度量标准,软件测试是非常必要的。我们通过对国内外知名软件提供商和系统集成商的调查了解,在软件产品的测试方面均使用软件工程中提出的两种方法进行测试,即白盒和黑盒测试。白盒是已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经通过检查。白盒测试又叫结构测试。黑盒是已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求,黑盒又叫做功能测试,它不仅应用于开发阶段的测试,更重要的是在产品测试阶段及维护阶段必不可少。

  太平洋软件(中国)有限公司(PTS)自1995年引进第一个测试工具以来,涉足测试领域已有多年,对当今流行的测试软件、测试理论和方法都有深入的研究和理解,在此基础上,开展了为用户提供测试方法培训和测试专业服务的业务。通过服务,我们力求能够帮助用户有效地、有步骤地调整其现有软件生产过程,帮助企业通过ISO9001 认证,提高开发队伍的CMM 等级,最终达到提高软件产品质量,加强企业竞争力促进企业发展的目的。
以下是PTS推出的测试方法和测试工具解决方案。

一、 白盒测试的实施方案

在开发阶段

  要保证产品的质量,产品的生产过程应该遵循一定的行业标准。软件产品也是同样,没有标准可依自然谈不上质量的好坏。所有关心软件开发质量的组织、单位,都要定义或了解软件的质量标准、模型。其好处是保证公司实践的均匀性,产品的可维护性、可靠性以及可移植性等。

在测试阶段

  与软件产品的开发过程一样,测试过程也需要有一定的准则,来指导、度量、评价软件测试过程的质量。

定义测试准则

  为控制测试的有效性以及完成程度,必须定义准则和策略,以判断何时结束测试阶段。准则必须是客观的,可量化的元素,而不能是经验或感觉。

  根据应用的准则和项目相关的约束,项目领导可以定义使用的度量方法,和要达到的覆盖率。

度量测试的有效性、完整性

  对每个测试的测试覆盖信息和累计信息,用图形方式显示覆盖比率,并根据测试运行情况实时更新,随时显示新的测试所反映的测试覆盖情况。

  允许所有的测试运行依据其有效性进行管理,用户可以减少不适用于非回归测试的测试的过程。

优化测试过程

  在测试阶段的第一步,执行的测试是功能性测试。其目的是检查所期望的功能是否已经实现。在测试的初期,覆盖率迅速增加。象样的测试工作一般能达到70%的覆盖率。但是,此时要再提高覆盖率是十分困难的,因为新的测试往往覆盖了相同的测试路径。在该阶段需要对测试策略做一些改变:从功能性测试转向结构化测试。也就是说,针对没有执行过的路径,构造适当的测试用例来覆盖这些路径。

  在测试期间,及时地调整测试策略,并检查分析关键因素,以提高测试效率。

图表 1 测试过程中覆盖率趋势及策略的调整

 

在维护阶段

  有一点认识越来越为大多数人所认可:应用系统的维护费用与初始的开发费用基本相等,而在维护过程中,在对应用结构、逻辑、运行的理解上花费的时间,要用去50%的时间。

  由于系统维护人员很可能不是开发人员本人,再加上人员的流动、团队内部的交流的不足,都需要对应用系统的理解。

理解应用系统

  将应用系统的设计,以文件形式(部件文件间的关系)和调用图的形式(函数和过程间的关系)可视化。

  函数的逻辑结构以控制流图的形式显示,在控制流图上选定一个节点,即可得到相对应的代码。

  应用系统可以在不同的抽象层上进行分析,不同层次间的导航关联,促进对整体的理解。

  对应用按其资源的使用进行检测,由此促进对函数之间(参数传递)的信息流、数据间的关系,以及其它资源的理解。

安全地修改软件

  维护软件意味着修改软件,修改后的程序确认需要大量的工作。因为,看起来很小的修改,都可能会滚雪球似的导致数十处甚至上百处的修改。这种后继的修改需求,越早发现越好,最好是在编译前就发现并做出修改,最坏的情况是在调试和非回归测试期间发现。

二、黑盒测试的实施方案

  传统系统的编程语言和逻辑全是过程式的。这种逻辑顺序只有当数据中的值引起不同的循环或控制顺序改变时才会发生变化。

  客户机/服务器和图形用户界面系统不是过程式的。它们是事件驱动的。这意味着计算机针对发生的事件执行相应的程序。这里的事件是指用户采取的行为,象键盘活动,鼠标移动,鼠标击键动作和按键的动作,都是事件的例子。因为事件发生的顺序不能预先知道,事件驱动系统相对来说更难测试。开发人员不可能知道用户下一次要选中哪个按钮或菜单项。实际上,应用程序必须在任何时候对所有发生和可能发生的事件作好正确处理的准备。

  另外,随着RAD(快速应用开发方式)的引入,导致应用的实现速度很快,但这种方式也有它的不足。一个重要的缺点是项目规划经常漏掉重要的测试阶段。测试象在传统开发项目中一样,经常被忽视,并且给予很不现实的少量时间和资源。对于这一点,测试RAD方式下提交的应用并保证软件质量是测试团队的首要工作。

  黑盒测试在实施时又分为客户端的测试和服务器端的性能测试。客户端的测试主要关注应用的业务逻辑,用户界面,功能测试等;服务器端的测试主要关注服务器的性能,衡量系统的响应时间、事务处理速度和其他时间敏感的需求。在应用系统最终被交付之前保证这两方面的测试没有缺陷。

  由于测试并不是进行一次就可以完成的个过程,而是需要根据产品版本的变化生成不同的测试过程,如果这一过程仅通过手工方式完成是很难达到的。需要通过工具的帮助,从而简化测试的复杂程度,降低在测试成本上的开销,缩短投放市场的时间。还有一个突出的特点就是应用程序的回归测试,这是手工方式完成不了的过程,只有通过工具才能实施。而回归测试在测试阶段是很重要的过程,通过回归测试可以发现很多隐含的缺陷和错误。

  在服务器端的测试主要以模拟合法用户活动给系统的负载,负载测试的统计结果被用来预测用户将体验到的性能和响应时间。这都需要在客户机/服务器系统发行之前都要进行的。



版权所有:UML软件工程组织