一、项目背景
以抽奖活动作为背景的SpringBoot项目,通过这个项目提供一个全面、可靠、易于维护的抽奖平台,该平台将采用以下策略:
- 集成多种技术组件:利用MySQL、Redis、RabbitMQ等常用组件,构建一个稳定、高效、可扩展的抽奖系统。
- 活动、奖品与人员管理:允许管理员创建配置抽奖活动;管理奖品信息;管理人员信息。
- 实现状态机管理:通过精心设计的状态机,精确控制活动及奖品状态的转换,提高系统的可控和可预测性。
- 保障数据一致性:通过事务管理和数据同步机制,确保数据的一致性和完整性。
- 加强安全性:实施安全措施,包括数据加密、用户认证,保护用户数据和系统安全。
- 降低维护成本:提供全面的日志记录和异常处理机制,简化问题诊断和系统维护。
- 提高扩展性:采用模块化设计与设计模式的使用,提高系统的灵活性和扩展性。
二、项目功能
人员模块:包括注册,注册包括注册管理员,和管理员去注册普通用户,登录只允许管理员登录;
奖品模块;包括奖品信息的注册,奖品图片的提交,完成奖品的注册;
活动模块:包括圈选参与抽奖的用户、参与抽奖的奖品(奖品的等级,数量),活动的描述信息来完成活动的创建;
抽奖模块:从一等奖开始抽,随机从参与抽奖的人员随机抽取相对应的人数,二等奖也是,三等奖也如此,再进行短信和邮箱的通知;
三、测试计划
(1)功能测试
注册测试:对没有填写的信息进行提示
对姓名、邮箱、电话号码进行唯一校验
登录模块(手机号码不存在-提醒登录信息错误,密码错误,验证码错误)
普通用户注册模块(管理员执行)-姓名、邮箱、手机号都是唯一的
获取人员的列表(包括管理员和普通用户)
创建奖品-包括上传图片
获取奖品列表
开始创建活动-填写抽奖活动信息-圈选奖品-圈选人员(仅限普通用户)
在活动中心第一个就是自己新建的活动,点击去抽奖就可以开始抽奖,抽奖行为只能由管理员执行
开始抽奖(这里只是展示抽一个奖项-对中奖人员进行邮箱和手机短信通知)
展示最终的结果
(2)自动化测试
1、针对项目的登录,注册,创建奖品,人员,创建活动以及圈选人员和奖品,以及进行抽奖等主要功能进行自动化测试
2、自动化测试一般步骤:
1)使用脑图编写web自动化测试用例
2)创建自动化项目,根据用例来实现脚本
3、脑图
4.测试接口的拆分
公共类(AutoTestUtil)
- 完成驱动的初始化(createDriver);
- 截图(getScreenShot);
- 获取警告信息(getAlertMessage);
- 全局使用显示等待
注册
- 使用时间戳作为随机数,对用户信息进行模拟注册
- 校验注册是否成功
登录
- 对手机号码错误,密码错误,正常登录都进行测试
主页功能测试
- 创建活动-模拟用户创建的完整流程
- 创建奖品-创建完成之后对信息进行校验
- 创建用户-使用时间戳进行模拟注册信息
- 开始抽奖,校验抽奖信息
自动化测试代码
通过完全,完整的自动化实现对项目功能的基本校验;
(3)性能测试
使用jmeter进行简单性能测试:针对所有的接口进行性能测试,包括注册,登录,注册普通用户,获取用户列表,创建奖品,获取奖品列表,创建活动,获取活动列表,抽奖接口的测试;
由于自己电脑硬件条件有限,开始1000个线程,每秒增加200个,增加到1000个线程的时候保持运行20秒,此后每秒停止100个线程。
实现的线程组
使用命令行 Jmeter -n -t 脚本文件 -l 日志文件 -e -o 目录 进行性能测试生成性能测试报告
性能测试报告
每秒事务数-折线图
响应时间折线图
性能报告
性能报告分析
第一张图片
-
APDEX(应用性能指数):
-
APDEX 是一个衡量用户体验的指标,范围从0到1,1表示最佳用户体验。
-
所有请求的APDEX值都在0.6到0.9之间,表明用户体验较好。
-
每个请求的响应时间(T)和容忍阈值(T)都是500毫秒,挫折阈值(F)是1秒到500毫秒。
-
标签列显示了每个请求的具体名称,例如“BeanShell 取样器”、“抽奖”、“注册”等。
-
-
请求摘要:
-
饼图显示了请求的通过率(PASS)为100%,没有失败的请求(FAIL)。
-
第二张图片
-
统计数据:
-
Requests: 总请求数为64334。
-
Samples: 总样本数为64334。
-
Fail: 失败请求数为0,失败率为0.00%。
-
Error %: 错误率为0.00%。
-
Average: 平均响应时间为492.48毫秒。
-
Min: 最小响应时间为0毫秒。
-
Max: 最大响应时间为3236毫秒。
-
Median: 中位数响应时间为261.00毫秒。
-
90th pct: 90%分位响应时间为612.00毫秒。
-
95th pct: 95%分位响应时间为828.85毫秒。
-
99th pct: 99%分位响应时间为1108.99毫秒。
-
Throughput: 吞吐量为1496.06次/秒。
-
Transactions: 事务数为3736.21次。
-
Received: 接收到的数据量为19044.30 KB。
-
Sent: 发送的数据量为0.00 KB。
-
-
响应时间:
-
每个请求的响应时间统计数据,包括最小值、最大值、中位数、90%、95%和99%分位响应时间。
-
例如,“BeanShell 取样器”的响应时间中位数为1.00毫秒,90%分位响应时间为2.00毫秒,99%分位响应时间为3.00毫秒。
-
-
网络(KB/sec):
-
每个请求的接收和发送数据量统计数据。
-
例如,“BeanShell 取样器”接收的数据量为25.77 KB,发送的数据量为1963.64 KB。
-
-
错误:
-
没有错误记录,总错误数为0。
-
-
按采样器统计的前5个错误:
-
没有错误记录,总错误数为0。
-
总结
-
测试结果显示所有请求都成功通过,没有失败或错误。
-
平均响应时间为492.48毫秒,用户体验较好(APDEX值较高)。
-
吞吐量和事务数较高,表明系统性能良好。
-
网络数据传输量较大,接收和发送的数据量都较高。
总体来看,系统在本次测试中表现良好,没有明显性能瓶颈或错误