如何测试一个网站
打开 Chrome DevTools 的何测 Network 面板,刷新页面,网站盯着瀑布图看三秒。何测如果某个请求卡了 2 秒以上才返回,网站这个网站大概率有问题——用户早跑了。何测我测过一个小电商站,网站首屏加载 4.8 秒,何测转化率比同行低了 37%。网站老板一直以为是何测价格问题,其实是网站图片没压缩,一张 banner 图 3.2MB。何测
速度只是网站第一刀。接下来把浏览器窗口拖到手机尺寸,何测或者干脆用真机连上去。网站点按钮、何测滑列表、填表单。触控区域小于 44px 的,手指粗的人会骂人。我见过一个后台系统,删除按钮和保存按钮挨着 10px,测试时手一抖删了三条数据。这种问题自动化脚本很难发现,得靠人肉点。
功能测试别只走正常流程。输入框里敲 <script>alert(1)</script>,看会不会弹窗。搜索框里粘 5000 个字符,看后端崩不崩。上传一个 0 字节的 .jpg,或者把 .exe 改成 .png 传上去。去年有个客户站,头像上传没校验文件头,有人传了个 PHP shell 进去,整个服务器被当矿机。测这些不需要多高深的技术,就是手贱一点。
链接检查用 wget --spider 递归跑一遍,或者装个 LinkChecker。死链、404、301 跳转链太长都记下来。我习惯把结果导出 CSV,按状态码排序,5xx 的优先修。有个政府网站首页底部“联系我们”指向了 localhost:8080,挂了两年没人发现。
跨浏览器测试别只开 Chrome。Edge 现在内核一样,但 Safari 经常出幺蛾子。比如 position: sticky 在 Safari 里配合 overflow 会失效,日期输入框的样式完全不一样,input[type=“date”] 在 Firefox 里长得像外星人。用 BrowserStack 或者本地装个虚拟机,至少覆盖 Chrome、Firefox、Safari 三个。移动端重点测 iOS Safari 和微信内置浏览器——后者坑最多,缓存策略诡异,localStorage 有时候写不进去。
性能测试上 Lighthouse,跑分低于 60 的页面直接打回。重点看 LCP(最大内容绘制)和 TBT(总阻塞时间)。有个新闻站 LCP 6.2 秒,原因是字体文件阻塞渲染,把 font-display: swap 加上就降到 2.1 秒。另外用 WebPageTest 测不同地域的加载速度,服务器放美国,国内用户访问要 8 秒,套个 CDN 能砍到 1.5 秒。
安全测试先跑 OWASP ZAP 的自动扫描,然后手动试几个点:登录接口有没有速率限制(用 Burp Suite 的 Intruder 跑 1000 次密码),Cookie 有没有设 HttpOnly 和 Secure,JWT 能不能篡改 alg 为 none。见过一个 API 把用户 ID 直接放 URL 里,改成别人的 ID 就能看订单,这叫 IDOR,属于低级但常见的漏洞。
最后一步:找个完全不懂技术的朋友,给他一个任务——“找到退款按钮并提交申请”。你坐在旁边别说话,看他卡在哪。他点错的地方、犹豫的地方、骂街的地方,就是你要改的地方。测试报告写再多,不如看真人抓耳挠腮五分钟。