做好探索性测试,体现你的价值

  当笔者还是个软件测试小白的时候,我的英国测试主管有一天操着他浓重的伦敦口音对我说过:“Vincent,你知道吗,用例执行这种事情也许很多人都可以做。但是能将你们的测试经验和思考能力应用到探索性测试中,并将它发挥到极致,才是一种你们价值的最大体现方式。”

  主管的这番话在我当时幼小的心灵内留下的深刻的印象,从此以后对于探索性测试我便开始了孜孜不倦的研究。

  探索性测试,不但对于一个软件测试项目而言,是常规测试非常有效而且有益的补充;同时也是我们测试从业人员展示自己的技术和主观能动性的好平台。

  那么我们要怎样去做好探索性测试,尽情的施展自己的测试才能呢?笔者想用这篇文章给大家提供一些方针和思路。

   

  第一:探索性测试的定义

  首先从定义上而言,探索性测试(Exploratory Test)是敏捷世界里的一种重要测试方法,作为一个研究性的工具,它是用户故事测试和自动化回归集的重要补充。它是一种经过深思熟虑的测试方式,没有测试脚本,可以使你的测试超出各种明显已经测试过的场景。探索测试将学习,测试设计和测试执行整合在一起,形成一种测试方法。

  探索性测试重在‘探索’,他强调了我们在测试中的未知因素和我们对被测系统进行主动学习的过程。 探索是人类进步的重要步伐,正因为善于探索,哥伦布才发现了新大陆;正因为用于探索,阿波罗才登上了月球。探索性测试还强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的想法。

  我们可以通过下面的图来阐释探索性测试:

 

 

                                             

  

  第二:探索性测试的定义

  用语言来总结的话,探索性测试可以定义为由以下过程构成:

  •   明确测试范围
  •   识别被测对象的期望功能和需求
  •   了解被测对象的基本性状
  •   发现被测对象的潜在不稳定区域
  •   创建一个测试纲要并用它来指导测试

  这里我们提到的识别,了解,发现,创建这个过程在探索性测试中可以多次循环,并且并没有固定的顺序限制。 我们可以先脑补出自己想要进行测试的点,然后再对这些点去进行探索;反之当然也可以先对系统进行探索,进而发现潜在的风险对象从而确定测试点。 探索性测试鼓励创新和发散性思维,在探索性测试中‘跑偏’是被允许的:

 

 

                                                                            

  当然这种跑偏是受到你的测试目标范围,以及你当前测试纲领的限制的,否则无限跑偏的话,有限的时间就可能被投入到过于细枝末节的软件特性方面去了。 所以我们在探索性测试中的发散思维要有一个度,发散到一定程度后还要再收敛回来。例如,当发觉在一个测试的分支路径上已经花了很长时间也没有找到问题的答案时,则可以考虑先放弃那个区域的探索了,因为还有一个主线的测试任务在等着你。

                                           

 

  第三:探索性测试的常用方法

  探索性测试最主要应用到我们测试理论中的设计技术就是“基于经验的测试”和“错误推测法”了。 更具体一点的话,我们可以在测试中应用以下的一些思路:

  •        破坏法 - 用常规手段破坏系统的正常运作进程 - 比如在提交表单的过程中刷新页面中断提交操作
  •        极限法 - 尝试去接触到系统处理的极限所在 - 比如在文本处理的控件内尝试最大输入的可能性
  •        取消法 - 测试系统能不能正确的处理用户的取消和删除操作 - 比如在一个手机APP打开某模块时,按下home键后,APP有没有正确处理?
  •        暴力法 - 使用非常规操作,看看软件会不会发生崩溃或异常 - 比如测试手机输入键盘时,同时按下多个按键
  •        逆向法 - 通过相反的思维来思考问题,软件能处理异常情况吗 - 比如我们通常都会关注一个系统的支付能不能正常工作,那么当遇到无效支付信息的处理呢?

  了解了这些理论和方法,那么以后遇到你的测试主管发起探索性测试的时候,相信你就可以在团队中脱颖而出,让你的同僚们刮目相看了吧!

  那么如果我的测试主管根本就不曾发起探索性测试呢?没关系,你自己也可以在时间允许的情况下,使用探索性测试的技术,对你所测过的功能进行一次深层次的探索,说不定就能打开新世界的大门呢。

  如果你自己就是测试的主管,还没有意识到探索性测试的功效?接着往下看:

  第四:探索性测试的益处

  文章开头我们就提到,探索性测试对于测试团队是一种非常有益有效的补充,具体而言我们可以总结出以下的益处:

  •        探索性测试可以帮助我们定位到隐藏比较深的问题 -常规测试没有覆盖到的深度,我们可以在探索性测试里去一探究竟
  •        探索性测试可以为后续测试覆盖的延申提供思路 - 在探索性测试中我们可以发现常规测试忽视掉的细节,从而指导我们后续对测试用例库的维护
  •        探索性测试可以加深测试人员对被测系统的了解 - 越探索越了解,越了解越想把他测个明白
  •        探索性测试可以激发测试人员的积极性 - 每天都在执行用例多无聊,来一次说测就测的旅行吧 

     探索测试有这么多好处,但是我们也要注意他的局限性,不要陷入一些常见的误区,比如:

  •   探索性测试就是随便测试,到处点点

    - 探索性测试是要遵循一定章法并符合测试要领的

  •   时间不够,所以干脆全都做探索性测试,不写测试用例了

    - 尽管探索性测试是一种有效的测试方法,他不能替代最主体的系统测试

  •   回归测试好费劲啊,我们用探索性测试去覆盖回归需求吧

    - 探索性测试更注重的是思考和学习,不断发现新的问题,而版本的回归测试,是对原有的功能的保证,为持续迭代提供质量把关。

 

        p.s. 探索性测试一般在什么情况下测试团队可以,也应该去做?

    - 在常规测试已经进行得比较完备的情况下,进行探索性测试可以检查测试的完整性,拓展当前测试的覆盖度和深度。

    - 在测试工作推进受阻的情况下(比如开发进度停滞),我们应该把这一段可能被浪费掉的时间利用起来,穿插进对已测功能的再次探索是一个非常好的选择。

    - 出于对现存测试设计和结果存疑的情况下,可以使用探索性测试来确认。(如果探索性测试发现大量或者严重问题,显然可以证明已经完成的测试是不合理不完整的)

    - 在bug验证时,如果加入适当程度围绕该被测功能点的探索性测试,可以及时发现可能由修复带来的新问题,从而减轻后期大规模回归测试的压力。

    - 在刚开始对一个模块的测试时,如果对于被测功能认知度还不够,不妨先做一次探索性测试。这样有助于了解系统,并且规划和调整后续测试进程。

 

  好了,关于探索性测试我们就探讨到这,下次遇到探索性测试的机会时,去好好发挥你的测试才华吧!

 

    •   软件测试交流群:306924419  加群时请备注:博客园-Vincent
    •    个人工作qq:2049427226

posted on 2018-09-13 17:47  维森特  阅读(2697)  评论(0编辑  收藏  举报

导航