Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menghasilkan Data Uji di SQL Server

Saat menguji fungsionalitas aplikasi Anda atau kinerja prosedur tersimpan tertentu atau kueri ad-hoc di lingkungan pengembangan, Anda harus memiliki data yang disimpan dalam database pengembangan yang khas atau serupa dengan data yang disimpan dalam database produksi. Ini karena kinerja kueri yang memproses 50 catatan akan berbeda dengan kinerja kueri yang sama yang memproses 50 juta baris. Memulihkan salinan basis data produksi ke server basis data pengembangan untuk tujuan pengujian tidak selalu merupakan opsi yang valid, karena data penting yang disimpan dalam basis data ini dan tidak boleh dibuka untuk dilihat semua karyawan, kecuali jika Anda sedang mengembangkan yang baru. aplikasi dan belum ada database produksi.

Alternatif terbaik dan paling aman adalah mengisi tabel database pengembangan dengan data pengujian. Pembuatan data pengujian berguna untuk menguji kinerja aplikasi atau fungsionalitas baru tanpa mengubah data produksi. Tidak ada satu cara langsung untuk menghasilkan data pengujian yang sesuai dengan semua skenario, terutama ketika Anda perlu menghasilkan data dalam jumlah besar untuk menguji kinerja kueri dan transaksi yang kompleks di mana Anda harus mencakup semua kemungkinan kombinasi kasus pengujian.

Untuk mengisi tabel dengan data dalam jumlah besar, cara termudah adalah dengan menulis skrip sederhana yang terus menyisipkan record identik ke dalam tabel database dengan jumlah duplikat yang Anda butuhkan. Tetapi masalahnya adalah SQL Server Query Optimizer akan membuat rencana yang berbeda pada basis data pengembangan dari yang dibangun pada basis data produksi karena perbedaan dalam distribusi data. Misalnya, skrip di bawah ini akan mengisi tabel Siswa dengan 100 ribu catatan pengujian redundan menggunakan Nomor GO pernyataan:

INSERT INTO Students (FirstName, LastName, BirthDate, STDAddress) VALUES ('John','Horold','2005-10-01','London, St15')

GO 25000

INSERT INTO Students (FirstName, LastName, BirthDate, STDAddress) VALUES ('Mike','Zikle','2005-06-08','London, St18')

GO 25000

INSERT INTO Students (FirstName, LastName, BirthDate, STDAddress) VALUES ('Faruk','Cedrik','2005-03-15','London, St24')

GO 25000

INSERT INTO Students (FirstName, LastName, BirthDate, STDAddress) VALUES ('Faisal','Ali','2005-12-05','London, St41')

GO 25000

Pilihan lain adalah menghasilkan data acak tergantung pada tipe data setiap kolom. Kolom ID dengan properti IDENTITY akan secara otomatis menghasilkan nomor urut tanpa perlu upaya pengkodean dari pihak Anda. Tetapi jika Anda berencana untuk menghasilkan nilai acak untuk siswa, Anda dapat memanfaatkan RAND() T-SQL berfungsi dan menampilkan hasilnya sebagai tipe data numerik yang diperlukan. Misalnya, skrip di bawah ini akan menghasilkan 100 ribu nilai acak untuk siswa antara 1 dan 100 dengan tiga tipe data yang berbeda:nilai INTEGER, nilai NYATA, dan nilai DECIMAL, dengan kemampuan untuk mengontrol rentang nilai ini tergantung pada keterampilan matematika dan pemrograman Anda , seperti yang ditunjukkan di bawah ini:

INSERT INTO StudentsGrades (STDGrade) VALUES (CAST(RAND(CHECKSUM(NEWID()))*100 as int)) AS INT_Grage

GO 100000

INSERT INTO StudentsGrades (STDGrade) VALUES (CAST(RAND(CHECKSUM(NEWID()))*100 as real)) AS Real_Grage

GO 100000

INSERT INTO StudentsGrades (STDGrade) VALUES (CAST(RAND(CHECKSUM(NEWID()))*100 as decimal(6,2))) AS Decimal_Grage

GO 100000

Membuat nama acak juga dapat dilakukan dengan menggunakan basis data pengujian Microsoft AdventureWorks dan Northwind . Anda perlu mengunduh basis data ini dari situs web Microsoft, melampirkan basis data ini ke instans SQL Server Anda dan memanfaatkan data yang disimpan dalam basis data ini untuk menghasilkan nama acak dalam basis data pengembangan Anda. Misalnya, tabel DimCustomer dari database AdventureworksDW2016CTP3 berisi sekitar 18 ribu nama depan, nama tengah, dan nama belakang yang bisa Anda gunakan. Anda juga dapat menggunakan pernyataan CROSS JOIN untuk menghasilkan sejumlah besar kombinasi nama-nama ini untuk melebihi nilai 18K. Skrip berikut dapat digunakan untuk menghasilkan 100 ribu nama depan dan nama belakang:

