白盒测试 存储过程测试

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

线上项目运行过程中,通常会有些 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 条回复 时间 点赞

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

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

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

Henry Jiang 回复

好高级的回复。哈哈

恒温 回复

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

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

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