java多线程——并发测试

这是多线程系列第六篇,其他请关注以下:

java 多线程—线程怎么来的?

java多线程-内存模型

java多线程——volatile

java多线程——锁

java多线程——CAS

 

编写并发程序时候,可以采取和串行程序相同的编程方式。唯一的难点在于,并发程序存在不确定性,这种不确定性会令程序出错的地方远比串行程序多,出现的方式也没有固定规则。这对程序的应用会造成一些困难,那么如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。

本篇基于多线程知识,梳理一些多线程测试需要掌握的方法和原则,以期望可能的在开发阶段,就暴露出并发程序的安全性和性能问题,为多线程能够高效安全的运行提供帮助。

本篇主要包含以下内容:

1. 并发测试分类

2. 正确性测试

3. 安全性测试

4. 性能测试

 

并发测试分类

 

测试流程

并发测试和串行测试有相同的部分,比如都需要线测试其在串行情况下的正确性,这个是保证后续测试的基础,当然了,正确性测试和我们的串行测试方没有什么不同,都是在保证其程序在单线程情况下执行和串行执行有相同的结果,这个我们不再陈述。 

一般的并发测试,我们按照以下流程来进行。

 

分类

并发测试大致可以分为两类:安全性测试与活跃性测试。

安全性测试我们可以定义为“不发生任何错误的行为”,也可以理解为保持一致性。比如i++操作,但单线程情况下,循环20次,i=20,可是在多线程情况下,如果总共循环20次,结果不为20,那么这个结果就是错误的,说明出现了错误的线程安全问题。我们在测试这种问题的时候,必须要增加一个”test point”保证其原子性同时又不影响程序的正确性。以此为判断条件执行测试代码,关于“test point”如何做,我们后续再讨论。

活跃性测试定义为“某个良好的行为终究会发生”,也可以为理解为程序运行有必然的结果,不会出现因某个方法阻塞,而运行缓慢,或者是发生了线程死锁,导致一直等待的状态等。

与活跃性测试相关的是性能测试。主要有以下几个方面进行衡量:吞吐量,响应性,可伸缩性。

  • 吞吐量:一组并发任务中已完成任务所占的比例。或者说是一定时间内完成任务的数量。
  • 响应性:请求从发出到完成之
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值