什么是CRM 客户关系管理系统?
参考链接:
https://www.salesforce.com/cn/learning-centre/crm/what-is-crm/
客户关系管理,通过平台进行客户的管理, 方便管理者能够快速知道整个公司的运营情况。
http://www.woshipm.com/pmd/230550.html
开源项目
可以在github 或者 gitee 上面找一些 start 比较多的项目。
数据库文件
wk_crm_single.sql
数据库信息
地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
端口号:3306
用户名:fanmao85
密码:123@fanmao
今天以 https://www.72crm.com/
这个为例,来讲解一下 crm系统。
业务流程
一般情况下,做互联网项目,测试都是 app端和 web 端结合在一起测试。
app 端: https://www.72crm.com/app
web端: https://www.72crm.com/72crm/#/crm/workbench
仪表盘
相关问题
1. 上面的数据怎么测试?
- 抓包 (Fiddler,Charles 工具)
- 挡板 Mock
- 结合数据库进行测试, 因为上面的每天数据都在数据库中有保存。可以编写sql查询语句。
- 手工测试,从功能方面进行测试。
比如这里的2人,可以去客户模块 新建一个客户,然后再回来 检查 新增客户的数量有没有加1.
仪表盘中显示的主要就是数据,所以测试的时候重点查看展示数据是否正确。
测试数据是否正确:
下面分别演示一下 Charles,Fiddler 工具的使用(企业中能用1个就行)。
Fiddler抓包
a. 从接口层面来继续测试。从页面中抓包,看接口返回的结果与页面上显示是否一致。
可以看到接口中返回的数据根页面上显示保持一致。但是数据量比较小。如果要更改数据,查看前端显示曲线是否正常。或者 当两个月之间数据相差很大的时候,数据显示是否正常,也可以通过挡板来模拟假数据。
挡板
使用Fiddler 工具进行挡板操作。
- 找到对应请求,选中
- 打开【AutoResponder】,添加规则 【Add Rule】
- 下拉选择已经准备好的数据。
data.json
将自定义的数据放进去即可。
保存完成之后,再次进行操作。可以看到效果。
练习
更改接口Mock 数据 https://www.72crm.com/api-11/biCrmInstrument/salesTrend
- 抓包,从所有请求中进行搜索。
b. 找到对应的请求。修改接口返回结果。
在TextView中可以 复制返回结果。 也可以点击 ④ 直接在记事本中打开。数据修改完成之后保存到桌面
sales20220523.json
打开AutoRespinder, 添加挡板。将请求添加进来。选择文件
上传已经写好的文件,保存。
再次刷新页面。可以查看结果。
可以看到数据能够一一对应上,说明前端的图表功能是ok, 当然,你也可以再次修改数据,刷新页面,查看效果。
Charles 抓包
先抓包,找到服务器返回结果。
可以将返回结果复制出来之后,在记事本中进行修改,修改完成之后保持。
sales20220523.json
在请求上【右键】—【Map Local】
在弹出的对话框中 选择自己已经改好的文件。
点击 【OK】。完成之后,可以在 工具栏中看到已经设置好的的规则。
已经添加的挡板规则。
刷新页面,可以看到执行的效果。
2.给你这样的页面,怎么进行测试?
线索模块
线索是客户产生机会的最前端,一般是举行活动,电话咨询、老客户介绍等多样方式获得的客户初级信息称为线索。
需要注意:
- 【线索名称】 中的工商信息,调用第三方接口。
- 【下次联系时间】 根消息通知模块关联测试,设置时间会在对应的时间段内发送消息通知(默认提前15分钟通知)
抓包
点击【保存】。查看包信息。
接口测试
添加线索
请求地址: https://www.72crm.com/api-11/crmLeads/add
请求方法:Post
请求header:
admin-token | 6ee30024b00146029737694d4e409172 |
---|---|
请求body:
{"entity":{"leadsName":"网易宝有限公司","telephone":"","mobile":"","address":"","nextTime":"2022-05-25 00:00:00","remark":"","email":""},"field":[{"fieldName":"source","fieldType":2,"name":"线索来源","type":3,"fieldId":"651037","value":"搜索引擎"},{"fieldName":"industry","fieldType":2,"name":"客户行业","type":3,"fieldId":"651038","value":"金融业"},{"fieldName":"level","fieldType":2,"name":"客户级别","type":3,"fieldId":"651039","value":"B(普通客户)"}]}
返回结果
{"code":0,"msg":"success","data":null}
抓到包之后, 使用Postman 或者JMeter 工具来做接口测试。
Postman 工具接口 测试
抓到包之后可以直接将请求数据导入到Postman中。
复制请求,在对应的包上右键—【复制】—【以Curl(bash)格式复制】
打开Postman,选择【Import】 导入
复制请求中的内容
选择【import】
可以看到 已经将数据都导入进来
可以看到执行成功。
页面中可以看到新加的数据。
JMeter 做接口测试
新建线程组
选择【工具】—【Import from Curl】
粘贴复制的内容。 勾选【Add Cookie】
可以看到已经将主要的内容导入进来
运行查看结果。
可以看到能够发送成功,如果有乱码,添加UTF8
主要的接口
- 添加线索
- 查询线索
- 查重
- 修改线索
- 删除线索
主要数据库表
- wk_crm_leads 线索表
- wk_crm_leads_data 线索自定义字段存值表
- wk_crm_leads_user_star 用户线索标星关系表
如何介绍
在面试的时候,从两个方面给面试官介绍项目。
- 介绍主要功能:
- 线索的增删改查操作。
- 新建线索中的主要字段。名称,来源,类型,工商信息。
- 根其他模块联合测试:
- 工商信息
- 设置下次联系时间, 消息通知模块
- 新建线索—-转化 为客户,根客户模块联合测试。
- 线索的增删改查操作。
- 介绍测试用到的工具:
- 数据库。都有哪些表,表中的主要字段。
- 根上面功能结合一起测试,比如线索转化为客户,在数据库中使用
is_transform
字段来表示。 1表示已经转换,0 表示未转换。
- 根上面功能结合一起测试,比如线索转化为客户,在数据库中使用
- 接口。 抓包工具,
- 接口抓包工具的使用。
- postman 、jmeter 接口关联。
- 数据库。都有哪些表,表中的主要字段。
客户模块
- 客户 就是一个 公司。这里系统中的客户定义 是以公司为单位。
- 公海 目前来说没有人员负责的客户。(比如张三离职了。 张三之前负责的客户放入公海,可以指定人负责,也可以是其他人来认领。)
- 附近客户
相关业务
- 客户放入公海的规则是什么?
1:用户主动选中客户放入公海供其他用户认领。即用户在自己的客户管理界面选中目标客户点击放入公海按钮即可。
2:客户因满足一定的公海规则自动掉入公海。即管理员配置公海规则,比如10天内未跟进则的客户自动掉入公海,并选中目标员工,受用于该规则的员工其所拥有的客户如果在10天内没有跟进,在未锁定的状态下则自动进入公海,供其他员工认领。
- 与其他功能模块关联。
- 活动, 活动中可以添加跟进记录。
相关接口
添加客户
请求地址: https://www.72crm.com/api-11/crmCustomer/add
请求方式: Post
请求Header:
Admin-Token | 6ee30024b00146029737694d4e409172 |
---|---|
请求body
{"entity":{"customerName":"广州凡猫贸易有限公司","telephone":"","website":"","nextTime":"2022-05-24 00:00:00","remark":"","email":"","mobile":"","address":""},"field":[{"fieldName":"level","fieldType":2,"name":"客户级别","type":3,"fieldId":"651040","value":"A(重点客户)"},{"fieldName":"industry","fieldType":2,"name":"客户行业","type":3,"fieldId":"651041","value":"金融业"},{"fieldName":"source","fieldType":2,"name":"客户来源","type":3,"fieldId":"651042","value":"广告"}]}
响应结果
{"code":0,"msg":"success","data":{"customerId":"1528656830419881984","customerName":"广州凡猫贸易有限公司"}}
接口流程
数据库
面试问题
- 数据库中有多少张表? 总共有多少个接口?
表 150+
接口:300+
- 在这个项目中,你是怎么使用挡板Mock数据的? 结合你的项目举个例子。
在项目开发的初期,前端开发和后端开发是同时分开做的,前端做仪表盘的时候,因为后端接口还没有开发出来。但是要测试显示的效果。 这边前端开发和后端开发统一的有接口说明。这边我根据接口统一说明的后端返回结果,使用Fiddler 工具mock 数据,将数据写在一个json文件中,在【AutoResponder】中添加返回结果。来检查前端页面的显示效果。
等后端开发接口之后,关掉Mock 直接调用接口就行了。
- 最近发现的Bug 简单说下。
bug 描述: 客户跟进记录Bug, 最近在客户管理中,多客户跟进,下次跟进时间正常来说,只能设置今天以后的时间,但是系统上却能设置昨天之前的时间。属于界面Bug。
相关链接:
Charles : https://www.yuque.com/imhelloworld/bypiud/og3lhy
Charles 视频教程:
作业:
- 线索模块,使用postman 或者 Jmeter工具,完成如下接口上下游传参。
- 新建线索
- 查询线索
- 修改线索
- 删除线索
在查询接口中将id提取出来。设置为变量
// 服务器返回的结果
var jsondata = pm.response.json();
// 提取变量
var leadsid =jsondata["data"]["list"][0]["leadsId"]
pm.globals.set("leadid",leadsid);
作业参考
crm系统.postman_collection.json