1. 易抽奖Pro系统测试全流程解析
作为一名从事软件测试工作多年的工程师,最近我参与了一个抽奖系统的完整测试工作。这个名为"易抽奖Pro"的系统主要用于企业或组织内部的抽奖活动管理。在本文中,我将详细分享整个测试过程的关键环节和重要发现。
1.1 系统概述与测试目标
易抽奖Pro系统主要包含以下核心功能模块:
- 用户注册与登录
- 抽奖活动管理
- 奖品管理
- 参与者管理
- 抽奖过程控制
- 中奖结果展示与分享
我们的测试目标是确保系统各模块功能完整、运行稳定,同时满足基本的安全性和用户体验要求。测试覆盖了功能测试、兼容性测试、易用性测试、界面测试、自动化测试、性能测试和安全性测试等多个维度。
2. 测试环境与工具配置
2.1 硬件与软件环境
在测试过程中,我们使用了以下环境配置:
| 类别 | 配置/版本 |
|---|---|
| 硬件 | Predator PHN16-71 |
| 手动测试浏览器 | Chrome 144.0.7559.97 |
| 开发工具 | IntelliJ IDEA 2022.1.4 |
| 自动化测试工具 | Selenium 4.0.0 |
| 操作系统 | Windows 11 家庭中文版 |
| 自动化测试浏览器 | Microsoft Edge 144.0.3719.92 |
2.2 测试工具链
我们采用了以下测试工具和方法:
- 手动功能测试:覆盖所有核心业务流程
- 自动化测试:使用Selenium实现关键路径的自动化验证
- 性能测试:模拟多用户并发场景
- 安全测试:检查常见安全漏洞
3. 功能测试详解
3.1 注册功能测试
注册功能是系统的入口,我们设计了多种测试场景:
3.1.1 正常注册流程
- 输入正确的用户名、邮箱、手机号和密码
- 预期结果:注册成功并自动跳转至登录界面
- 实际结果:符合预期
3.1.2 异常场景测试
-
空输入测试:
- 所有字段留空
- 预期:提示输入必填项
- 实际:各字段均有正确提示
-
重复注册测试:
- 使用已注册的邮箱或手机号
- 预期:提示"邮箱/手机号已被使用"
- 实际:系统正确识别并提示
-
密码强度测试:
- 输入少于6位的密码
- 预期:提示密码长度不足
- 实际:符合预期
测试心得:注册功能的边界条件处理较为完善,但在错误提示的友好性上还有提升空间,可以考虑增加更具体的格式提示。
3.2 登录功能测试
登录功能测试覆盖了多种认证方式:
3.2.1 正常登录场景
- 邮箱+密码登录
- 手机号+密码登录
- 邮箱+验证码登录
3.2.2 异常场景测试
-
空输入测试:
- 预期:提示输入必填项
- 实际:符合预期
-
错误凭证测试:
- 错误邮箱/手机号+正确密码
- 正确邮箱/手机号+错误密码
- 预期:提示"用户不存在"或"密码错误"
- 实际:符合预期
-
验证码测试:
- 错误验证码
- 预期:提示"验证码错误"
- 实际:符合预期
发现的问题:在传输过程中密码未加密,存在安全隐患,建议使用HTTPS协议并增加加密措施。
3.3 抽奖活动管理测试
3.3.1 活动创建流程
-
正常创建活动:
- 输入活动名称、描述
- 选择奖品和参与者
- 设置奖品数量和等级
- 预期:创建成功
- 实际:基本符合预期
-
异常场景:
- 奖品数量>参与者数量
- 预期:提示"数量设置异常"
- 实际:符合预期
3.3.2 抽奖过程测试
-
开始抽奖:
- 参与者名单快速切换展示
- 点击"确定"停止并确定中奖者
-
查看中奖名单:
- 首次抽奖后名单可能不显示(需刷新)
- 已确认为bug,需要修复
操作技巧:在创建活动时,建议先确定参与者名单再设置奖品数量,可以避免数量不匹配的问题。
4. 兼容性与用户体验测试
4.1 多浏览器兼容性
我们在以下浏览器进行了全面测试:
- Chrome
- Edge
- 手机自带浏览器
测试结果:各浏览器下功能正常,布局一致,未发现兼容性问题。
4.2 易用性测试
-
键盘操作:
- Tab键可切换焦点
- Enter键仅在焦点位于按钮时生效(需优化)
-
大小写提示:
- 当前无大小写状态提示(需优化)
-
错误引导:
- 错误提示基本明确
- 部分提示可更友好(如密码复杂度)
-
流程逻辑:
- 整体符合常规抽奖流程
改进建议:增加密码强度实时显示和大小写状态提示,可以显著提升用户体验。
5. 自动化测试实现
我们使用Selenium构建了自动化测试框架,主要包含以下组件:
5.1 基础框架
java复制public class Utils {
public static WebDriver driver=null;
// 初始化驱动
public static WebDriver createDriver(){
if(driver==null){
WebDriverManager.edgedriver().setup();
EdgeOptions options=new EdgeOptions();
options.addArguments("--remote-allow-origins=*");
driver=new EdgeDriver(options);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
return driver;
}
// 截图功能
public void ScreenShot(String str) throws IOException {
String fileName="./src/test/java/images/"+str+".png";
File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile,new File(fileName));
}
}
5.2 测试用例示例(注册功能)
java复制public class RegisterPage extends Utils {
// 成功注册测试
public void RegisterSuc() throws IOException{
driver.findElement(By.cssSelector("#name")).sendKeys("TestUser");
driver.findElement(By.cssSelector("#mail")).sendKeys("test@qq.com");
driver.findElement(By.cssSelector("#phoneNumber")).sendKeys("15123456789");
driver.findElement(By.cssSelector("#password")).sendKeys("123456");
driver.findElement(By.cssSelector("#registerForm > button")).click();
// 验证弹窗和页面跳转
wait.until(ExpectedConditions.alertIsPresent());
Alert alert=driver.switchTo().alert();
alert.accept();
assert driver.getTitle().equals("管理员登录页面");
}
}
自动化测试心得:合理使用显式等待(ExpectedConditions)能有效提高测试稳定性,避免因页面加载导致的失败。
6. 性能与安全测试
6.1 性能测试结果
- 并发100用户时,响应时间<2秒
- 资源占用合理,无内存泄漏
- 满足正常使用场景需求
6.2 安全测试发现
-
SQL注入:
- 测试通过,未发现注入漏洞
-
未授权访问:
- 未登录状态无法访问受限页面
-
密码安全:
- 数据库存储加密
- 传输过程未加密(需修复)
- 输入时隐藏显示
-
会话安全:
- 同一账号多设备登录无提醒(需优化)
安全建议:务必修复传输加密问题,这是严重的安全隐患。同时建议增加异地登录提醒功能。
7. 测试总结与改进建议
7.1 主要发现的问题
-
功能性问题:
- 创建奖品时未校验图片格式和价格为负数
- 抽奖后中奖名单可能不立即显示
-
安全问题:
- 密码传输未加密
- 缺乏异地登录提醒
-
用户体验问题:
- Enter键使用受限
- 无大小写状态提示
7.2 优化建议
-
功能改进:
- 完善参数校验逻辑
- 修复中奖名单显示问题
-
安全增强:
- 实现传输层加密
- 增加会话管理功能
-
体验优化:
- 扩展键盘操作支持
- 增加输入状态提示
7.3 总体评价
易抽奖Pro系统核心功能完整,业务流程基本顺畅,性能表现良好。通过本次测试发现的几个关键问题修复后,系统可以达到生产环境使用标准。特别是在活动管理和抽奖流程方面设计合理,用户体验较好。
对于测试同行,我建议在类似系统测试中要特别注意:
- 抽奖逻辑的公平性验证
- 高并发场景下的性能表现
- 敏感数据的安全处理
- 边界条件的全面覆盖
通过这次测试,我们也积累了一套完整的抽奖系统测试用例,包括57个功能测试用例、12个安全测试点和5个性能测试场景,为今后类似项目的测试工作提供了宝贵参考。