【Web功能测试】Web商城搜索模块测试用例设计深度解析

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 查询处理流程

  1. 分词与解析:使用分词器拆分查询词
  2. 纠错与扩展:基于字典或同统计模型修正拼写错误
  3. 检索与打分
    • TF-IDF:衡量词频(TF)和逆文档频率(IDF)。
    • BM25:改进版TF-IDF,考虑文档长度对相关性的影响。
    • 向量检索:将文本转换为向量(如BERT模型),计算余弦相似度。
  4. 个性化搜索
    • 用户画像:结合历史搜索、点击、购买行为,动态调整排序权重。
    • 实时反馈: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的商品按默认规则(如价格、上架时间)排在末尾

相关推荐
weixin_382395236 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__6 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.7 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~8 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华8 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子11 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅11 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni11 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学12 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端