Google测试工师的一道面试题目

乙醇 创建于 大约 1 年 之前

最后更新时间 2018-12-12

最近重读《Google软件测试之道》,其中有一道面向软件测试工程师的面试题非常考验测试人员的思维。拿来与你们分享,看看这样一道题,你能想到多少个测试点。

题目:

在一个Web测试页面上,有一个输入框,一个计数器(count)按钮,用于计算一个文本字符串中字母a出现的个数。这里的问题是,请设计一系列字符串用以测试这个Web页面。

题目非常简单,看到这个题目不要上来就开始设计用例,最好能有一些思考,这样看起来更加“专业”。

(题外话,我在参加产品需求评审的时候也会问许多问题,尤其是产品需求并没完全确定下来的时候,站在用户的角度,我也是用户啊,我是否喜欢这个功能?)

所以,我第一个想到的是设计这个功能的背景,因为同样一个功能,在不同的背景下,测试需要考虑的点可能是不一样的。例如,同样是一个搜索功能,百度的搜索和淘宝的搜索就有很大不同,因为用户的使用场景完全不同,输入搜索的关键字和预期结果也不一样。

当然,这只是一道题,你根据题目回答就好了。

不过,我们仍然可以就题目本身来提一些问题:大写还是小写?只是英文么?计算完成后文本会被清除码?多次按下按钮会发生什么事情?…..

接下来你假装有条不紊的设计用例(思考一会儿,然后再输入一串字符,然后再思考…),而不是看起来像monkey试图破坏软件(拼命的敲击键盘…)。

  • “banana”:3(一个合法的英文字)。
  • “A” 和“a”:1(一个简单有正常结果的合法输入)。
  • “”:0(一个简单的结果为0的合法输入)。
  • Null:0(简单的错误输入)。
  • “AA” 和“aa”:2(个数大于1并且所有字符都为a/A的输入)。
  • “b”:0(一个简单的非空合法输入,结果为0)。
  • “aba”:2(目标字符出现在开头和结尾,以寻找循环边界错误)。
  • “bab”:1(目标字符出现在中间)。
  • space/tabs:N(空白字符与N个a的混合)。
  • 不包含a的长字符串:N(N大于0)。
  • 包含a的长字符串:N(N是a的倍数)。
  • {java/C/HTML/JavaScript}:N是a出现的个数(可执行字符,或错误,或代码解释)。
  • ...

更优秀的测试工程师,应该跳出输入本身,设计以下用例。

  • 质疑界面的外观、调色板和对比度(这与相关应用风格一致么?)
  • 文本框太小了,建议加长以便显示更长的输入字符串
  • 这个应用能否在同一台服务器上运行多个实例,多个用户同时使用是否会有问题。
  • 是否会根据用户的输入自动匹配内容?
  • 建议使用真实的数据,如从词典或书中选择输入内容。
  • 提出疑问:“输入的数据是否会被保存”,输入字符串可能包含地址或其他身份信息。
  • 输入HTML和JavaScrip,看是否会破坏页面渲染。
  • 尝试复制/粘贴字符串。
  • 提出疑问:“计算足够快么?在大并发下使用”。
  • 提出提问:“用户怎么找到该页面?”

还有一些测试点,只有经验丰富的测试工程师才会想到。

  • 意识到计算会通过URL-encodedHTTP GET请求传递到服务器,字符串可能会在网络传输时被截断,因此,无法保证支持多长的URL。
  • 建议将此功能参数化,为什么只对字母a计算呢?
  • 考虑计算其它语言中的a(α,Alpha)。
  • 考虑到该应用是否应该国际化。
  • 考虑编写脚本或者手工采样来探知字符串长度的上限,然后确保在此区间内功能正常。
  • 考虑背后的实现和代码。也许已经有一个计数器遍历该字符串。
  • 提出疑问:“HTTP POST方法和参数会被黑掉码?也许有安全漏洞?”
  • 用脚本创建各种有趣的排列组合和字符串特性,如长度、a的个数等,自动生成测试输入和验证。

我要留言

暂无评论