51Testing软件测试论坛

标题: 存储过程与sql怎么进行测试?(2012-4-5)(获奖名单已经公布) [打印本页]

作者: lsekfe    时间: 2012-3-26 13:41
标题: 存储过程与sql怎么进行测试?(2012-4-5)(获奖名单已经公布)
本周的问题为“存储过程与sql怎么进行测试?”
此话题由会员xsd112640提供,如果你也有问题想提出来和大家一起讨论,请点击此处>>

如果你也有问题想提出来和大家一起讨论,
请点击此处>>
说不定下期讨论的问题就是由你提出的哦,请快快参与吧!
[attach]78175[/attach]

获奖名单

奖项

获奖名单

奖励

答案链接

一等奖

591745293

手机充值卡50元

6#

作者: stone-石头    时间: 2012-3-27 14:18
没有测试过,帮顶!马克关注!
作者: lsekfe    时间: 2012-3-27 14:27
难道这个题目很多人也不会!
作者: L如果爱R    时间: 2012-3-27 14:43
我测试的对象基本是SQL,不知道你想要的是测试SQL哪一方面,是测试优化方面还是测是否达到目的也就是功能方面呢?但我的测试目的就是验证是否达到目的。验证的方法就是遵循开发文档,测试存储过程的每一步是否达到应有的结果。换句话说,测试的人跟开发一样 ,使用自己的方法根据开发文档进行编写,然后跟开发的作对比。发现开发的存储过程问题。在这个过程中,需要自己建立测试数据。
作者: QQD    时间: 2012-3-27 15:10
记一下,来学习
作者: 591745293    时间: 2012-3-27 16:37
我做的工作基本上70%是关于存储过程测试的。主要有两点:
1.测试功能。也就是看该存储过程是否达到了该达到的目标,是否获取到所需要的数据,是否存在多余的数据。还得结合一系列的存储过程来验证逻辑是否达到,在验证逻辑这一块,需要了解整个业务的流程,需要自己准备测试数据,而且测试数据整理起来有些麻烦。可以通过ADO做到自动化测试。
2.测试性能。当前情况下有很多方法测试性能。首先就是看SQL语句,这需要对SQL语句比较了解的人才能知道该语句的性能。还有就是可以通过软件来看SQL语句在相同环境下运行的时间,可以对比查看出效率。对于不同的数据库支持不同的方法。
作者: andyhuu    时间: 2012-3-28 10:10
我前几天面试也碰到这样的问题了,问我数据库的存储过程是怎样的,貌似我快忘干净了...
作者: dongdongxu    时间: 2012-3-28 11:34
sql语句执行的时候要先编译,然后执行。存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程 ……
专题链接:http://tech.ccidnet.com/zt/guocheng/
作者: L如果爱R    时间: 2012-3-28 11:55
6楼 ,工作内容基本一致,貌似同行啊!!!
作者: ervinzhang    时间: 2012-3-28 13:51
支持一下6楼同学,我也说一两点我平时的做法:
1,功能方向,可以通过2方面来实现验证,一是数据测试法,即做一批假数据,通过存储过程操作这批假数据,查看结果是否符合逻辑。二是写一个新的存储过程,通过不同的逻辑分支调用需要测试的存储过程,查看调用后的执行结果,是否符合设计逻辑。
2,性能方向,需要测试者对存储过程的编写方法比较了解,第一种测试方法是:通过读代码或者自己不看源代码的情况下实现一个相同功能的存储过程,拿自己实现的与源代码对比,看看哪个逻辑上性能更好一些。第二种是拿自己调优后的代码和源代码分别操作假数据,通过工具监控执行时间,对系统的资源消耗等指标,然后对比结果。
3,SQL测试的话,个人认为依赖于技术水平和经验
作者: 西墨客    时间: 2012-3-28 14:07
之前有写过存储过程  不知道你要进行什么测试
作者: TesterChen    时间: 2012-3-28 15:31
我做的工作基本上70%是关于存储过程测试的。主要有两点:
1.测试功能。也就是看该存储过程是否达到了该达到 ...
591745293 发表于 2012-3-27 16:37


   上面说的没有错……
   或者在对功能进行测试时,要注意存储过程是否带参数,如果带参数的话,那么要针对参数的情况进行细化测试;
   另外,对于性能一方面是DBA的直观查检,另一个是单个的执行,查看效率,也就是完成时间,另一个如果有能力可以尝试并发的执行,看他的完成时间能否满足要求。
