快速入门:生成用于测试和模拟的数据(预览版)

在本快速入门中,你将了解如何使用 GitHub Copilot 创建逼真的主题数据集,以支持应用程序开发、测试和演示。 通过分析数据库的架构和上下文,GitHub Copilot 可以生成与实际格式一致的模拟数据,模拟边缘事例,并减少种子设定数据库的手动工作量,使测试更快、更代表实际方案。

开始吧

确保已连接到数据库,并使用 MSSQL 扩展打开活动编辑器窗口。 通过此连接, @mssql 聊天参与者可以了解数据库环境的上下文,从而提供准确的上下文感知建议。 如果没有数据库连接,聊天参与者将没有架构或数据上下文来提供有意义的响应。

以下示例使用 AdventureWorksLT2022 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。

为了获得最佳结果,请调整表和架构名称以匹配自己的环境。

确保聊天包含 @mssql 前缀。 例如,键入 @mssql 后跟问题或提示。 这可确保聊天参与者了解你请求与 SQL 相关的帮助。

使用 GitHub Copilot 生成真实且可测试的数据

GitHub Copilot 可以帮助直接从 SQL 架构或 JSON 示例生成测试和模拟数据。 无论是准备用于演示、测试边缘事例的数据集,还是使用主题或随机数据为开发环境设定种子,GitHub Copilot 都提供了上下文建议,以帮助缩短时间和提高覆盖范围,尤其是在手动数据输入速度缓慢或不一致的情况下。

下面是通过聊天参与者可以询问的常见用例和示例。

模拟数据生成

使用 GitHub Copilot 为现有表生成主题、随机或具有代表性的模拟数据。 可以请求特定的行计数、应用名称/值模式,或基于外部结构(如 JSON 示例)生成数据集。

  • 为包含 100 条示例记录的 SalesLT.Customer 表生成模拟数据。

  • SalesLT.Product 50 个项目填充表,每个项都有唯一的名称和价格。

  • SalesLT.SalesOrderHeader 包含 200 条记录的表生成模拟数据,包括订单日期和客户 ID。

  • 基于包含四条记录的此示例 JSON,生成一个 SQL 表架构,并使用 50 条模拟记录对其进行填充。 使用知名科幻丛书中的角色名称(例如,《沙丘》、《基地》以及《头号玩家》)填充firstNamelastName字段,使数据更具现实感和主题风格。

    [
      { "firstName": "Alice", "lastName": "Smith", "email": "alice@example.com" },
      { "firstName": "Bob", "lastName": "Jones", "email": "bob@example.com" },
      { "firstName": "Charlie", "lastName": "Brown", "email": "charlie@example.com" },
      { "firstName": "Dana", "lastName": "White", "email": "dana@example.com" }
    ]
    

Edge 用例测试

使用 GitHub Copilot 模拟边缘事例并验证系统的行为,超越基本数据生成。 无论是压力测试业务逻辑、检查数据验证失败还是确保关系一致性,GitHub Copilot 都可以帮助生成正确的数据,以及编写断言或测试逻辑来验证结果。

  • SalesLT.SalesOrderDetail生成插入语句,并以OrderQty值设置上限(例如 1,000 个单位),然后验证系统是否强制执行数量约束。

  • 使用无效的电子邮件格式为 SalesLT.Customer 创建测试数据,并编写查询标记这些记录以供审阅。

  • SalesLT.Product生成包含边界情况定价的数据(例如StandardCost = 0或负值),并编写查询以突出显示异常。

  • 通过生成 500 SalesOrderDetail 行来模拟数据完整性,这些行正确引用了相关表中的有效 ProductIDSalesOrderID ,并确保 GitHub Copilot 包含验证逻辑。

  • 编写一个测试脚本,确认 SalesOrderHeader.TotalDue 该值始终大于 SubTotal 每个订单的值,有助于在业务逻辑中发现错误计算。

  • 使用 SQLAlchemy 创建一个测试,该测试尝试插入一个SalesOrderDetail记录,记录中的ProductID为 null,并验证 ORM 是否由于外键约束而引发完整性错误。

  • 使用 Prisma 时,生成尝试插入Product并且将其StandardCost设置为-10的测试逻辑。 验证 Prisma 是否拒绝该条目并记录相应的错误消息。

反馈:生成用于测试和模拟的数据

为了帮助我们优化和改进 MSSQL 扩展的 GitHub Copilot,请使用以下 GitHub 问题模板提交反馈: GitHub Copilot 反馈

提交反馈时,请考虑包括:

  • 测试方案 – 告诉我们你关注哪些领域,例如架构创建、查询生成、安全性、本地化。

  • 效果良好 - 描述任何感觉流畅、有用或超出预期的体验。

  • 问题或漏洞 – 包括任何问题、不一致或令人困惑的行为。 屏幕截图或屏幕录制特别有用。

  • 改进建议 - 分享改进可用性、扩大覆盖范围或增强 GitHub Copilot 响应的想法。