1. 我们公司的整个测试流程是怎样的?(以CRMEB开源商城系统为例)

作为实习生,我参与的测试流程主要围绕CRMEB商城系统展开,分为以下几个阶段:

  1. 需求理解

    • 产品经理提供需求文档(如新增“直播带货”功能),我会先阅读文档,对比系统原型图,标记不理解的部分,通过询问同事或查看帮助文档(如CRMEB的B站二开教程)明确测试目标。
  2. 测试用例设计

    • 根据需求拆分测试点,使用等价类划分场景法设计用例。例如测试“用户积分兑换优惠券”功能:
      • 有效场景:用户积分足够时兑换成功,积分扣除。
      • 无效场景:积分不足时提示“积分不够”,输入非数字字符时拦截提交。
    • 使用Excel编写用例,标注优先级(如核心功能P0,次要功能P1)。
  3. 用例评审与修改

    • 参与团队评审,开发指出“积分兑换并发问题”未覆盖(如多人同时兑换同一张券),补充“高并发场景”测试用例。
  4. 执行测试与提Bug

    • 冒烟测试:先验证核心流程,例如用户能否正常登录、商品加入购物车、下单支付。
    • 详细测试:逐条执行用例,使用Fiddler抓包检查接口返回。例如发现“优惠券叠加使用”时价格计算错误,通过禅道提交Bug(附截图和日志)。
    • 回归测试:开发修复后,重新验证Bug是否解决,并检查关联功能(如修复订单支付后,确认积分是否正常到账)。
  5. 上线前验收

    • 在预发布环境模拟真实用户操作,例如用手机测试H5端下单流程,确保与PC端数据同步。
    • 验证文档中提到的“页面DIY”功能,拖拽组件后页面渲染是否正常。
  6. 上线后跟踪

    • 监控线上日志(如查看ELK平台),协助复现用户反馈的问题。例如用户反馈“拼团成功后未收到通知”,排查后发现短信服务商接口限流,提交给运维处理。

实习生的视角补充

举例
在测试“直播带货”功能时,因对直播推流协议不熟悉,主动学习OBS工具,并参考CRMEB的直播模块接口文档,最终设计出“用户进入直播间-抢购商品-订单生成”的全链路测试场景,发现库存扣减时序错误,获得带教同事的认可。

2. 测试用例的设计方法有哪些?

常用的测试用例设计方法包括:

3. 这些方法在项目中如何应用?举例说明

① 等价类划分 + 边界值分析
药品采购系统的“采购数量”功能测试中:

② 场景法
CRMEB商城系统的“优惠券使用”流程中:

③ 错误推测法
4S系统的“客户信息导入”功能中:

④ 因果图法
在药品采购的“审批通过”条件中:

8. 你们调用的接口是内接口还是外接口?

在测试CRMEB开源商城系统时,我们调用的接口既有内部接口(系统内模块间交互),也有外部接口(依赖第三方服务)。以下是我的实际工作场景:


(1)内部接口

定义:系统自身前后端模块间的接口,例如用户登录、商品列表查询、订单生成等。
测试场景举例


(2)外部接口

定义:与第三方系统交互的接口,例如支付、短信、物流等。
测试场景举例


(3)实习中的学习与挑战


总结
作为实习生,我主要通过接口文档和团队协作区分内外接口。对内部接口侧重逻辑验证,对外部接口注重稳定性和异常处理,同时利用Mock工具降低测试成本。例如在CRMEB项目中,通过封禁真实短信接口,既完成了功能验证,又避免了测试资源浪费。

10. 测试环境搭建(实习生视角)

作为实习生,我并未直接参与环境搭建,但通过观察和文档学习,了解到公司的测试环境搭建流程大致如下(以CRMEB商城系统为例):


