1. 项目简介
💡💡💡本次测试对象是一个基于 Spring Boot 的 Java 文档搜索引擎系统,该系统拥有文档索引构建、中文分词搜索、Web 界面展示、RESTful API 接口等功能
文档索引构建:包括正排索引和倒排索引的构建。系统能够解析 HTML 文档,提取标题、URL 和内容,并构建高效的索引结构。支持多线程并发处理,提高索引构建效率。
中文分词搜索:使用 Ansj 分词库进行中文分词,支持停用词过滤。系统能够对用户输入的查询进行分词处理,并在倒排索引中查找相关文档。
Web 界面展示:提供美观的 Web 搜索界面,支持实时搜索结果显示。界面采用响应式设计,支持搜索结果的高亮显示和分页展示。
RESTful API 接口:提供标准的 RESTful 接口,支持 JSON 格式的数据交换。接口设计简洁,易于集成和扩展。
权重排序算法:实现基于TF-IDF的权重计算算法,标题权重 × 10 + 内容权重,确保搜索结果的相关性和准确性。
多线程支持:索引构建过程支持多线程并发处理,显著提高大规模文档的处理效率。
2. 架构分析
2.1 系统架构
2.2 核心组件分析
2.2.1 索引模块
- 功能: 构建和维护正排索引、倒排索引
- 数据结构:
- 正排索引:
ArrayList<DocInfo>- 按文档ID存储文档信息 - 倒排索引:
HashMap<String, ArrayList<Weight>>- 按关键词存储文档权重
- 正排索引:
- 线程安全: 使用 synchronized 关键字保护并发访问
- 持久化: 使用 Jackson JSON 序列化到磁盘文件
2.2.2 搜索模块
- 功能: 执行搜索查询和结果处理
- 分词: 使用Ansj分词库进行中文分词
- 停用词过滤: 支持停用词过滤功能
- 结果合并: 使用优先队列算法合并多词搜索结果
- 权重计算: 标题权重 × 10 + 内容权重
2.2.3 文档解析模块
- 功能: 解析 HTML 文档,提取标题、URL 和内容
- 多线程支持: 支持 8 线程并发解析
- 性能监控: 内置性能统计功能
- 文件处理: 支持递归遍历文档目录
3. 测试用例




4. 执行测试
4.1 功能测试
4.1.1 搜索功能
场景1:正常输入关键词
测试用例:输入“String”进行搜索。
预期结果:返回包含“String”的API文档列表。
实际结果:返回包含“String”的API文档列表。

场景2:输入部分关键词
测试用例:输入“Str”进行搜索。
预期结果:返回包含“Str”的API文档列表。
实际结果:返回包含“Str”的API文档列表。
场景3:输入特殊字符
测试用例:输入“@#%”进行搜索。
预期结果:返回“当前找到 0个结果!”提示。
实际结果:返回“当前找到 0个结果!”提示。
4.1.2 结果详情
场景1:点击搜索结果
测试用例:搜索“List”,点击第一个结果。
预期结果:展示该API的详细文档内容。
实际结果:展示该API的详细文档内容。

场景2:结果详情页面返回
测试用例:在详情页点击“返回”按钮。
预期结果:返回到搜索结果列表页。
实际结果:返回到搜索结果列表页。
场景3:详情内容格式
测试用例:检查详情页内容排版。
预期结果:文档内容分段清晰,格式正确。
实际结果:文档内容分段清晰,格式正确。
4.1.3 搜索无结果
场景1:输入不存在关键词
测试用例:输入“xyz123”进行搜索。
预期结果:显示“无相关结果”提示。
实际结果:返回“当前找到 42个结果!”提示。

场景2:输入空格
测试用例:输入空格进行搜索。
预期结果:显示“请输入关键词”提示。
实际结果:返回“当前找到 0个结果!”提示。

场景3:输入超长字符串
测试用例:输入1000字符的无意义字符串。
预期结果:显示“当前找到 0个结果!”提示。
实际结果:显示“当前找到 0个结果!”提示。
4.1.4 搜索高亮
场景1:关键词高亮
测试用例:搜索“Map”。
预期结果:结果中“Map”高亮显示。
实际结果:结果中“Map”高亮显示。

场景2:多关键词高亮
测试用例:搜索“Hash Map”。
预期结果:结果中“Hash”和“Map”均高亮。
实际结果:结果中“Hash”和“Map”均高亮。
场景3:高亮样式一致
测试用例:检查不同结果的高亮样式。
预期结果:所有高亮关键词样式一致。
实际结果:所有高亮关键词样式一致。
4.1.5 图片展示
场景1:背景图片显示
测试用例:打开首页。
预期结果:页面背景图片正常显示。
实际结果:页面背景图片正常显示。

