Web商城的搜索模块功能测试用例设计
1.搜索功能设计
1.1 搜索框设计
-
位置显眼:通常置于页面顶部中央,符合用户习惯。
-
智能提示(Autocomplete):输入时实时推荐关键词、商品或分类(如“手机 苹果”)。
-
支持多分类输入:商品类型、店铺(下拉框)
1.2 搜索算法
1.2.1 分词与语义理解
- 中文需分词,示例:“红色连衣裙” 拆分为**”红色/连衣裙“**
- 支持同义词扩展,示例:”手机壳→手机套“
- 拼写纠错,示例:“iphnoe→iphone”
1.2.2 相关性排序
综合关键词匹配度(标题>描述)、商品销量、评分、价格、库存等因素,可通过BM25算法或**机器学习模型(如Learning to Rank)**实现
1.3 过滤与排序
- 多维度过滤:分类、品牌、价格区间、评分、属性(如“屏幕尺寸”)。
- 动态排序:默认按相关性,支持手动按价格、销量、新品排序。
1.4 搜索结果展示
-
分页与懒加载:每页展示20-50条,支持无限滚动。
-
高亮关键词:标题和描述中突出显示搜索词。
-
相关推荐:无结果时推荐相似商品(如“找不到‘耐克’?试试这些运动鞋”)。
1.5 性能优化
- 缓存高频查询:如“手机”“笔记本”等热门关键词的结果。
- 异步加载:先展示核心结果,再逐步加载图片、评论等次要内容。
2.搜索功能技术原理
2.1 数据采集与预处理
- 数据源:商品数据库(MySQL)、日志( 用户搜索词、点击行为)
- 清洗与标准化:去除无效字符、同一单位(如”500g→0.5kg“)、提取属性(颜色、尺寸)
2.2 倒排索引
- 核心数据结构:将文档(商品)映射到关键词
- 实现工具:Elasticsearch等搜索引擎内置倒排索引
2.3 查询处理流程
- 分词与解析:使用分词器拆分查询词
- 纠错与扩展:基于字典或同统计模型修正拼写错误
- 检索与打分:
- TF-IDF:衡量词频(TF)和逆文档频率(IDF)。
- BM25:改进版TF-IDF,考虑文档长度对相关性的影响。
- 向量检索:将文本转换为向量(如BERT模型),计算余弦相似度。
- 个性化搜索:
- 用户画像:结合历史搜索、点击、购买行为,动态调整排序权重。
- 实时反馈:A/B测试不同排序策略,持续优化模型。
3.测试用例设计
测试范围
测试维度 | 具体内容 |
---|---|
核心功能 | 基础搜索、智能提示、过滤排序、结果展示、分页/懒加载、高亮显示 |
业务规则 | 库存商品优先、促销置顶、敏感词过滤、搜索词黑名单、权重策略 |
边界场景 | 超长词(1000字符)、特殊符号(#@!)、空搜索、全角/半角混合输入、多语言 |
3.1 基础功能流程测试验证
3.1.1正向流程
- 选好查询类型(商品/店铺)→输入关键字→点击查询/回车→跳转/显示搜索的商品(店铺)信息列表
3.1.2 异常分支流程
-
表单输入异常
-
功能异常的的情况
- 查询类型无法是否可以切换
- 查询按钮/键盘是否回车异常
- 显示结果未高亮显示
- 显示结果是否正常
- 搜索没有商品的信息,是否显示无相关内容和相关产品的推荐显示
- 显示结果是否是懒加载
-
网络异常的情况
- 断网
- 弱网
3.1.3 搜索输入测试验证
设计方法:等价划分法,边界值法,错误推测法
-
等价划分法(含商品信息、含空格、含中英文混合)
- 有效用例:正常关键字,带有空格关键字,中英混合关键字
- 无效用例:不含有商品信息的输入,空,特殊符号
-
边界值法:
- 大于输入框最大输入量
- 空
-
错误推测法:
-
含有商品信息,含有其他与商品无法的关键字。
-
多组商品关键字
-
3.2 智能提示功能
3.2.1正向流程测试
- 输入短缺的提示词→显示相关联想的提示项→点击的提示项→直接暂时“提示项”商品的信息。
3.2.2 异常分支测试
- 输入异常的提示词
- 多语言混合→验证:联想词是否支持多语言
- 特殊字符攻击
- 超长字符串→预期:截断处理+【请输入有效的关键词】
- 功能异常的情况
- 无输入的情况→验证:是否存在热搜或历史记录
- 联想词冲突→验证:联想词分类标签(苹果/指向的是水果还是品牌)
- 网络异常的情况
- 弱网环境→是否出现“加载”界面
- 断网状态→是否提示离线或本地缓存联想提示词
3.2.3 提示词输入测试验证
设计方法:错误推测法
- 测试不同的词长→验证:输入多少字可以出现提示词(2/4/6/8)
- 测试不同的语言→验证:是否支持多语言类型。
- 测试含有特殊字符的→验证:输入特殊字符是否出现提示词或热搜词
3.3 结果赛选功能
3.3.1 筛选规则
- 基础赛选规则:
- 分类
- 层级结构:支持多级分类(如“手机 → 智能手机 → 5G手机”)
- 动态联动:选择父分类后,子分类选项动态更新(如选择“手机”后显示“品牌”筛选)。
- 技术实现:通过Elasticsearch的
terms aggregation
或数据库JOIN
查询实现。
- 价格区间:
- 自动分段:根据商品价格分布动态生成区间(如“0-100元,100-500元”)。
- 自定义输入:允许用户手动输入最小/最大值(需验证输入合法性,如负数或非数字字符)。
- 技术优化:使用预计算的价格区间索引加速查询。
- 品牌
- 热门置顶:按品牌商品数量或用户点击量排序(如“Apple、华为、小米”优先显示)
- 字母索引:数据量大时提供A-Z快速导航(常见于海外电商)。
- 去重逻辑:避免同品牌不同拼写(如“华为”和“HUAWEI”)导致重复选项。
- 分类
- 商品属性筛选:
- 规格参数:
- 动态属性:根据分类动态加载属性(如“手机”分类显示“屏幕尺寸”“内存”,服装显示“颜色”“尺码”)。
- 多选逻辑:
- AND模式:选择“颜色:红色”+“尺码:M” → 仅显示同时满足的商品。
- OR模式:部分平台支持“颜色:红色或蓝色”(需明确提示用户逻辑)
- 技术实现:使用Elasticsearch的
nested object
或数据库的JSON字段
存储属性。
- 服务与标签:
- 服务承诺:如“次日达”“免运费”“7天无理由退货”。
- 活动标签:如“限时折扣”“买一送一”“新品首发”。
- 优先级规则:多个标签共存时按业务权重排序(如“促销标签”>“服务标签”)。
- 规格参数:
- 业务逻辑筛选:
- 库存状态:
- 有货优先:默认过滤无货商品,或标记“无货”但仍展示(如Amazon)。
- 区域库存:根据用户地理位置筛选可配送的商品(依赖地理位置API)。
- 促销与优先级:
- 促销置顶:参与活动的商品固定在前几位。
- 人工加权:运营可手动提升特定商品排名(如主推新品)
- 商家相关:
- 店铺筛选:按店铺名称或信誉等级过滤。
- 库存状态:
3.3.2正向流程测试
搜索结果→选择排序规则/过滤规则→显示处理后的结果
3.3.3 异常分支测试
-
输入异常
- 价格区间手动输入范围
-
功能异常
- 单条件筛选异常
- 多条件筛选异常
-
网络异常
3.3.4 价格区间测试
- 价格区间条件选择测试
- 价格区间范围输入测试
3.3.5 条件筛选测试(单条件、多条件)验证
-
单条件赛选测试
筛选类型 测试用例示例 预期结果 分类筛选 选择「手机 → 智能手机」 仅显示该分类下的商品,且子分类选项动态更新(如品牌、价格区间) 价格区间 输入自定义价格范围(如500-2000元) 显示价格在此区间内的商品,超出范围的商品被过滤 品牌筛选 选择「Apple」和「华为」 显示同时属于这两个品牌的商品(AND逻辑)或任一品牌(OR逻辑,需明确规则) 库存状态 勾选「仅显示有货」 无库存商品被隐藏,且结果中所有商品库存>0 -
多条件赛选测试
-
设计方法:正交表法,(决策表)
- 优点:高效较少测试量,适合独立条件组合,对于这些可以单条件测试的一般都是可以单独的条件。
- 缺点:无法覆盖所有边界,需补充测试。
- 与决策或因果之间的区别
- 决策和因果,是逻辑上覆盖全面,适合处理条件间依赖关系,如果条件组合过多的时候会导致用例指数级的增长
-
注意:无货赛选是业务逻辑筛选,因为关联到平台的库存管理,而非商品本身的静态属性
-
策略:
- 强依赖条件:
- 示例:选择“仅显示有货”时,无货商品必须被过滤,无论其他条件如何。
- 处理方式:决策表强制覆盖(如“有货=是/否”与其他条件组合)。
- 独立条件:
- 示例:品牌、颜色、价格区间之间无逻辑冲突。
- 处理方式:正交表覆盖。
- 核心逻辑用决策表覆盖,长尾条件用正交表抽样,兼顾严谨又存在效率
- 强依赖条件:
-
设计正交实验表
场景:筛选条件为品牌(A/B/C)、颜色(红/蓝)、价格区间(0-100/100-500)。
-
正交表选择:L9(3^4)表:实际上是3因素
测试编号 品牌 颜色 价格区间 1 A 红 0-100 2 A 蓝 100-500 3 B 红 100-500 4 B 蓝 0-100 5 C 红 0-100 6 C 蓝 100-500
-
-
决策表验证依赖关系(补充)
场景:当用户选择“仅显示有货”时,需确保无货商品被过滤。
条件组合 有货=是 有货=否 品牌=A, 价格=0-100 显示 不显示 品牌=B, 价格=100-500 显示 不显示
-
3.4 结果排序功能(不涉及推广模块)
3.4.1排序规则
- 销量(默认降序)
- 价格(可选降序或升序)
- 两者之间无法同时选中
3.4.2正向流程测试
搜索结果→选择【销量】排序/【价格】排序→显示处理后的结果
3.4.3 异常分支测试
-
无输入异常
-
功能异常
- 价格排序升序或降序无法切换
- 销量是否默认降序
- 排斥互斥测试
- 数据边界(价格相同、销售为0的情况)
-
网络异常
3.4.4 数据边界测试
-
价格相同商品的排序稳定性→相同价格商品按指定次规则排序(如销量、上架时间、ID),且顺序不随机跳动
-
销量为零的商品排序→销量为0的商品按默认规则(如价格、上架时间)排在末尾