探索式测试学习笔记(1)——局部探索式测试法:

局部探索式测试法:

1、用户输入

什么是用户输入:由环境产生的一种刺激,该刺激导致被测试的应用程序有所响应。分成原子输入和抽象输入,如单击按钮,字符串或整数等就是原子输入,抽象输入则是有相互关联的原子输入合并成的输入。

(1)合法输入、非法输入

  原因/目的:

1、正向测试与反向测试,测试要覆盖的基本的东西。

2、大多数开发人员不愿写错误处理代码,从而比较容易导致非法输入的情况会报错或者处理不当。

方式:以开发人员的思路来构造一个非法输入值。因为开发人员必须要知道什么是合法输入、什么是非法输入,对于他们认为的非法输入值做了什么样的错误处理,这一部分就是我们需要测试的。 如:空值测试、需求规定输入之外的输入、特殊字符、超长字符等。

(2)输入筛选器

         原因/目的:输入筛选器是用于防止非法的输入值被传递给应用软件的功能代码,输入筛选器就是默默把非法输入排除在外,能传递给应用软件的数据都会被当做正常数据来处理。测试人员需要测试输入筛选器的功能是否正确实现了、是否可以绕过输入筛选器将值传递给应用软件。

         方式:1、测试内容:如输入面板只可输入整数,则输入筛选器实现只显示整数值的输入,其余的输入都会被忽略。下拉列表、勾选框也是一种输入筛选器,只提供了合法的输入。

                    2、输入合法的值,筛选器正确显示。输入非法值,筛选框正确屏蔽。即确保开发设定的输入筛选器范围是正确的。

                   3、通过某种方法绕过输入筛选器。如 修改前端html 代码,或者使用某种工具跳过js校验等。

(3)输入检查

          原因/目的:应用接受一个输入值,如果输入值合法,那么接着运行处理它,否则就产生一条错误消息并中止处理。并会报警,显示错误信息描述当前状况。

          方式:1、牢牢抓住错误信息,仔细阅读错误信息,检查是否写错了。错误信息一般会指出当前输入值被认定为非法值的根本原因以及如何修改让它变成合法值。

                      2、根据错误信息,可以分析那些输入值可以触发其他的错误信息,或者是那些输入值应当导致错误而软件没有报错。

(4)异常处理代码

           原因/目的:软件在运行过程中出现任何指定错误,异常处理代码可以处理各种各样的失效状况,不单单局限与非法输入。

          方式:1、对于异常出错信息(一般这个信息不会有什么比较具体的报错内容,指向范围较大),继续反复测试同一函数,继续使用刚才引发异常的数据或者稍微改一下,看会不会继续引发错误

                     2、尝试运行其他地方,调用该函数的测试

                     3、连续不断的异常,看程序是否会崩溃

                     4、检查日志是否记录对应的报错信息

(5)常规输入还是非常规输入

         原因/目的:常规输入就是计划中的输入,也会是用户经常使用的输入。非常规输入是在比较特殊的情况下才会发生的,或者只是机缘巧合才会发生。如:用户输入 大写C 时不小心按下Ctrl+c,而实际应该是Shift+c.

         方式:1、所有和Ctrl、Alt、Esc按键组合的输入

                    2、最终用户可能会使用的特殊字体

                    3、测试不同国家的语言以及特殊符号

                    4、一些特殊字符,与软件运行平台相关的字符,将其作为输入值。

(6)默认输入或用户提供的输入

          原因/目的:表单通常都会有一些设定好的默认值,指定值或者是空值。一个字段如果预先设置好默认值,便和不含默认值的字段在程序处理时往往有很大的不同。

          方式:1、空白字段中不输入字符或是给某个API传递NULL参数。正常情况下他们需要在默认状态继续运行下去。

                     2、检测设置好的默认值是否用户最有可能使用的数值。

                     3、删除默认值,留下空白字段,进行提交测试。

                     4、测试默认值附件的一些其他值。如:一个默认数值,设置比默认值大1或小1,字符串,修改默认字段头部、尾部的几个字符,加上几个字符,删除几个字符等操作。

(7)使用输出来指导输入选择

         原因/目的:先明确自己希望软件会产生什么样的反应,然后确定那些输入会引发相应输出,然后再测试对应的输入值。将输出大致分为非法输出和合法输出。

         方式:1、从输出的结果来思考整个问题。

                    2、先确实希望程序产生什么样的输出,考察用户场景,看如何生成期望的输出。

                   3、先观察输出结果,再选择新的输入,并保证新的输出是重新计算后的结果(或与原先不同)

                   4、未被初始化和已初始化产生输入有无不同。

                   5、寻找被保存起来的输出结果(页面显示、文件存储等),改变这些值或者改动他们的功能(大小、类型),测试是否在原有值上重新生成了。(对每一个功能都需要运行这样的测试)

2、状态

什么是状态:软件的状态是状态空间中的一个点,是由所有内部数据结构的取值来唯一确定的一个点。软件的状态空间是由软件内部所有变量构成的一个交叉积。应用程序与其运行环境进行交互和接收输入导致软件状态发生变化。软件接收到输入,并在内部存储这些输入值后,软件状态就会发生变化。

如何测试软件状态:

(1)、测试软件是的正确更新了它自身的当前状态

(2)、测试软件当前状态接收某些输入时是否发生异常

(3)、软件是否进入了不应该有的状态。

(4)、测试人员应根据自己的时间和预算,结合考虑最终用户可以承担怎样的风险,来确定测试尽可能多的状态。

方法:

(1)、使用状态信息帮助寻找输入:关观察状态对结果有什么影响,得到相关输入和状态信息后,就可以通过某种方式确定需要测试那些组合。需要确保重要的情况和变化都被测试到。

 (2)、使用状态信息来识别重要的输入序列:当一个输入导致状态发生变化时,接着多次使用同样的输入导致一连串的状态变化,观察一连串状态变化会不会导致溢出。如:存放数据的列表过大,如购物车,加购物车的物品是不是过多了。通过观察这些状态的累积程度,重复相同的内容看是否会产生副作用。(比如 连续删除、连续点击?)

 

3、代码路径

 代码路径是指一连串代码语句,其实于软件开始运行的语句,终止于一条特定语句。

测试人员需要明确程序里有哪些分支,特别是在不接触代码或者使用代码覆盖率工具时。某些分支没有被测试到则很可能存在缺陷。除了分支、还有循环语句等可以导致代码路径总数变大,也就是会有各种可能。

4、用户数据:

软件需要处理海量数据或者文件时,测试人员需要在测试环境模拟相应的环境。怎么模拟对应的数据,且保证数据的真实有效,是测试人员需要解决的问题。

方式:

         (1)尽量使用真实数据

         (2)删除或者添加数据测试时,注意还原数据

          (3)注意处理数据中的敏感信息。

5、运行环境:

运行环境本身也是软件的一项输入,当软件使用的运行环境有变化时,可能会产生实效。

方式: 操作系统、浏览器、配置文件、网络状态、与软件相关的其他应用程序等

         

posted @ 2019-08-21 20:06  妮妮酱  阅读(391)  评论(0编辑  收藏  举报