APP下载

基于UML的软件测试的研究与应用

2011-08-15梁利亭

太原城市职业技术学院学报 2011年3期
关键词:测试用例面向对象开发人员

梁利亭

(三门峡职业技术学院,河南 三门峡 472000)

〔专题研究与新论〕

基于UML的软件测试的研究与应用

梁利亭

(三门峡职业技术学院,河南 三门峡 472000)

文章首先分析了软件测试的起源、发展,然后分析了面向对象的软件测试技术,接着论述了面向对象的软件测试当中最常用的UML技术,最后利用UML图在面向对象的系统中生成测试用例。

软件测试;面向对象;UML

软件的漏洞和缺陷是伴随着软件的出现而产生的,同时,为了尽可能地解决软件的漏洞和缺陷,软件测试也同样伴随着软件的开发而出现。随着软件体系结构的日益复杂、软件种类的日益增多、新的编程技术的不断出现,软件漏洞和缺陷也日益增多,并且危害性也越来越大。例如2009年7月份,微软的OFFICE组件的一个“OFFICE内存破坏”安全漏洞,导致了7000万人次被攻击和近3万个网站被挂马,造成了巨大的损失。因此,软件测试成为了提高软件的开发效率和保证软件质量的最有效的手段。

一、软件测试的起源和发展

软件测试主要经历了如下几个重要的发展阶段:

1.软件调试:早期的软件规模小、结构简单,在开发过程当中如果遇到其中的漏洞和错误,经过软件开发人员的调试后基本上就可以解决了。

2.独立的软件测试:随着软件开发的日益复杂,软件开发过程当中涉及的内容越来越多,仅靠软件开发人员的调试不能够发现软件当中的漏洞和缺陷,这时就引入了一个独立的测试小组来完成软件的测试。

3.软件测试概念的提出:直到20世纪70年代,Bill Hetzel在North Carllina大学举行第一次以软件测试为主题的正式议会提出了软件测试的概念。在这个阶段,软件测试主要的内容是:软件测试被用来检测相关软件产品能否正确执行,满足相关需求。

4.软件测试成了独立的学科:20世纪80年代后,随着软件需求的快速发展,软件的复杂度和规模越来越大,人们对软件的开发效率和软件质量要求越来越高,并开始将软件测试作为保证软件质量的重要手段。1981年Bill Hetzel博士开设了一门结构化软件测试“Structured Soft-ware Testing”公共课。1983年IEEE给出了软件测试的定义:软件测试是使用人工或自动手段来运行或测定某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是一站需要经过设计、开发和维护等完整阶段的软件工程。

5.开发与测试的融合阶段:20世纪90年代以来,各种各样的软件开发模式开始出现,特别是面向对象成为了软件开发的主流,由于面向对象的软件开发模式的优势,使得人们开始将软件测试和软件开发进行融合,软件开发人员和软件测试人员开始协调工作,软件测试和软件开发的界限开始变得模糊,测试驱动开发(Test-Driven Development,TDD)技术出现,它的基本思路是:通过测试来推动整个开发的进行,于是测试驱动开发并不只是单纯的测试工作,而是把需求分析、设计、质量控制量化的过程。

二、面向对象软件测试

20世纪80年代后期以来,面向对象软件技术开发发展迅速,其多态、封装和继承的新特性使软件开发具有易维护、质量高、效率高、易扩展等优势,但这些新特点也改变了软件测试的相关要求和方法,给软件测试提出了新的挑战。

面向对象软件测试是根据面向对象的软件开发过程结合面向对象的特点提出的。它包括分析与设计模型测试技术、类测试技术、对象交互测试技术、类层次结构测试技术、面向对象系统测试技术五大部分。

与传统的软件测试技术相比,面向对象的单元测试就是类测试;面向对象的类和对象进行交互测试就是类簇测试;面向对象的系统测试与传统的系统测试基本上是相同的,与传统系统测试不同的是,面向对象的系统测试还需要验证OOA分析的结果,对软件的架构设计部分进行验证,确保软件可以顺利实现用户需求。

三、UML技术在面向对象软件测试中的应用

统一建模语言(Unified Modeling Language UML),是面向对象软件开发的重要工具之一,它是一种可视化的建模语言,系统构建者用标准的、易于理解的方式建立一种有效的和共享的软件开发系统蓝图。UML提供了一套描述软件系统模型的概念和图形表示方法,软件开发人员可以使用UML对复杂的面向对象软件系统建立可视化的模型,并通过增量式的不断细化,直接控制从设计、编码、测试到文档编制的整个软件开发过程。

UML包含三个方面的内容:模型的概念和表示法、语言的公用机制、对象约束语言。UML提供的标准模块有三种:事务、关系和图。事务是一个模型的一级抽象成员。UML定义的事务包括结构性事务、行为性事务、成组性事务和注释性事务。而UML提供的模型之间的关系包括依赖、关联、范化、实现四种。利用UML建立的模型,可以应用于C#、C++、Java以及任何一种面向对象的程序设计语言当中。

