《the art of software testing》第四章 测试用例的设计
白盒测试
逻辑覆盖测试:
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、Z路径覆盖、程序变异。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
语句覆盖:语句覆盖又称行覆盖、段覆盖、基本块覆盖,常被称为“最弱的覆盖”,它只覆盖代码中的执行语句,却不考虑各种分支的组合等等。
判定覆盖:设计若干个测试用例,要求每个判断都必须有“是”和“否”的结果,并且每条分支路径都必须至少遍历一次。(较强准则的覆盖)
条件覆盖:条件覆盖是指选择足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次,因为,就如同判定覆盖的情况一样,这并不总是能让每条语句都执行到,因此作为对这条准则的补充就是对程序或子程序,包括 ON 单元的每一个入口点都至少调用一次。。(更强准则的覆盖)
判定/条件覆盖:将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。
多重条件覆盖:该准则要求编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。
黑盒测试
等价类划分:
测试时,如果我们将程序的输入范围进行划分,将其划分为有限数量的等价类,这样就可以合理的假设测试每个等价类的代表性数据等同于测试该类的其他任何数据
使用等价划分方法设计测试用例主要有两个步骤:
(1)确定等价类
(2)生成测试用例
边界值分析:
- 考虑了边界条件的测试用例具有更高的测试回报率
- 所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
(看了一下课本P32的例子,似懂非懂)
边界值分析和等价划分的一个弱点是未对输入条件的组合进行分析
因果图:
因果图是一种形式语言,用自然语言描述的规格说明可以转换为因果图。
下面附上一张基本的因果图符号:
每个结点的值为 0 或为 1,0代表“不存在”状态,1 代表“存在”状态。identity 函数表示如果 a 等于 1,则b 也为 1,否则 b 为 0。not 函数表示如果 a 等于 1, 则 b 为 0,否则 b 为 1。 or 函数表示如果 a 或 b 或 c 等于 1,则 d 为 1,否则 d 为 0。and 函数表示如果 a 和 b 都等于 1,则 c 为 1,否则 c 为 0。 后两个函数(or 和 and)允许存在任意数量的输入。

