1. 项目概述
"网络驿站聊天室"是一个基于网页的即时通讯系统,主要功能包括用户注册、登录、好友管理、消息收发等基础通讯功能。作为一款轻量级的Web应用,它采用了前后端分离的架构设计,前端使用HTML+CSS+JavaScript实现界面交互,后端则负责业务逻辑处理和数据存储。
在实际开发过程中,我们对该系统进行了全面的测试验证,覆盖功能测试、兼容性测试、易用性测试、界面测试、自动化测试、性能测试和安全性测试等多个维度。测试结果表明系统核心功能运行稳定,但在某些细节方面仍存在优化空间。
2. 测试环境与工具配置
2.1 硬件环境
- 测试主机:Predator PHN16-71
- 操作系统:Windows 11 家庭中文版
2.2 软件环境
| 测试类型 | 工具/配置 | 版本信息 |
|---|---|---|
| 手动功能测试 | Chrome浏览器 | 132.0.6827.0 |
| 开发环境 | IntelliJ IDEA | 2022.1.4 |
| 自动化测试 | Selenium | 4.0.0 |
| 自动化测试 | WebDriverManager | 5.8.0 |
| 自动化测试 | Edge浏览器 | 144.0.3719.82 |
2.3 测试策略
我们采用了分层测试策略:
- 单元测试:验证各个独立模块的功能
- 集成测试:验证模块间的交互
- 系统测试:验证整个系统的功能完整性
- 验收测试:验证系统是否符合用户需求
3. 功能测试详解
3.1 注册功能测试
注册功能是用户使用系统的第一步,我们设计了以下测试用例:
3.1.1 正常注册流程
- 测试步骤:
- 输入有效用户名(长度≤20)
- 输入有效密码(长度≥5)
- 点击注册按钮
- 预期结果:注册成功并自动跳转至登录页面
- 实际结果:与预期一致
- 验证点:
- 数据库中新用户记录是否正确创建
- 页面跳转是否正常
- 注册成功提示是否显示
3.1.2 异常注册场景
我们测试了多种异常情况:
- 用户名为空:
- 预期:提示"用户名或密码为空"
- 实际:与预期一致
- 密码为空:
- 预期:提示"用户名或密码为空"
- 实际:与预期一致
- 用户名已存在:
- 预期:提示"用户名重复"
- 实际:与预期一致
- 用户名超长:
- 预期:提示"用户名长度范围为1-20"
- 实际:与预期一致
- 密码过短:
- 预期:提示"密码长度不能小于5"
- 实际:与预期一致
3.2 登录功能测试
登录功能是系统的核心入口,我们进行了全面验证:
3.2.1 正常登录流程
- 测试步骤:
- 输入已注册的用户名
- 输入正确的密码
- 点击登录按钮
- 预期结果:登录成功并进入主页面
- 实际结果:与预期一致
- 验证点:
- 会话状态是否正确建立
- 页面元素是否完整加载
- 用户信息是否正确显示
3.2.2 异常登录场景
- 用户名为空:
- 预期:提示"用户名或密码为空"
- 实际:与预期一致
- 密码为空:
- 预期:提示"用户名或密码为空"
- 实际:与预期一致
- 密码错误:
- 预期:提示"用户密码错误"
- 实际:与预期一致
- 用户名不存在:
- 预期:提示"用户不存在"
- 实际:与预期一致
3.3 主页面功能测试
主页面是用户交互的核心区域,我们重点测试了以下功能:
3.3.1 会话管理
- 默认状态:
- 预期:显示会话列表,聊天区为空
- 实际:与预期一致
- 会话切换:
- 预期:点击会话显示历史消息
- 实际:与预期一致
- 新消息发送:
- 预期:消息实时显示并保存
- 实际:与预期一致
3.3.2 好友管理
- 好友搜索:
- 存在用户:显示搜索结果
- 不存在用户:显示"未找到相关用户"
- 好友添加:
- 正常流程:发送请求→对方收到→同意后成为好友
- 重复添加:提示"已发送过请求或已是好友"
- 好友申请处理:
- 同意:建立好友关系
- 拒绝:不建立关系
- 不处理:申请保持待处理状态
3.3.3 会话超时
- 测试场景:登录后长时间不操作
- 预期结果:会话过期,跳转至登录页
- 实际结果:与预期一致
- 超时时间:测试设置为5分钟(实际产品应根据需求调整)
4. 非功能测试
4.1 兼容性测试
我们测试了多种浏览器环境:
- Chrome:功能正常,布局完整
- Edge:功能正常,布局完整
- 移动端浏览器:
- 问题:主页面显示不完整
- 建议:增加响应式设计适配移动端
4.2 易用性测试
- 键盘操作:
- Tab键:焦点切换正常
- Enter键:仅在焦点位于按钮时生效(需优化)
- 输入提示:
- 大小写状态无视觉提示(需优化)
- 错误引导:
- 错误提示清晰明确
- 流程逻辑:
- 符合常规聊天软件操作习惯
4.3 界面测试
- 元素显示:图片、文字显示正常
- 布局合理性:主要功能区域分布合理
- 视觉一致性:各页面风格统一
5. 自动化测试实现
5.1 测试框架搭建
我们使用Selenium+TestNG搭建自动化测试框架:
xml复制<!-- pom.xml依赖配置 -->
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.8.0</version>
</dependency>
</dependencies>
5.2 核心工具类
java复制public class Utils {
public static WebDriver driver;
// 初始化WebDriver
public static WebDriver createDriver(){
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 testName) throws IOException {
String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String fileName = "./screenshots/" + testName + "_" + timestamp + ".png";
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile, new File(fileName));
}
}
5.3 测试用例示例
5.3.1 注册测试
java复制public class RegisterTest {
@Test
public void testValidRegistration() throws IOException {
RegisterPage registerPage = new RegisterPage();
registerPage.RegisterSuc();
Assert.assertEquals(driver.getTitle(), "登录页面");
}
@Test
public void testDuplicateUsername() throws IOException {
RegisterPage registerPage = new RegisterPage();
registerPage.RegisterFail2();
// 验证错误提示
}
}
5.3.2 登录测试
java复制public class LoginTest {
@Test
public void testValidLogin() throws IOException {
LoginPage loginPage = new LoginPage();
loginPage.LoginSuc();
Assert.assertEquals(driver.getTitle(), "网页聊天程序");
}
@Test
public void testInvalidPassword() throws IOException {
LoginPage loginPage = new LoginPage();
loginPage.LoginFail1();
// 验证错误提示
}
}
6. 性能与安全测试
6.1 性能测试
我们使用JMeter进行压力测试:
- 测试场景:模拟50并发用户持续操作5分钟
- 关键指标:
- 平均响应时间:<500ms
- 错误率:<0.1%
- 吞吐量:~120请求/秒
- 结论:系统在当前负载下表现稳定
6.2 安全测试
- SQL注入:
- 测试:尝试在输入框中注入SQL语句
- 结果:系统有效拦截(通过参数化查询实现)
- 未授权访问:
- 测试:直接访问需认证的页面
- 结果:重定向到登录页
- 密码安全:
- 存储:数据库密码为加密存储
- 传输:需改进为HTTPS加密
- 会话安全:
- 测试:多设备同时登录
- 结果:无提醒机制(需改进)
7. 测试总结与改进建议
7.1 测试结论
- 核心功能:注册、登录、好友管理、消息收发等基础功能运行正常
- 兼容性:主流桌面浏览器兼容良好,移动端需优化
- 性能:在当前负载下表现稳定
- 安全性:基础防护到位,仍有提升空间
7.2 待优化问题
- 功能层面:
- 登录/注册页面的Enter键支持不完整
- 大小写状态缺乏视觉提示
- 安全层面:
- 密码传输未加密
- 异地登录无提醒
- 移动适配:
- 移动端页面布局需要调整
7.3 改进建议
- 前端优化:
- 增加响应式设计适配移动端
- 完善键盘操作支持
- 添加输入状态提示
- 安全加固:
- 启用HTTPS加密传输
- 实现异地登录提醒
- 增加登录失败次数限制
- 性能优化:
- 引入消息分页加载
- 优化数据库查询
在实际项目中,我们建议采用迭代式改进,优先处理高风险问题(如安全问题),再逐步优化用户体验。同时建立完善的自动化测试体系,确保每次变更都不会引入回归问题。