测试用例生成平台通过大模型升级查询功能,生成智能测试用例

在测试工作中,查询功能是各类系统的核心模块,传统的测试用例编写往往耗时且重复。如何让老旧平台焕发新活力?本文将结合大模型技术,通过用户输入的字段信息,自动化生成高效、精准的测试用例。同时,我们还将介绍如何在 Django 框架中异步调用阿里云的 DeepSeek-R1 API,避免阻塞主线程,从而进一步提升系统性能。点击底部小卡片了解更多AI测试话题。


一、传统查询功能的痛点

在老旧平台中,查询功能面临以下问题:

  1. 测试用例编写耗时:每次需求变更后,测试用例需要手动更新,效率低下。
  2. 用例质量参差不齐:测试人员的理解差异导致用例覆盖率和场景设计不足。
  3. 缺乏智能化:无法根据用户输入的字段信息自动生成测试用例,适应动态变化的需求。

二、大模型驱动的查询功能升级

2.1 升级方案概述

通过将用户输入的字段名称、字段类型、字段值等信息传递给大模型,我们可以自动生成符合标准的测试用例。以下是升级的基本逻辑:

  1. 用户输入查询条件(字段名称、类型、值等)。
    在这里插入图片描述

  2. 系统将输入的信息封装为提示词(Prompt),并发送给大模型。
    在这里插入图片描述

  3. 大模型根据模板自动生成测试用例,包括查询步骤和预期结果。 真拿来即用!
    在这里插入图片描述

[
  {
   
    
    
    "title": "根据机构、类型、开始日期、结束日期组合查询",
    "steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在类型中选择当年;\n4.在开始日期输入2023-01-01;\n5.在结束日期输入2023-12-31;\n6.点击查询",
    "expect_results": "查询到湖北分公司当年且在2023-01-01至2023-12-31期间的数据",
    "priority": "P0"
  },
  {
   
    
    
    "title": "根据开始日期、结束日期组合查询",
    "steps": "1.进入页面;\n2.在开始日期输入2023-01-01;\n3.在结束日期输入2023-12-31;\n4.其他条件保持默认;\n5.点击查询",
    "expect_results": "查询到2023-01-01至2023-12-31期间的数据",
    "priority": "P0"
  },
  {
   
    
    
    "title": "根据机构、类型组合查询",
    "steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在类型中选择当年;\n4.其他条件保持默认;\n5.点击查询",
    "expect_results": "查询到湖北分公司当年的数据",
    "priority": "P1"
  },
  {
   
    
    
    "title": "根据机构、开始日期、结束日期组合查询",
    "steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在开始日期输入2023-01-01;\n4.在结束日期输入2023-12-31;\n5.其他条件保持默认;\n6.点击查询",
    "expect_results": "查询到湖北分公司且在2023-01-01至2023-12-31期间的数据",
    "priority": "P1"
  },
  {
   
    
    
    "title": "根据类型、开始日期、结束日期组合查询",
    "steps": "1.进入页面;\n2.在类型中选择当年;\n3.在开始日期输入2023-01-01;\n4.在结束日期输入2023-12-31;\n5.其他条件保持默认;\n6.点击查询",
    "expect_results": "查询到当年且在2023-01-01至2023-12-31期间的数据",
    "priority": "P1"
  },
  {
   
    
    
    "title": "根据机构查询",
    "steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.其他条件保持默认;\n4.点击查询",
    "expect_results": "查询到湖北分公司的所有数据",
    "priority": "P2"
  },
  {
   
    
    
    "title": "根据类型查询",
    "steps": "1.进入页面;\n2.在类型中选择当年;\n3.其他条件保持默认;\n4.点击查询",
    "expect_results": "查询到当年的所有数据",
    "priority": "P2"
  },
  {
   
    
    
    "title": "根据开始日期查询",
    "steps": "1.进入页面;\n2.在开始日期输入2023-01-01;\n3.其他条件保持默认;\n4.点击查询",
    "expect_results": "查询到开始日期大于等于2023-01-01的数据",
    "priority": "P3"
  },
  {
   
    
    
    "title": "根据结束日期查询",
    "steps": "1.进入页面;\n2.在结束日期输入2023-12-31;\n3.其他条件保持默认;\n4.点击查询",
    "expect_results": "查询到结束日期小于等于2023-12-31的数据",
    "priority": "P3"
  }
]

2.2 提示词逻辑设计

我们设计如下提示词模板:

prompt = (f'系统名称为: {
     
      
      project};主功能模块名称为: {
     
      
      primary_module};子功能模块为:{
     
      
      sub_module};'
          f'用例创建人为: {
     
      
      case_creator};'
          f'查询结果比对方式为: {
     
      
      check_result_method};'
          f'查询页面是否需要补充UI测试用例: {
     
      
      ui_case_needed};自主标定用例的优先级;')

prompt += f'字段名称: {
     
      
      field_name};字段类型: {
     
      
      field_type};'

if enums:
    prompt += f'枚举值:{
     
      
      enums};'
elif symbol_date:
    prompt += f'日期符号为:{
     
      
      symbol_date};'
elif date_:
    prompt += f'日期为:{
     
      
      date_};'
elif symbol_time:
    prompt += f'时间比较符号为:{
     
      
      symbol_time};'
elif time_:
    prompt