软件测试总结 (二)

软件测试总结 (二)

本文索引

黑盒测试方法



等价类划分法:把程序的输入域划分成若干等价类,然后从每个部分中选取少数代表性数据当做测试输入数据。 

等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。

边界值分析法:边界值分析法是列出单元功能、输入、状态及控制的合法边界值和非法边界值,设计测试用例,包含全部边界值的方法。

边界点分为上点、内点和离点。

上点:边界上的点。

内点:区间内的点。

离点:离边界值最近且与上点不属于同一等价类的点。

判定表方法:由“条件和活动”两部分组成,即列出一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

条件桩:列出问题的所有条件

动作桩:列出可能针对问题所采取的操作

条件项:针对所列条件的具体赋值

动作项:列出在条件项(各种取值)组合情况下应该采取的动作。

规则:任何一个条件组合的特定取值及其相应要执行的操作。

因果图法:如果在测试时必须考虑输入条件的各种组合,则可能组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

软件测试总结 (二)

软件测试总结 (二)

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

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

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

4)转换成判定表:把因果图转换为判定表。

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

成对组合:

大部分缺陷是在两个变量取值冲突的测试时被发现的,不仅仅是在所有的组合情况下才会发现所有的测试缺陷 

将所有输入选项两两组合

不要测试所有的组合

要求任意两个输入条件的所有选项组合至少要被覆盖1次

正交试验法:正交试验设计是研究多因素(输入条件)多水平(输入条件的取值)的一种设计方法,是合理安排试验(测试)的一种科学试验设计方法

软件测试总结 (二)

错误推测法:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们设计测试用例

白盒测试方法



语句覆盖:运行被测程序,使得每一条可执行语句至少被执行一次
软件测试总结 (二)
判定覆盖:运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均被满足。
软件测试总结 (二)
条件覆盖:执行被测程序以后,要使每个判定中每个条件的可能取值至少满足一次。
软件测试总结 (二)
判定-条件覆盖:判定中的每个条件的可能取值至少执行一次,
所有判定的可能结果至少执行一次。
软件测试总结 (二)
条件组合覆盖:判断中每个条件的所有可能组合至少出现一次,每个判断本身的判定结果也至少出现一次。
软件测试总结 (二)
路径覆盖:覆盖所有可能的路径
软件测试总结 (二)
完全覆盖:条件组合覆盖&路径覆盖
软件测试总结 (二)

ALAC测试方法



只对用户经常使用的模块进行测试,降低测试成本,缩短测试时间,缺陷查找和改正针对那些客户最容易遇到的错误。

DPBT缺陷模式



故障模型:此类缺陷是故障,一经产生,会导致系统出错
内存泄露:遗漏,不匹配和不相等的释放三种故障形式
空指针使用:引用或赋值
非法计算:除数为0,对数自变量为0或复数,根号内为负数等
资源泄露
数组越界
使用未初始化变量
不完备的构造函数
操作符异常
安全漏洞模型:此类缺陷会给系统留下安全隐患,为攻击该系统开了绿灯
缓冲区溢出:数据拷贝造成的,格式化字符串造成的
被感染的数据漏洞:使用的数据来自外部的全局变量,使用的数据来自输入函数
竞争条件漏洞:发生在用户拥有不同权限运行的程序中
风险操作:不恰当地使用了某些标准库函数
随机数漏洞
差性能模型:此类缺陷会降低系统的性能,导致运行效率低
调用了不必要的基本类型包装类的构造方法
字符串低效操作:空字符串的比较,复制字符串
冗余代码,使用多余函数
未声明为static的内部类,头文件中定义的静态变量
参数为常数的数学方法
创建不必要的对象
声明未使用的属性及方法
不必要的文件包含
并发故障模型:此类缺陷主要针对程序员对多线程的编码机制、各种同步方法、Java存储器模式和Java虚拟机的工作机制不清楚而引起的
不正确的同步
死锁
多线程应用中方法调用时机或方式不正确
同一变量的双重验证
相互初始化的类
临界区内调用阻塞函数
不良习惯模型:该类缺陷主要由程序员编写代码的不良习惯引起的
文件的空输入
垃圾回收
类、方法和域的命名
方法调用
对象序列化
域的初始化
参数传递
代码国际化模型:语言在进行国际化的过程中,可能造成本地设置和程序需求不符的情况,造成匹配错误
易诱骗代码模型:引起歧义、让人费解的代码
无意义的比较
永远是真值的判断
条件分支使用相同的代码
声明了却未使用的域

基于模型



功能图
模糊测试

形式化测试



形式化方法
形式化验证
扩展有限状态机