INSERT INTO StudentsGrades (First_Name, Last_Name)

SELECT TOP 100000 N.[FirstName],cN.[LastName]

FROM AdventureworksDW2016CTP3.[dbo].[DimCustomer] N

CROSS JOIN AdventureworksDW2016CTP3.[dbo].[DimCustomer] cN

Alamat email dan tanggal acak juga dapat dibuat dari database pengujian Microsoft. Misalnya, kolom Tanggal Lahir dan kolom Alamat Email dari tabel DimCustomer yang sama dapat memberikan tanggal dan alamat email acak. Skrip di bawah ini dapat digunakan untuk menghasilkan 100 ribu kombinasi Tanggal Lahir dan alamat Email:

INSERT INTO StudentsGrades (BirthDate, EmailAddress)

SELECT TOP 100000 N.BirthDate,cN.EmailAddress

FROM AdventureworksDW2016CTP3.[dbo].[DimCustomer] N

CROSS JOIN AdventureworksDW2016CTP3.[dbo].[DimCustomer] c

Nilai acak dari kolom Negara juga dapat dibuat menggunakan tabel Person.CountryRegion dari database pengujian AdventureWorks2016CTP3. Ini dapat memberi Anda lebih dari 200 nama dan kode negara yang dapat Anda manfaatkan dalam basis data pengembangan Anda. Misalnya, Anda dapat menganggapnya sebagai tabel pencarian untuk memetakan antara nama negara dan kode, seperti pada skrip di bawah ini:

INSERT INTO MappedConutries (CountryRegionCode, Name)

SELECT [CountryRegionCode],[Name]

FROM [AdventureWorks2016CTP3].[Person].[CountryRegion]

Then insert a random name or country code from these countries that has ID equal to a random ID generated between 1 and 238, as the script below:

INSERT INTO StudentsGrades (Country_Name) values

( (SELECT NAME FROM MappedConutries WHERE ID=CAST(RAND(CHECKSUM(NEWID()))*238 as int)))

GO 10000

Untuk menghasilkan nilai Alamat acak, Anda dapat mengambil manfaat dari data yang disimpan di Person. Tabel alamat dari database pengujian AdventureWorks2016CTP3. Ini berisi lebih dari 19K alamat berbeda dengan lokasi spasialnya, yang dapat Anda gunakan dengan mudah dalam database pengembangan Anda dan mengambil kombinasi acak dari nilai-nilai ini, dengan cara yang sama seperti yang kami lakukan pada contoh sebelumnya. Skrip di bawah ini dapat dengan mudah digunakan untuk menghasilkan 100 ribu alamat acak dari tabel Person.Address:

INSERT INTO StudentsGrades (STD_Address) values

( (SELECT NAME FROM [AdventureWorks2016CTP3].[Person].[Address] WHERE [AddressID]=CAST(RAND(CHECKSUM(NEWID()))*19614 as int)))

GO 100000

Untuk menghasilkan sandi acak bagi pengguna sistem tertentu, kami dapat memanfaatkan CRYPT_GEN_RANDOM fungsi T-SQL. Fungsi ini mengembalikan kriptografi, bilangan heksadesimal yang dihasilkan secara acak dengan panjang sejumlah byte tertentu, yang dihasilkan oleh Crypto API (CAPI). Nilai yang dikembalikan dari fungsi tersebut dapat dikonversi ke tipe data VARCHAR agar memiliki kata sandi yang lebih bermakna, seperti pada skrip di bawah ini, yang menghasilkan 100 ribu kata sandi acak:

INSERT INTO SystemUsers (User_Password) SELECT CONVERT(varchar(20), CRYPT_GEN_RANDOM(20))

GO 100000

