存储过程测试主要有两方面内容。一个是业务逻辑,也就是实现功能。其次是性能方面,寻求最优的SQL语句。
1、业务逻辑
给你一堆存储过程放在数据库里,你需要去测试它是否实现了该实现的功能,未出现多余的“功能”;获取到了想要的数据,未得到冗余的数据。由于数据获取到后是需要进行传输的,如果有冗余的数据,虽然在获取的时候能够处理掉,但是会给服务器造成很大的压力,久而久之,难免会出现瓶颈。再者,对于一系列的存储过程,你需要看它是否按照需求完成了所需要的功能,是否能够把一系列的流程跑通。
对于业务逻辑方面的测试,能够在数据库里执行该语句,通过传入一些参数后能够进行手动的测试。说到这,大家肯定会问是否能够实现自动话测试吧?当然,这里有一定的技巧。我是通过C#语言来简单的实现了。通过ADO.NET调用存储过程,传入一些参数,执行存储过程就能够通过点击一个按钮就把所有的存储过程跑完了。在这个过程,需要收集的数据是一个难点,因为你需要这条数据一直能用下去。测试数据库并不是你一个人在用,所以这条数据得很灵活,需要仔细了哦,不然会经常跑不通。
为了再智能点,就是不需要自己去点某个按钮就能自动执行所有的存储过程。当然就是利用开机自动运行了。有个第三方工具:Nunit。你只需要把存储过程代码写好,编译好后,加载进去,点击执行就能够一次性跑完代码,跑不通的会有颜色提示。这个工具其实看似简单,里面还有很多的功能,本人不才,未能发掘到更多,只是简单的利用了跑代码而已。把Nunit结合另外几个插件使用,如:Nant、NUnit2Report、nantcontrib。这几个一起使用完全可以架构出一套自动话测试平台。具体如何进行,请看下回。
2、存储过程的性能
存储过程是由SQL语句经过一些修饰而来的,说到性能,也就是sql语句的性能了。一条SQL语句的性能有很多地方能得出来。有经验的同志可以一眼就能看出大部分SQL语句的性能高低。所以,很简单的一个方法就是肉眼观看。如今,很多软件都支持查看SQL语句运行的时间,从时间上也可以很直观的看出SQL语句的性能。在相同的外界环境下,时间越短,显然效率是越高的。依稀记得在51testing上有一篇短文上介绍了一条语句,可以直接在oracle是sqlplus上执行后可以直接查看出SQL运行的时间,哎,记性不好,忘记了,大家应该可以搜出来。
查看SQL语句的执行时间,有很多方法,PL/sql就会显示SQL语句的执行时间。你也可以通过ado来调用存储过程来查看SQL语句的执行时间,也是很容易实现的。