軟件測試數據庫并發控制測試 軟件測試方法
數據庫的并發控制能力是指在處理多個用戶在同一時間內對相同數據同時進行訪問的能力。一般的關系型數據庫都具備這種能力,日常應用系統中也隨處町見,例如火車的售票系統、銀行數據庫系統。舉個例子來說明,在火車的售票系統中,有這樣一個過程。
售票點通過網絡從源數據庫讀出某車次的車票剩余張數為n(”=100)。
f21 B售票點通過網絡從源數據庫讀出該車次的車票剩余張數也為n(一=100)。
f31 A售票點賣出一張該車次的車票,將舯1(99)寫回源數據庫。
f41 B售票點也賣出一張該車次的車票,將卜1(99)寫回源數據庫。
這樣就存在并發控制的問題,賣出了兩張票,而數據庫里面只有1條數據減少。這樣,下次讀取數據的時候,源數據就不準確了,從而會帶來數據的錯誤。如果按照上面的操作順序執行,A對源數據庫的修改就被丟失。并發控制帶來數據的不一致問題,被稱為“數據庫并發控制過程沖突”,如圖9.5所示,在實際的測試過程中,我們必須對這樣的沖突進行測試設計。我們主要是通過邏輯判定來設計測試用例。在并發控制過程沖突中,主要包括三類:丟失數據,小可重復讀數據和讀“臟”數據。丟失數據鼾貧p德
圖9—5火車票系統的數據并拄過程沖突示意圖
剛才的例子就是一個典型。當事務A和B對同~個數據源進行修改,B提交的結果破壞了A提交的結果,導致A對數據庫的修改失效,如圖9.5所示。
2不可重復讀數據
不可重復讀數據是指事務A在讀取數據后,事務B對其進行了修改并執行了更新操作,當事務A無法再現前~次讀取的結果。舉個例子來說明:
· 事務A從數據庫表中讀出整數x=10,Y=20值進行求和運算z=x+Y=30。
· 事務B從相同的數據庫中讀出x值x=10,對x乘以5后寫入原x值(x=X*5=50),提交事務B。
此時,事務A處理的結果是:z=x+Y=10-50《0,事務B對數據的操作已經影響了原來的結果。
原文轉自:http://www.anti-gravitydesign.com