当前位置: 首页 > news >正文

智能滚动抽奖--测试报告

目录

一、项目背景

二、项目功能

三、测试计划

一)单元集成测试:

二)功能测试:

三)自动化测试:

四)存在问题

五)测试结果评估

四、总结


一、项目背景

  1.随着数字营销的兴起,企业越来越重视通过在线活动来吸引和留住客户。抽奖活动作为⼀种有效的营销⼿段,能够显著提升⽤⼾参与度和品牌曝光率。于是我就开发了以抽奖活动作为背景的Spring Boot项⽬,通过这个项⽬提供⼀个全⾯、可靠、易于维护的抽奖平台。

  2.智能滚动抽奖采用前后端分离的方法来实现,同时使用了数据库来存储相关的数据,同时将其部署到云服务器上。前端有注册页面,登陆页面,活动详情页,活动创建页,奖品创建页,人员创建页,结合后端主要实现了注册登录管理员用户,创建奖品,创建活动,奖品详情展示。

二、项目功能

  智能滚动抽奖项目主要实现了以下多个功能:注册,登录,创建人员,创建奖品,创建活动,对活动进行抽奖等功能

  注册页面:用户输入姓名,邮箱,手机号,密码这些信息,传入给后端,后端通过相关接口对手机号以及密码等信息加密并存储到数据库中,之后弹窗一个“注册成功“,并跳转到登录页面。

  登录:分为密码登录以及验证码登录,密码登录:用户输入手机号以及密码,传入到后端与数据库中的数据进行比较。验证码登录:用户输入手机号以及收到的验证码,与后端保存到redis中的验证码进行比较,一致便登录成功进入到活动详情页。

  创建人员以及奖品:用户输入姓名,邮箱,手机,后端将这些内容存入到数据库中进行保存。用户输入奖品名称,奖品图片,奖品价格,奖品描述到后端,后端也是通过数据库进行保存。

  创建活动:用户在前端输入活动名称,活动描述以及圈选奖品,全选人员,来创建活动,后端拿到数据之后,存入到redis以及数据库中。

三、测试计划

一)单元集成测试:

对每一个所写的接口以及第三方服务进行测试:

部分单元集成测试代码:

@SpringBootTest
public class EncryptTest {// 密码  哈希加密  sha256@Testvoid sha256Test(){String encrypt = DigestUtil.sha256Hex("123456789");System.out.println("结果:"+encrypt);// 15e2b0d3c33891ebb0f1ef609ec419420c20e320ce94c65fbc8c3312448eb225}// 手机号 对称加密  AES@Testvoid AESTest(){// 密钥// 长度是16字节(128位),24字节(192位),32字节(256位)byte[] key = "123456789bcdefg1".getBytes(StandardCharsets.UTF_8);// 加密AES aes = SecureUtil.aes(key);String encrypt = aes.encryptHex("123456789");System.out.println("AES加密结果:"+encrypt);// 9c365978d3a8cfecdb3782a43410a595// 解密System.out.println("AES解密结果:"+aes.decryptStr(encrypt));// 123456789}@Testvoid AESTest2(){// 哈希加密String encrypt = DigestUtil.sha256Hex("123456789");System.out.println(encrypt);// 对称密钥byte[] key = "123456789abcdefg".getBytes(StandardCharsets.UTF_8);// 加密AES aes = SecureUtil.aes(key);String encrypt2 = aes.encryptHex("123456789");System.out.println(encrypt2);// 解密System.out.println(aes.decryptStr(encrypt2));}
}
@SpringBootTest
public class JacksonTest {@Testvoid JacksonTest(){// 序列化必须使用ObjectMapper进行ObjectMapper objectMapper = new ObjectMapper();CommonResult<String> result = CommonResult.error(500,"系统错误");String str;// 序列化try {str = objectMapper.writeValueAsString(result);System.out.println(str);} catch (JsonProcessingException e) {throw new RuntimeException(e);}// 反序列化try{CommonResult<String> readResult = objectMapper.readValue(str,CommonResult.class);System.out.println(readResult.getCode()+","+readResult.getMsg());} catch (JsonProcessingException e) {throw new RuntimeException(e);}// List的序列化List<CommonResult<String>> commonResults = Arrays.asList(CommonResult.success("success1"),CommonResult.success("success2"));try {str = objectMapper.writeValueAsString(commonResults);System.out.println(str);} catch (JsonProcessingException e) {throw new RuntimeException(e);}// List的反序列化// ***JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class,CommonResult.class);try {commonResults = objectMapper.readValue(str,javaType);for(CommonResult<String> commonResult:commonResults){System.out.println(commonResult.getData());}} catch (JsonProcessingException e) {throw new RuntimeException(e);}}@Testvoid JacksonUtilTest(){CommonResult<String> result = CommonResult.success("success");String str;// 序列化str = JacksonUtil.writeValueAsString(result);System.out.println(str);// 反序列化result = JacksonUtil.readValue(str,CommonResult.class);System.out.println(result.getData());// List的序列化List<CommonResult<String>> commonResults = Arrays.asList(CommonResult.success("success1"),CommonResult.success("success2"));str = JacksonUtil.writeValueAsString(commonResults);System.out.println(str);// List的反序列化commonResults = JacksonUtil.readListValue(str,CommonResult.class);for(CommonResult<String> commonResult:commonResults){System.out.println(commonResult.getData());}}
}

详情代码地址:别像我这么帅/Javacode - Gitee.com

二)功能测试:

