并发测试的定义
点层面
线层面
并发测试不等于性能测试
并发测试的分类
功能并发测试
性能并发测试
稳定性的并发测试
异常性并发测试
常见并发问题
客户端操作
系统接口
定时任务
事务并发的问题
事务的定义
系统内部事务控制
原子性:要么都整,要么都不整。
一致性:锁定座位提交订单后必须生成订单号,取消订单则解锁座位。
隔离性:座位被别人选中,没有网络,操作日志记录失败等。
持续性:事务提交后永久存在,不会受到任何故障影响。
一个座位被多个账号锁定,生成了订单;
座位锁定成功,但没有生成订单;
取消订单,座位未解锁;
生成重复订单号;
操作日志没有完整记录所有行为。
同一笔订单,不能同时选择多种方式,不能进行多次支付;
重复通知上传支付结果(支付成功,支付超时),只能处理一次订单;
日志记录完整记录发送、接受的支付信息,与测试用例内容相匹配。
极限值并发的问题
压力并发的问题
Read uncommitted
Read comitted
Repeatable read
Serializable
脏读
更新丢失
回滚丢失,当2个事务更新相同的数据源时,如果第一个事务被提交,而另外一个事务却被撤销,那么会连同第一个事务所做的更新也被撤销,即第一个事务做的更新丢失了。
覆盖丢失,当2个或多个事务查询同样的记录然后各自会以最初的查询结果更新该行时,会造成覆盖丢失,因为每个事务都不知道其他事务的存在,最后一个事务对记录做的修改将会覆盖其他事务对该记录做的已提交的更新。
不可重复读
虚读:事务R1读取某一数据后,事务R2对其做了修改,当事务R1再次读取该数据时得到不同的值。
幻读:事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查询中未出现的数据或者取消了第一次查询中出现的数据(不要求两次查询的sql语句相同)。这是由在两次查询过程中由另外一个事务插入数据造成的。
异常数据干扰并发的问题