软件测试数据库并发控制测试 软件测试方法
数据库的并发控制能力是指在处理多个用户在同一时间内对相同数据同时进行访问的能力。一般的关系型数据库都具备这种能力,日常应用系统中也随处町见,例如火车的售票系统、银行数据库系统。举个例子来说明,在火车的售票系统中,有这样一个过程。
售票点通过网络从源数据库读出某车次的车票剩余张数为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对数据的操作已经影响了原来的结果。
文章来源于领测软件测试网 https://www.ltesting.net/