什么是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

数据库信息

  1. 地址:rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
  2. 端口号:3306
  3. 用户名:fanmao85
  4. 密码:123@fanmao

今天以 https://www.72crm.com/
这个为例,来讲解一下 crm系统。
image.png

业务流程

一般情况下,做互联网项目,测试都是 app端和 web 端结合在一起测试。
app 端: https://www.72crm.com/app
web端: https://www.72crm.com/72crm/#/crm/workbench

仪表盘

打开首页,登录进来之后可以看到对应的数据。
image.png

相关问题

1. 上面的数据怎么测试?

  • 抓包 (Fiddler,Charles 工具)
  • 挡板 Mock
  • 结合数据库进行测试, 因为上面的每天数据都在数据库中有保存。可以编写sql查询语句。
  • 手工测试,从功能方面进行测试。

image.png比如这里的2人,可以去客户模块 新建一个客户,然后再回来 检查 新增客户的数量有没有加1.

仪表盘中显示的主要就是数据,所以测试的时候重点查看展示数据是否正确。
测试数据是否正确:
下面分别演示一下 Charles,Fiddler 工具的使用(企业中能用1个就行)。

Fiddler抓包

a. 从接口层面来继续测试。从页面中抓包,看接口返回的结果与页面上显示是否一致。
image.png
可以看到接口中返回的数据根页面上显示保持一致。但是数据量比较小。如果要更改数据,查看前端显示曲线是否正常。或者 当两个月之间数据相差很大的时候,数据显示是否正常,也可以通过挡板来模拟假数据。

挡板

使用Fiddler 工具进行挡板操作。
image.png

    1. 找到对应请求,选中
    1. 打开【AutoResponder】,添加规则 【Add Rule】
    1. 下拉选择已经准备好的数据。

data.json
将自定义的数据放进去即可。
image.png
保存完成之后,再次进行操作。可以看到效果。

练习

更改接口Mock 数据 https://www.72crm.com/api-11/biCrmInstrument/salesTrend
image.png

  1. 抓包,从所有请求中进行搜索。

image.png
b. 找到对应的请求。修改接口返回结果。
image.png
在TextView中可以 复制返回结果。 也可以点击 ④ 直接在记事本中打开。数据修改完成之后保存到桌面
image.png
sales20220523.json
打开AutoRespinder, 添加挡板。将请求添加进来。选择文件
image.png
上传已经写好的文件,保存。
image.png
再次刷新页面。可以查看结果。
image.png
可以看到数据能够一一对应上,说明前端的图表功能是ok, 当然,你也可以再次修改数据,刷新页面,查看效果。

Charles 抓包

先抓包,找到服务器返回结果。
image.png
可以将返回结果复制出来之后,在记事本中进行修改,修改完成之后保持。
sales20220523.json
在请求上【右键】—【Map Local】
image.png
在弹出的对话框中 选择自己已经改好的文件。
image.png
点击 【OK】。完成之后,可以在 工具栏中看到已经设置好的的规则。
image.png
已经添加的挡板规则。
image.png
刷新页面,可以看到执行的效果。
image.png

2.给你这样的页面,怎么进行测试?

线索模块

线索模块.png
线索是客户产生机会的最前端,一般是举行活动,电话咨询、老客户介绍等多样方式获得的客户初级信息称为线索。
image.png
需要注意:

  1. 【线索名称】 中的工商信息,调用第三方接口。
  2. 【下次联系时间】 根消息通知模块关联测试,设置时间会在对应的时间段内发送消息通知(默认提前15分钟通知)

    抓包

    image.png
    点击【保存】。查看包信息。
    image.png

    接口测试

    添加线索
    请求地址: 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)格式复制
image.png
打开Postman,选择【Import】 导入
image.png
复制请求中的内容
image.png
选择【import】
image.png
可以看到 已经将数据都导入进来
image.png
image.png
可以看到执行成功。
image.png
页面中可以看到新加的数据。
image.png

JMeter 做接口测试

