Поделиться через


Краткое руководство. Создание данных для тестирования и имитации

В этом кратком руководстве вы узнаете, как использовать GitHub Copilot для создания реалистичных и тематических наборов данных для поддержки разработки, тестирования и демонстрации приложений. Анализируя схему и контекст базы данных, GitHub Copilot может создавать макетные данные, выровненные с реальными форматами, имитировать пограничные варианты и сократить усилия вручную при заполнении баз данных, что делает тестирование более быстрым и более репрезентативным для фактических сценариев.

Начало работы

Убедитесь, что вы подключены к базе данных и открываете активное окно редактора с расширением MSSQL. Это подключение позволяет участнику чата @mssql понять контекст вашей среды базы данных, обеспечивая точные предложения с учетом контекста. Без подключения к базе данных участник чата не будет иметь контекст схемы или данных для предоставления значимых ответов.

В следующих примерах используется образец базы данных AdventureWorksLT2022, доступный для загрузки на домашней странице проектов сообщества и примеров Microsoft SQL Server.

Для получения наилучших результатов настройте имена таблиц и схем в соответствии с собственной средой.

Убедитесь, что чат включает @mssql префикс. Например, введите @mssql, а затем ваш вопрос или запрос. Это гарантирует, что участник чата понимает, что вы запрашиваете помощь, связанную с SQL.

Создание реалистичных и тестируемых данных с помощью GitHub Copilot

GitHub Copilot может помочь в создании тестовых и макетируемых данных непосредственно из схемы SQL или примеров JSON. GitHub Copilot предлагает контекстные предложения, позволяющие сократить время и повысить охват, независимо от того, подготавливаете ли наборы данных для демонстраций, тестируете пограничные варианты или заполняете среду разработки тематическими или случайными данными. Эти предложения особенно полезны в сценариях, когда запись данных вручную будет медленной или несогласованной.

Ниже приведены распространенные варианты использования и примеры того, что можно спросить с помощью участника чата.

Создание тестовых данных

Используйте GitHub Copilot для создания тематических, случайных или репрезентативных данных для существующих таблиц. Вы можете запросить определенные счетчики строк, применить шаблоны имени и значения или создать наборы данных на основе внешних структур, таких как примеры JSON.

Пример тестовых данных заказчика

Generate mock data for the `SalesLT.Customer` table with 100 sample records.

Пример данных макета продукта

Populate the `SalesLT.Product` table with 50 items, each with unique names and prices.

Пример фиктивных данных о продажах

Generate mock data for the `SalesLT.SalesOrderHeader` table with 200 records, including order dates and customer IDs.

Создание макетных данных из примера JSON

Based on this sample JSON with four records, generate a SQL table schema and populate it with 50 mock records. Use character names from well-known sci-fi books (for example, Dune, Foundation, Ready Player One) for the `firstName` and `lastName` fields to make the data more realistic and themed:

[
  { "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" }
]

Тестирование пограничных вариантов

Перейдите за рамки базового создания данных с помощью GitHub Copilot для имитации пограничных вариантов и проверки поведения вашей системы. GitHub Copilot может помочь создать правильные данные, будь то стресс-тестирование бизнес-логики, проверка сбоев валидации данных или обеспечение согласованности реляционных данных. Он также может записывать утверждения или логику тестирования для проверки результатов.

Ограничения количества тестов

Generate insert statements for `SalesLT.SalesOrderDetail` with `OrderQty` values at the upper boundary (for example, 1,000 units) and verify that the system enforces quantity constraints.

Проверка формата адреса электронной почты

Create test data for `SalesLT.Customer` with invalid email formats and write a query that flags these records for review.

Тестирование аномалий цен в краевых случаях

Generate test data for `SalesLT.Product` with edge-case pricing, such as `StandardCost = 0` or negative values, and write a query that highlights anomalies.

Проверка целостности данных с помощью мокирования

Simulate data integrity by generating 500 `SalesOrderDetail` rows that correctly reference valid `ProductID` and `SalesOrderID` values from related tables, and ensure GitHub Copilot includes validation logic.

Тестирование бизнес-логики

Write a test script that confirms the `SalesOrderHeader.TotalDue` value is always greater than the `SubTotal` for each order, helpful for spotting miscalculations in business logic.

Проверка значения NULL

Using SQLAlchemy, create a test that attempts to insert a `SalesOrderDetail` record with a null `ProductID` and verify that the ORM raises an integrity error due to the foreign key constraint.

Тестирование отрицательных значений

With Prisma, generate test logic that tries to insert a `Product` with a `StandardCost` of `-10`. Validate that Prisma rejects the entry and logs an appropriate error message.

Оставьте свой отзыв

Чтобы помочь нам уточнить и улучшить GitHub Copilot для расширения MSSQL, используйте следующий шаблон проблемы GitHub для отправки отзывов: GitHub Copilot Feedback

При отправке отзывов рассмотрите возможность включения:

  • Сценарии, проверенные . Сообщите нам, какие области вы сосредоточены, например создание схемы, создание запросов, безопасность, локализация.

  • То, что работало хорошо – Опишите любые ситуации, которые казались бесперебойными, полезными или превысили ваши ожидания.

  • Проблемы или ошибки — включает любые проблемы, несоответствия или запутанное поведение. Снимки экрана или записи экрана особенно полезны.

  • Предложения по улучшению — предоставление общих идей для улучшения удобства использования, расширения охвата или повышения ответов GitHub Copilot.