场景2:背景图片加载失败
测试用例:删除背景图片后刷新首页。
预期结果:显示默认占位图或无图片。
实际结果:显示默认占位图或无图片。
场景3:背景图片自适应
测试用例:缩放浏览器窗口。
预期结果:背景图片自适应缩放。
实际结果:背景图片自适应缩放。
4.2 界面测试
4.2.1 页面布局
场景1:正常布局
测试用例:打开首页。
预期结果:搜索框、结果区分明。
实际结果:搜索框、结果区分明。
场景2:窗口缩小时布局
测试用例:缩小浏览器窗口。
预期结果:页面布局自适应,无重叠。
实际结果:页面布局自适应,无重叠。

场景3:元素对齐
测试用例:检查各模块对齐。
预期结果:所有模块左右对齐一致。
实际结果:所有模块左右对齐一致。
4.2.2 字体样式
场景1:默认字体
测试用例:检查首页字体。
预期结果:字体大小、颜色适中。
实际结果:字体大小、颜色适中。
场景2:结果页字体
测试用例:检查搜索结果字体。
预期结果:字体清晰可读。
实际结果:字体清晰可读。
场景3:详情页字体
测试用例:检查详情页字体。
预期结果:字体与其他页面风格一致。
实际结果:字体与其他页面风格一致。
4.2.3 按钮样式
场景1:搜索按钮样式
测试用例:检查首页搜索按钮。
预期结果:按钮风格统一。
实际结果:按钮风格统一。

场景2:鼠标悬停按钮
测试用例:鼠标悬停在按钮上。
预期结果:按钮有悬停效果。
实际结果:按钮没有悬停效果。
场景3:按钮禁用状态
测试用例:搜索框为空时按钮禁用。
预期结果:按钮不可点击,样式变灰。
实际结果:按钮可点击,样式不变灰。
4.2.4 响应式
场景1:PC端自适应
测试用例:缩放PC端浏览器窗口。
预期结果:页面元素不重叠、不溢出。
实际结果:页面元素不重叠、不溢出。
场景2:移动端自适应
测试用例:用手机浏览器访问。
预期结果:页面自适应,功能可用。
实际结果:背景和搜索框无法适应移动端。
场景3:横屏竖屏切换
测试用例:手机横竖屏切换。
预期结果:页面布局自动调整。
实际结果:页面布局未调整。
4.3 性能测试
4.3.1 首次加载速度
场景1:正常网络加载
测试用例:访问首页。
预期结果:3秒内加载完成。
实际结果:3秒内加载完成。
场景2:弱网环境加载
测试用例:降低网络速度访问首页。
预期结果:10秒内加载完成。
实际结果:10秒内加载完成。
场景3:首次与二次加载
测试用例:首次和刷新后加载首页。
预期结果:二次加载更快,资源有缓存。
实际结果:二次加载更快,资源有缓存。
4.3.2 搜索响应速度
场景1:正常搜索响应
测试用例:搜索“ArrayList”。
预期结果:1秒内返回结果。
实际结果:1秒内返回结果。

场景2:多次连续搜索
测试用例:连续多次搜索不同关键词。
预期结果:每次响应时间均小于1秒。
实际结果:每次响应时间均小于1秒。
场景3:大量数据搜索
测试用例:搜索结果数量较多时。
预期结果:响应时间不超过2秒。
实际结果:响应时间不超过2秒。
4.3.3 并发搜索
场景1:10用户并发
测试用例:10用户同时搜索。
预期结果:系统无崩溃,响应时间合理。
实际结果:系统无崩溃,响应时间合理。
场景2:50用户并发
测试用例:50用户同时搜索。
预期结果:系统无崩溃,响应时间合理。
实际结果:系统无崩溃,响应时间合理。
场景3:并发下资源占用
测试用例:监控CPU和内存。
预期结果:资源占用无异常峰值。
实际结果:资源占用无异常峰值。
4.3.4 大数据量
场景1:搜索“a”
测试用例:搜索“a”返回大量结果。
预期结果:系统不卡顿,分页正常。
实际结果:系统不卡顿,分页正常。
场景2:翻页性能
测试用例:快速翻页浏览结果。
预期结果:翻页流畅无延迟。
实际结果:翻页流畅无延迟。