在利用UML模型进行软件测试时,测试人员首先应注意利用UML的面向对象特性,其次,在利用UML进行软件建模时,是以用户模型视图所捕获的用户规约为中心而展开的,可以利用OCL来确定描述各种UML图所不能刻画的不变式、前置条件和后置条件等模型约束,这些规约是UML模型功能测试和验收测试的基础。软件测试的目的就是为了发现软件系统执行期间所可能出现的错误,因此UML的用户模型视图和行为模型视图通常是软件测试的重点。一般来说,在面向对象的软件测试当中,使用类图和状态图进行单元测试,使用协作图、活动图、状态图和构件图进行集成测试,使用用案图来进行系统测试。

基于UML的测试有下列优点:通用性强,形式化好,有着强大的管理能力和描述能力,可重用性和可迭代性。基于以上原因,UML不仅是软件开发的重要工具,同时也是指导软件测试的重要模型。

四、软件测试实例

1.软件简介

Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图像分析工具,可以实现网络状态的实时图像化显示、故障报警、创建监测模板等功能,同时它还提供了丰富的网络监测插件,基于Cacti网络管理者可以构建本地网络的、满足监测功能的网络监测系统。目前,随着IPv6网络协议的全面实验,特别是在高等院校当中已经进行了IPv6大规模的部署实验,对IPv6网络的监控管理系统的开发就显得日益重要,本系统是一个基于Cacti和RRDTool框架开发的完整的网络管理图形解决方案。最重要的是支持IPv6网络设备的监视与管理,而且通过创建图形使网络管理员的工作更容易照顾到网络的细节。通过Cacti的图形用户界面,使得网络管理员可以直观地观测到网络的实时流量信息,为IPv6网络在未来的大规模应用提供了良好的管理保障。

2.利用UML活动图进行集成测试

在面向对象的软件测试当中,集成测试的一个主要目标就是确保每个类或组件对象的消息以正确的顺序发送和接收,同时确保接收消息的外部对象的状态获得预期的影响。利用UML活动图,能够针对面向对象的软件测试生成良好的测试用例。在利用活动图生成相应的测试用例的时候,需要的条件有:

(1)需要由客户或开发人员进行讨论后以自然语言形式给出的需求文档,文档描述了开发系统所具有的所有必要的行为。

(2)可以利用需求文档给出的信息生成用案图集,如果有必要,将这些用案图和客户经行进一步的修改,利用确定好的用案图来刻画与系统之间交互以及这些交互期望输出的活动图。

(3)所得到的活动图将被变换成能区分系统的输入、输出以及系统本身的任务,刻画输入输出的顺序以及各活动之间的并发性的形式活动图 (Formal Activity Diagrams,FAD)。为构造测试用例,FAD被划分成多个“片段”,其中的每个片段都要单独地进行分析以得到一个不完整的测试用例。

(4)通过特定的方法将这些不完整的测试用例合并成完整的测试用例。

(5)形式活动图(FAD)以图的形式来描述用户和待测试系统之间的交互关系,用来修改后的活动图刻画系统的输入和输出所具有的特性,使得测试用例的生成较为容易。利用形式活动图生成测试用例的基本思想是:将一个FAD分割成多个片段,接着对每个片段进行分析,以便找出其对应的可能事件序列,然后为已分成若干片段的FAD建立一个片段方程。片段方程描述了如何合并与各个片段对应的事件序列以构造出完整的测试用例。将事件序列进行合并的方法较简单,该合并方法只使用3个操作:其中两个是非常基本的集合操作,第3个是用来将两个片段进行交叉的操作。最后,该方法对所得到的完整的测试用例集进行进一步的处理,以消除其中重复的或不可能操作的测试用例。

(6)根据生成的测试用例就可以用来对数据填充模块进行集成测试,只要所有测试用例的实际输出和期望输出一样,就可以说该模块对于活动图而言是正确的。

[1]梁利亭.基于UML的面向对象的软件测试的研究与应用[D].南京理工大学硕士论文,2010.

TP

A

1673-0046(2011)03-0159-02

猜你喜欢

测试用例面向对象开发人员
基于SmartUnit的安全通信系统单元测试用例自动生成
Semtech发布LoRa Basics 以加速物联网应用
基于需求模型的航天软件测试用例生成方法
面向对象Web开发编程语言的的评估方法
峰丛洼地农作物面向对象信息提取规则集
基于面向对象的车辆管理软件的研制与开发
后悔了?教你隐藏开发人员选项
基于依赖结构的测试用例优先级技术
面向对象的SoS体系结构建模方法及应用
软件回归测试用例选取方法研究