(1)基础流程(开发/运维主导)

  1. 代码获取

    • 从GitLab拉取CRMEB开源代码的指定分支(如test分支),使用docker-compose一键部署MySQL、Redis等依赖服务。
  2. 配置修改

    • 调整application.yml中的数据库连接、第三方API密钥(如微信支付测试商户号)等参数,指向测试环境资源。
  3. 依赖服务Mock

    • 对部分外部接口(如短信、支付)使用Postman Mock ServerApifox模拟响应,避免调用真实服务产生成本。
  4. 测试数据准备

    • 通过SQL脚本初始化测试账号(如预设账号test_user)、商品库存、优惠券规则等基础数据。
  5. 服务部署与启动

    • 后端:使用Jenkins构建Java服务并部署到测试服务器(如内网IP192.168.1.100:8080)。
    • 前端:通过Nginx代理静态资源,访问地址如test.crmeb.com

(2)实习生如何参与?

11. 上一家公司简介(海外贸易方向)

上一家公司是一家专注跨境电商B2B/B2C的平台服务商,主要面向欧美、东南亚市场,为中小外贸企业提供商品出海、跨境支付、国际物流等一站式解决方案。

核心业务

我的工作

技术栈:微服务架构、AWS云部署,测试侧重高并发下单、汇率转换等跨境场景。

13.分析潜在的需求,举个例子
在测试CRMEB商城系统的拼团功能时,我发现一个潜在需求:当用户发起拼团但未成团时,系统会无限期冻结商品库存。这在实际业务中可能导致热销商品被无效订单长期占用,比如在测试中模拟用户发起10人拼团后,即使24小时未成团,库存仍未释放。这一问题的发现源于两个场景:一是业务部门周会上运营同事提到"每次大促后总有顾客投诉商品显示有货却无法下单",二是压力测试时观察到大量库存被冻结导致后续真实订单失败。当时我通过日志分析发现,有35%的拼团订单超12小时未成团却仍占用库存,于是在缺陷报告中补充了"建议增加拼团库存释放机制"的观察,并主动调取了历史促销数据佐证。后来产品经理确认这是需求文档中遗漏的规则,最终推动开发增加了"智能释放"功能——根据商品热度动态调整冻结时长(普通商品2小时自动释放,爆款商品30分钟强制释放),这个改进使得后续大促期间的库存周转率提升了18%。

15.说一下你负责模块是如何设计测试用例的

21.写测试点你的思路布局是怎么样的
在实际工作中,我写测试点的思路大概分三步走。举个我在药品采购系统的例子吧:比如当时接到采购订单模块的需求,我首先会拿着需求文档和产品经理对齐流程,把采购发起、审批、库存扣减这些核心功能拆成小模块。 然后按正常流程和异常情况来铺测试点。比如正常下单要考虑不同药品类型能不能选,审批时权限对不对。异常情况比如库存不足时能不能拦截下单,审批人没填会不会弹提示。这些边界值和报错信息都是重点。 最后还会结合业务场景补充细节。像药品效期管理,会测试近效期药品下单时有没有提醒;采购单导出格式和权限控制也是必测项。有时候还会参考之前项目的测试用例,比如4S店系统里客户预约的时间冲突处理逻辑,和药品采购的库存互锁机制有点像,可以借鉴思路。过程中遇到不确定的,比如系统怎么处理同时多人提交采购,我就会直接找开发确认逻辑,避免漏测点。

22.Linux是拿来做什么
主要用在三个地方:

  1. 后台服务运行环境:像我们药品系统的JAVA后台接口,就是部署在Linux服务器上的。有次生产环境报500错误,开发就是用Xshell连Linux查的Tomcat日志。

  2. 数据库托管:测试环境的MySQL数据库装在CentOS系统,有次数据迁移时看运维同事通过命令行做的备份恢复。

  3. 自动化脚本执行:虽然我用的是Windows跑测试用例,但听同事说他们的持续集成工具Jenkins是装在Linux上的,每天自动执行接口测试。

其实CRMEB商城的安装文档里也有涉及(比如Nginx环境配置),虽然当时用宝塔面板简化了操作,但底层还是基于Linux的。作为测试,我觉得掌握基础命令比如查看日志(tail -f)、查进程(ps -aux)这些,对定位环境问题会很有帮助

2.开发和测试相关的项目周期流程?
根据我在4S店系统和药品采购系统测试中的实际经历,整个项目流程大概是这样的:

最开始会参与需求评审会,比如药品系统的采购审批流程改动,产品经理拿着原型图讲业务逻辑,我们测试要确认哪些功能点需要重点覆盖。这时候我会边听边记,把模糊的需求当场问清楚(像上次药品库存预警阈值没写具体数值,后来专门找业务方确认了规则)。

