UML软件工程组织

 

 

如何确定软件测试技术
 

2008-01-29 来源: 网络转载

 

测试是用来确定应用系统属性的存在、质量及其真实性的一种手段。

测试过程尽量做到结构化。

1、应用程序的有效性取决于该应用程序与其所在环境的适应性。

适应性:指应用程序在帮助用户执行其日常工作方面的使用、帮助合意义的程度。适应性有如下所述的四个要素:
  (1)数据:数据的可靠性、及时性、一致性、可用性;
  (2)人员:良好技能、相应培训、悟性、兴趣;
  (3)结构:提高技术、满足需求的恰当的开发方法;
  (4)规则:按照一定规程处理数据。

应用系统必须与业务环境中的这四个要素相适应。

2、测试技术/工具的选择过程

2.1、结构测试与功能测试

基于结构分析的测试,其目的是为了发现程序“编码”过程中的错误;基于功能分析的测试是为了发现实现需求或者设计规格说明时的错误。

功能测试确保应用系统恰当地满足了需求;结构测试用于保证对各功能实现进行了充分的测试。

2.2、动态测试与静态测试

动态测试基于测试用例运行程序,执行的结果与期望结果值进行比较,看是否一致。

静态测试不需要执行程序,其手段如语法检查等。

静态测试主要用于需求和设计阶段,动态测试主要用于测试阶段。

2.3、人工测试与自动测试

由人所执行的测试称为人工测试,由机器执行的测试称为自动测试。

开发过程越是自动化,测试过程的自动化也就越容易。

3、测试技术/工具的选择

过程:选择测试因素-->确定SDLC阶段-->明确测试标准-->选择测试类型-(系统结构或功能)->选择技术-->选择测试方法-->动态或静态->单元测试技术-->选择测试方法-->动态或静态

4、测试技术与测试工具的区别

测试工具是执行测试过程的一个设备;测试技术是确保应用系统某方面或单元的功能正确的过程。

5、结构化系统测试技术:用于验证所开发的系统及程序的运行情况。目标是要确保产品设计在结构上合理,功能上正确。为确定实现的配置及其各功能共同作用以完成特定任务 提供了一种机制。结构化测试技术由以下几种:

(1)压力测试:确定系统以期望的容量执行。

举例:分配了足够的磁盘空间;有充分的通信渠道。

压力测试技术用于检查系统面对意外情况下的大数据量时是否可以正常运行。所涉及的方面包括输入事务、内部表、磁盘空间、输出、通信、计算机容量以及人机交互等。

当应用系统所能正常处理的工作量并不确定时需要使用压力测试。压力测试意图通过对系统施加超负载事务量来达到破坏系统的目的。弱点在于准备测试的时间与在测试的实际执行过程中所消耗的资源数量都非常之大,通常在应用程序投入使用之前这种技术是无法进行的。

(2)执行测试:系统能达到期望的熟练性。

举例:事务轮转时间充分;软硬件使用良好。

执行测试技术用于检查系统是否达到了预期在产品状态下的成熟度。执行测试可以验证系统的响应时间、轮转时间及设计性能。

在开发过程的早期就应该进行执行测试,尽早制定已经完成的系统没有达到性能指标是非常有价值的。在关键时间点进行。关键时间点指的是当前的结果会影响甚至改变系统结构的时间点。

(3)恢复测试:系统失效之后可以恢复到可操作状态。

举例:引入失败;评估备份数据的充分性。

恢复测试技术用于确保系统在经历灾难后可以继续正常运行,它不仅可以验证恢复过程,而且可以验证过程各组件的有效性。

当用户认为系统操作的连续性对于其所涉及领域的某些功能至关重要时,需要进行恢复测试。

(4)操作测试:系统以正常操作状态执行。

举例:确定系统可以依据文档进行运行;JCL(工作控制语言)充分。

