导读
这是一篇写给测试新手的文章。
常有朋友来问:在职业规划方面,功能测试和自动化测试两条路该如何选择?或者什么时候适合转为自动化测试工程师?
在这个问题上,我的一贯看法是:自动化是趋势,但功能测试是根本。
那么功能测试又是什么呢?
研究自动化测试,沉淀下来的是实实在在的技术上的提升,而且这种变化会让我们更加自信、心中更有底气。那么研究功能测试,我们沉淀下来的又是什么呢?
思考这个问题,我觉得可以从另一个问题来入手:软件测试该如何做?
搜索“功能测试”的词条,网上给出的答案是:功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
那么,我们再深入思考一下:
上面的多数问题,都是我们做“功能测试”时不得不面对的问题。乍看之下,可能跟“测试技术”不相干,不过以我个人经验来看,我们“功能测试工程师”就是在这一条条问题的锻炼之下提升的,是我们“功能测试工程师”的立身之本。从这个角度来说,功能测试与其说是一种“测试方式”,不如说它是一种“思维方式”。
01
面试题
下面以一道面试题来更直观的聊聊功能测试。
这是一道我曾经出过的笔试题:按照你平时使用记事本的经验,找出下图中的bug。
印象里有三四十人做过这道题,测试经验从一年到六七年不等,少的能找出一两个,多的也就五六个,尚无一个人能找出全部的bug。
如果是真实的产品,可能并不会出现在这个情况(因为需求可能明确的多)。所以这又带来一个问题:我希望通过这个面试题来考察什么?
日常观察能力? 包括这一方面,因为我们做测试时经常需要做“基准测试”,也就是对比市面上一些UI或易用性方面做得更优秀的产品。这需要我们具备一定的观察能力。
bug探索能力?当然也包括这方面。我曾经录用过对用例设计毫无经验,但bug探测方面很有天赋的应聘者,而且他的后期表现很不错。但面试官总是贪心的,仅仅能发现很多bug就意味着这道题回答的不错吗?显然不是。
其实还包括应聘者的“测试思维”,假设一个人写出来的bug虽多,但东一块西一块(比如文件名、快捷键、数字、快捷键、菜单....),而另一个人虽然发现的bug较少,但更有步骤(比如标题图标、文件名后缀、菜单、子菜单、快捷键、快捷键....),那我会觉得后者的做事更条理,做测试有一套自己的方式,相比前者,更容易减少“漏测”。
02
从面试题反推测试用例设计
最后我们再来看一下,假设这个是一个产品,我们怎么思考测试点?简单一点,我们只讨论文件操作的需求。
产品名称:记事本
功能需求(文件):
测试新手会想到新建文件、打开文件、另存为文件、关闭文件等等这一些测试点,略有经验的测试人员会考虑到更多,比如:
那么,这个过程中怎么体现我们的“测试思维”呢?或者或测试人员怎么借助“测试思维”来让我们在设计测试用例时表现的更好呢?
在这里,我觉得可以引用《清单革命》一书中的思想。这本书提出如下几个观点:
简单来说,我们可以将我们的经验制作成类似下图的表格:
需要说明的是,在此我想表达的并非是我们可以借助这个框架来让我们的测试点更完善,虽然这也很重要,而是我们当遇到类似或者完全不同的情况下,要有解决这些情况带来的问题的意识!这才是我所更看重的、真正的”测试思维“。
03
总结
常有人说”功能测试“很简单,事实真的如此吗?做功能测试的难点之一就是,你如何能下结论说一个功能是正确的?工作过程中我们要怎么锻炼我们的”测试思维“来保证我们的工作真正有效?这是一个需要持续研究的能力。真正希望在测试工作上有所造诣的人,是不会认为功能测试很简单的。也许今天的话题,有点偏离“功能测试”这个主题,但只要对测试新手有帮助,偏一偏又有何妨。