白盒测试 存储过程测试

喵喵 · 2017年03月15日 · 最后由 Test44 回复于 2019年10月16日 · 3488 次阅读

线上项目运行过程中,通常会有些 bug,是直接修改数据库的存储过程就可以解决,类似这种情况,实际工作中会在真实环境执行存储过程之前,进行存储过程的测试,用到的方法如下:

环境

VS2013+SQL Server2012

数据库中存在存储过程(简单例子):


-===========================================================================
    --- Author:     shilinjie
    -- ALTER date:  20170313
    -- Descaption:  该存储过程用于通过id获取详情
    -- ===========================================================================
    ALTER proc [dbo].[getdetailbyid]
        @ID int
    AS
    BEGIN

        select * from tb_A where pid=@ID

    END
    --EXEC [getdetailbyid] '1'

测试步骤

打开 VS2013,打开 SQL Server 对象资源管理器,如下图:

添加 SQL Server:

填写连接数据库的用户名密码:

找到需要测试的存储过程,右键选择调试:

此时会弹出输入参数,本例中的存储过程只有一个参数 id:

之后会进入调试状态,F11 进行单步调试即可,鼠标指向参数,查看传入参数的值:

执行之后,会显示结果和返回值:

这只是个简单例子,测试过程中需要针对每个传入参数进行测试,如果存储过程中有分支,每个分支也都需要测试

可能遇到的问题

问题:在启动 sql server 中,启动调试时报错:无法启动 transact-sql 调试器

解决方法:
将 Windows 登录帐户添加为 sysadmin,在 sql server 中执行:

exec sp_addsrvrolemember 'PC-name\Administrator', 'sysadmin'
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

赞,我测试 oracle 的存储过程,是用 docker 安装一个 oracle 来测试的。

去存储过程化才是正道,哈哈哈哈

Henry Jiang 回复

好高级的回复。哈哈

恒温 回复

嗯~你那边测存储过程需要像自动化测试那样组织用例和代码不?还是说测一次,现写一次用例,我这边测的时候才会写,写完就拉到了,也没系统整理过。。。

有时还是能发现 bug 的,不过几率不高,哈哈,我水平还是有限

sql 存储过程测试:1,校验入参和出参;2,校验 SQL 逻辑;3,优化 SQL 性能。
楼主文章涉及了第一点,其实我们最重要是第二点,最难得是第三点。
我的理解和测试是,在充分读懂要测试的 SQL 存储过程,将它的 SQL 逻辑,一点点分解,然后自己写 SQL 校验所测试得到的数据是否和开发的 SQL 逻辑得到的数据能一致,这个还是要多提高 SQL 能力。
至于 SQL 性能,很多开发的 SQL 存储过程有可能会出现冗长,在你的能力范围内给出响应更快的 SQL,尤其是当 SQL 出现索引要重点注意。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册