次の方法で共有


クイックスタート: テストとモックオブジェクトの生成のためのデータ生成

このクイック スタートでは、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.

感想をお聞かせください

MSSQL 拡張機能の GitHub Copilot を改良および改善するために、次の GitHub 問題テンプレートを使用してフィードバックを送信します。 GitHub Copilot フィードバック

フィードバックを送信する場合は、次の内容を検討してください。

  • テスト済みのシナリオ – スキーマの作成、クエリの生成、セキュリティ、ローカライズなど、どの領域に重点を置いたかをお知らせください。

  • うまくいったこと - スムーズで役に立ち、期待を超えた経験について説明します。

  • 問題またはバグ – 問題、不整合、または混乱を招く動作を含めます。 スクリーンショットや画面の記録は特に役立ちます。

  • 改善の提案 – 使いやすさの向上、カバレッジの拡大、GitHub Copilot の応答の強化に関するアイデアを共有します。