登录页面测试用例设计:

3.实际执行测试的部分操作步骤/截图

1.注册:

2.登录:

3.活动中心:

4.创建人员及奖品:

5.创建活动:

6.中奖详情页面:

功能测试结果:测试用例100%通过。

三)自动化测试:

  使用selenium自动化测试软件对项目进行测试。

  自动化测试覆盖模块:登录,后台中心,奖品人员创建,活动创建,中奖详情页面等。

  部分自动化测试代码:

public class LoginPage extends Utils {public static String url = "http://47.109.67.57:8080/blogin.html";public LoginPage() {super(url);}// 检查页面是否加载成功public void LoginPageRight(){driver.findElement(By.cssSelector("body > div.login-box.row > div.img-box.col-sm-6.col-md-6.col-lg-7.col-xl-7 > img"));// 登录框是否能点击driver.findElement(By.cssSelector("#phoneNumber"));}// 检查登录功能--成功登录public void LoginSuc(){driver.findElement(By.cssSelector("#phoneNumber")).clear();driver.findElement(By.cssSelector("#password")).clear();// 输入内容driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13984894529");driver.findElement(By.cssSelector("#password")).sendKeys("123456789");//检查点击登陆之后是否登陆成功driver.findElement(By.cssSelector("#loginForm > button")).click();String expect = driver.getTitle();assert expect.equals("活动中心");driver.navigate().back();}// 检查登录功能--失败登录public void LoginFail(){// 保证之前的输入被清理掉driver.navigate().refresh();driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("13984894529");driver.findElement(By.cssSelector("#password")).sendKeys("123456");// 提交driver.findElement(By.cssSelector("#loginForm > button")).click();String res = driver.findElement(By.cssSelector("body")).getText();assert res.equals("登录错误!");}
}
public class PrizePage extends Utils {public static String url = "http://47.109.67.57:8080/admin.html";public PrizePage() {super(url);}public void PrizePageRight(){driver.findElement(By.cssSelector("#userList"));driver.findElement(By.cssSelector("body > div > button")).click();}// 创建失败public void PrizeCreateFail(){// 保证之前的输入被清理掉driver.navigate().refresh();driver.findElement(By.cssSelector("#prizeName")).sendKeys("11");driver.findElement(By.cssSelector("#prizeImageUrl")).sendKeys("");driver.findElement(By.cssSelector("#price")).sendKeys("1");driver.findElement(By.cssSelector("#description")).sendKeys("1");// 提交driver.findElement(By.cssSelector("#loginForm > button")).click();String res = driver.findElement(By.cssSelector("body")).getText();assert res.equals("创建活动失败!");}
}

详情代码链接:别像我这么帅/Javacode - Gitee.com

自动化测试用例数量:20

自动化测试结果:pass:19/20,fail:1/20

自动化测试问题是否修复:是

四)存在问题

可能存在某些细节问题没有被完全覆盖。

五)测试结果评估

1)主功能测试通过,项目上线。

2)项目上线后可观察用户操作日志,即使修改代码,使功能更完善。

四、总结

  以上是对于本次Spring Boot项目“智能滚动抽奖”的测试报告,主要针对于单元集成测试,功能测试,自动化测试,同时本次测试还有部分细节没有完全覆盖到,欢迎大家提意见,感谢观看!

相关文章:

  • PH传感器详解(STM32)
  • 3DMAX零售商店生成插件RetailStore自定义贴图库方法详解
  • 深度学习优化器和调度器的选择和推荐
  • 【Java面试笔记:基础】13.谈谈接口和抽象类有什么区别?
  • Spring Boot 的配置加载顺序
  • socket编程基础
  • node.js 实战——(fs模块 知识点学习)
  • gem5教程第三章 向配置脚本添加缓存
  • 智启未来|艾博连科技加入奇瑞雄狮科技LION AI联合实验室
  • 机器视觉的智能手机屏贴合应用
  • leetcode-枚举
  • RabbitMQ 详解(核心概念)
  • 蓝桥杯 15.小数第n位
  • 【OSCP-vulnhub】Raven-2
  • 基于nodeJS代码的通过爬虫方式实现tiktok发布视频(2025年4月)
  • 算法题-图论
  • Java高级:数据库访问优化
  • 网络安全零基础培训 L1-7 Web基础和CSS渲染
  • JVM考古现场(二十五):逆熵者·时间晶体的永恒之战(进阶篇)
  • 【Project】基于spark-App端口懂车帝数据采集与可视化
  • 2025年一季度上海市生产总值
  • 【社论】高度警惕AI谣言对网络空间的污染
  • 央行副行长:上海国际金融中心建设是我国参与国际金融竞争的核心载体
  • 印控克什米尔发生恐袭事件,外交部:中方反对一切形式的恐怖主义
  • 北京地铁5号线仗义执言女乘客发文:同理心无比重要,希望就此平息
  • 旁白丨无罪后领到国家赔偿,一位退休教师卸下了“包袱”