昨天看到51testing上有個帖子說討論下存儲過程的測試。在存儲過程這一方面,我算是做得不少了,基本上70%的工作是關於存儲過程測試的。於是第一次在51testing上發表了自己的第一份見解。在帖子上簡單的說下了存儲過程測試的進行和需要注意的幾個地方。
今晚,趁着這難得的閑暇稍微詳細說下存儲過程測試的過程吧!
存儲過程測試主要有兩方面內容。一個是業務邏輯,也就是實現功能。其次是性能方面,尋求最優的SQL語句。
⑴:業務邏輯
給你一堆存儲過程放在數據庫里,你需要去測試它是否實現了該實現的功能,未出現多余的“功能”;獲取到了想要的數據,未得到冗余的數據。由於數據獲取到后是需要進行傳輸的,如果有冗余的數據,雖然在獲取的時候能夠處理掉,但是會給服務器造成很大的壓力,久而久之,難免會出現瓶頸。再者,對於一系列的存儲過程,你需要看它是否按照需求完成了所需要的功能,是否能夠把一系列的流程跑通。
對於業務邏輯方面的測試,能夠在數據庫里執行該語句,通過傳入一些參數后能夠進行手動的測試。說到這,大家肯定會問是否能夠實現自動話測試吧?當然,這里有一定的技巧。我是通過C#語言來簡單的實現了。通過ADO.NET調用存儲過程,傳入一些參數,執行存儲過程就能夠通過點擊一個按鈕就把所有的存儲過程跑完了。在這個過程,需要收集的數據是一個難點,因為你需要這條數據一直能用下去。測試數據庫並不是你一個人在用,所以這條數據得很靈活,需要仔細了哦,不然會經常跑不通。 為了再智能點,就是不需要自己去點某個按鈕就能自動執行所有的存儲過程。當然就是利用開機自動運行了。有個第三方工具:Nunit。你只需要把存儲過程代碼寫好,編譯好后,加載進去,點擊執行就能夠一次性跑完代碼,跑不通的會有顏色提示。這個工具其實看似簡單,里面還有很多的功能,本人不才,未能發掘到更多,只是簡單的利用了跑代碼而已。把Nunit結合另外幾個插件使用,如:Nant、NUnit2Report、nantcontrib。這幾個一起使用完全可以架構出一套自動話測試平台。具體如何進行,請看下回。
⑵:存儲過程的性能。
存儲過程是由SQL語句經過一些修飾而來的,說到性能,也就是sql語句的性能了。一條SQL語句的性能有很多地方能得出來。有經驗的同志可以一眼就能看出大部分SQL語句的性能高低。所以,很簡單的一個方法就是肉眼觀看。如今,很多軟件都支持查看SQL語句運行的時間,從時間上也可以很直觀的看出SQL語句的性能。在相同的外界環境下,時間越短,顯然效率是越高的。依稀記得在51testing上有一篇短文上介紹了一條語句,可以直接在oracle是sqlplus上執行后可以直接查看出SQL運行的時間,哎,記性不好,忘記了,大家應該可以搜出來。 查看SQL語句的執行時間,有很多方法,PL/sql就會顯示SQL語句的執行時間。你也可以通過ado來調用存儲過程來查看SQL語句的執行時間,也是很容易實現的。
在測試領域工作了一年多了,終於發現自己有點作為了。如今還在為工作的事情感到擔心,其實,有時間可以多做些總結什么的。所以,潛水這么久,第一發文來記錄自己的測試工作和發表自己的工作心得吧。希望能找到份好工作,也希望能早點走出陰影。