データ移行中のデータテスト
久しぶりに自分のブログを書きました.自動化テストプロジェクトが終了した後、いくつかの新しいプロジェクトに参加しました.一部はテスト自動化とは関係ありません.現在行われているのは、古いシステムのビジネスデータを新しいシステムに移行するデータ移行テストです.ほとんどのテストはデータのテストに集中しており、主にBMDに基づいてデータフィールドの対応関係をテストしている.テスト例はSQLスクリプトで書かれています.これらのテスト例を呼び出すために、簡単なテストフレームワークも書きました.考え方は以下の通りです. Main.sql
この書類は2つの部分があります.
1)TestResultテーブルを生成し、各テストケースの結果を記録する.
2)各テスト・インスタンスに対応するストレージ・プロシージャを呼び出す.
2.各部分のデータにはAccountなどの独自のファイルがあります.sql. このファイルには、テスト・インスタンスを自動化するストレージ・プロシージャが含まれています.Example:
テストを実行する前にsqlは、各試験例の記憶プロセスを生産し、Mainを開く.sqlは、これらのストレージ・プロシージャを呼び出します.
このフレームワーク自体は非常に簡単で、拡張とメンテナンスが容易で、データ移行テストを行う子供靴たちのために、レンガを投げて玉を引く.
本文は“ソフトウェアテストの自動化テストの道”のブログから出て、転載して作者と連絡してください!
この書類は2つの部分があります.
1)TestResultテーブルを生成し、各テストケースの結果を記録する.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestResult]') AND type in (N'U'))
DROP TABLE [dbo].[TestResult]
BEGIN
CREATE TABLE [dbo].[TestResult](
[ResultId] int identity(1,1) NOT NULL,
[TestCaseId] nvarchar(255) NOT NULL,
[ProcedureName] nvarchar(255) NOT NULL,
[TestCaseResult] nvarchar(255) NOT NULL,
[TestLog] nvarchar(max) NULL,
[ExecutionTimeStamp] datetime NULL
)
INSERT INTO [dbo].[TestResult]
VALUES
('C-301','AccountID','NOT RUN','',CURRENT_TIMESTAMP),
......
END
2)各テスト・インスタンスに対応するストレージ・プロシージャを呼び出す.
EXECUTE C_AccountID
2.各部分のデータにはAccountなどの独自のファイルがあります.sql. このファイルには、テスト・インスタンスを自動化するストレージ・プロシージャが含まれています.Example:
--C-301--------------Start of AccountID Procedure-------------------
USE TestDatabase
GO
IF OBJECT_ID ('dbo.AccountID', 'P') IS NOT NULL
DROP PROCEDURE dbo.AccountID
GO
CREATE PROCEDURE dbo.AccountID
AS
BEGIN
DECLARE @AccountIDCount int
DECLARE @DupCount int
DECLARE @LegalCount int
DECLARE @Result nvarchar(10)
DECLARE @Comments nvarchar(255)
/* Test the account id's mapping */
SET @AccountIDCount = 0
SET @AccountIDCount = (SELECT COUNT(*) FROM [MasterData] T LEFT JOIN [TargetList] S
ON CAST( T.[iAccountID] as nvarchar) = CAST( S.[PARTYID] as nvarchar) collate Latin1_General_CI_AS
WHERE T.[iAccountID] IS NULL )
/* Check there is no duplicate account id */
SET @DupCount = 0
SET @DupCount = (SELECT COUNT(*) FROM [MasterData] WHERE (iAccountID in (select iAccountID from [MasterData] group by iAccountID having count(*)>1) ))
/* check the account id is 10 digits */
SET @LegalCount = (SELECT * FROM [Rex_DCL5_LDS_Customer_STG_MasterData] WHERE iAccountID not like '%0000000000%')
IF @AccountIDCount + @DupCount + @LegalCount= 0
BEGIN
SET @Result = 'PASS'
SET @Comments = '[iAccountID] are correct.'
END
ELSE
BEGIN
SET @Result = 'FAIL'
SET @Comments = 'There are: ' + CAST(@AccountIDCount as nvarchar) + 'records of T data are not contained in S data.'+
CAST(@DupCount as nvarchar) + ' records are duplicated' +
CAST(@LegalCount as nvarchar) + ' records are illegal'
END
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestResult]') AND type in (N'U'))
BEGIN
UPDATE [dbo].[TestResult]
SET TestCaseResult = @Result,
TestLog = @Comments,
ExecutionTimeStamp = CURRENT_TIMESTAMP
WHERE ProcedureName = 'AccountID'
END
END
GO
--C-301------------End of dbo.AccountID Procedure-------------------
テストを実行する前にsqlは、各試験例の記憶プロセスを生産し、Mainを開く.sqlは、これらのストレージ・プロシージャを呼び出します.
このフレームワーク自体は非常に簡単で、拡張とメンテナンスが容易で、データ移行テストを行う子供靴たちのために、レンガを投げて玉を引く.
本文は“ソフトウェアテストの自動化テストの道”のブログから出て、転載して作者と連絡してください!