测试人员告诉我的第一个bug
2016-01-19 10:46
162 查看
昨天周一,将项目移交测试人员,下午时候测试人员告诉我了一个bug,
新建组☞输入组名☞点击确定
此时出现了卡顿现象,该弹窗没有消失,测试人员连续点了多次确定,造成的结果是当卡顿消失后,出现了好多同名的组。
但只有这一次卡顿,也无法再次测验,于是想到了一个模拟卡顿的方法:给数据库表加锁。
MySQL数据库,工具是navicat:
加锁语句:lock tables 表名 write; 这句话可以阻止向表里添加数据。
此时在页面连续点击确定后弹窗不会消失,可以连续点击。
然后解锁:unlock tables;
解锁完毕后,该表里会突然多出好几条相同名字的记录,此时,模拟成功。
问题出现原因:表上锁后,添加操作的第一条数据已经进入添加阶段,但是没法添加成功,后台代码还未运行到给页面做返回的结尾。此时第二条、第三条。数据依次进来,其状态和第一条类似,表解锁后,多条记录在很短的时间里完成添加操作,导致出现同名现象。
解决办法:给页面要显示的主要内容加上唯一约束。
唯一约束,该列可以有空数据,但是不能有重复的数据。
添加唯一约束方式:
1.创建表时:
CREATE TABLE t_user (
Id int(11) NOT NULL AUTO_INCREMENT, -- 自增
username varchar(18) NOT NULL unique, -- 唯一性约束
password varchar(18) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
2.已经建好的表
alter table `t_user` add unique(`username`);
新建组☞输入组名☞点击确定
此时出现了卡顿现象,该弹窗没有消失,测试人员连续点了多次确定,造成的结果是当卡顿消失后,出现了好多同名的组。
但只有这一次卡顿,也无法再次测验,于是想到了一个模拟卡顿的方法:给数据库表加锁。
MySQL数据库,工具是navicat:
加锁语句:lock tables 表名 write; 这句话可以阻止向表里添加数据。
此时在页面连续点击确定后弹窗不会消失,可以连续点击。
然后解锁:unlock tables;
解锁完毕后,该表里会突然多出好几条相同名字的记录,此时,模拟成功。
问题出现原因:表上锁后,添加操作的第一条数据已经进入添加阶段,但是没法添加成功,后台代码还未运行到给页面做返回的结尾。此时第二条、第三条。数据依次进来,其状态和第一条类似,表解锁后,多条记录在很短的时间里完成添加操作,导致出现同名现象。
解决办法:给页面要显示的主要内容加上唯一约束。
唯一约束,该列可以有空数据,但是不能有重复的数据。
添加唯一约束方式:
1.创建表时:
CREATE TABLE t_user (
Id int(11) NOT NULL AUTO_INCREMENT, -- 自增
username varchar(18) NOT NULL unique, -- 唯一性约束
password varchar(18) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;
2.已经建好的表
alter table `t_user` add unique(`username`);
相关文章推荐
- PLMN http://baike.baidu.com/link?url=OwyPKkWC2NhTD3-SZ7W7I32RNI254nfXTo0F2GVNj4mulMZWV9WzTOxgtSmHf
- AddressBook 相关操作小计
- C++常见面试题
- 解决Visual Studio “无法导入以下密钥文件” 错误
- 2016.01.18回顾
- 阿里云配置nginx +php + mysql
- FrameLayout用法【转】
- Android测试环境配置
- 优秀大数据GitHub项目一览
- Linux基础 第二部分 文件、目录与磁盘格式
- Android性能优化典范
- Faye Express 撞坑
- 关于su 、su - 及 sudo的区别
- 使用JAVA反射机制将简单JAVA been对象、数组转化为对应的Json串
- Angular根据获取值不同给不同的样式
- 伪元素::before和::after
- C#递归扫描文件夹中的文件
- 谷歌工程师陈一鸣:做正确的事情,等着被开(转)
- JAVA多线程和并发基础面试问答
- jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解