做产品 PMaker 首页
搜索
跟随系统
颜色主题
空格的键盘
开发时用的是「刚刚好」的样例,真实数据可不是超长内容长标题、长评论、长昵称——布局会不会破、卡片会不会变形真实用户里一定有这种人,别赌没有零条数据刚上线、新账号——展示的是设计过的空态,还是留白和报错异常数据HTML、emoji、超长数字、缺字段——渲染错、接口崩压测不是测性能,是测数据

样例数据永远「刚刚好」,真实数据永远出其不意。压测就是用出其不意的那部分,把上线前的问题拦下来。

真实数据压测

上线前用真实数据的边界各跑一遍:超长内容、零条数据、异常数据。大多数上线才发现的问题,这一遍就能揪出来。

功能写完只是开始。用真实数据的边界各跑一遍——超长内容、零条数据、异常数据——大多数「上线才发现」的毛病,这一遍就能揪出来。

你会遇到的现象:

  • 开发时用的都是「刚刚好」的样例数据,页面从没见过超长和空态
  • 用户的昵称、评论、标题,长度远超你的想象
  • 零条数据时,页面留下一片空白或者直接报错

三个必测的边界

压测不是测性能,是测数据。「测性能」问的是扛不扛得住,「测数据」问的是接不接得住——接得住各种形态的数据,界面才算真的写完。软件测试里早就有边界值分析这套方法:缺陷集中在输入范围的边界上,所以在边界值处专门设计用例,比均匀撒点有效得多。bva 放到产品上同理——用户的数据不会待在正常值里,你得替它把边界当常态。三类边界数据,每个都得上线前跑一遍:

  • **超长内容。**长标题、长评论、长昵称、超长的一段文字——布局会不会破、列表会不会撑爆、卡片会不会变形。真实用户里一定有这种人,别赌没有。
  • **零条数据。**刚上线、新账号、还没人用——页面上什么内容都没有的时候,展示的是设计过的空态,还是顺手的留白和报错?参见四态齐全
  • **异常数据。**HTML、emoji、超长数字、特殊符号、缺字段的记录——渲染会不会错、接口会不会崩。这一类最能暴露出「把数据当纯文本」的假设。

怎么压

流程不复杂,但要求「真」:

  • **用真实数据,不要再造一遍样例。**抓一段真实的用户内容来跑,别自己编一段「比较长」的。真实的边界,长得和你想的不一样。
  • **每个边界各跑一遍。**别只跑「正常」那一遍。超长、零条、异常,三个各来一遍,而且每个页面都要跑——不只跑主页。
  • **看三样东西:布局是否保持、状态是否清晰、还能不能继续操作。**破布局是问题,留一片空白是问题,报错卡死是更严重的问题。
  • **放进走查清单。**压测不该是临时起意,应该每次上线前都做。参见走查清单
  • **时间点要选对。**太早压,界面还在变,压出来的问题一半会失效;太晚压,发现问题也来不及改。通常留到上线前的一两轮迭代里,跟走查一起做。

测出来修什么

三类边界,各有各的修法:

  • **超长 → 截断 + 展开,或自适应换行。**给文本一个上限,超出的截断、给入口展开。别指望用户「不会写那么长」。
  • **零条 → 设计空态。**告诉用户「这里还没有东西」,并给出下一步动作。空态不是文案填空,是一次完整的引导。
  • **异常 → 转义、容错、兜底默认值。**特殊字符要转义再渲染,脏数据要容错不崩溃,缺字段要有默认值顶住。参见列状态清单
  • **修完再压一遍。**压测的价值在「循环」:修一处,重跑一遍,确认不破别处。别修完就上线。跑完这一轮,把三类边界再各跑一遍,确认这一处改动没有在别处引入新问题;同时把结果记下来——哪类数据、哪个页面、什么表现、怎么修的——下次上线前照着再跑。

参考资料

  1. Boundary-value analysis — Wikipedia