随机测试
- 资源有限:判定覆盖
- 资源充足:条件组合覆盖
- 黑盒测试和白盒测试不同的
1. 随机测试
- 比较简单的实现测试的自动化
- 使用随机数来进行测试(随机行为)
- 降低程序测试的效率
- 软件错误测试用例往往体现出聚集的特性
- 矩形分布
- 条带分布
- 散点分布
1.1. 输入域
- 通过分析文档,确定程序的输入域。
1.2. 随机数生成
- 很难获得真正的随机数
- 伪随机数算法:
- 平方取中法
- 随机数种子:random.org网站上的种子生成
1.3. 模糊测试(Fuzz testing)
- 主要用于软件安全性检测的部分。
- 使用一些非法的测试输入使得软件发生崩溃。
1.4. 随机测试原则
- 没有出现错误的测试用例附近出现错误的可能性相对低
- 出现错误的测试用例的附近出现错误的可能性相对高
- 我们应该尽量分散的选择测试用例
1.5. 自适应测试用例
- 选择一个测试用例
- 无误后,在大于指定距离的地方选择第二个测试用例
- 之后按照这种情况向下自动选择测试用例
1.6. FSCS-ART算法 固定候选集的自适应测试算法
生成第一个测试用例
while(测试终止条件为满足)
随机生成k个一组测试用例
计算上述生成测试用例的距离是否达标
选择满足达标的测试用例里面距离最远的
执行选择出来的测试用例
测试成功
1.7. 自适应测试用例问题
- 距离的决定
- 测试用例的分布问题(测试用例往往会聚集在边界上)
- 解决方案是扩大输入域,之后进行裁剪
1.8. 反随机测试用例
随机选择一个测试用例
while(测试资源未耗尽)
在找到一个距离当前的所有已有测试用例的海明距离最大的测试用例
执行测试用例
2. 等价类划分
- 按照一定标准将输入域进行划分成几个对应的子集,然后在对应的子集上进行选择
- 分类:
- 不同处理数据格式
- 不同控制流数据流
- 数据合法/非法
- 原则:
- 完备性原则:每个点都应该输入一个等价类
- 无冗余性:等价类之间不应该有重复的部分
2.1. 划分方法
- 综合使用一下的方式组合
2.1.1. 数据输入范围
- 10 < x < 100 :2 个有效,1 个无效
2.1.2. 程序对于不同数据处理方式
- n 个有效 + 1 个无效
2.1.3. 根据判断条件
- 简单条件:奇数与否
- 多个条件
3. 边界值分析
- 在等价类边缘的边界进行的划分(在等价类的边缘进行测试)
- 划分出来的不同的等价类
- 有效等价类
- 无效等价类
- 计算机本身的限制和约束需要注意
3.1. 边界值的选取
- 首先要找到边界值,再在其周围进行处理
- 非法错误的输入,软件的处理
4. 组合测试
- 考虑和输入和输出之间的逻辑关系
- 决策表:使用起来比较复杂,提取和描述的困难
- 不同输入变量之间的关系
4.1. 完全组合
- 代价太高
- 测试资源需要过大
4.2. Pair-wise testing
- 覆盖任意两个变量之间的所有情况
- 完全组合的抽样
4.3. T-wise/T-way combinatorial testing
- 覆盖任意T个变量之间的所有情况
- 完全组合的抽样
4.4. Variable strength combinatorial testing
- 根据不同的影响关系进行测试
5. Selenium的使用
- Selenium IDE 是 firefox 中的一个插件。
- 进行测试用例的记录和回放,首先要选择进入录制状态(记录网页上的行为),点击红色的点
- 回放就可以自动完成一系列的操作
- 使用checkpoint来完成是否成功。(选择网页元素选择未进行检测)
6. PICT的使用
- 组合测试用例的存储和使用
- 我们首先在model.txt中定义好了环境
- 在控制台运行PICT:
pict.exe model.txt > target.txt
:重定向到target,生成对应的组合测试用例(二维组合测试覆盖)
- 其他进行测试:我们需要修改参数
- 描述在model文件中
- 有的测试用例可能是无效的测试用例
- 生成组合用例值的时候需要考虑约束