新建线程组
image.png
选择【工具】—【Import from Curl】
image.png
粘贴复制的内容。 勾选【Add Cookie】
image.png

可以看到已经将主要的内容导入进来
image.png

image.png
运行查看结果。
可以看到能够发送成功,如果有乱码,添加UTF8
image.png

主要的接口

  1. 添加线索
  2. 查询线索
  3. 查重
  4. 修改线索
  5. 删除线索

主要数据库表

image.png

  • wk_crm_leads 线索表
  • wk_crm_leads_data 线索自定义字段存值表
  • wk_crm_leads_user_star 用户线索标星关系表

如何介绍

在面试的时候,从两个方面给面试官介绍项目。

  1. 介绍主要功能:
    1. 线索的增删改查操作。
      1. 新建线索中的主要字段。名称,来源,类型,工商信息。
    2. 根其他模块联合测试:
      1. 工商信息
      2. 设置下次联系时间, 消息通知模块
      3. 新建线索—-转化 为客户,根客户模块联合测试。
  2. 介绍测试用到的工具:
    1. 数据库。都有哪些表,表中的主要字段。
      1. 根上面功能结合一起测试,比如线索转化为客户,在数据库中使用 is_transform字段来表示。 1表示已经转换,0 表示未转换。
    2. 接口。 抓包工具,
      1. 接口抓包工具的使用。
      2. postman 、jmeter 接口关联。

客户模块

客户模块.png

  • 客户 就是一个 公司。这里系统中的客户定义 是以公司为单位。
  • 公海 目前来说没有人员负责的客户。(比如张三离职了。 张三之前负责的客户放入公海,可以指定人负责,也可以是其他人来认领。)
  • 附近客户

    相关业务

  1. 客户放入公海的规则是什么?

1:用户主动选中客户放入公海供其他用户认领。即用户在自己的客户管理界面选中目标客户点击放入公海按钮即可。
2:客户因满足一定的公海规则自动掉入公海。即管理员配置公海规则,比如10天内未跟进则的客户自动掉入公海,并选中目标员工,受用于该规则的员工其所拥有的客户如果在10天内没有跟进,在未锁定的状态下则自动进入公海,供其他员工认领。

  1. 与其他功能模块关联。

image.png

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":"广州凡猫贸易有限公司"}}

接口流程

CRM 客户关系管理系统-1 - 图41

数据库

image.png

面试问题

  1. 数据库中有多少张表? 总共有多少个接口?

表 150+
接口:300+

  1. 在这个项目中,你是怎么使用挡板Mock数据的? 结合你的项目举个例子。

在项目开发的初期,前端开发和后端开发是同时分开做的,前端做仪表盘的时候,因为后端接口还没有开发出来。但是要测试显示的效果。 这边前端开发和后端开发统一的有接口说明。这边我根据接口统一说明的后端返回结果,使用Fiddler 工具mock 数据,将数据写在一个json文件中,在【AutoResponder】中添加返回结果。来检查前端页面的显示效果。
等后端开发接口之后,关掉Mock 直接调用接口就行了。

  1. 最近发现的Bug 简单说下。

image.png
bug 描述: 客户跟进记录Bug, 最近在客户管理中,多客户跟进,下次跟进时间正常来说,只能设置今天以后的时间,但是系统上却能设置昨天之前的时间。属于界面Bug。

相关链接:

Charles : https://www.yuque.com/imhelloworld/bypiud/og3lhy
Charles 视频教程:

作业:

  1. 线索模块,使用postman 或者 Jmeter工具,完成如下接口上下游传参。
    1. 新建线索
    2. 查询线索
    3. 修改线索
    4. 删除线索

在查询接口中将id提取出来。设置为变量image.png

// 服务器返回的结果
var jsondata = pm.response.json();
// 提取变量
var leadsid =jsondata["data"]["list"][0]["leadsId"]
pm.globals.set("leadid",leadsid);

作业参考
crm系统.postman_collection.json


image.png
线索功能.jmx