Menghasilkan data uji untuk mengisi tabel database pengembangan juga dapat dilakukan dengan mudah dan tanpa membuang waktu untuk menulis skrip untuk setiap tipe data atau menggunakan alat pihak ketiga. Anda dapat menemukan berbagai alat di pasar yang dapat digunakan untuk menghasilkan data pengujian. Salah satu alat luar biasa ini adalah dbForge Data Generator untuk SQL Server . Ini adalah alat GUI yang kuat untuk generasi cepat data pengujian yang berarti untuk database pengembangan. Alat pembuatan data dbForge mencakup 200+ generator data yang telah ditentukan sebelumnya dengan opsi konfigurasi yang masuk akal yang memungkinkan Anda untuk meniru data acak cerdas kolom. Alat ini juga memungkinkan pembuatan data demo untuk database SQL Server yang sudah diisi dengan data dan membuat generator data pengujian kustom Anda sendiri. dbForge Data Generator untuk SQL Server dapat menghemat waktu dan tenaga Anda untuk pembuatan data demo dengan mengisi tabel SQL Server dengan jutaan baris data sampel yang terlihat seperti data nyata. dbForge Data Generator untuk SQL Server membantu mengisi tabel dengan tipe data yang paling sering digunakan seperti tipe data Basic, Business, Health, IT, Location, Payment, dan Person. Gambar di bawah menunjukkan betapa mudahnya alat ini bekerja:

Setelah Anda menginstal alat dbForge Data Generator untuk SQL Server dan menjalankan alat itu, Anda perlu menentukan nama server target dan nama database di jendela Connection seperti yang ditunjukkan di bawah ini:

Di jendela Opsi, Anda dapat menentukan jumlah baris yang akan dimasukkan ke dalam tabel Anda dan opsi lain yang berbeda yang mengontrol kriteria data pengujian yang dihasilkan, seperti yang ditunjukkan di bawah ini:

Setelah menyesuaikan opsi agar sesuai dengan persyaratan data pengujian Anda, klik tombol , dan jendela baru dengan daftar semua tabel dan kolom di bawah database yang dipilih akan ditampilkan, menanyakan Anda untuk memilih tabel mana yang akan diisi dengan data pengujian, seperti yang ditunjukkan di bawah ini:

Cukup pilih tabel yang perlu Anda isi dengan data, dan alat akan secara otomatis memberi Anda data yang disarankan di bagian Pratinjau di bagian bawah jendela dan opsi yang dapat disesuaikan untuk setiap kolom dalam tabel yang dapat Anda sesuaikan dengan mudah, seperti yang ditunjukkan di bawah ini:

Misalnya, Anda dapat memilih dari tipe data generator bawaan yang dapat digunakan untuk menghasilkan nilai kolom ID seperti yang dijelaskan sebelumnya:

Atau sesuaikan karakteristik nilai kolom ID tersebut, seperti Uniqueness, Min, Max, dan Increment dari nilai yang dihasilkan, seperti di bawah ini:

Selain itu, kolom First_Name dapat dibatasi menjadi laki-laki atau perempuan atau kombinasi dari kedua jenis ini. Selain itu, Anda dapat mengontrol persentase NULL atau nilai kosong dalam kolom tersebut, seperti yang ditunjukkan di bawah ini:

Kolom BirthDate juga dapat dikontrol dengan menentukan kategori dimana siswa tersebut akan masuk, seperti Siswa, Remaja, Dewasa atau Pensiunan seperti yang ditunjukkan di bawah ini:

Anda juga dapat menentukan generator yang dijelaskan lengkap yang dapat digunakan untuk menghasilkan nilai kolom Negara seperti yang ditunjukkan di bawah ini:

Dan sesuaikan persamaan yang akan digunakan untuk menghasilkan nilai kolom Alamat Email sebagai berikut:

Selain kompleksitas persamaan yang dapat disesuaikan, kami menghasilkan nilai kolom Kata Sandi, seperti yang ditunjukkan di bawah ini:

Dan akhirnya, untuk contoh saya dan bukan untuk alat ajaib ini, generator dan persamaan digunakan untuk menghasilkan nilai kolom Alamat di bawah ini:

Setelah tur ini, Anda dapat membayangkan bagaimana alat ajaib ini akan membantu Anda menghasilkan data dan mensimulasikan skenario waktu nyata untuk menguji fungsionalitas aplikasi Anda. Instal dan nikmati manfaat dari semua fitur dan opsi yang tersedia.

Alat yang berguna:

dbForge Data Generator untuk SQL Server – alat GUI yang kuat untuk generasi cepat data pengujian yang berarti untuk database SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipkan Massal File CSV yang Dikutip Sebagian di SQL Server

  2. Apa itu SQL Server RAISERROR?

  3. Ubah Fungsi Bernilai Tabel di SQL Server

  4. Ukuran maksimum untuk Kueri SQL Server? klausa IN? Apakah ada Pendekatan yang Lebih Baik?

  5. Hapus nomor dari string sql server