Java多线程测试策略及测试方法探讨

2014-06-20 17:49刘洋
无线互联科技 2014年3期
关键词:多线程

刘洋

摘 要:随着计算机编程语言的发展,越来越多更高级更易用,性能更好的编程语言被设计出来。Java作为新时代计算机编程语言的代名词,其性能和易用性受到大多数编程人员的青睐。和其他高级语言一样,对多线程的支持是Java技术之一,正因为有了多线程编程,也使得编程的难度加大,再加上多线程是异步执行,对于程序的调试更需要有一定的策略。本文将对Java多线程的测试进行探讨。

关键词:Java;多线程;测试策略

1 Java多线程简介

Java是一种类似于c#的面向对象的高级编程语言,是SUN公司与1995年设计,由于Java具有明显优于其他高级语言的通用性和平台一致性,被广泛使用。Java支持多线程编程。在计算机中,进程是应用程序分配硬件资源的基本单位,一般一个程序包含一个或多个进程,而一个进程包含一个或多个线程,是CPU调度的最小单位[1]。Java的多线程就是基于以上理论,通过多线程编程可以在程序中同时并发执行多条指令流,每条指令流就是一个线程,它们之间相互独立。还有,线程是对进程功能的拆分,所以共享进程的存储空间。正式因为有了多线程机制,Java在应用程序的编程上才有如此优秀的处理能力,同时多线程的机制也使得调试和测试更加复杂。

2 Java多线程测试策略

2.1 Java多线程测试过程

测试是面向对象编程的过程中必不可少的程序,为了保证应用软件的性能和可靠性,必须经过大量的各个方面的测试。随着Java的大量应用,针对Java的软件测试早就成为软件行业不可或缺的一环。本文主要探讨Java下多线程的测试过程和方法。

在讨论多线程的测试之前,必须先了解java多线程的特点和实现细节。

2.2 Java多线程编程机制

首先在java中创建多线程有两种方式:直接从Thread类中继承;使用Runable接口。

简单的线程创建使用第一种方法即可,第二种方法不仅使用复杂也是造成各种BUG的原因。

Java的多線程是进程的拆分,所以共享进程的数据资源,必须使用一定的方法保证访问数据的一致性,Java中使用了线程同步技术[2]。

Java多线程之间的通信也是Java多线程的一个特点,这个特点也正好用来调试和测试程序。Java本身定义了相关函数来实现多线程之间的信息传递,这些函数也是调试和测试测基础。

2.3 Java多线程测试常用策略结构

传统的软件测试一般都有3个级别的测试:单元测试、集成测试、系统测试,Java的测试方式也不例外。在java多线程中,具体的方法为:java多线程类测试、java多线程模块测试、java多线程系统测试。

Java多线程类测试关注的是多线程程序的内部算法和衔接方式。在算法上,由于多线程继承于Thread类或继承于Runnable接口,Thread和Runnable是Sun公司经过严格测试过的,所以多线程的类测试应该在Thread类和Runnable接口以下进行。进而在测试过程中要测试自己设计的线程类中是不是有缺陷存在。在衔接方式上,要统一衔接的定义,尽量简单化,功能单一化。采用不同的衔接功能测试多线程类的正确性。

Java多线程模块测试关注的是由多个线程类构成的线程模块的功能。主要是组合之后达到的效果,一般根据多线程通信机制进行测试,在模块输入端输入一条信息,测试输出端的输出结果,进而可以判断模块的功能是不是正常。对输入端输入各个功能不同的信息,查看输出端的输出情况就乐意判断模块内哪个多线程类的设计出问题了。

Java多线程系统测试是对软件的整体功能进行的测试,经过前两道测试只能确定各个功能点没有问题,但是最后的组合还是不知道的,这就需要进行系统级的测试了。系统级的测试类似于黑盒测试,此过程主要是测试多线程流的控制机制,保证各个功能执行逻辑的正确性。按照所需要的功能对系统一次测试即可。如果出现问题,只要根据测试结果就可判断哪个功能逻辑出现问题,从而更改逻辑即可。

3 Java多线程测试方法的探讨

根据java这种高级语言的设计原则,所有的功能实现都是建立在类的基础上。特别的,线程方法必须继承与Thread类或者Runnable接口,所以线程的大小直接决定了程序性能的好坏。线程过大,即一个线程的执行时间太长,不仅会占用较多的系统资源,还会使程序的可控性降低,弄不好会产生死锁现象。而线程太短的话,系统的集中度又不是很好,所以线程的大小设计非常的讲究[3]。

具体的测试主要就是继承之后的运行方法上,在实际的测试过程中,假设一个自定义类继承了Thread类,他在执行过程中,调用了其他A1个类,而自身设计时的方法数量是A2个,则A1/A2就称为多线程的耦合度测试A。

如果在运行过程中,调用Thread类中的方法个数是A3,则A2/A3称作多线程的耦合测试度B。

上述的耦合测试度A表示的是各个类之间的耦合程度,A越小说明各个类之间的依赖就越小,各个类之间的功能影响也就越小,系统整体的健壮性就月合理。多线程耦合度B测试的是子类与父类之间的依赖程度,是一个程序执行速度快慢的关键,如果大量使用父类的函数,不仅使资源合理利用,还使程序更加稳定。

[参考文献]

[1]戈茨.JAVA并发编程实践[M].电子工业出版社,2007.

[2](美)埃克尔.Java编程思想[M].机械工业出版社,2007.

[3](英)福勒.企业应用架构 模式[M].机械工业出版社,2010.

猜你喜欢
多线程
Java并发工具包对并发编程的优化
基于多线程文件传输关键技术研究与实现
网页爬虫技术的关键技术研究探索
一种基于多线程的高速磁盘镜像算法
iOS并发程序设计中几种方法的特点及使用技巧研究
电站锅炉煤粉参数远程监控系统的软件设计与实现