收货地址表单的测试,很多人只做到「填一遍能提交」就收工。真正的事故几乎都不在这一步:用户从聊天窗口粘来一整段地址、手机自动填充把省市区塞进不同的框、下单到一半把国家从美国改成日本、浏览器顺手把页面翻译成了另一种语言。这篇按输入路径和状态变化组织一份用例清单,读完你能把地址表单的回归测试补齐到能拦住线上问题的程度。
为什么地址表单的问题很难靠手工试出来
因为它的失败方式大多与具体输入有关,而不与代码路径有关。同一个提交逻辑,用键盘一格一格敲进去不会出任何问题,粘贴一段带换行的地址就可能字段错位;换成另一个国家的用户,同样的表单又会因为邮编栏不接受字母而提交失败。
这类问题的共同点是:开发者在自己的环境里很难复现,因为它依赖输入方式、地区设置和设备语言。所以用例要按「谁用什么方式输入」来组织,而不是按页面上的控件逐个点一遍。
用户到底会怎么把地址填进来?
至少有四条常见路径,每一条都值得各测一遍。第一条是逐格手动输入,这是表单设计时默认的那一条。第二条是整段粘贴,用户从订单、聊天记录或名片里复制一整块文本。第三条是系统自动填充,移动端的地址簿与桌面浏览器的表单记忆都会一次填入多个字段。第四条是用户先填了别的地方再回来改,例如在下单页改了城市却没有重新选行政区。
这四条路径里,手工输入最不容易出问题,其余三条才是事故来源,因为它们都会绕过界面上的引导,直接往字段里写值。
粘贴一整段地址时会发生什么
理想行为是把整段文本放进最长的那个输入框,允许用户之后再拆分,而不是强行按行切分到各个字段。强行切分的规则很难写对:换行位置在不同地区并不固定,有的地址本来就是一行写完的。
需要测的边界包括:带换行、带制表符、带不换行空格、带全角空格、带括号与连字符、以及明显超长的整段文本。尤其是不换行空格,它在界面上看起来与普通空格一模一样,却会让校验和去重都判断成不同的值。
切换国家之后哪些字段会留下旧值?
切换国家是地址表单里最容易被低估的一步操作,因为它同时改变三件事:字段的必填状态、字段的校验规则、以及字段的候选值。常见的缺陷是只换了标签与校验,却没有清空已经填过的行政区——用户先按美国选了州,再改成日本,那个州代码还在数据里,最后提交出去的地址自相矛盾。
对应的用例应当覆盖:填满再切换国家、切换后再切回来、连续切换多个国家、以及国家字段留空时提交。恢复时也要检查:切回原来的国家,用户之前填的内容还在不在。清空与保留都是合理策略,关键是行为一致,不能一部分字段清空、一部分保留。
自动填充为什么总把值填错位置?
因为自动填充是按字段的语义提示来匹配的,而不是按界面上的位置。如果两个输入框的语义提示重复,或者行政区字段用的是自由文本但没有明确的语义标记,自动填充就可能把省填进市、把市区填进行政区。
测试时要分别覆盖移动端与桌面端,并且覆盖「填一半」的情况:地址簿里只存了街道和城市,没有邮编与行政区,这时表单应当允许继续填写,而不是把空字段直接判为错误。国家字段也要测:自动填充带入的国家与用户当前选择的地区不一致时,表单是该提示还是该以用户选择为准,需要事先定下来。
错误提示要写到什么程度才算有用
有用的提示要满足两条:指出是哪个字段的问题,以及说明怎样改才对。只说「地址无效」会让用户挨个字段猜,而地址字段多,猜错的代价是反复提交失败。
提示还要区分可修正与不可修正。邮编位数不对、必填项为空、邮编与行政区不匹配,这些用户能自己改;地址在某地根本不存在,用户往往只能换一个地址或者联系客服。把两类混在一条提示里,用户会以为是自己填错了,然后就卡住了。校验能做到什么程度、什么时候应该放行,见地址校验与规范化。
给开发者:一份可以落地的用例清单
建议把用例按下面这张表组织,每个格子至少一条,新增国家时整列补测:
| 测试维度 | 至少覆盖 |
|---|---|
| 输入方式 | 手动、粘贴、自动填充、修改已填内容 |
| 国家切换 | 填满后切换、切回、多国连续切换 |
| 字段边界 | 空值、最短、最长、含空格与连字符 |
| 语言与显示 | 浏览器翻译、右到左文字、非拉丁字符 |
| 提交流程 | 支付前校验、重复提交、返回后恢复 |
除此之外还有三条容易被漏掉的检查。一是键盘类型:邮编与门牌号字段在移动端应当唤起合适的键盘,纯数字国家的邮编栏不该逼用户切换到字母键盘。二是地址与联系方式的一致性:电话号码、邮编、行政区三者来自同一地区才算自洽,国家代码与行政区代码的对应见ISO 国家代码与行政区代码。三是翻译后的界面:浏览器翻译会改写标签与提示文字,字段的语义提示如果被翻译破坏,自动填充就会失准。
测试数据本身也要成套准备:同一条记录里的街道、城市、行政区与邮编必须互相自洽,否则你验证的是自己造的错误。用随机地址生成器按国家生成能保证这一点,需要固化成回归用例的做法见测试固定装置里的地址数据。
下一步
挑一个你最熟悉的地址表单,只测粘贴与自动填充这两条路径,大概率当场就能找到问题。修完之后把上面那张表补成正式的回归用例集,并在每次新增国家时把整列补测一遍。如果你想先确认自己的校验规则有没有过度拦截,用随机地址生成器生成一批合法地址过一遍表单,被拦下的每一条都值得追查原因。
需要说明的是,本站生成的地址只用于测试与演示,不能用于真实投递。