Sql server 如何在SQL Server中创建推荐的测试计划

Sql server 如何在SQL Server中创建推荐的测试计划,sql-server,tsql,stored-procedures,tdd,Sql Server,Tsql,Stored Procedures,Tdd,目标: 对一个名为“sp_test”的特定存储过程进行大量不同的测试,以便检查您是否正在基于数据输入检索相同的数据 目的: 如果您对存储的“sp_测试”进行了大量更改,并且在生产阶段使用该sp之前,您需要验证该sp是否工作正常。我需要做很多测试。至少有20种不同的测试方法。下面的代码是一个简化版本 问题: 您是否有推荐的解决方案或方法来创建它? 我的请求是检索一个显示列testnumber、参数和结果的表。(列结果显示“通过”或“失败”) 测试列表如下 我认为这种方法与TDD的方法相同 谢谢 测

目标:
对一个名为“sp_test”的特定存储过程进行大量不同的测试,以便检查您是否正在基于数据输入检索相同的数据

目的:
如果您对存储的“sp_测试”进行了大量更改,并且在生产阶段使用该sp之前,您需要验证该sp是否工作正常。我需要做很多测试。至少有20种不同的测试方法。下面的代码是一个简化版本

问题:
您是否有推荐的解决方案或方法来创建它? 我的请求是检索一个显示列testnumber、参数和结果的表。(列结果显示“通过”或“失败”)

测试列表如下

我认为这种方法与TDD的方法相同

谢谢

测试列表

测试编号1:
参数“科学”
点击:5行
Hit是SP的正确答案

测试编号2:
参数“编程”
点击:1行
Hit是SP的正确答案

测试编号3:
参数“计算机”
点击:第2行
Hit是SP的正确答案

测试编号4:
参数“业务”
点击:1行,BookID=6
点击1是正确的,然后检查BookID是否为6是SP的正确答案


您是否尝试使用特定的测试框架(如tsqlt/Redgate SQL test/VS unit tests/DBFit)来实现这一点?还是自己去实现


如果您手动执行此操作,一个选项是一个带有参数输入值和预期输出的测试配置表,然后使用表值作为输入动态执行(sp_executesql)过程,然后捕获并比较输出。

作为一个简单的示例,这可能会出错,您的示例没有ORDER BY子句,因此结果可以按任何顺序返回,但仍然是正确的。测试修改数据库状态并引发触发器的存储过程的更一般的情况。。。可能会变得复杂。我没有使用任何测试框架。如果您有一个使用SQL和SQL server的具体解决方案,那么创建该解决方案就是为了查看它的一个示例。您到底想测试什么-仅行数匹配、精确的输出模式匹配(结构)、结构和数据、输出参数,所有这些?在使用工具之前的某个时间点,我已经创建了以上所有版本。今天是行数匹配,检索特定的数据值。你提到的其他事情可能在将来成为可能。你是如何解决这个问题的?谢谢
CREATE TABLE [dbo].[Books](
    [BookID] [int] IDENTITY(1,1) NOT NULL,
    [BookName] [varchar](50) NULL,
    [Category] [varchar](50) NULL,
    [Price] [numeric](18, 2) NULL,
    [Price_Range] [varchar](20) NULL,
    PRIMARY KEY CLUSTERED ( [BookID] ASC )
) ON [PRIMARY]


INSERT INTO dbo.Books 
    (BookName, Category, Price, Price_Range)
VALUES  
    ('Computer Architecture', 'Computers', 125.6, '100-150'),
    ('Advanced Composite Materials', 'Science', 172.56, '150-200'),
    ('Asp.Net 4 Blue Book', 'Programming', 56.00, '50-100'),
    ('Strategies Unplugged', 'Science', 99.99, '50-100'),
    ('Teaching Science', 'Science', 164.10, '150-200'),
    ('Challenging Times', 'Business', 150.70, '150-200'),
    ('Circuit Bending', 'Science', 112.00, '100-150'),
    ('Popular Science', 'Science', 210.40, '200-250'),
    ('ADOBE Premiere', 'Computers', 62.20, '50-100')

--------------

CREATE PROCEDURE sp_test 
    @test nvarchar(50)

AS 
    SET NOCOUNT ON;

    SELECT
        [BookID],
        [BookName],
        [Category],
        [Price],
        [Price_Range]
    FROM [dbo].[Books]
    WHERE [Category] = @test

GO