首页 > 技术文章 > 抽丝剥茧的测试艺术

SilenceCity 2014-04-19 23:20 原文

  最近看到好多刚入行的和初级的测试同学在提问,这个应该怎么测,那个应该怎么测;但其实,有很多东西只要百度下原理就能理解,只要理解了就不存在怎么测试的问题。

  可能,我这个说法会被很多人嗤之以鼻,因为他们觉得自己是新手,对什么都不懂,根本不知道怎么测试。所以,我完全是站着说话不腰疼的感觉。

  好吧,先略过这个,说一个武侠小说神话小说中的名词:一法通而万法通。这个词语,通常只出现在悟性其高的主角身上,通常代表的是牛逼和非常之牛逼。其实,测试人员的发现到后面都会向着这个境界发展,达到一法通而万法通,只要给出需求和产品就能很好很快的测试的程度。

  其中,根据需求和产品还原整理测试点,是个技术活,具体要怎么做呢,下面是我的一点想法和心得。

  我庆幸的是,我曾经遇到过两个对我影响很大的人:一个是我的高中物理老师;一个是我的leader。

  高中时候,有一段时间,我对物理的力学变化非常模糊。幸好,我遇到了一个挺不错的老师,他教会了我,所有看起来复杂的变化都是有最基础的规律演变出来的,当你不知道如何下手的时候,不妨先试着拆分出这些简单地原理。

  由于我比较命苦,工作以来基本上都是被散养的,没有专门的人带过我,所以,很多东西都是自己摸索的。这个的结果就是,有一些东西我完全不懂的时候,会很迷茫,不知道从何下手。然后我的leader教了我一个解决方案:在觉得遇见的事情都是无从下手,感觉到处都是问题的时候,可以先停下来,看看这个东西的原理是什么。只有了解了原理才能真的明白去怎么测;只有对它理解很深的时候才能在最短的时间内知道它的核心在哪里,问题在哪里。

  回过头来说说,最开始的那个问题:怎么还原测试点,怎么快速有效的做好测试。

  通常我们拿到的产品和需求,好的像一件漂亮的衣服,差的像一堆乱麻,但是,在前期我们没有参与进去的时候,这些东西不管好坏,对我们来说,都有一个共性,就是陌生,完全陌生。那对于陌生的东西,该如何还原测试需求和测试点呢?

  某一天,你拿到一个iPhone999,但是你却不知道该怎么使用时,你会怎么办呢?产品说明书,官网介绍。嗯,就是这样,所以我们要做的第一件事就是查看需求说明书,在完全陌生,并且需要快速介入的情况下,需求说明书是一个很好地利器!

  但是,如果这个需求说明书没有或者简陋到你看了跟没看没什么区别的情况时,那你就需要去找产品人员好好聊聊需求的事了。只有你真的知道这个东西是神马,要怎么操作,你才具备测试的前提。否则,给你一个app,结果你连怎么安装都不会,那还测个甚啊,洗洗睡吧。。。

  跟产品聊需求的时候,建议以下两个方向:

  1. 脸皮要厚。懒得写文档的产品,通常说起来也会比较概括,所以,你需要仔细的一点一点的抠出具体的需求来;在这个过程中,可能会被产品烦,可能会被鄙视;但为了社会主义产品的质量,别心软,要明确最终的需求。不然,到后期产品和需求有出入的时候,那就是件悲伤的故事了。

  2. 多问一些“不正常的”问题,比如:如果这里出错了怎么办,如果这里有问题了怎么提示?因为产品的思维和大部分初级开发的思维都是正向的,他们只考虑如果正常我的会怎么样,但是大部分出问题的地方都是:如果出错了,谁来容错?

  有了需求了,那怎么测呢?比如,一天,产品跟你说,我要一个环境依赖的加密程序;然后开发给了你一个HOOK的透明加密程序,说这个就是环境依赖的加密程序,让你去测。你要怎么测呢?

  首先你想,环境依赖。你把源文件考进来了,然后放在加密环境下,一看确实加密了。然后你把文件再考出去,结果一看,尼玛拷出来的都是乱码,这可咋整,然后从此纠结了,测试暂停了,想想就是个悲伤的故事。。。需求很明确,就是环境依赖的加密程序。但是你就是不知道怎么下手,或者辛辛苦苦努力了好几天,终于测完了,但是你心里其实一点底气都没有,因为你连这个到底是神马东西都不知道,你测试的部分到底占了应该测试部分的多少你也不清楚。

  所以,如果想让自己有点底气,你首先得了解开发给你的这个东西到底是什么,我们百度下HOOK透明加密,发现有这么几点可能是需要我们测试的:

  1,加密环境下,所有指定的文件都是应该被非明文保存的;
  2. 加密文件可以正常的解密出原始文件内容;
  3. 加密环境下拷贝出去的文件应该都是加密后的;

  4. 修改加密文件内容,新建文件,删除文件,本机复制文件,文件内容复制粘贴等交互场景,不一一举例

  5. 其他异常情况,如空文件等,不一一举例

  6. HOOK加密是主动隐藏加密,不会被用户感知到

  7. HOOK的安全性较低,容易被攻破

  其中1~3是基本加密功能的测试;4是交互场景测试;5是异常情况测试;6~7是HOOK的特性;这些其实都是应该要测试的点,但如果你对这个加密不了解,其中有多少部分是会被漏测了呢,也许只有天知道了。

  一法通而万法通,说到底,这个不过是把所有复杂的万法都还原成了最基本的元素,只要理解了其中的组合规律,还不是想施什么法就施什么法么?

  对于测试来说,我们需要的一法通,其实就是明确需求和了解产品的背景及产品本身。这两个明确了,再来的什么奇葩东西还不是一样可以轻松测试么?

  抽丝剥茧话蚕桑,清流汲水洗衣裳。预知绫罗怎织成,抽丝剥茧话蚕桑。

推荐阅读