作者: 原点    时间: 2012-3-28 15:38
呃 测试过一些报表,都是用的存储过程,我那时主要就是看结果数据是否正确。
作者: 喝少了想上树    时间: 2012-3-28 15:49
呃 测试过一些报表,都是用的存储过程,我那时主要就是看结果数据是否正确。
原点 发表于 2012-3-28 15:38



    主要还是功能上测试,数据逻辑是否正确
性能测试貌似没有
作者: 喝少了想上树    时间: 2012-3-28 15:50
回复 8# dongdongxu
用PL/SQL按照逻辑写规则
性能测试还真没
作者: 591745293    时间: 2012-3-28 20:56
我就是传说中的6楼啦。我总结了下存储过程的测试心得,http://www.51testing.com/?uid-41 ... space-itemid-810556 大家去看下吧。有疑问可以提出来哦。
作者: hccywq    时间: 2012-3-28 23:25
存储过程:plsql自带的测试的功能,可以测试存储过程,我们只需要填写入参就可以
作者: alex765264    时间: 2012-3-29 10:03
直接在pl/sql中对存储过程直接test,输入参数执行,就有返回结果
作者: juntingstruggle    时间: 2012-3-29 11:19
回复 4# L如果爱R


    能有相关资料么?想学习一下
作者: 819longjiayan    时间: 2012-3-29 17:04
还不了解什么是存储过程的童鞋来看看,请大家赐教
作者: 绿叶的执着    时间: 2012-3-29 17:35
我没做过这方面的,学习了。。。。
作者: littlebig    时间: 2012-3-30 00:36
存储过程测试,个人感觉就像上面说的,可以直接在pl/sql里面直接输入参数,看结果;结果不仅要对,而且格式也要正确,因为存储过程一般都是被调用,需要和其他程序匹配;输入参数是难点,如果可以自动化得到你的参数,你就可以自动化了,不管是dbunit,nunit,都只是辅助工具,当然要整个测试自动化,这些工具对于搭建自动化平台是少不了的;输入参数需要考虑,如何触发存储过程的异常处理,如果遇到数据update,需要看看是什么级别的锁,然后考虑是不是有些地方需要外联结,字段是null的东西如何处理,性能.
作者: littlebig    时间: 2012-3-30 00:42
设计不同的输入参数,调用存储过程不管是用pl/sql还是其他工具,验证结果。总是得过程是这个样子,但是如何设计输入是个大难题,个人感觉需要考虑各种可能业务的数据,可以触发触发异常处理的数据,是不是有些数据需要使用外联结查询,null值字段怎么处理,遇到锁会怎么办,update的锁是什么级别,性能如何
作者: yxsong66    时间: 2012-3-31 00:21
mark,学习下,基本忘光了
作者: SariyaLee    时间: 2012-3-31 11:29
呃,没有测过。。
作者: wjtest    时间: 2012-3-31 18:34
我测试的存储过程不多,个人意见:
  1、先test 通不通过
2 、观察存储过程执行速度 ,假如太慢了要看看 是否有 数据量较大的表关联,如果 是每张表的数据较大(几千万的数据),超过2张关联 需要借助临时表  ,否则 数据入库的时候 会很 耗性能,也占用了资源
作者: 吴限峰光    时间: 2012-4-1 06:53
没做过性能,功能上的测试方法差不多:
首先,看懂源码,分析流程是否有错
其次,输入数据,验证输出是否有错
作者: megan0228    时间: 2012-4-1 10:47
我也没测试过,正想知道这方面的知识
作者: 乐呗123    时间: 2012-4-1 10:59
上来学习一下,有木有相关selenium相关方面的测试呢?谢谢!
作者: liangxianquan85    时间: 2012-4-1 16:17
路过进来学习学习~
作者: yezhaohui520    时间: 2012-4-1 21:42
本帖最后由 yezhaohui520 于 2012-4-1 21:48 编辑

