用oracle怎么测试,oracle – 如何(单位)测试数据密集的PL / SQL应用程序
有幾種不同的PL / sql測(cè)試工具.
Steven Feuerstein已經(jīng)寫(xiě)了兩個(gè)
utplsql和
Quest Code Tester for Oracle(以前的QUTE).我是utplsql的粉絲,但它不再有一個(gè)積極的支持社區(qū)(這是一個(gè)恥辱).它也往往是相當(dāng)冗長(zhǎng)的,特別是在設(shè)置測(cè)試夾具時(shí).它確實(shí)有純粹的PL / sql包的基數(shù)虛擬化;源代碼有點(diǎn)精彩,但它是FOSS.
QCTO帶有GUI,這意味著像其他Quest產(chǎn)品即TOAD一樣,它只是Windows.它并不能完全自動(dòng)化測(cè)試數(shù)據(jù)生成,但它提供了一個(gè)支持它的接口.也像其他Quest產(chǎn)品一樣,QCTO雖然有免費(fèi)軟件副本,但仍然獲得許可.
史蒂文(披露,他是我的Oracle英雄之一)已經(jīng)編寫(xiě)了所有PL / sql測(cè)試工具的功能比較.顯然,QOTC出來(lái)了,但我認(rèn)為比較是誠(chéng)實(shí)的. Check it out.
關(guān)于測(cè)試儀器在utplsql的建議
管理單元測(cè)試的測(cè)試數(shù)據(jù)可能是頸部真正的痛苦.不幸的是,utplsql不能承擔(dān)很大的負(fù)擔(dān).所以
>始終測(cè)試已知值:
>避免使用dbms_random;
>嘗試將序列的使用限制在其值無(wú)關(guān)緊要的列中;
>日期也很棘手.避免硬編碼日期:使用用sysdate填充的變量.學(xué)習(xí)欣賞add_months(),last_day(),interval,trunc(sysdate,’MM’)等
>隔離其他用戶的測(cè)試數(shù)據(jù).從頭開(kāi)始構(gòu)建它.盡可能使用獨(dú)特的值.
>只需要?jiǎng)?chuàng)建盡可能多的測(cè)試數(shù)據(jù).體積測(cè)試是不同的責(zé)任.
>當(dāng)測(cè)試程序更改數(shù)據(jù)時(shí),為每個(gè)單元測(cè)試創(chuàng)??建特定的記錄.
>另外:不要依靠一個(gè)測(cè)試的成功輸出來(lái)提供來(lái)自另一個(gè)測(cè)試的輸入.
>當(dāng)適當(dāng)時(shí),在單元測(cè)試之間簡(jiǎn)單地報(bào)告數(shù)據(jù)共享記錄的測(cè)試程序.
>盡可能共享框架數(shù)據(jù)(例如引用的主鍵).
>使用自由文本字段(名稱,描述,注釋)來(lái)確定哪些測(cè)試或測(cè)試使用該記錄.
>最小化創(chuàng)建新記錄所涉及的工作:
>僅為測(cè)試套件和表的約束分配必需的值;
>盡可能使用默認(rèn)值;
>盡可能地程序化.
其他事情要記住:
>設(shè)置測(cè)試夾具可能是一個(gè)耗時(shí)的練習(xí).如果您有大量數(shù)據(jù),請(qǐng)考慮構(gòu)建一個(gè)過(guò)程來(lái)設(shè)置可以在每個(gè)會(huì)話中運(yùn)行一次的靜態(tài)數(shù)據(jù),并在ut_setup本身中僅包含volatile數(shù)據(jù).這在測(cè)試只讀功能時(shí)特別有用.
>記住,創(chuàng)建測(cè)試數(shù)據(jù)是一個(gè)編程練習(xí)本身,并且容易出現(xiàn)錯(cuò)誤.
>使用utplsql的所有功能.當(dāng)推斷出易失性數(shù)據(jù)的值時(shí),utAssert.EqQuery,utAssert.EqQueryValue,utAssert.EqTable,utAssert.EqTabCount和utAssert.Eq_RefC_Query都是非常有用的功能.
>當(dāng)診斷測(cè)試運(yùn)行時(shí),我們不希望使用這些數(shù)據(jù)是有用的.所以考慮在ut_setup開(kāi)始時(shí)有一個(gè)空心的ut_teardown過(guò)程并清除測(cè)試數(shù)據(jù).
處理遺留代碼
評(píng)論加里的帖子讓我想起了另一件你可能會(huì)覺(jué)得有用的事情. Steven F寫(xiě)了ulplsql作為JUnit的PL / sql實(shí)現(xiàn),JUnit是Test First運(yùn)動(dòng)的Java先鋒.然而,TDD的技術(shù)也可以應(yīng)用于大量的遺留代碼(在這種情況下,遺留代碼是沒(méi)有任何單元測(cè)試的任何程序集).
要牢記的關(guān)鍵是,您不必立即將所有內(nèi)容都進(jìn)行單元測(cè)試.逐步開(kāi)始.構(gòu)建新產(chǎn)品的單元測(cè)試,Test First.在應(yīng)用更改之前,對(duì)要更改的位進(jìn)行單元測(cè)試,以便您在進(jìn)行更改后仍然可以工作.
在這方面有很多想法,但是(不可避免地,如果可恥),它主要來(lái)自O(shè)O程序員.邁克爾·羽毛是主要的章節(jié).閱讀他的文章Working Effectively With Legacy Code.如果你覺(jué)得有用,他隨后寫(xiě)了一本同名的書(shū).
總結(jié)
以上是生活随笔為你收集整理的用oracle怎么测试,oracle – 如何(单位)测试数据密集的PL / SQL应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python3 数组重复数字,[pyth
- 下一篇: oracle与jdbc连接数据库,JDB