测试方法和测试工具解决方案

发表于:2008-07-11来源:作者:点击数: 标签:工具方案
关键字: 测试方法 测试工具 解决方案 随着软、硬件技术的发展,计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂。这就使保证软件的质量,保证软件的高度 可靠性 ,面临巨大的挑战。特别是诸如军事、航空航天、通讯、交通医疗等
关键字:测试方法 测试工具 解决方案
随着软、硬件技术的发展,计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂。这就使保证软件的质量,保证软件的高度可靠性,面临巨大的挑战。特别是诸如军事、航空航天、通讯、交通医疗等行业,软件的微小瑕疵就可能造成对生命安全、天文数字的巨额财产、甚至对国家安全严重威胁。


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


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


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


一、 白盒测试的实施方案 

在开发阶段


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

在测试阶段


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


定义测试准则


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


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


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


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


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


优化测试过程


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


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

 

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

在维护阶段


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


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


理解应用系统


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


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


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


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


安全地修改软件


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

二、黑盒测试的实施方案


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


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


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


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


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


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

三、相关工具


  在我们了解了测试所涉及的内容之后,测试方法和采用相对应的自动化测试工具是至关重要的。自动化的测试工具意味着在测试活动中减少相当部分开销,真正的含义是它参加了测试的很大部分活动;同时,有些测试活动是靠手工方式难以实现,难以度量的。我们在对自动化的测试工具做成本效益分析时,应当考虑到项目的预期时间和人工消耗,一些测试用手工来做可能由几个人需要几个星期甚至更长时间来完成,而采用自动化的测试工具可能只需要几个小时或者几分钟;象基于Client-Server的负载测试或者是基于Web系统的测试如果要用手工测试来完成是很困难和不现实的。所以,在测试活动中选择自动化的测试工具是非常必要的。


  下面我们就相应工具进行简要的介绍。

1. 嵌入式软件测试工具--LOGISCOPE


  LOGISCOPE 是一组嵌入式软件测试工具集。它贯穿于软件开发、代码评审、单元/集成测试系统测试、以及软件维护阶段。它面向源代码进行工作。LOGISCOPE 针对编码、测试和维护。因此,LOGISCOPE 的重点是帮助代码评审(Review )和动态覆盖测试(Testing )。


  LOGISCOPE对软件的分析,采用基于国际间使用的度量方法(Halstead、McCabe等)的质量模型,以及从多家公司收集的编程规则集,可以从软件的编程规则,静态特征和动态测试覆盖等多个方面,量化地定义质量模型,并检查、评估软件质量。 

  LOGISCOPE 在开发阶段,查找可寻找潜在的错误。
  在代码评审阶段,LOGISCOPE 定位那些具有80%错误的程序模块。
  通过对未被测试代码的定位,LOGISCOPE 帮助找到隐藏在未测试代码中的缺陷。
  项目领导和质量工程师用LOGISCOPE 定期地检查整个软件的质量。
  在各个阶段用LOGISCOPE ,改进软件工程的实践,训练程序员的编写良好的代码和测试活动,确保系统易于维护,减少风险。
  在有合同关系时,合同方可以用LOGISCOPE 明确定义验收时质量等级和执行测试。承制方可以用LOGISCOPE 演示其软件的质量。
  LOGISCOPE 获取ISO/IEC9126 定义的"Quality Characteristics ";
  LOGISCOPE 为ISO-9001提供需求(test aclearcase/" target="_blank" >cceptance criteria and qulity records );
  LOGISCOPE 为开发者提供SEI/CMM在第2 级(Repeatable )所要求的软件质量跟踪等关键实践的要求,推进开发组织尽快达到SEI/SMM 的3 级。

1)LOGISCOPE 用于开发阶段


定义质量模型


  RuleChecker 预定义了50 个的编程规则:名称约定(如:局部变量用小写等);表示约定(如:每行一条指令); 限制(如:不能用GOTO 语句,不能修改循环体中的计数器等)。用户可以从这些规则中选择,也可以用Tcl 、脚本和编程语言定义新的规则。此外,还提供50 个面向安全-关键系统的编程规则。


  Audit 以ISO9126 模型作为质量评价模型的基础。质量评价模型描述了从Halstend 、McCabe 的度量方法学和VERILOG 引入的质量方法学中的质量因素(可维护性、可重用性、等)和质量准则(可测试性、可读性、等)。


  工程项目领导或质量管理人员可以根据准则、应用软件的生存周期、合同需求等,挑选并采纳适用于项目需求的质量模型。