学好数据库及存储过程   然后先静态检视    考虑语法以及逻辑  再借助工具实际执行    对输入输出编写测试用例  相当于是单元测试测试函数一样测试存储过程
作者: skyzhu    时间: 2012-4-1 22:25
功能:类似于白盒的函数测试,单元测试等,针对参数进行,验证返回值
自动化:会用任何代码方式调用即可,遍历参数,获取返回值,看具体情况
性能:可以用辅助工具监控,MSSQL比较多,查看读写、耗时等,另外数据库使用的索引也比较重要;也可以直接用LR之类的工具,ODBC之类的协议来直接跑结果。测试性能也顺便跑一下可能的并发问题
安全:对于带有SQL语句拼接的需要顺带测试一下
作者: mew234    时间: 2012-4-3 09:45
我之前的作法是:
先弄清楚测试目的与准备好测试数据后,
是依据商业规则写存储程序,
写完之后再把上千笔测试数据(从csv 汇入),
观察存储程序是否可以正常运作。
作者: chxcyp    时间: 2012-4-5 10:16
学习了,之前测过存储过程的能能测试,没玩那么高级
作者: chxcyp    时间: 2012-4-5 10:16
学习了,之前测过存储过程的能能测试,没玩那么高级
作者: 红茶sweet1    时间: 2012-4-5 10:27
回复 6# 591745293
顶顶你~
作者: chxcyp    时间: 2012-4-5 10:29
我觉得性能方面的测试直接拿工具运行就行,没必要自己写一个新的存储过程,或者把研发的存储过程调优后再使用性能工具运行后的结果进行比对,有点耗时间
功能方面的测试可以写一个新的存储过程,每次执行时调用需要测试的存储过程,查看运行结果便可
作者: Merlynee    时间: 2012-4-5 11:25
回复 10# ervinzhang


    峰哥最近经常在51晃哈;
   那如果存储过程的性能不够高,怎么定位具体是哪一句或者关键词的问题呢?需要逐词调试还是有什么好的办法?
作者: mew234    时间: 2012-4-5 15:05
估计可能是 join 或 index 的地方需要调整。
以前遇过几次,问题都是出在这里。

希望这回答对你有帮助


作者: duangang312    时间: 2012-4-6 23:00
回复  ervinzhang


    峰哥最近经常在51晃哈;
   那如果存储过程的性能不够高,怎么定位具体是哪一 ...
Merlynee 发表于 2012-4-5 11:25



    做深了就是DBA的事情,性能不够高,首先就是看执行计划。一般这种事情,最好是配合DBA来做,测试过于纠结的话,有点舍本求末了。当然,了解一些常用的优化方法,对工作是多多宜善。
作者: 锐鑫模具钢    时间: 2012-5-5 19:49
我在努力中












锐鑫模具钢材
作者: whhuang    时间: 2012-5-9 23:18
1、业务逻辑的测试
     1)需求分析,分析出要统计的数据包括哪些?确定统计的对象!
     2)检查存储过程逻辑文档中对整个数据的统计的可行性,保证整个统计的思路的可行性。
     3)检查存储过程逻辑文档中对各个子项的统计方法的正确性。保证数据项和数据量无冗余,无遗漏。
2、统计逻辑的测试
     1)首先进行存储过程sql语句的检查,检查各个子项的统计语句是否正确。
     2)初始化数据,执行存储过程,分别检查各个子项统计数据的正确性。
     3)初始化方向的数据,执行存储过程,分别检查各个子项统计数据的正确性。
3、性能测试
     存储过程的执行过程中,在现网中统计大量的数据,存储过程的执行效率非常重要,避免影响数据库的运行性能。
     目前未进行相关测试,需要学习相关方面的测试。
4、对于存储过程的测试,需求静态+动态方法进行。
   1)静态测试:对sql脚本进行检查,检查各个sql语句是否正确。
   2)动态测试:执行存储过程,检查统计结果。
作者: 591745293    时间: 2013-6-5 14:42
一年前的帖了,刚才才看到我中一等奖的消息,没想到充值卡还能用,呵呵!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2