用黑盒的思想白盒的测试

Phemia ·
更新时间:2024-09-21
· 711 次阅读

  前两天其实在网络讲课的时候,有很多同学也比较迷茫,不太理解我这个用白盒的手段,黑盒的思想进行测试。其实我觉得这种方法恰恰是在移动互联网好的一种测试手段,也会是接下来测试业内测试人员必须会的一种手段。这样才能够做到真正的测试,这样才能够获取我之前所谓的数据。接下来的测试人员是和数据进行的一场战斗。第一步,已经认知到数据的重要性;第二步,知道获取什么数据,怎么过滤数据。第三步,知道用什么方法获取你想要的数据。而现在真正做到这三步的寥寥无几。

  那么废话不多,我来讲下昨天我在会上讲的例子。是我10年碰见的项目中一个比较棘手的问题,无论是当初的我,还是现在的我都很棘手。

  这里希望大家先看问题,思考之后再看我当初很挫的解决方案。问题是这样的,android平台当初我测试一个第三方的软件,该软件内有一个手机联系人的快速搜索匹配功能。其功能和匹配逻辑都是由我们自己实现的。希望达到的功能有两点,第一,一个人的姓名比如叫“小明”,那么用户可以通过姓名的正序匹配xiaoming,xm,ximin等等,倒序mx,mingxiao,minxi等等,这一系列的方式进行快速的搜索到联系人。第二,用户搜索之后,搜索的结果尽量让用户觉得自己想要找的名字在手机的前几页显示,以免用户翻很多页。大家可以先思考如果你要测试这样一个功能,你会怎么测试?考虑几个方面?PS:支持中文,德语,法语等十几个的姓名搜索。

  思考中。。。。。。。。。。。。。。。

  接下来我介绍我当初做的很挫的方法。在会上有朋友提出,是否做这个测试之前需要和开发进行交流。我的答案是肯定的。不单单要和开发做交流,还需要好好了解这个功能的需求。当初我问开发和项目经理要了两样东西,第一个是该搜索功能的全部匹配模式列表。第二个是各个匹配模式在code中的权重。

  接下来是测试,第一步进行了网络上所有中文字的抓取,相当于准备好中文,英语,法语等各种语言组合的基础的字符串。接下来的例子是中文,其他语言以此类推。然后我们可以写一个很简单的程序将这些基础的字符串组合,变成如下图,这些txt文件保存在android的assets文件夹中,方便android程序读取。

  第二步,在生成上图的这个联系人名称的同时,进行简单的case的生成。举例比如一个联系人叫做“王小二”,我设置了两个随机数,第一个随机数是用来取“wang xiao er”中从左往右连续的字的个数。第二个随机数是用来取每个字变成拼音之后的字符串的从左到右的连续的字符的个数。举例子来讲第一个随机数可能这里取出来的是“王小”,第二随机数取出来的是“wanx”。然后这个是一份case了其实。如下图:

  这样之后我们的联系人的原始数据,case以及期望结果都有了。那么对于我们来讲是进行输入,然后看输出验证了。那么这里需要用到我们的android junit test,注意不是什么robotium,而是仅仅使用android提供的测试框架。从assets读取文件之后,存入数组,接下来是告诉程序我要输入的case,得到返回的list,然后从返回的list中遍历查看是否有这条case对应的联系人的姓名。如下图:

  ok,到这里为止,我们验证了通过各种匹配逻辑输入case之后,程序是否能够搜索的出来对应的联系人。大家也都看到了。这里用的是android的代码测试框架,但是其思维一步一步下来全部是黑盒的思维,从而也能够看出黑盒的思维多么的重要。那么还有一个重要的问题,是我们怎么来验证这个结果在返回的很长的list中比较靠前呢?因为如果你有900个联系人,搜索的确能够搜索出来,但是index在800,用户体验会非常的差。

  那么这里我留两个思考问题,其一,这个用户体验如何进行解决?其二,是除了上述我说到的之外,大家觉得在做这个功能的测试时候还需要注意哪些问题。当初我有很多的点想当然,导致了很多bug没有被发现。

  其实我觉得网上很多文章实例不对,还是那句话,纯理论不是没有意义,而是纯理论很多人可能无法理解。比如我看一篇很高深的文档,我的level达不到,那么我也看不懂。是这样。



白盒 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章