生成测试用例时采用的过程如下:
1.将规格说明分解为可执行的片段。这是必须的步骤,因为因果图不善于处理较大的规格说明。 2.确定规格说明中的因果关系。 3.分析规格说明的语义内容,并将其转换为连接因果关系的布尔图。 4.给图加上注解符号,说明由于语法或环境的限制而不能联系起来的“因”和“果”。 5.通过仔细地跟踪图中的状态变化情况,将因果图转换成一个**有限项的判定表**。表中的每一列代表一个测试用例。 6.将判定表中的列转换成测试用例。 (`结合P48页的例子了解因果图,感觉将因果图转化为判定表是比较有难度的部分!)`
测试策略
一组合理的策略如下:
- 如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。
- 在任何情况下都应使用边界值分析方法。应记住,这是对输入和输出边界进行的分析。边界值分析可以产生一系列补充的测试条件,但是,也正如“因果图分析”一节所述,多数甚至全部条件都可以被整合到因果图分析中。
- 应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。
- 使用错误猜测技术增加更多的测试用例。
- 针对上述测试用例集检查程序的逻辑结构。应使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则(最后的一个最为完整)。如果覆盖准则未能被前四个步骤中确定的测试用例所满足,并且满足准则也并非不可能(由于程序的性质限制,某些条件的组合也许是不可能实现的),那么增加足够数量的测试用例,以使覆盖准则得到满足。
体会
本章中,主要还是了解了些概念性的内容。包括白盒测试的语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖;黑盒测试的等价类划分、边界值分析、因果图分析、错误猜测。看书的过程不是很细,包括书上的例子看完后也是似懂非懂的感觉。。。。
《the art of software testing》第四章 测试用例的设计的更多相关文章
- 《the art of software testing》 (1-2)章
软件测试的心理学,重点是要认清: 测试时为发现错误而执行程序的过程 成功的测试:如果在测试某段程序时发现了错误,而且这些错误是可以修复的,就将这次合理设计并得到有效执行的测试称作是"成功的& ...
- 《The art of software testing》的一个例子
这几天一直在看一本书,<The art of software testing>,里面有一个例子挺有感触地,写出来和大家分享一下: [问题] 从输入对话框中读取三个整数值,这三个整数值代表 ...
- 《the art of software testing》 第三章 人工测试
在深入研究较为传统的计算机测试技术之前,要先进行"人工测试". 代码检查与走查是两种主要的人工测试方法. 代码检查与走查是对过去桌面检查过程(在提交测试前由程序员阅读自己程序的过程 ...
- 《the art of software testing》第六章
更高级别的测试 模块测试的目的是发现程序模块与其接口规格说明之间的不一致 功能测试的目的是为了证明程序未能符合其外部规格说明 系统测试目的是为了证明软件产品与其初始目标不一致 功能测试,作者从三个方面 ...
- 《the art of software testing》第五章
构建大型程序测试的第一个步骤:模块测试 测试用例的设计 在为模块测试设计测试用例时,需要两种信息:模块的规格说明和模块源代码: 模块测试总体上面向白盒测试: 模块测试的测试用例设计过程:使用一种或多种 ...
- [Python学习笔记][第五章Python函数设计与使用]
2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...
- 软件测试software testing summarize
软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对 ...
- Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- CentOS 7.4 初次手记:第四章 CentOS安全了解
第四章 CentOS安全了解... 66 第一节 user.group.chmod. 66 I 10位文件属性... 66 II user/group增删改... 67 III user/group配 ...
随机推荐
- Django: TemplateDoesNotExist (rest_framework/api.html)
需要在站点前面的INSTALLED_APP里面加上rest_framework
- 【ASP.NET Web API2】Digest认证
Digest摘要认证 对于Basic认证方案来说,被传输的认证凭证仅仅采用Base64编码,所以包含密码的认证凭证基本上可以视为明文传输.Digest认证在此基础上进行了改善,在一定程度上提高了安全系 ...
- lbypmall系统备份恢复
打开phpmyadmin 1.数据库创建,在服务器上创建lbypmall数据库,排序规则utf8_general_ci 2.mysqldump -u root -p lbypmall > lby ...
- thinkphp5 设置.htaccess报input file specified的解决方法
先去检查服务器设置,这个网上方法很多就不说了,如果服务器没问题还是报这个错误的话可能和php版本有关 php5.4和以下版本的.htaccess <IfModule mod_rewrite.c& ...
- ALTERA DDRII IP核使用
提到DDRII,大家应该都不陌生,DDRII SDRAM是第二代双倍速率同步动态RAM.今天小编给大家介绍一下QUARTUS II 下调用DDRII软核. 新建QUARTUSII工程之后,在tool下 ...
- shell编程中变量的运算 (shell 06)
主要包括以下3种 字符串操作数学运算浮点运算 一.字符串操作 字符串的连接 连接字2个字符串不需要任何连接符,挨着写即可 长度获取 expr length "hello" expr ...
- mina2中IoHandler
IoHandler 当我们通过IoSession执行相关操作的时候,如写数据,这些事件会触发Mina框架抽象的IoService实例,从而调用Mina框架底层的相关组件进行处理.这时,配置的IoHan ...
- Vue.js:目标结构
ylbtech-Vue.js:目标结构 1.返回顶部 1. Vue.js 目录结构 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Atom等) 中打开该目录,结构如下所示: ...
- chrome打开新标签页插件
标签(空格分隔): 日常办公,chrome浏览器 一直被chrome浏览器打开新标签页困扰,每次点开一个新标签页还要再去点一下主页,才能打开搜索页面.如果直接点击主页,又会把当前的页面刷掉,实在是非常 ...
- 1121 Damn Single
题意: 给出n对情侣,然后给出聚会上的m个人,问这m个人中有几个人事落单的. 思路: 首先,开一个数组couple[]存储情侣间的映射关系:然后,用exist[]标记聚会上出现过的人:最后遍历0~N, ...