>>>虽然春哥也是个工程师,可是说到“测试方法”这个主题,还是有些头疼。因为说的太浅了,大家了解不到什么有用的东西;说的太深了,有些友友又可能理解不了(其实是春哥是怕装x装大了,被大牛们笑:()。不过既然定了这个主题,该说的还是要说的,我尽量平衡好这两个方面吧。
>>>软件测试方法,从不同的维度,可以有不同的分类——比如从是否接触源码维度,可以分为白盒测试和黑盒测试;从是否需要人工参与维度,可以分为手工测试和自动测试,等等。今天和大家探讨测试方法这个主题,我不打算从任何一个维度去细讲,而是将自己平时常用的一些方法分享给大家。
>>>说方法之前,先给大家看一组数据:在“春哥专栏”的第二期,曾经说到过,UC内部每天都会有一个日构建版(有爱版)给内部人员使用的。大家在这个版本上发现的bug,可以通过内置的“啄虫精灵”上报到bug管理系统。下图是去年12月份,针对bug管理系统上的bug进行的统计。可以看到,春哥发现和上报的问题超过了300个,是第二名的4倍多。说明春哥的测试大法还是有用的哈。
OK,我说一下我平时拿到新版本之后是如何展开测试和使用到哪些测试方法的。有些地方说的不对的,大家一起来讨论哈。
1、卖点测试法
所谓“卖点”,就是新版本帮助页面说明或内测说明的那个新版本特性。而“卖点测试法”就是针对新版本的“卖点”展开测试的方法。在之前的测试方法分享活动中,也有友友分享过这个方法。所以,我自己的习惯也是在拿到新版本后,先认真看它的版本特性,然后针对这些特性,逐条进行测试。如果有些功能,不知道入口在哪些,就先搞清楚再进行测试。总之,有测试重点比随机乱试要来得高效。
举个例子,我们看一下10.5版本的内测说明:
“1、【新增】主菜单改造;
2、【新增】支持打开office文件;
3、【优化】文件管理扫描效率优化;
4、【修复】部分网页不能保存;
5、【修复】视频亮度不统一。”
从上面我们可以知道,这个内测版本主要有两个新增的特性,一个性能优化和两个较严重的bugfix。因为修复bug之后,内部测试人员肯定要进行回归验证的,所以这两个bug修复,简单看一下就行了,测试重点还是放在前三点上面。
2、超模测试法
和上一个方法一样,这个也是“探索性测试”常用的一个方法。“超模”就是我们平时所说的“超级模特”。我们都知道,“超级模特”身材都很好,长的都很漂亮。所以“超模测试法”就是将程序当作“超模”,然后检查“她”长的是否漂亮的一种方法。这是方法常用于界面(UI)测试。还是拿10.5内测版本举例,其第一点新特性“【新增】主菜单改造”就非常适合使用这种方法:打开主菜单,看看上面的图标排列是否整齐、美观,图标是否能表达其对应功能的意思等等。
3、破坏测试法
所有的功能能够正常运行,都是有前提条件的。比如打开网页,其前提是手机能上网。而所谓“破坏测试法”,就是破坏这些功能正常运行的前提条件,看是否会发生不可预料的结果。比如上面10.5版本中的第二点新特性“支持打开office文件”,其前提条件是打开的文件是“office文件”。使用“破坏测试法”,我们给一个非office文件它,看看会发生什么现象——如果提示“该文件不是office文件”,那么我们认为是正确的。但如果程序把非office文件当office打开,出现乱码,甚至卡死或崩溃,那么就是bug了。
4、边界值法
这是传统测试方法中的一个常用方法,主要用于数值和数值范围类的功能测试。UC浏览器里有一个“同时下载任务数”的设置。我们要测试这个设置是否正常,可以设定一个值,然后测试触发下载任务数等于设定值、比设定值小1和比设定值大1三种情况,看是否都符合预期。比如,我们将该数值设定为3,那么我们需要测试三种情况:1、同时触发2个下载任务;2、同时触发3个下载任务;3、同时触发4个下载任务。正确的测试结果应该是情况1和情况2触发的任务都可以同时下载,而情况3中只有正在下载列表中的前3个处于下载状态,而第4个处于等待状态。
5、八二定律
相信很多人都听过这个定侓,它广泛适用于各个不同的统计场景中,比如“世界上80%的财富聚集在20%的人手中”等等。在软件测试行业也同样有着一套广受认可的八二定侓——80%的bug是由20%的功能产生的。所以根据这个理论,我们可以推导出另一个观点:发现bug越多的模块,其未被发现的bug也越多。所以我们在进行测试时,如果发现某个功能的bug特别多,那么我们可以继续重点测试这个功能,这样很容易发现更多其它未发现的bug。