API 文档搜索引擎测试报告

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:日志信息检查
测试用例:检查前端控制台日志。
预期结果:无敏感信息输出。
实际结果: 无敏感信息输出。


收藏文章,测试内容将持续更新……

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web图解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值