场景3:大数据下高亮
测试用例:大量结果中关键词高亮。
预期结果:高亮正常,无错漏。
实际结果:高亮正常,无错漏。
4.4 兼容性测试
4.4.1 浏览器兼容
场景1:Chrome最新版访问
测试用例:用最新版Chrome访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景2:Chrome旧版访问
测试用例:用旧版Chrome访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景3:Chrome隐身模式
测试用例:用隐身模式访问。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景4:Edge最新版访问
测试用例:用最新版Edge访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。

场景5:Edge旧版访问
测试用例:用旧版Edge访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景6:Edge无痕模式
测试用例:用无痕模式访问。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景7:Firefox最新版访问
测试用例:用最新版Firefox访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景8:Firefox旧版访问
测试用例:用旧版Firefox访问首页。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
场景9:Firefox隐私模式
测试用例:用隐私模式访问。
预期结果:功能、样式正常。
实际结果:功能、样式正常。
4.4.2 移动端兼容
场景1:安卓手机访问
测试用例:用安卓手机浏览器访问首页。
预期结果:页面自适应,功能可用。
实际结果:页面无法自适应,功能可用。
场景2:苹果手机访问
测试用例:用iPhone浏览器访问首页。
预期结果:页面自适应,功能可用。
实际结果:页面无法自适应,功能可用。
场景3:平板访问
测试用例:用平板浏览器访问首页。
预期结果:页面自适应,功能可用。
实际结果:页面无法自适应,功能可用。
4.5 易用性测试
4.5.1 搜索易用性
场景1:搜索框提示
测试用例:搜索框未输入时。
预期结果:显示“请输入API关键词”等提示。
实际结果:未显示提示词。

场景2:搜索框聚焦
测试用例:点击搜索框。
预期结果:提示文字消失。
实际结果:没有提示文字。
场景3:搜索框输入后
测试用例:输入内容后。
预期结果:提示文字不再显示。
实际结果:没有提示文字。
4.5.2 结果易读性
场景1:结果分层
测试用例:搜索“Set”。
预期结果:结果分层、信息完整。
实际结果:结果分层、信息完整。
场景2:结果字体
测试用例:检查结果字体。
预期结果:字体清晰可读。
实际结果:字体清晰可读。
场景3:结果间距
测试用例:检查结果间距。
预期结果:结果间距适中,易于阅读。
实际结果:结果间距适中,易于阅读。

4.5.3 错误提示
场景1:输入无效字符
测试用例:搜索“!@#”。
预期结果:显示“无相关结果”或友好提示。
实际结果:显示“当前找到 0个结果!”提示。
场景2:搜索框为空
测试用例:点击搜索按钮。
预期结果:显示“请输入关键词”提示。
实际结果:显示“当前找到 0个结果!”提示

场景3:网络异常
测试用例:断网后搜索。
预期结果:显示“网络异常”提示。
实际结果:显示“未连接到互联网”提示。
4.5.4 操作流程
场景1:正常搜索流程
测试用例:输入关键词并搜索。
预期结果:用户能顺利完成操作。
实际结果:用户能顺利完成操作。
场景2:搜索后查看详情
测试用例:搜索后点击结果查看详情。
预期结果:操作流程顺畅。
实际结果:操作流程顺畅。
场景3:返回首页
测试用例:从详情页返回首页。
预期结果:返回正常,无异常。
实际结果:返回正常,无异常。
4.6 安全测试
4.6.1 输入校验
场景1:输入XSS脚本
测试用例:输入搜索。
预期结果:页面无弹窗,内容被转义。
实际结果:返回“当前找到 2400个结果!”提示。

场景2:输入HTML标签
测试用例:输入test搜索。
预期结果:标签被转义,页面无异常。
实际结果:返回“当前找到 203个结果!”提示。
4.6.2 接口安全
场景1:未授权访问API
测试用例:直接访问API接口。
预期结果:仅允许合法请求,未授权无敏感信息泄露。
实际结果:返回 JSON 数据。

场景2:非法参数访问
测试用例:API传递非法参数。
预期结果:返回错误提示,无敏感信息。
实际结果:返回 []。

4.6.3 敏感信息
场景1:页面源码检查
测试用例:检查页面源码。
预期结果:无开发商、服务器等敏感信息。
实际结果:无开发商、服务器等敏感信息。
场景2:接口返回检查
测试用例:检查API返回内容。
预期结果:无敏感字段泄露。
实际结果:无敏感字段泄露。
场景3:日志信息检查
测试用例:检查前端控制台日志。
预期结果:无敏感信息输出。
实际结果: 无敏感信息输出。
收藏文章,测试内容将持续更新……
777

被折叠的 条评论
为什么被折叠?