验证、评审和改进代码


  RuleChecker 用所选的规则对源代码进行验证。指出所有不符合编程规则的代码,并提出改进源代码的解释和建议。RulrChecker 通过文本编辑器直接访问源代码并指出需要纠正的位置。


  Audit 将被评价的软件与规定的质量模型进行比较,用图形形式显示软件质量的级别,因此,质量人员可以把精力集中到需要修改的代码部分。对度量元素和质量模型不一致的地方作出解释并提出纠正的方法。

2)LOGISCOPE 用于测试阶段


定义测试准则


  LOGISCOPE 推荐对指令(IB)、逻辑路径(DDP)和调用路径(PPP)的覆盖测试。此外对安全-关键软件还提供了MC/DC 的覆盖测试。

测试的有效性


  TestChecker 产生每个测试的测试覆盖信息和累计信息。用直方图显示覆盖比率,并根据测试运行情况实时在线更改。随时显示新的测试所反映的测试覆盖情况。


  TestChecker 允许所有的测试运行依据其有效性进行管理。用户可以减少那些用于非回归测试的测试。

测试的优化


  在测试阶段的第一步,执行的测试是功能性(黑箱)测试。其目的是检查所期望的功能是否已实现。在测试初期,覆盖率会迅速增加。象样的测试工作一般能达到70%的覆盖率。但是,要提高此比率是十分困难的。主要是由于测试用例覆盖了相同的测试路径。这时,需要对测试策略做一些改变。执行结构化(白箱)测试,即,要检测没有执行过的逻辑路径,定义新的测试用例覆盖这些路径。


  在执行测试期间,当测试策略改变时,综合的运用TestChecker 检测关键因素以提高效率。将TestChecker与Audit 配合使用能够帮助用户分析未测试的代码。


  用户可以显示所关心的代码,并通过对执行未覆盖的路径的观察得到有关的信息。信息以图形(控制流图)和文本(伪代码和源文件)的形式提交,并在其间建立导航关联。


  TestChecker 管理系统声明新的测试、生成有关文档、定义启动命令、以及自动执行的方法。

3)LOGISCOPE 用于维护阶段


  人们广泛的认识到应用系统的维护费用与开发费用基本相等。经验表明50%的软件维


  护时间化在对结构、逻辑和运行的理解上。LOGISCOPE 可以大大的减少对未知系统的理解所需的时间。


  Audit 将应用系统的框架以文件形式(部件文件间的关系)和调用图的形式(函数和过程间的关系)可视化。函数的逻辑结构以控制流图的形式显示。在控制流图上选定一个节点,即可得到相对应的代码。可以在不同的抽象层上对应用系统进行分析,不同层次间的导航,促进对整体的理解。

4)对嵌入式领域的支持


  LOGISCOPE 支持多种测试方式。特别是对嵌入式领域软件的支持。


  众所周知,嵌入式系统软件的测试是最为困难的。因为,它的开发是用交叉编译方式进行的。在目标机(Target)上,不可能有多余的空间记录测试的信息。必须实时地将测试信息通过网线/串口传到宿主机(Host)上,并实时在线地显示。因此,对源代码的插装和目标机上的信息收集与回传成为问题的关键。


  LOGISCOPE 很好地解决了这些技术,成为嵌入式领域测试工具的佼佼者。它支持各种实时操作系统(RTOS)上的应用程序的测试,也支持逻辑系统的测试。Logiscope 提供VxWorks 、pSOS 、VRTX 实时操作系统的测试库。

5)对航空/航天/国防/核电站领域的支持


  在航空/航天领域,安全是最关键的问题。因此,欧美的航空/航天制造厂商和使用单位联合制定了RTCA/DO-178B。LOGISCOPE 通过对"Reviews and Analysis of the Source
Code " 和"Structural Coverage Analysis "能够使开发的软件达到RTCA/DO-178B 标准的A 、B 、C 三个系统级。
LOGISCOPE 是第一个提供MC/DC(Modified Condition/Decision Coverage)测试的工具。

6)软件文档和测试文档的自动生成


  Logiscope 提供了文档自动生成工具。使用者可以将代码评审的结果和动态测试情况实时生成所要求的文档,这些文档忠实地记录代码的情况和动态测试的结果。文档的格式可以根据用户的需要定制,如,GJB-438A。

  支持的主机平台:
  UNIX:Sun OS/Solaris, HP 700 HP-UX, RS6000 AIX, Power PC, DEC UNIX;
  IBM Mainframe MVS环境;
  PC Windows/NT。
  支持的语言:C, C++, Ada, Java
  目标机环境:支持嵌入式实时操作系统VxWorks,PSOS,VRTX

原文转自:http://www.ltesting.net