首页 > 软件测试/ 正文
软件测试中容易遗漏的问题
2013-02-22 00:02:18 ℃
最近测试过程中,发现好多人对事务一致性的测试没有注意到,其实这种问题在一些大型的软件中都会被专门列出来测试,而且是比较严重的bug。和一位做了多年开发的人员测试人员讨论,他说这种是务一致性的问题是开发人员经常容易犯的错误,所以测试一定要引起注意,最近测的软件是数商型网站,问题尤为突出,例如:询问商品价格操作时,顾客选则了商品库中的商品,但在选择商品之后提价询价单之前,在后端直接将该商品删除,系统会如何处理等一些问题,以下是在网上找的一些数据一致性的例子,希望大家以后能注意(呵呵,当然有经验的测试人员不会忽略这么重要的测试点,这种问题在有前后端的系统尤为明显)。 常见并发并发一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类)。 1、丢失修改 下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。 考虑飞机订票系统中的一个活动序列: 1)甲售票点(甲事务)读出某航班的机票余额A,设A=16。 2)乙售票点(乙事务)读出同一航班的机票余额A,也为16。 3)甲售票点卖出一张机票,修改余额A←A-1。所以A为15,把A写回数据库。 4)乙售票点也卖出一张机票,修改余额A←A-1。所以A为15,把A写回数据库。 结果明明卖出两张机票,数据库中机票余额只减少1。 归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。前文(2。1。4数据删除与更新)中提到的问题及解决办法往往是针对此类并发问题的。但仍然有几类问题通过上面的方法解决不了,那就是: 2、不可重复读 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况: * 事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。 * 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。 * 事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读) 3、读“脏”数据 读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。 产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。
- 上一篇:同行评审那些事儿(九):最佳实践(1)
- 下一篇:项目管理之质量管理(四)
更多郑州android技术,jave课程,河南java,安卓论坛,安卓软件,java技术相关文章
- 深度解析Java内存的原型
- 什么是探索性软件测试
- 为什么脚本化测试不适合新手
- SwitchBoard测试系统经验谈
- 代码评审三步走
- 一个简单的自动化测试架构的实现(C#)
- 借鉴ASP.NET的控件模型辅助UI自动化测试
- 本地化测试
- 软件质量需保障 测试工作知多少
- 实际经验证明:TDD可以提高软件质量
- 如何保证软件质量
- 质量意识从源头做起
- 软件项目管理实践之如何实施质量控制?
- 过程改进漫漫谈之问题分析五步法
- 怎样把QA的工作做好?
- 同行评审那些事儿(五):评审活动的角色分工
- 实施CMMI3的体会
- 自动化界面测试脚本质量保障
- 项目质量模型——数据区间离散化问题探究
- PPQA培训小结
- 电脑中的480P、720P、1080P是什么意思
- iphone4s卡是怎么装的,Iphone4s装卡教程(图文)
- QQ微信状态是怎么设置的,微信在线是什么意思
- 电脑启动过程介绍
- 笔记本音箱
- diy是什么意思,电脑diy
- 设备管理器在哪里-打开方法
- 电脑灰尘的危害
- 软件测试未来几年将会成为一个很有前途的行业!
- 郑州北大青鸟软件开发专业教什么课程?
- 搜索
-
- 热门标签