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

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

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

一、输入

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

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)。

三、环境

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

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月9日
下一篇 2021年4月9日

相关推荐