码迷,mamicode.com
首页 > 其他好文 > 详细

《软件测试基础》读书报告:第四章 输入空间划分

时间:2015-04-12 17:39:20      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

《软件测试基础》读书报告

第四章 输入空间划分

为了更直接地使相同测试需求的值集合是恰好合适,划分输入空间的方式直接的根据输入值的参数来定义输入域。输入参数可能是方法的参数和全局变量,也可能是系统当前的表现状态,或者干脆是用户级给定的一个输入,这都要根据实际情况来划分。总输入域中划分出若干个区域,从这些区域中选出一些值来进行测试。

从参数的域开始,把每个域可能的值划到块里,从块中选取适当的值来组成测试用例的过程就是输入域建模的过程。对于输入与的划分,一般是基于程序相应的某周特性,程序的输入,程序的环境等。

对于某个特性划分域时,一般要求满足两个条件:

  1. 完整性,划分必须覆盖整个域
  2. 分离性,块之间不能有重叠

以"输入F的次序"为例,一个看起来有效实际无效的划分可能是这样:

  • 按F的排序划分

    B1 = 升序排列

    B2 = 降序排列

    B3 = 任意顺序

    这样做既不满足完整性也不满足分离性,升序或者降序都可以算是任意顺序的子块,而且,当F长度为0或者1的时候,F能同时满足三个块。出现这个问题的原因是把升序和降序两个概念放在相同的特性里面,应该将其分离。结果就是下面这个有效的划分:

  • 文件F升序

        B1 = True

      B2 = False

 

  • 文件F降序

        B1 = True

    B2 = False

  当F长度为0或者1的时候,对两个特性都为真。

  完整性和分离性的划分是为了使块的划分更加合适,为从块中选择合适的值来组合奠定基础。

输入域建模

    输入域建模分三步。

  1. 识别可以测试的函数。对于一个系统中的函数来说,公共的函数是可以被独立测试的;对几个方法来说,可能他们具有同样的特性,这样就可以对于一个类设计一组共同的特性,再对每个独立的函数具体开发有针对性的测试用;对于一个大的系统来说,可能在设计UML中用例的时候就可以提取出测试来了。
  2. 识别所有参数。前面说过,参数可以是显式的函数参数或者是全局的变量,或者是当前系统的状态等,关键是看给定的参数是否对与函数行为有影响。被测函数的所有参数构成了输入域。
  3. 将前面的步骤建模。根据定义,测试输入严格属于每个特性的每一个块,这说明如果分为n个特性,每个特性划分成了B(n)个块,那么要全部覆盖的话,至少有B(1) *…*B(n)个测试,每增加一个特性i, 就会有成B(i) 倍数增长。特征多了,测试数量就会爆炸,所以必须得控制组合的数量。另外,不可避免的,有的值是无效的,那就需要识别、移除无效的字组合。

在建模时,有基于接口和基于功能的两种建模方法。

基于接口的建模测试

    孤立地看待每个参数,这种机械的方式的到的结果确实很好,也容易识别,抽象的工作也很简单。但是,并不是所有的可用信息都反映在接口域模型里面,这就意味着这样建立的IDM是不完整的;另外一个问题是对每个参数孤立的分析,会导致一些重要的子组合被遗漏。

基于功能的建模测试

    基于功能的建模的想法是通过识别被测系统的功能,将相应的领域知识应用到IDM上。这样的话,从规格说明书语义到IDM的转换,更可能为测试用例产生预期的结果。并且,因为IDM的建立不依赖于具体实现的参数列表,需要的只是规格说明书和领域知识,所以在开发的早期就能着手设计测试。

    当然,基于功能的分方法里,识别特征和取值是比较困难的,当系统比较大的时候,这一点体现的更加明显。并且,功能需求严重依赖于规格说明书,如果规格说明书不完整或者不完善,那设计合理的特性就更加困难了。

组合策略标准

  • 完全组合覆盖:来自所有特征的所有块都必须被用到

    如果直接这样的话,测试数量会爆炸。可以肯定,每个块中有的选择是等价的,这样就存在一些组合策略使得测试减少

  • 每个选择覆盖:对每个特征,每个块中一个值至少在一个测试用例中被使用

    满足这样标准的测试灵活性很大,这样有的中药组合可能会遗漏

  • 成对覆盖:来自每个特征每个快的一个值,必须与来自针对其他特征的每个块的一个值相对结合
  • T-Wise覆盖:来自t个特征每个快的一个值必须被组合
  • 基本选择覆盖
  • 多个基本选择标准

            |--->T-Wise覆盖 -----> Pair-Wise覆盖------ ---|

完全组合覆盖 ------|                                           |------>    每个选择覆盖

            |--->多个基本选择覆盖 ---> 基本选择覆盖--------|

 

 

 

《软件测试基础》读书报告:第四章 输入空间划分

标签:

原文地址:http://www.cnblogs.com/test-tech/p/4419830.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!