多线程测试问题探讨

上一篇 / 下一篇  2009-10-30 20:43:43 / 个人分类:API测试框架

我们都知道多线程测试的必要性,但是往往都不知道如何下手,而且也不知道是否系统需要进行多线程测试。我也一直被这个所困扰,在这里只是谈一下我所经历的一些多线程的测试,大家互相探讨一下。
之前做了一段时间的基于Swing的GUI测试工作。考虑一个问题,EventQueue的队列是否需要进行多线程的测试。考虑用2个线程来创建鼠标点击的时间,然后主线程在监控EventQueue内的数据。通过使用
new Thread(new Runnable(){
public void run()
{
//invoke mouse click事件
}
}).start()
在主线程监控的时候发现报错。后来经开发指导,Swing的多线程测试,需要采用SwingUtil.invokeLater()方法来进行。否则无法和EventQueue所在线程进行通信,也就是说另起的线程中所产生的事件无法传递到EventQueue中去。不过具体的SwingUtil的内部实现如何通信还有待高手指导。

还有一个问题就是对于一个List或者Map进行多线程测试。因为程序中经常暴露接口get和set方法,需要进行测试。看看多线程set后能否正确get到对应内容。
在工作做尝试了进行多线程的set方法,然后主线程通过get的方法获取内容。但是很不稳定,有时会报空指针,有时可以正确获得内容。误认为是程序没有正确处理多线程。其实这个是Java多线程本身机制的问题。也可以看作是线程轮转时间片的问题。由于系统存在误差,可能在线程没有启动的时候,我们已经调用了Get的方法。所以会出现这个问题。要修复这个本身脚本的问题的话。可以让主线程暂停的方式,等线程执行完毕后,再去调用get的方法来进行。

TAG:

 

评分:0

我来说两句

Open Toolbar