很多开发同学拿到短信接口文档,半天就把代码写完了,本地一调返回“成功”,就准备上线。结果正式发的时候才发现:模板变量没替换、回执收不到、同一个号码一分钟被触发了十几次。这些问题,其实在测试阶段花一两天就能提前暴露。
下面按我们帮客户对接时的顺序,讲讲短信接口测试怎么做比较稳。不管你用的是哪家的短信接口,思路基本通用。
第一步:在沙箱里把短信接口请求跑通
多数短信平台都会提供测试环境或者测试账号,叫法不一样,有的叫沙箱,有的叫调试模式。它的作用是让你在不真正下发短信的情况下,验证请求格式对不对。
这一步主要看几件事:鉴权和签名计算有没有算错;必填参数有没有漏;模板编号和变量名是不是和后台审核通过的一致;返回结果能不能被你的代码正确解析。
签名计算是最容易出错的地方。参数排序、编码方式、时间戳单位,任何一个和文档不一致,平台都会直接拒绝。建议把文档里的示例参数原样代进去算一遍,结果和文档给的签名对上了,再接自己的业务数据。
第二步:用白名单号码做真实下发
沙箱只能证明“请求是对的”,不能证明“短信真的能到”。所以第二步要用真实号码发。
做法是建一个测试号码白名单,放开发、测试、产品几个人的手机,最好三大运营商的号码都有。代码里加一个开关:测试环境下只允许给白名单里的号码发,别的号码直接拦截在本地。这个开关很重要,它是短信接口测试阶段最便宜的保险,我们见过测试库里混着真实客户数据,一次调试就给客户发了测试短信,挺尴尬的。
真实下发时重点看:
- 短信内容和签名显示是否正常,变量有没有出现乱码或者原样的占位符;
- 长短信是否被正确拼接,没有被拆成几条看不懂的碎片;
- 不同运营商的号码收到的时间差别大不大。
第三步:短信接口的回执和异常情况要专门测
短信接口调试时,大家往往只测“发出去”,忘了测“发完以后”。
状态回执是第一个要测的。平台一般通过回调地址推送每条短信的最终状态,你要确认回调地址外网能访问、能正确验签、重复推送时不会重复记账。可以故意给一个关机或者停机的白名单号码发一条,看失败回执能不能正常进库。
异常码是第二个。把余额不足、模板未审核、号码格式错误、频率超限这几种情况都人为触发一次,看你的系统是报错提醒、自动重试还是直接吞掉。该报警的报警,不该重试的别重试,比如号码格式错误重试一百次也没用。
频控是第三个。验证码场景尤其要测:同一号码连续点“获取验证码”,你的系统有没有本地限制。不要完全依赖平台那一层,自己的业务层也要有一道频次控制,配合图形验证,防止被人刷接口。
第四步:小批量灰度再全量
测试做完,建议把短信接口的测试用例整理成一份清单留档:用了哪些号码、触发了哪些异常、结果怎样。以后平台升级接口版本,或者换了开发人员接手,照着清单再跑一遍就行,不用从头摸索。短信接口本身不复杂,难的是边角情况,清单就是把边角情况记下来。
测试都过了,也别一上来就全量切换。比较稳妥的做法是先放一小部分真实流量走新接口,观察一两天:发送量、失败回执、用户反馈有没有异常。没问题再逐步放大。
如果是从旧平台迁移过来,可以保留旧通道作为备用,新通道出问题时能快速切回去。营销类短信还要注意,正式发送对象必须是已经授权或者有业务往来的用户,内容带签名和退订方式,这一点测试阶段就应该在模板里体现出来。
结论
短信接口测试可以分成四段:沙箱验证请求格式,白名单验证真实下发,专项测回执、异常码和频控,最后小批量灰度上线。每一段解决的问题不一样,跳过哪一段,问题就会留到正式环境里。蔚岚科技提供短信群发和接口对接支持,对接过程中遇到签名、回执方面的问题,可以打 18720919319 找我们的技术同事一起排查。
常见问题
短信接口测试会产生费用吗?
沙箱环境一般不实际下发,通常不计费;白名单真实下发会按正常短信计费,测试量不大,影响很小。具体以平台的计费说明为准。
测试时收不到短信,先查哪里?
先看接口返回是否成功,再看回执状态。返回成功但回执失败,多半是号码或内容问题;返回就失败,先核对签名和参数。
验证码短信测试要注意什么?
重点测频次限制和有效期,确认验证码过期后无法再用,同一号码短时间内不能被无限触发。
测试用的模板需要单独审核吗?
需要。正式和测试用的模板都要在后台审核通过才能发,建议直接用正式模板测试,省得上线时再改。
回调地址必须是外网地址吗?
是的,平台要能访问到才能推送回执。内网环境可以先用临时的外网转发调试,上线前换成正式地址。