局部探索式测试法

定义

局部探索式测试法重点是把测试经验、专业知识、软件构建和运行环境结合在一起,做出正确的决定。
根据软件的各种属性,决策可以分为5部分:输入、状态、代码路径、用户数据、执行环境。

用户输入

输入指的是由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。
比如:用户单击一个按钮属于一种输入,但是在文本框中键入文本就不算输入,只有文本被实际传递给应用程序,应用程序有机会处理时,才算得上是一种输入。输入必须导致软件执行某些代码,并以某种方式做出反应。
在选择输入集合时,需要考虑两个因素:
1.软件分别处理两个或多个原子输入时没有问题,但是当这些输入组合起来时,可能会报错。如分别查找所有的CD文件、查找所有视频文件没有问题,但是查找所有的视频+CD文件时可能就会出错。
2.输入值的组合可能导致问题。输入a和输入b没有问题,但是输入aa,ab,bb,ba可能有问题。
测试人员应该牢记,大多是开发人员都不喜欢编写错误处理代码。开发人员更愿意编写功能代码。在遇到需要错误处理的地方时,开发可能会加一个注释“此处需要添加错误处理代码”,然后继续实现功能。结果就忘记处理了;如果开发去实现错误处理,那么就会被打断思路。。。
默认输入
看到开发设置的默认值后,首要任务就是把默认值删除,留下空白的字段,或者改为默认值附近的其他值,尝试一下。
一个字段如果被预先设置好默认值,便和不含默认值的字段在程序处理时往往有很大 的不同。
二次输入
当软件第一次针对输入产生某种响应时,通常处于一种默认的情形,很多内部的变量和数据结构刚刚被初始化,输出结果第一次被生成。当输出结果被第二次生成时,很多变量的值还是上一次运行时被设定的值。这意味着第二次测试的情况和第一次的完全不同。第一次我们测试的是软件处于一个未被初始化的状态下如何产生输出的,第二次我们测试的是软件处于一个被初始化过后的状态下如何产生输出的。

状态

单个输入、一些输入会被软件“记住”,可能被存储于软件的内部数据结构中。我们在选择下一个输入时,必须考虑从前重用过的那些输入所造成的累积效应。软件的一个状态就是状态空间中的一个点,它由所有内部数据结构的取值来唯一确定。软件状态的复杂性在于它自身可以牢记已经处理过的输入,还牢记从前发生过的状态叠加效果。
当程序终止时,软件的状态可能会被忘却,也可能被存储在数据库里或一个文件内以便将来程序运行时再次取出,这两种状况被称为数据辖域,检测软件是否正确地实现了数据辖域也是一个很重要的测试。数据辖域有问题,可能导致安全隐患,比如软件接受一个信用卡号输入,该卡号应该只局限于当前使用,不能被存储起来重复利用。
例子:电话交换机控制软件
输入:接电话的动作
状态及反应:
A.电话连接的电话网没有开通——电话没有反应,或者发出一个表示错误的回应。
B.当前电话没有在振铃——收到拨号提示或者显示最近拨号列表供选择
C.当前电话在振铃——电话被接通,用户可以和拨打该号码的人进行通话
建议
A. 使用状态信息来帮助寻找相关的输入
如果我们需要测试一个网站,它允许使用折扣券,但是折扣券不能用于打折商品,这时就要在购物车中放入打折商品,然后输入折扣券来进行测试。
B. 使用状态信息来辨识重要的输入序列
当一个输入导致状态信息被更新时,紧接着再多次使用同样的输入会导致一连串的状态变化。如果状态变化在某种方式上被累加起来,就必须考虑是否会发生溢出。是不是存放了太多数值?是不是一个数会变得很大?比如购物车会不会被装满?用于存放的数据列表是不会变得很大?通过观察被测应用程序中状态的累积程度,然后重复使用相同或不同的输入来检验这种累积是否会带来副作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值