操作测试技术主要用于检查系统在正常的操作状态下是否可以执行。操作测试可以与其它测试联合执行。

任何应用程序在成为产品之前都应进行操作测试。

(5)(与过程的)一致性测试:系统的开发与标准和规程相一致。

举例:按标准执行;文档完整。

一致性测试技术用于验证应用程序的开发是否与信息技术指标、过程及准则相一致。一致性测试最有效的方法是过程审查。

系统开发标准和过程的一致性程度依赖于管理层对于所需遵循的特定过程和执行标准的重视程度。

(6)安全性测试:根据组织的重要性对系统进行保护。

举例:访问拒绝;规程适当。

安全性测试技术用于评价保护性程序及安全对策的充分性。安全性缺陷不如其它类型的缺陷那么明显。安全性测试是测试过程中高度专业化的部分。分物理安全性(针对利用物理方法收集信息的手段)和逻辑安全性(针对使用计算机处理和通信能力进行非法活动信息的手段)。

当系统保护信息和资产对于组织来说意义重大时,需要进行安全性测试。

6、功能性系统测试技术

功能性系统测试用于确保系统需求与定义都得到了满足。该过程通常包含创建用于评价应用程序正确性的测试条件。

用于执行功能测试的几种测试技术包括:

(1)需求测试:系统按制定方式执行。

举例:证明系统需求;与政策、规则相一致。

需求测试技术验证系统是否正确执行其功能,并且能保证在相当长的一段时间内保持其正确性。需求测试的执行主要通过执行创建的测试条件以及功能检查单来完成, 通过需求得到测试条件,然后以类似于SDLC这种特定的方式表现,生成用于评价实现的应用系统的测试数据。

任何应用程序都应该对需求进行测试,此过程应该开始于需求阶段,并一直持续到系统运行和维护阶段。

(2)回归测试:验证系统中没有改变的部分仍能正确运行。

举例:未变更的部分正常运行;未变更的人工规程正确。

回归测试技术对已经测试过的部分进行重新测试,以保证它们在应用程序其它部分发生变更之后仍能正常运行。

当变更会对应用程序中没有变更的部分产生高风险的影响时需要进行回归测试。

(3)错误处理测试:错误可以得到防止或检测,并被修复。

举例:将错误引入测试;错误的再次注入。

人工系统与自动系统之间差别的特点之一就是预定义的错误处理特性。错误处理测试技术用于检查应用系统正确处理发生异常的能力。错误处理测试需要一组知识丰富的人员来预见应用系统可能发生的错误。它是测试错误的引入、错误的处理,控制条件以及条件的再次正确输入。

在系统整个生命周期中都应该进行错误测试。在开发过程中,应该识别错误带来的问题并且采取相应的措施将错误减少到可以接受的程度。

(4)人工支持测试:人机交互有效。

举例:具备人工规程;人员接受过培训。

人工支持测试技术主要包括人员在准备数据以及使用来源于自动程序数据的过程中执行所有功能。

在生命周期的全过程都应该验证人工系统功能的正确性。

(5)系统间测试:数据可以正确地在系统间传递。

举例:系统间参数变化;系统间文档更新。

系统间测试技术用于保证应用程序间相互管理的正确性。系统间测试的一个最好的工具是集成测试工具,它允许在产品环境下进行测试,可以以最小的代价测试系统间的耦合性。

在应用系统间的参数发生变更时需要进行系统间的测试。测试的程度和类型依赖于与出错的参数相关联的风险情况。

(6)控制测试:将系统风险控制降低到可以接受的级别。

举例:文件一致性规程正常;人工控制正确。

控制测试技术包括数据确认、文件完整性控制、评审追踪、备份和恢复、文档,以及与系统完整性相关的其它方面。主要用于确保对系统特定功能的检查。可以用于控制测试的一个方法是生成风险矩阵。

控制测试是系统测试中的一个完整的部分,占测试时间的很大比例。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号