开发阶段我们也没闲着,得写测试用例。用XMind画过药品入库流程的思维导图,把正常采购、库存不足、供应商资质过期这些场景都拆解成具体步骤。等开发提测后,先做冒烟测试——比如4S店的客户预约功能,先跑通主流程确保系统能测下去,不然直接退给开发返工。

正式测试时,像测CRMEB商城的优惠券功能,既要验证领券/核销的正常逻辑,又得检查并发抢券会不会出问题(虽然当时是用JMeter简单压测的)。发现bug就用禅道提交,配上报错日志截图和复现步骤,有次开发说在他本地没问题,结果发现是测试环境Linux服务器时间和数据库没同步导致的。

测试通过后还有验收环节,比如和业务部门一起过药品采购的审批流,他们拿着真实业务数据来操作,我们得跟着记录问题。最后上线前要核对部署清单,记得有次因为漏传了一个配置文件,导致H5页面打不开,后来运维在Linux上重启Nginx才解决。

其实像CRMEB这种开源项目迭代更快,我们当时给商城加直播功能时,基本是两周一个版本。测试得跟着版本节奏走,虽然压力大,但流程更紧凑,开发一边改BUG我们一边回归,还用Git打Tag区分测试版本。现在想想,要是能早点接触自动化测试,可能回归测试效率会更高,这也是我接下来想学的部分。

怎么区分一个bug是前端还是后端?

  1. 看接口交互:用浏览器F12抓网络请求(比如药品采购提交失败时),如果前端根本没发请求→前端问题;请求参数正确但接口返回错误→后端问题(比如优惠券接口返回500错误)

  2. 换端验证:比如H5页面显示"库存为-1",用Postman调接口发现库存数据正常→前端没做负数兜底显示;若接口返回就是-1→后端计算逻辑错误

  3. 查日志定位:像4S店系统预约时间报错时,前端控制台没报错,但Linux服务器上查到的Tomcat日志里有空指针异常→肯定是后端问题

11.支付场景涉及到的你能考虑到哪些场景?(支付成功,支付争议,
支付退款,支付金额)
结合在CRMEB商城和4S店系统的测试经验,支付场景主要覆盖这些测试点:

  1. 支付成功
  1. 支付争议
  1. 支付退款
  1. 支付金额

特别注意:在CRMEB测试中,用Charles模拟过"支付成功但回调被劫持篡改",验证系统签名校验机制;还测过Nginx配置错误导致支付页面HTTP被强制跳HTTPS,引发跨协议支付失败的问题。

12.你进入到一个新的项目,你怎么快速熟悉?
结合我在4S店系统和CRMEB商城的经验,如果接手新项目,我会分三步走:
第一步“啃文档”:比如刚接触药品采购系统时,先扒拉需求文档和接口文档,重点看业务流程图(比如采购审批的节点流转),用XMind把核心功能模块的关系图画出来。遇到CRMEB商城这种开源项目,直接看他们Gitee上的Wiki和数据库字典,快速理清优惠券和订单的关联表结构。

第二步“摸系统”:直接上手操作测试环境,比如在4S店系统里走一遍客户预约全流程,用F12抓接口看数据流向,顺带翻服务器日志(像Nginx访问日志和Java应用日志)。如果有现成的自动化测试用例(比如CRMEB的接口自动化脚本),就边跑边看断言逻辑,能快速理解关键校验点。

第三步“问”:拉着产品经理过一遍业务背景(比如药品采购的合规性要求),跟开发聊技术实现(像4S店系统的第三方支付对接方案),再和测试老员工要测试用例库和常见Bug清单。之前在CRMEB项目,就是靠同事给的“优惠券并发测试方案”,省了一半写用例的时间。

实战例子:刚进药品项目时,发现采购单导出Excel总是乱码,通过查文档发现系统默认UTF-8编码,但服务器没装中文字体;又比如在CRMEB商城,通过跑一遍订单退款流程,发现退款状态没同步到前端,其实是后端用了不同的状态枚举值——这些踩坑过程反而是快速熟悉系统的捷径。