最近我被裁员,去面试的时候有这个题目:
说一下对百度首页的测试用例设计。
以下内容除说明百度出来的以外全部原创。。。抛砖引玉,仅供参考。
××××××××××××××××××××××××××××××××××
先来一个一般上测试人员最喜欢最常用的测试方法,边界值法。
文本框边界值,一般可以测试一下输入字符的数量。
探索过程:
1.不输入文字,直接按搜索----->页面刷新,无变化---->结论1
2.复制粘贴一段很长的中文进入文本框----->被百度自动截取其中前100个字-->结论2
3.按下搜索按钮,百度跳转到搜索结果页面,并提示“"××" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内”,将被自动截取的内容复制粘贴到word,统计字数为38--->结论3
5.复制粘贴一段很长的中文、英文、空格、符号混合文本进入文本框----->被百度自动截取其中一段内容。---->结果截取了100个字--->结论4
6.复制粘贴38个汉字进入搜索文本框,并中间加入62个连续空格后按下搜索----->搜索结果里最后一个汉字被忽略,因为前面有37个汉字加1个合并后的空格长度已达38.并且在文本框里原来62个空格的位置现在显示一个空格--->结论5
关于文本框字符数的结论:
1.最小输入值为0个字;
2.百度搜索文本框内可输入的最大字数是100个汉字;
3.百度搜索文本框的输入值在点击搜索按钮后,会被截取前38个汉字,其后面的字词均被忽略;
4.任意一个中文、英文、符号、空格在输入进文本框内第一次计数时均视同一个汉字;
5.连续的空格在点击搜索按钮后进行搜索时会自动合并,并转化一个单独的空格。
根据上述探索结果设计的文本框边界值测试用例(思路):
1.输入0个汉字:
什么也不输入直接点击搜索按钮,点击后应刷新首页
2.输入38个汉字:
输入38个汉字后点击搜索按钮,成功跳转到搜索结果页面
3.输入39个汉字:
输入39个汉字后点击搜索按钮,跳转到搜索结果页面,并在结果页面上显示“"×" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内”
4.输入100个汉字:
输入100个汉字后点击搜索按钮,跳转到搜索结果页面,并在结果页面上显示“"×" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内”
5.尝试输入100个以上的汉字:
尝试输入101个汉字,预期结果为尝试失败,只能输入100个汉字。
6.英文、符号的测试:
以英文、符号作为输入值,重复用例1到5,预期结果应与汉字相同。
7.空格的测试:
复制粘贴38个汉字进入搜索文本框,并中间加入62个连续空格后按下搜索,预期搜索结果里最后一个汉字被忽略,并在结果页面上显示“"×" 及其后面的字词均被忽略,因为百度的查询限制在38个汉字以内”同时,连续的空格应在搜索后的文本框内显示为一个空格。
可能的问题或者待改进的地方:
1.结论4导致百度搜索支持的英文关键字长度不足。与同类网站谷歌的对比,同样一段英文(约十几个单词)在谷歌里能正常搜索,在百度里会被截取前面38个字母。
2.结论1中不输入关键字点搜索没有任何提示,如果有提示会不会好一点。与同类网站谷歌对比,百度有明显的刷新页面动作,谷歌没有刷新页面(没有刷新页面进度条)。如果没有刷新页面动作会不会更好。
×××××××××××××××××××××××××××××××××××
然后是另一个测试人员最爱的测试,等价类法。
一般面试另一个经常出的题目就是问一个三角形,输入三个数字作为边长,然后要判断会变成正三角,等腰三角,还是普通三角,还是不能变成三角来划分等价类。这种case的设计就是基础的基础。
但如果测百度首页就比较复杂。因为用户输入值太多。
等价类可以这么划:
按区间划分。
按数值划分。
按数值集合划分。
按限制条件或规划划分。
按处理方式划分。
三角形问题显然按照数值和区间划分了。但百度首页的话就难划了。
按区间划 1.有意义的关键词做输入值,预期能搜出结果
2.无意义的关键词做输入值(比如用脸滚键盘来输入一些乱七八糟的关键字),预期搜不出任何结果
按数值划,不合适。
按数值集合划分,不合适。
按限制条件或规划划分,不合适。
按处理方式划分,需要知道百度是怎样处理关键字的。也就是说知道内部代码逻辑,有几种处理方式的话就可以划几个等价类,但是我不知道。。。
×××××××××××××××××××××××××××××××××××
第三种方法:写case就是按照需求和标准来写嘛
对于搜索引擎的测试需求和评价指标随便百度了一下就找到了:
1)搜索覆盖的网站或网页数目及范围;
2)结果的准确性,或者说相关度;
3)结果的全面性;
4)结果的时效性,比如说期望搜到最新的结果;
5)搜索的速度或者响应时间
6)易用性
7)链接有效性、稳定性等
对于这些我们可以一个个设计用例来测
比如
1.找一个很偏僻的小网站看看能不能被搜到。
2.挑一系列常用关键字,然后人工检查搜索结果的相关度。
3.挑一系列常用关键字,然后人工检查搜索结果的排序等等
其中的问题是,
1.这个偏僻的小网站应不应该被搜到呢。
2.我怎么知道这个搜索结果的相关度哪个应该算高,哪个应该算低。
3.我怎么知道这个搜索结果的哪个应该排第一哪个应该排第二。等等
这里应该超出黑盒测试的范围了。
假如能用白盒测试/自动化测试。常用方法有:
1.使用另一套完全不同的逻辑实现一套代码,来对比结果。(不常用,代价太高)
比如说为了测试百度,我们自己写了一个谷哥欠,然后对比两者的搜索结果
2.按照现有代码设计时的逻辑,人工计算验证该代码是否运行正确。(太难算。)
3.设计一些有一定通用性的规则,然后校验。(推荐)
比如说,给你一个数据库,告诉你里面所有记录都是数字,那么写脚本检查数据库的记录,当发现有字母时,脚本可以报异常。
同样,在百度里搜索一个关键字,然后根据预先定义好的某个规则,比如搜索结果页面在相关度一样的时候应当以时间为排序标准,检查出结果里有明显违背时,脚本可以报异常。
4.其他?(我上面都是自己根据自己经验总结的,真实情况毕竟不清楚)
5.还有特别提一下易用性。
百度里面有:
1.下拉框提示
2.搜索结果页提示”要找的是不是xxxx“
3.搜索结果页提示”关键字里去掉引号可以找到更多xxx“
4.搜索结果页提示”您输入的网址是不是xxx“
等等,都可以用探索性测试的方法试出来。然后针对他们设计对应的case。
×××××××××××××××××××××××××××××××××××
这样就完了?
没呢。。。百度首页还有用户登录、导航、天气预报、随心听、自定义主页、各种链接等等。
就光从功能测试角度来看也有很多东西需要测。
版权声明:本文出自 zhangting85 的51Testing软件测试博客:http://www.51testing.com/?207573
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。