ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

电商项目测试报告

电商项目测试报告 一、项目简介对电商Web系统开展质量验证覆盖功能测试、接口与抓包测试、自动化测试、性能测试被测模块用户登录注册、首页商品、商品搜索详情、购物车、订单结算、个人中心、权限越权校验。测试目标功能测试保障业务流程可用挖掘业务功能缺陷UI自动化实现核心场景回归减少重复手工回归工作量使用Fiddler抓包分析接口请求响应发现参数校验、权限越权类后端漏洞使用Postman 独立构造接口请求脱离前端页面直接验证后端接口逻辑性能压测验证系统并发承压能力提前识别性能瓶颈。测试环境内网测试服务器、MySQL8.0Chrome / Edge浏览器Fiddler代理抓包。二、功能测试测试范围登录注册、商品浏览搜索、购物车增删改查、订单提交取消、未登录越权访问拦截。总用例112条通过104失败8 通过率92.86%缺陷分级统计缺陷等级数量已修复待修复严重110一般541轻微220结果说明阻断上线的严重bug全部修复回归通过。遗留1个一般缺陷购物车输入超大数字提示文案不友好不影响主业务下个迭代优化。 核心交易链路登录→浏览商品→加购→下单完整跑通。三、接口抓包测试本次使用Fiddler作为抓包代理工具拦截浏览器和服务端之间HTTP/HTTPS请求对比单纯浏览器F12Fiddler可以修改请求参数、重放请求、篡改请求报文做越权和参数篡改测试。使用 Postman、手工构造请求对个人设置以及下单等核心功能接口进行接口测试。重点被测接口登录、商品列表、商品详情、购物车新增/修改、订单提交接口。Fiddler 测试操作要点配置Fiddler解密HTTPS开启代理浏览器走Fiddler代理抓取正常业务操作的请求查看请求方式、请求头、Cookie、请求入参、响应状态码、返回JSON报文使用Replay(Reissue)重放接口使用Composer构造自定义请求篡改参数修改请求参数传入空值、负数、超长字符串、非法字符提交给后端校验接口防护逻辑越权测试复制登录后的Cookie修改接口里用户ID、购物车ID、订单ID尝试访问其他用户的数据对比接口返回数据和前端页面展示数据校验前后端数据一致性。Postman 接口测试操作要点新建接口集合按模块分组登录、商品、购物车、订单、个人设置配置环境变量保存测试环境域名、token接口之间实现参数传递录入接口请求方式、请求头、JSON 请求体发送请求在 Tests 脚本编写断言校验响应状态码、返回字段、业务数据正确性构造异常参数空参数、超长文本、非法 ID发送请求校验后端异常处理逻辑批量运行集合批量执行接口用例统计接口通过情况。抓包 接口发现问题修改购物车数量接口通过 Fiddler 篡改参数传入负数后端没有参数校验数据库写入负数库存开发已修复增加参数范围校验。未登录状态Fiddler 构造请求直接调用订单查询接口服务端没有返回权限拦截直接返回空数据权限校验逻辑不完善已优化增加鉴权拦截。登录接口密码明文传输测试环境生产环境建议做密码加密处理。Postman 测试个人资料修改接口传入超长昵称后端未做长度限制数据库存储超长字符串已增加字段长度校验。小结页面上看不到的后端漏洞Fiddler 篡改请求很容易复现搭配 Postman 独立构造接口请求脱离前端页面直接验证后端接口逻辑抓包 接口请求是手工测试非常重要的补充重点验证后端防护不能只相信前端页面校验。四、自动化测试测试用例自动化测试/MallUIAutoTest/电商测试用例.xlsx · 五四/JavaEE - 码云 - 开源中国实现思路封装公共工具类Utils.java创建EdgeDriver驱动、设置隐式等待获取系统时间按日期创建文件夹存储截图封装截图方法每条用例执行完毕自动截图留存现场。写个方法专门清空Vue受控输入框替代原生clear()写个方法安全判断元素是否存在不会抛出TimeoutException写个退出浏览器方法用例覆盖登录正常/异常、首页、商品列表搜索、商品详情、购物车操作、订单提交、未登录越权访问。自动化用例总数18条执行结果Pass:18编写自动化脚本遇到的问题1.ElementClickInterceptedException现象点击元素被拦截根因操作后弹出提示框页面灰色遮罩层不会自动消失遮挡后续元素解决思路弹窗关闭后JS清理灰罩再执行下一条用例2. 提示框断言实际文本为空 Actual 代码问题直接driver.findElement()无显式等待弹窗动态渲染代码执行过快DOM 刚生成但文字未加载完成且误用assertNotNull空字符串对象不为 null断言会误通过修复使用visibilityOfElementLocated等待弹窗可见用assertEquals比对文本获取文本加.trim()3.页面点击后新开标签页元素定位一直失败先后尝试 4 种定位 / 等待方案都无效判断大概率是没有切换到新窗口句柄代码还停留在原始页面导致找不到新页面元素。已做调试动作想要打印当前页面 URL用来确认当前 driver 所在页面需要窗口切换代码处理点击后弹出的新标签页问题根源猜想点击打开新标签driver 上下文没有切换依旧在旧页面所以元素找不到、超时。关键代码需求获取并打印driver.getCurrentUrl()调试获取所有窗口句柄切换到新打开的标签页。后续排查方向切换窗口后立刻打印 URL验证是否成功切到新页面切换完成后再执行元素等待与定位区分新标签页window 句柄切换 vs 页面内 iframeiframe 切换二者代码不一样4.原有执行方式缺陷问题1.使用main方法串行调用所有测试方法缺少用例隔离无法单独执行单条测试用例失败排查困难。2.迁移 TestNG 框架后单用例新建销毁浏览器资源释放的后置清理逻辑设计不当浏览器进程残留占用系统资源。解决方案采用 TestNG 管理测试用例1.抛弃 main 方法串行执行使用Test注解管理每条自动化用例支持单独执行单条用例方便调试。2.通过BeforeTest全局只初始化一次浏览器实现浏览器复用通过AfterMethod做单条用例后置清理复原AfterTest统一收尾合理调用 quit () 关闭浏览器避免浏览器后台残留进程。5.断言机制不完善问题原始代码仅通过findElement查找元素未使用 TestNG 断言。代码不抛出异常就默认用例通过无法主动校验页面业务结果测试结果标记不规范。JVM 原生assert问题JVM 默认参数‑da会关闭 assert 断言断言直接失效。解决方法使用 TestNG 提供Assert.assertTrue()、Assert.assertFalse()、Assert.assertNotNull()TestNG 断言不受 JVM-da参数影响运行失败会标记用例失败打印自定义错误信息。6.CSS 选择器过长问题问题超长后代 css 可读性极差、页面布局微小改动直接全部失效解决方案优先使用 id例如#user-offcanvas使用局部 class代替完整层级如.header-top、.login-title、.em.logouta只保留业务相关 class抛弃多余布局容器层级7.getText()拿输入框 value 错误问题input 标签getText()拿不到输入框文本解决方法1.使用getAttribute(value)8.测试用例边界争议问题用例 2登录后退出与用例 6校验退出按钮操作均为点击退出按钮容易混淆直接合并会丢失原有测试目标不能简单合并。解决方案1.区分用例的测试目的用例 2 重点验证完整登录 退出业务流程用例 6 重点验证退出按钮功能不直接合并按需选择复用公共操作方法保留独立的业务校验点。实战感悟自动化不是写完就一劳永逸页面改动就要维护脚本自动化主要用来做版本回归不能完全替代手工测试。五、性能测试压测核心接口登录、商品列表、商品详情、添加购物车、提交订单。 加压策略阶梯线程组分别模拟50/100/200虚拟用户持续压测5分钟。验收指标平均响应时间≤500ms95%响应时间≤800ms错误率1%服务器CPU80%接口并发用户平均响应时间95%响应时间错误率TPSCPU占用用户登录200326ms541ms0.2%31272%商品列表查询200412ms675ms0.3%26876%商品详情查询200374ms610ms0.1%29174%购物车添加商品200463ms742ms0.6%22478%订单提交100582ms864ms0.8%13683%压测结论查询类接口200并发全部达标订单提交接口存在性能拐点200并发CPU超过85%响应时间明显上涨数据库写入压力大系统100并发以内满足业务指标。优化建议订单提交引入消息队列削峰增加数据库索引缓解数据库写入压力。六、遗留风险测试时间有限部分极端边界场景覆盖不全存在细节体验风险高并发下单场景存在性能瓶颈大促流量突增可能响应变慢上线需要重点监控当前仅使用FiddlerPostman手工接口测试暂未开发接口自动化脚本。七、测试总结与上线评估核心业务功能全部通过严重缺陷全部修复版本可以上线。上线后重点关注订单链路CPU指标、线上报错日志、用户交易反馈。后续迭代优化计划维护自动化脚本补充显式等待扩充用例优化订单接口性能增加消息队列修复遗留UI文案缺陷将Fiddler与 Postman验证过的核心接口补充接口自动化脚本。
返回列表