读书记:《探索式软件测试》(二)——局部探索测试

《探索式软件测试》 一书第三章中介绍了局部探索测试相关内容。

在局部探索性测试中,我们要关注的主要有三点: 输入、状态、环境。

一、输入

什么是输入? 引发程序发出改变动作/做出反映的才称之为输入(不反应也算一种反应)。
要对软件进行测试,选择合适的输入是最关键的一点。那么, 如何选择最合适的输入,就是在这一环节我们要思考和探索的内容。

1、输入如何影响输出

输入影响输出主要有三点:

  • 输入数据本身是否合法,可能会影响输出
  • 输入的组合,有些输入之间是相互关联的
  • 输入的顺序,输入的顺序可能影响输出
2、如何考虑输入
  • 合法输入&非法输入
  1. 考虑输入的第一点是,考虑输入的合法性。这就涉及到当前的测试目的,是要让软件失效,还是要证明其有效?前者需要设计更多的非法输入,后者要找出更多的合法输入。
  2. 考虑合法输入与非法输入的判断。一般在程序中,常见的对于输入的判断有三种:
    • input filter:利用过滤器直接过滤掉不合理的输入,这个过程不会产生错误提示。测试中需要关注filter是否合理、有无方法可以绕过filter。
    • input check:输入检查,一般使条件判断,会对错误/非法输入进行报警。测试中需要关注error msg,通过error msg反推存在哪些输入可能会造成此类error,并进行验证。
    • exception:exception一般是针对整个代码的,而非单纯对输入进行判断,因此它的error msg一般是比较笼统的。但是对于产生exception的输入,需要反复多次验证,反复的引发异常可能让程序彻底失效。
  • 常规输入&非常规输入
    非常规输入一般是指误触、误按等在特定场合的无意识操作。在测试过程中需要有意的创造这种“无意识”行为。
  • 默认输入&用户输入
    如果一个字段设置了默认值,那么它与不设置默认值的字段处理方式就可能会存在差异。
    对于有默认值的输入,测试时一般的关注点在于:
    1. 默认值的测试;
    2. 将默认值删除后的空白输入;
    3. 将默认值删除后的其他合法输入;
    4. 将默认值删除后的非法输入;
    5. 与默认值相近的输入
  • 首次输入&非首次输入
    一般来说,程序在首次接受输入之后都会进行初始化等操作,首次输入的处理过程与非首次输入的处理过程会存在差异,需要特别关注两者之间的差异。
二、状态

两次输入相同的测试并不能视为完全相同的测试,因为软件的状态可能不同。

  • 软件状态空间:内部变量所有可能的取值;
  • 软件状态:状态空间中的一个点。

软件状态的复杂性在于它自身可以牢记已经处理过的输入,还会牢记以前发生过的状态叠加效果。 换句话说,状态存在有 过去输入造成的累积效应,但这种效应会产生什么后果,难以提前预知。
状态可以分为两类:

  • temporary state,临时状态。当程序终止时该状态就会被忘却。
  • persistent state,永久状态。这种状态会存储在db或文件中,下一次运行时可以对该状态进行读取。

在测试前,需要考虑状态是永久的还是临时的,针对不同的状态设计不同的输入。有关状态的测试主要有以下两种:

  • 使用状态信息来帮助寻找相关的输入。确定不同状态对输出的影响,从而设计不同的输入,以达到该状态。
  • 使用状态信息来辨识重要的输入序列。如果状态在某种方式上被累加起来(比如连续执行相同输入/路径),就必须考虑是否会造成溢出(stateflow)。
三、环境

环境本身也是一种输入源。
牢记这一句,在实际的测试过程中,需要留意环境的影响,包括软件所处的环境、外界输入环境等。当一个问题无法复现时,考虑是否与外界环境有关。

读书记:《探索式软件测试》(三)——全局探索式测试法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值