黑盒技术生成测试用例几种常见方法

因为实验还没做,所以无法写实验报告。在这里我将简述几种常见的黑盒测试方法。

黑盒测试,又称功能测试或者数据驱动测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能。不需要测试软件产品的内部结构和处理过程。

 

采用黑盒技术设计的测试用例方法有:

  1. 等价类划分方法
  2. 边界值分析
  3. 错误推测
  4. 因果图方法
  5. 判定表驱动分析方法
  6. 正交实验设计方法
  7. 功能图分析方法

等价类划分:

 把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一个子集中选取少数具有代表性的数据作为测试用例,该方法是一种重要的,常用的黑盒测试用例设计方法。等价类划分可有两种不同的情况:有效等价类和无效等价类。

  1. 有效等价类:对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
  2. 无效等价类:与有效等价类的定义相反。

边界值分析法:

 边界值分析方法是对等价类划分方法的补充。长期的测试工作经验告诉我们,大量的错误是发生在输入或者输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例,可以查出更多的错误。

 使用边界值分析方法设计测试用例,首先应确定边界情况,通常输入和输出等价类的边界,就是应着重测试的边界情况,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取边界类中的典型值或任意值作为测试数据。

错误推测发:

 基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,在单元测试时列出的许多在模块中常见的错误,以前产品测试中经常发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为零的情况;输入表格为空格或者输入表格只有一行,这些都是容易发生错误的情况,可选这些情况下的例子作为测试用例。

因果图方法:

 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系。考虑输入条件之间的相互组合,可能会产生一些新的情况,但要检查输入条件的组合意识一件容易的事情,因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。

 因果图方法最终生成的是判定表,它适合于检查程序输入条件之间的各种组合情况。

 利用因果图生成测试用例的基本步骤:

  (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.

  (2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.

  (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.

  (4) 把因果图转换为判定表.

  (5) 把判定表的每一列拿出来作为依据,设计测试用例.

  从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.

  前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.

判定表通常由四个部分组成.

  条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.

  动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.

  条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.

  动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.

规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.

判定表的建立步骤:(根据软件规格说明)

  ①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.

  ②列出所有的条件桩和动作桩.

  ③填入条件项.

  ④填入动作项.等到初始判定表.

  ⑤简化.合并相似规则(相同动作)

B. Beizer 指出了适合使用判定表设计测试用例的条件:

   ①规格说明以判定表形式给出,或很容易转换成判定表.

  ②条件的排列顺序不会也不影响执行哪些操作.

  ③规则的排列顺序不会也不影响执行哪些操作.

  ④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.

  ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.

时间: 2024-10-10 20:51:23

黑盒技术生成测试用例几种常见方法的相关文章

Python爬虫突破封禁的6种常见方法

转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用"网络数据采集",有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其他网页文件),然后对数据进行解析,提取需要的信息. 本文假定读者已经了解如何用代码来抓取一个远程的URL,并具备表单如何提交及JavaScrip

性能测试的几种常见方法

性能测试的几种常见方法(转) 负载测试:负载测试是用户观点的测试行为.简单说来就是负载测试就是让系统在一定得负载压力下进行正常的工作,观察系统的表现能否满足用户的需求. 用户的需求从何而来?需求分析--特指性能测试的需求分析.由此看来需求分析是相当重要的. 负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现. 负载测试的预期结果是用户的性能需求得到满足.此指标一般体现为响应时间.交易容量.并发容量.资源使用率等. 负载测试也是最常用的性能测试方法,因此也有不少人将负载测试混淆为性能测试

内存数据持久化的两种常见方法

内存数据持久化的两种常见方法: 1.将内存数据定期dump到磁盘 优点:效率高,操作简便 缺点:会损失部分数据 2.利用类似于mysql的binlog日志的方式,记录更新操作,需要时回放数据 优点:可保证数据完整性 缺点:会损失部分性能,实现稍微复杂点 redis实现了这两种方式

数组去重的几种常见方法?

数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } retur

JS数组去重的几种常见方法

JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } ret

为何大量网站不能抓取?爬虫突破封禁的6种常见方法

在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用“网络数据采集”,有时会把网络数据采集程序称为网络机器人(bots).最常用的方法是写一个自动化程序向网络服务器请求数据(通常是用 HTML 表单或其他网页文件),然后对数据进行解析,提取需要的信息. 本文假定读者已经了解如何用代码来抓取一个远程的 URL,并具备表单如何提交及 JavaScript 在浏览器如何运行的机制.想更多了解网络数据采集基础知识,可以参考文后的资料. 在采集网站的时会遇到一些比

访问注解(annotation)的几种常见方法

java的注解处理器类主要是AnnotatedElement接口的实现类实现,为位于java.lang.reflect包下.由下面的class源码可知AnnotatedElement接口是所有元素的父接口,这时我们通过反射获得一个类的AnnotatedElement对象后,就可以通过下面表格的几个方法,访问Annotation信息. public final class Class<T> implements java.io.Serializable, GenericDeclaration,

总结 清除浮动的四种常见方法

1.使用空标签清除浮动. 我用了很久的一种方法,空标签可以是div标签,也可以是P标签.这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清除浮动,并为其定义CSS代码:clear:both.此方法的弊端在于增加了无意义的结构元素. ps:对于使用额外标签清除浮动(闭合浮动元素),是W3C推荐的做法.至于使用<br />元素还是空<div></div>可以根据自己的喜好来选(当然你也可以使用其它块级元素).不过要注意的是,<br />本身

ios基础之关闭输入框的几种常见方法集锦

第一种: 改写ruturn方法,点击键盘的return键实现关闭键盘(注意field1的代理是自己以及前面一定要有代理) 这种方法是最简单的也是最常用的方法! 未完,其他方法随后奉上....