(一)局部探索式测试法详解
# 局部探索式测试法
用户输入
接收输入、产生输出、存储数据、进行运算
合法输入和非法输入
-
输入筛选器
输入筛选器用于防止非法的输入值被传递给应用软件的功能代码。
1、输入屏蔽器
2、列表框或下拉列表- 开发人员是否正确地实现了该功能
- 是否可以绕过屏蔽器
-
输入检查
- 验证代码中的IF…ELSE,CASE语句中针对输入的处理
- 字符类型,是否存在溢出
-
异常处理代码
- 当一组数据调用函数出错,要尝试运行其他调用该函数的测试用例
- 接连不断的异常可能让程序彻底失效
常规输入还是非常规输入
-
常规输入
- 没有特定的格式或含义,直接使用于被测软件
-
非常规输入
- 特殊字符,所有和Ctrl、Alt、Esc按键组合的字符都算得上特殊字符
- 特殊字符与软件运行平台有关,操作系统、编程语言、浏览器、运行时环境都有一些特定的保留词(Windows保留的设备名称,如LPT1、COM1、AUX等)
- 软件所支持语言的语言包和字体库
默认输入或是用户提供的输入
-
默认输入
- 不输入字符
- 传递NULL参数
- 空格
-
用户提供的输入
-
程序有默认值
-
删除默认值,留下空白字段
-
测试默认值附近的一些其他值
- 修改默认字符串的头部/尾部的几个字符
- 默认字符上加上/删除几个字符
- 使用于默认字符长度相同但不同字符的字串
-
-
使用输出来指导输入选择
- 把程序所有可能的输出与输入进行配对,保证所有有趣的测试场景都被测试过
状态
软件状态的基本知识
- 输入导致内部变量的数值发生变化,内部变量所有可能的取值组成了软件的状态空间
- 软件的一个状态就是状态空间中的一个点,它由所有内部数据结构的取值来唯一确定
如何测试软件状态
-
数据辖域
- 软件状态可以是临时的,就是它在当前运行中被程序记住,但是当程序终止时,该状态就被忘却了
- 软件状态也可以长期保存,它可以被存储在一个数据库里或一个文件内,程序将来运行时,可以存取这个值
- 注意:数据辖域有问题,很可能导致安全隐患。如一个软件接受银行卡输入,该卡号应该只局限于当前使用,不能被存储起来重复利用
-
使用状态信息来寻找相关的输入
- 如果两个或更多个输入在某种程度上是关联的,那么它们应该放在一起测试
-
使用状态信息来辨识重要的输入序列
- 当一个输入导致状态信息被更新时,紧着着再多次使用同样的输入会导致一连串的状态变化。如果状态变化在某种方式上被累加起来,就必须考虑是否会发生溢出
代码路径
测试人员必须明确知道程序里可能有哪些分支,并理解哪些输入会导致软件走这条分支而不是另一条
用户数据
没什么我们在测试环境运行正常的功能,到现网就会出错,有一部分原因就出在用户数据上
首先,随着真实用户数据库中数据被不断地添加和修改,长年累月积累下来的数据会变得非常多。
其次,真实用户的数据通常包含测试人员不了解的很多相互关系和结构,而且测试人员往往也无法推测真实数据中可能会有什么样的关系和结构
还有,数据量大的时候,哪里放得下这些数据也是个问题。测试环境的设备规模与现网环境的设备规模存在巨大的差距
最后,即在处理真实用户数据时必须解决的“用户隐私”问题
运行环境
任何可以影响被测试软件行为的因素都是运行环境的一部分,在软件测试中都必须要考虑到
运行环境测试我一般会排一个兼容性测试表格
- 操作系统,不同版本的操作系统
- 电脑的分辨率和缩放比
- 不同浏览器之间的兼容性
- 多个竞品之间的相互影响
- 其他场景如权限、空间等,根据被测系统则进行对应的设计