产品测试之我见
我个人对产品测试的看法
产品测试的意义
在我看来,产品测试是产品交付给用户使用的最后一道屏障,所以产品测试的意义就是保证产品质量从而维护用户的利益,对用户负责。其实保证了用户的利益也就是保证了公司的利益。
很多人认为产品测试应该是为开发人员服务的,错,我认为大错特错。产品测试面向的应该是产品的最终用户。产品测试人员要时时刻刻站在产品最终用户的角度去考虑问题,而不是开发的角度。
还有一些人认为产品测试是保证开发人员的产品质量的。错,更是错上加错。开发人员的产品质量不需要产品测试人员去保证,开发人员自己就会保证。开发环节的单元测试,基本功能测试,产品交付前的Smoking test难道还不能保证质量?所以开发人员的产品质量是不需要产品测试人员去操心的。重复性劳动真的没有任何必要。
那么产品测试到底该做些什么呢?我在此文的开篇就提出了产品测试存在的意义,说得简单一些就是,所有产品测试人员应该把自己看作是该产品的用户,无论怎么做,做什么都要以这个身份去思考,一定没有错。因为作为用户,他们要保证自己的利益,也就是保证我买来的产品是个好用的,能够解决我的问题的产品。那么什么样的产品是好用的,什么样的产品能够解决用户的问题呢?这就是我下面要说的产品测试思路。
产品测试的思路
其实产品的测试思路很简单,就是作为最后一道屏障,为了保证用户的利益,该做些什么?是不是很简单?所以简单来说就是一句话:“该做些什么?”。在我看来,无论做什么,都要围绕一个中心思想:User Experience!就是说无论做什么,都要以用户的体验为中心,这样的话,就能做到站在用户的角度去考虑问题,经过测试的产品才能够真正做到为用户负责,为公司负责。
什么是User Experience。
在我看来,用户体验就是当用户在使用一个产品的过程中,用户对该产品的感受。
所以产品的测试其实就是提前感受了一下即将交付的产品。测试人员的感受也就是用户的感受。如果测试人员的感受都很差的话,你认为用户的感受会如何呢?
所以产品测试就是站在用户的角度去体验产品,得出体验的感受,也就是提前预知用户的感受。
预知用户的感受
怎么能提前预知用户的感受呢?这个问题就是产品测试人员要考虑的一个的问题。要解答这个问题,就要先回到我对于User Experience的定义,“用户在使用一个产品的过程中,用户对该产品的感受”。也就是说,首先,要知道对于用户来说什么样的产品是好产品;其次,要了解用户是如何使用产品的。知道这两点的话,就能够预知用户的感受了。如果大家还没理解的话,别着急,我详细说一下您就明白了。
我们假设您已经了解了用户是如何使用产品的,那么您就知道了用户的使用习惯,那么您就可以模拟用户的使用了,对吧!通过在您要测试的产品上模拟用户的使用,就能得出使用后的感受。最后一步就是用您得出的感受去跟您了解到的“对于用户来说什么样的产品是好产品”进行对比,就能预知用户的感受了。很抽象是吧!
那么如何能够了解“对于用户来说什么样的产品是好产品”和“用户是如何使用产品的”呢?下面我就分别说一下这两点。在这之前,我先要说一下用户的角色。我认为用户会以两种角色存在:产品管理者和产品使用者。知道了用户的角色,上面的两个问题就变成了“对于产品管理者和产品使用者来说,什么样的产品是好产品”和“产品管理者和使用者是如何使用产品的”。
好产品的定义
对于产品管理者来说,什么样的产品是好产品呢?要知道这个答案,就要通过宏观和微观来分析,进而找到答案。
- 宏观方面,我认为对于产品管理者来说,一个好产品就是一个易于管理的产品。对了,就是管理简单,不要给产品管理者带来额外的负担。在我看来,一个易于管理的产品应该呈现给产品管理者一个配置简单,条理清晰,逻辑性强,并且配有完善的帮助系统的产品管理系统。配置简单就是说产品的配置项让用户很容易理解,每个配置项用户都知道要输入什么。条理清晰就是说产品的配置项要有条理,不同种类的配置项要进行分类,配置相同功能的配置项要放到一个界面中,这样用户在一个界面中就能完成该功能点的所有配置。配置逻辑性强就是说产品的配置逻辑要符合“正常人”的逻辑,产品配置界面要做到由上到下,由左到右的原则,这样用户就自然而然的知道先配什么,后配什么,这样也符合人的阅读习惯。完善的帮助系统就是说当用户不知道该如何配置的时候通过阅读帮助系统,能够很快了解如何配置。不要敷衍用户。其实用户体验就是在这些细节的地方。
- 微观方面,我认为通过日常的积累,我们会积累了很多用户报告的问题和用户的需求。通过对用户遇到的问题和需求进行分析,分析的结果就自然而然的是想要的答案了。
对于产品使用者来说呢?
对于网关类产品来说,一个好产品就是要让用户感受到在安装完产品后跟安装前没有任何区别,并且对于不合法的用户要能够及时制止其行为。说起来很简单,但是做起来很难啊!“没有任何区别”体现在很多方面,例如,速度不会有明显下降,不需要用户更改任何配置等。一切复杂的部分都要在产品内解决,不要把复杂的部分留给用户处理。
用户的使用行为
产品管理者和产品使用者是如何使用产品的?
一说到这个问题就有人一定会说,问问用户,咨询一下他们。我觉得这么做可以,但是做这个之前还是自己要做足功课。
“产品管理者如何使用产品”这个问题在咨询用户之前,我们可以做哪些工作呢?首先,我们可以通过换位思考,也就是我说的如果你是产品管理者,你会怎么用,哪些信息是你最关心的。其实管理者无外乎关注两点,配置和日志报表。什么样的环境该如何配置,产生的日志报表是否合理,简明扼要。其次,我们可以先咨询一下本公司的IT部门,他们就是产品的管理者,可以问问他们是怎么使用产品的,他们最关心什么。最后在有条件的情况下咨询一下不同的用户来丰富我们的数据库。当我们得到这些信息后,就可以将其转化为测试用例。用此测试用例去使用产品,从而得到感受。对比管理用户对好产品的定义,从而预知用户的感受。我认为好的用例是由此而来的。并不是根据产品的Feature来定义用例的。
那么我们如何得知“产品使用者是如何使用产品的”?其实答案很简单,就是分析用户的使用行为。进行用户的使用行为分析无外乎就是获取用户的日常行为,比如用户在使用电脑所产生的网络行为,用户在使用Pad或者手机等移动客户端所产生的网络行为等。获取到这些行为后,通过分析得到哪些网络行为跟所要测试的产品有关系。然后将这些行为转化为测试用例。
用户在使用电脑所产生的网络行为可以通过在排查用户遇到问题的过程中获取的数据包中得到,或者在自己公司安装流量分析工具产生的数据包中得到。分析其行为可以通过如下几个方面进行分析:
- 分析用户日常访问的站点
- 分析用户常用的协议(TCP,UDP;HTTP,HTTPS,SMTP,DNS等)
- 分析用户下载或上传信息比例及负载的类型,大小
用户在使用Pad或者手机等移动客户端所产生的网络行为就比较复杂了。这里我只拿iOS产品举例(iOS产品此处泛指iPhone,iPad,和iPad mini)。iOS产品产生的网络行为的获取和分析可以通过如下几个方面进行:
-
iOS系统:
系统升级产生的流量。这部分流量会很大,而且要保证数据的完整性。
iOS系统版本的兼容性。要知道,每一个iOS版本的升级都会带来很大的变化,要了解这些变化,并且知道这些变化对于产品的影响。因为你的产品既要满足新的iOS版本,又要兼容老的iOS版本。所以不同系统可能会产生不同的流量,要了解这些流量。这就是一种用户行为。 -
App:
App是iOS系统重要的一部分,可以说是是iOS生态系统不可或缺的一部分。大部分的网络行为都是App产生的。对于上百万的App我们怎么分析呢?其实我们主要分析哪些用户日常使用的App的网络行为,这些App的行为特点是什么,会产生什么样的网络数据包。将分析结果转化为测试用例。具体细节我就不一一阐述了,如果您感兴趣,我们可以一起探讨。
-
移动性:
如果用户在移动的情况下使用iOS产品,用户的网络连接一定是在改变的,这种改变也是一种行为。
通过对这些行为的分析整理,从而形成用例,进行测试。
至此,我们拿到了我们需要的信息,我们就可以模拟用户的使用,通过对比结果就可以预知用户的感受。其实对于不同的结果我们可以将用户感受分为:良好,可接受,不可接受等几个级别。对不同级别进行不同的对待。
所以我认为,产品测试应该从用户的角度出发,以用户体验为中心,分析用户行为,将用户行为转化为测试用例,使用该测试用例进行测试。经过这样一个流程测试的产品才能够在用户的使用过程中给用户一个完美的体验。
此文仅代表我个人的看法,并没有任何针对性,而且没有任何吐槽成份。如有雷同,纯属巧合。有过您有任何疑问或者不同意见,请联系我通过ADN 或者 Twitter。