刚入行那会儿,黑盒带我的测试师傅扔过来一个登录页面,说“测吧”。黑盒我盯着屏幕上的测试用户名和密码框,脑子里只有一件事:输对能进,黑盒输错报错。测试师傅看了一眼我的黑盒用例,笑了:“你这才测了十分之一都不到。测试”他随手写了几个输入:空格、黑盒超长字符串、测试SQL注入片段、黑盒密码框粘贴、测试Tab键顺序……那是黑盒我第一次意识到,黑盒测试远不止“正常情况能跑通”这么简单。测试
等价类划分是黑盒最基础的一招。拿年龄输入框举例,合法范围18到60,那有效等价类就是18到60之间的任意数,无效等价类则包括小于18、大于60、非数字、空值、小数。你不需要把每个数字都试一遍,从每个类里挑一个代表就行。我见过有人测手机号输入框,真就一个个号码敲进去,测到第50个被主管叫停——这种重复劳动毫无意义。
边界值分析通常跟等价类搭配使用。Bug最爱藏在边界上。一个文本框限制1到100个字符,那你就得测0、1、2、99、100、101。别只测50。我之前测过一个文件上传功能,限制10MB,开发拍胸脯说没问题。我传了个10MB整的文件,报错。传9.99MB,通过。问题出在代码里用了“>”而不是“>=”。这种错,不测边界根本抓不到。
判定表适合处理逻辑组合复杂的场景。比如一个电商优惠规则:会员且订单满200免运费,非会员满300免运费,会员不满200收10元运费,非会员不满300收15元。四个条件组合,八种情况,画个表一目了然。比你在脑子里绕来绕去强得多。
场景法是我个人最常用的。站在用户角度走完整流程。登录→搜索商品→加入购物车→改数量→去结算→选地址→支付。每一步都有正常和异常分支。支付时余额不足怎么办?地址填到一半切出去接电话再回来,数据还在吗?这些用单一输入框的用例根本覆盖不到。有次我测一个订餐App,选完餐点“去结算”直接闪退,开发查了半天发现是购物车为空时没做判空处理。这种问题,等价类边界值一个都逮不住。
错误推测法听起来不“科学”,但实战中最管用。靠经验猜哪里容易出问题。输入框大概率有XSS,图片上传大概率不校验文件类型,分页查询大概率有SQL注入。我习惯在测试前花十分钟翻一遍接口文档,看到参数是字符串类型且直接拼进SQL的,直接上单引号。十次有八次能报错。
正交实验法用在配置组合爆炸的时候。一个页面有字体、字号、颜色、对齐方式四个选项,每个选项三个值,全组合81种。用正交表挑9组就能覆盖大部分两两组合。省时间,但别指望它发现三个选项联动才触发的bug。
黑盒测试的方法论就那么十来种,但真正拉开差距的是你愿不愿意多想一步。输入“admin”和“admin ”(后面带空格),系统认不认?复制粘贴和手动输入走的是同一套校验逻辑吗?浏览器后退按钮会不会导致重复提交?这些不在任何教科书的方法列表里,但每个都值得写进用例。
工具方面,Selenium做Web自动化,Appium管移动端,Postman跑接口。但工具只是工具,脑子里的测试思维才是核心。我见过用着最贵工具却只测“正常登录”的人,也见过拿Excel写用例但把边界和异常抠得死死的狠人。
回到开头那个登录页面。后来我重新写了一套用例:用户名长度边界、密码大小写敏感、验证码过期、连续错误锁定、多标签页同时登录、浏览器自动填充、密码框右键粘贴、回车键提交、SQL注入、XSS脚本。一共37条。跑完发现两个真实bug。师傅说的“十分之一”,我信了。