面向对象软件测试用例设计

发表于:2010-7-21 17:06

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  目前,面向对象软件测试用例设计方法,还处于研究和发展阶段。与传统的软件测试不同的是。面向对象测试更关注于设计适当的操作序列以检查类的状态。

  设计测试用例有以下几个要点:

  (1) 应该唯一标识每一个测试案例, 并且与被测试的类明显地建立关联;

  (2) 陈述测试对象的一组特定状态;

  (3) 对每一个测试建立一组测试步骤,要思考或确定的问题包括:对被测试对象的一组特定状态,一组消息和操作,考虑当对象测试时可能产生的一组异常,一组外部条件,辅助理解和实现测试的补充信息。

  类的封装性和继承性给面向对象软件的开发带来了很多好处,但却给测试带来了负面影响。一方面,面向对象测试用例设计的目标是类,类的属性和操作是封装的,而测试需要了解对象的详细状态;同时测试还要检测数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界直接调用,即被数据成员所属的类或子类以外的类调用。另一方继承也给测试用例的设计带来了不少麻烦。继承并没有减少对子类的测试,相反使测试过程更加复杂。如果子类和父类的环境不同,则父类的测试用例对于子类没用,需要为子类设计新的测试用例。

  一、 设计类测试用例

  对于面向对象软件,小型测试着重测试单个类和类的封装,即类级别的测试,测试方法有随机测试、划分测试和基于故障的测试等。

  1.类级随机测试

  随机测试是针对软件在使用过程中随机产生的一系列不同的操作序列设计的测试案例,可以测试不同的类实例生存历史。

  为了简要地说明这些方法,考虑一个记事本的应用。在这个应用中,类text 有以下操作:open(打开),new(新建),read(读取),write(写入),copy(复制),paste(粘贴),view(查看),save(保存)和close(关闭)。这些操作的每一个都能应用于类text,但是由于这个问题的本质提出了某些约束条件。例如,在其他操作执行之前,必须首先执行open 操作,并且在所有其他操作执行完,最后必须执行close 操作。即使对于这些约束,还存在这些操作的许多不同的排列。text 的一个的最小操作序列open·new·write·save·close

  另外,有其他很多行为可以出现在这个序列中open·new·write·[read| write| copy |paste]n ·save·close这样可以随机地生成一系列不同的操作序列作为测试用例,测试类实例的不同生存历史。

  2. 类级划分测试

  划分测试方法与传统软件测试采用的等价划分方法类似,减少了测试类所需要的测试用例的数量。首先,用不同的划分方法(包括基于状态的划分方法、基于属性的划分方法、基于功能的划分方法),把输入和输出分类,然后把划分出来的每个类别设计测试用例。

  下面分别介绍划分类别的方法:

  基于状态的划分方法是根据操作改变类状态的能力对操作进行范畴划分。仍以text 类为例,首先将状态操作和非状态操作分开,状态操作包括read 和write,而非状态操作有view,然后分别为它们设计测试用例。

  测试用例1:open·new·write·read·write·save·close

  测试用例2:open·new·write·read·write·view·save·close

  基于属性的划分根据操作使用的属性将操作划分成范畴。对于text 类,以属性save为例。首先根据这个属性将操作划分为3个范畴:使用save的操作;修改save的操作;不使用或修改save的操作,然后为每个范畴设计测试序列。当然对于text 类也可以使用其他属性进行划分。

  基于功能的划分是根据类操作所执行的一般功能将操作进行划分的。首先将text 类中的操作划分为初始化操作(open,new),写入/读取操作(write,read),保存操作(save)和关闭操作(close),然后分别为每个类别设计测试用例。

  3. 类级基于故障的测试

  基于故障的测试与传统的错误测试推测法类似。首先,推测软件中可能有的错误,然后,设计出最可能发现这些错误的测试案例。为了推测出软件中可能存在的错误,应该仔细研究分析模型和设计模型,很大程度上要依靠测试人员的经验。

  二、 测试类间测试用例

  从面向对象的集成测试开始,设计测试用例就要考虑类间的协作,通常可以从OOA的类—关系模型和类—行为模型中导出类间测试用例。

  类间测试方法有随机测试方法、划分测试方法、基于场景的测试和行为测试。

  随机测试方法和划分测试方法与类级随机测试、类级划分测试类似,主要看一下基于场景的测试和行为测试。

  1. 基于场景的测试

  基于场景的测试关注的是用户做什么,这正是基于故障测试所忽略的,即不正确的规约和子系统间的交互。当与不正确的规约关联发生错误时,软件就可能不做用户所希望的事情,这样软件质量会受影响;当一个子系统的行为所建立的环境使得另一个子系统失败时,子系统间的交互错误就会发生。

  2. 行为测试

  行为测试即从动态模型导出测试用例;用状态转换图作为表示类的动态行为模型,类的状态图可以导出测试该类的动态行为的测试用例。

  设计的测试用例,一方面应该覆盖所有状态,另一方面应该导出足够的测试用例,以保证该类的所有行为都被适当的测试过。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号