• 一个测试工程师走进一家酒吧,要了一杯啤酒;
  • 一个测试工程师走进一家酒吧,要了一杯咖啡;
  • 一个测试工程师走进一家酒吧,要了0.7杯啤酒;
  • 一个测试工程师走进一家酒吧,要了-1杯啤酒;
  • 一个测试工程师走进一家酒吧,要了232杯啤酒;
  • 一个测试工程师走进一家酒吧,要了一杯洗脚水;
  • 一个测试工程师走进一家酒吧,要了一杯蜥蜴;
  • 一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@;
  • 一个测试工程师走进一家酒吧,什么也没要;
  • 一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来;
  • 一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿;
  • 一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷;
  • 一个测试工程师走进一家酒吧,要了NaN杯Null;
  • 一个测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶;
  • 一个测试工程师把酒吧拆了;
  • 一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱;
  • 一万个测试工程师在酒吧门外呼啸而过;
  •  一个测试工程师走进一家酒吧,"< script >alert("要了一杯酒");< /script >"
  • 一个测试工程师走进一家酒吧,要了一杯啤酒';DROP TABLE 酒吧;

测试工程师们满意地离开了酒吧。

然后一名顾客点了一份炒饭,酒吧炸了。

其实比较专业了,包含了:

功能测试

反向测试用例

脏数据/非法字符测试

边界值测试

容量测试

性能测试

安全测试,甚至尝试了sql注入

在网络上看到这样一个笑话 计算机领域有哪些经典的典故或笑话? - 知乎。一个测试工程师走进一家酒吧,要了一杯啤酒/一杯咖啡/0.7杯啤酒/-1杯啤酒/一杯洗脚水。

从测试工程师的角度来说,来尝试着对这个问题进行测试用例的设计。

功能测试

要是分析这个问题的话,首先必须明确需求。

"一个测试工程师走进一家酒吧,点了一杯啤酒。"

我们就假定我们是来测试一个酒吧管理系统,这个酒吧管理可以实现顾客从入店到买啤酒结账的整个过程。首先酒吧肯定不是24小时营业的,假定酒吧的营业时间是 14:00 - 次日02::00,酒吧不允许未成年人进入,酒吧堂食的顾客不能超过100,只能点一种啤酒,且啤酒的数量只能是正整数,酒吧支持刷卡或者现金。

然后分析,整个点啤酒的过程有哪几个步骤。酒吧在营业时间内 -> 一个成年人走进酒吧 -> 酒吧有座位 -> 点啤酒 -> 刷卡或者现金 -> 酒吧给顾客找钱 -> 酒吧给顾客想要的数量的啤酒。

接着就可以根据分析的步骤来画出整个点单的流程图。如下:

流程图.png

可以看到,整个流程图一共有13个判定,根据最简单的判定覆盖的概念,一共至少有14个测试用例才能达到判定覆盖。

判定覆盖: 判定覆盖是设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。

于是功能测试的用例如下(编号代表走哪个分支):

  • 1,2,3,17;
  • 1,2,4,17;
  • 1,2,3,4,17;
  • 1,2,4,5,17;
  • 1,2,4,5,6,17;
  • 1,2,4,5,6,7,17;
  • 1,2,4,5,6,7,8,17;
  • 1,2,4,5,6,7,8,9,17;
  • 1,2,4,5,6,7,8,9,10,12,17;
  • 1,2,4,5,6,7,8,9,10,11,16,17;
  • 1,2,4,5,6,7,8,9,10,11,10,11,16,17;
  • 1,2,4,5,6,7,8,9,10,12,13,16,17;
  • 1,2,4,5,6,7,8,9,10,12,13,14,17;
  • 1,2,4,5,6,7,8,9,10,12,13,14,15,16,17;

接着可以对一些特殊的判定做更细的划分,比如图中的8,只说明了正整数/非正整数。非正整数又包括小数/0/π,正整数也包括当前的最大值/int的最大值等值,接下来用等价类划分法对酒吧数量进行划分。

Input Expected Result
-1杯啤酒 拒绝
0杯啤酒 拒绝
π杯啤酒 拒绝
3杯啤酒 成功
100杯啤酒 成功
101杯啤酒 拒绝
2^31杯啤酒 拒绝
NULL杯啤酒 拒绝

性能测试

负载测试:有若干个测试工程师一直在酒吧喝酒;
疲劳性测试:一家酒吧连续经营 30天,且每天都是从14:00经营到次日02:00。

安全测试

  • 一个测试工程师走进一家酒吧,要了一杯啤酒';DROP TABLE 酒吧;
  • 一个测试工程师走进一家酒吧,"< script >alert("要了一杯酒");< /script >"

本地化测试

  • 一个西班牙籍的测试工程师走进一家酒吧,点了一杯啤酒;
  • 一个东北籍的测试工程师走进一家酒吧,用东北话点了一杯啤酒;

参考:

  1. Bill Sempf on Twitter: "QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv." / Twitter
  2. 计算机领域有哪些经典的典故或笑话? - 知乎
  3. 测试工程师的梗,你了解多少? | 博客 | Powered by skywalker_z
  4. 判定覆盖_百度百科
  5. A QA tester walks into a bar... : ProgrammerHumor
  6. A test engineer walks into a bar... : ProgrammerHumor
  7. A Tester Walks into a Bar: Reviewing Test Techniques | StickyMinds
  

所以不要以为这是个笑话,其实挺专业的,只是表达比较喜感

没有错,测试的日常工作就是需要这么有喜感,以及想象力


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

狼牙拓展训练