一种基于异步线程的测试方法和装置制造方法及图纸

技术编号:15113025 阅读:56 留言:0更新日期:2017-04-09 03:46
本申请实施例提供了一种基于异步线程的测试方法和装置,所述的方法包括:检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;调用所述目标线程执行所述测试对象;检测所述目标线程的第二数量;当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。本申请实施例一方面不会浪费多余的时间进行等待,减少测试耗时,另一方面避免因为目标线程还没执行完就校验结果导致测试校验失败,提高了测试用例的成功率,进而提高了测试效率。

【技术实现步骤摘要】

本申请涉及测试
,特别是涉及一种基于异步线程的测试方法和一种基于异步线程的测试装置。
技术介绍
程序测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)的多线程/异步线程是在系统实现过程中使用的非常多的一种实现手段,常用的servlet(服务端程序)或者C/S(Client/Server或客户/服务器模式)结构的窗体工作于与后台处理是多线程的,以减少用户在前台等待的时间;再比如为了提高系统或应用程序的性能,可以采用多线程提高系统或应用程序的并发处理能力等。这种异步多线程的实现方式给系统实现和性能提升上面带来了很大的好处,但是也给系统的测试上面增加了难度。目前涉及到异步线程的测试,尤其是UI(UserInterface,用户界面)自动化和接口测试,都是调用某接口测试脚本,而该接口内部使用了异步线程的实现方式,脚本功能是否正确需要对接口内部的处理结果进行校验。但因为处理逻辑是异步线程执行的,如果在异步线程处理结束之前,调用的接口就返回结果,这个时候就去校验结果,会因为内部异步线程还没有处理结果使得校验结果出错。所以现在一般在调用接口之后使用sleep(n)函数等待时间n,待内部异步线程处理结束后,再进行结果校验。由于异步线程需要耗费多长时间不固定,受环境等因为影响较大,所以等待的时间n,一般都是基于经验值,设置为所有环境下该异步线程执行需要的最大时间,用以提高测试用例的成功率。但正是由于等待的时间n是基于经验值,并不能保证在等待了时间n后,对应的异步线程一定执行结束了,测试用例的成功率低。并且,在大部分场景下可能不需要等待时间n那么久,就造成了虽然异步线程已经处理结束了,但是系统还在等待,造成测试耗时过长,降低了测试执行效率,尤其在自动化执行过程中,当涉及的测试用例数量比较多的时候,尤其明显。如果这里不采用等待时间n的方式,一般就需要手工断点(debug模式),等异步线程执行完再执行测试脚本校验逻辑。这种方式只能进行手工测试覆盖,成本很高,效率很低。因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何提出一种基于异步线程的测试机制,用以提高测试用例的成功率,减少测试耗时,提高测试效率。
技术实现思路
本申请实施例所要解决的技术问题是提供一种基于异步线程的测试方法,用以提高测试用例的成功率,减少测试耗时,提高测试效率。相应的,本申请实施例还提供了一种基于异步线程的测试装置,用以保证上述方法的实现及应用。为了解决上述问题,本申请实施例公开了一种基于异步线程的测试方法,包括:检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;调用所述目标线程执行所述测试对象;检测所述目标线程的第二数量;当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。优选地,所述线程池类具有获取活跃线程数量的方法;所述检测目标线程的第一数量的步骤包括:调用所述获取活跃线程数量的方法,获得目标线程的第一数量。优选地,所述调用所述目标线程执行所述测试对象的步骤包括:传入执行所述测试对象所需的参数;在所述目标线程中按照所述参数执行所述测试对象。优选地,所述检测所述目标线程的第二数量的步骤包括:调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。优选地,还包括:当所述第一数量与所述第二数量相异时,返回执行所述检测所述目标线程的第二数量的步骤。优选地,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。本申请实施例还公开了一种基于异步线程的测试装置,包括:第一检测模块,用于检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;测试模块,用于调用所述目标线程执行所述测试对象;第二检测模块,用于检测所述目标线程的第二数量;校验模块,用于在所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。优选地,所述线程池类具有获取活跃线程数量的方法;所述第一检测模块包括:第一调用子模块,用于调用所述获取活跃线程数量的方法,获得目标线程的第一数量。优选地,所述测试模块包括:传入子模块,用于传入执行所述测试对象所需的参数;执行子模块,用于在所述目标线程中按照所述参数执行所述测试对象。优选地,所述第二检测模块包括:第二调用子模块,用于调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。优选地,还包括:循环模块,用于在所述第一数量与所述第二数量相异时,返回调用第二检测模块。优选地,所述线程池类包括ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。与
技术介绍
相比,本申请实施例包括以下优点:本申请实施例在执行测试对象之前,检测目标线程的第一数量,在执行测试对象之后,检测目标线程的第二数量,在第一数量与第二数量相等时,对目标线程执行测试对象获得的执行结果进行校验,准确地判断目标线程是否执行结束,在目标线程结束后进行结果校验,一方面不会浪费多余的时间进行等待,减少测试耗时,另一方面避免因为目标线程还没执行完就校验结果导致测试校验失败,提高了测试用例的成功率,进而提高了测试效率。附图说明图1是一种基于sleep函数进行结果校验的示例图;图2是本申请的一种基于异步线程的测试方法实施例的步骤流程图;图3是本申请的一种获取活跃线程数量的方法的执行示例图;图4是本申请的一种测试方法的示例图;图5是本申请的一种基于异步线程的测试装置实施例的结构框图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。对于多线程并发时,多个线程同时请求同一个资源,必然会导致资源的数据存在安全性,当多个线程要操作的数据是单点时,那么这些线程就不能并发执行,而需要等待串行执行,被称之为同步线程;但当这些多线程操作的资源数据不是单点,各自分离,或者本文档来自技高网
...

【技术保护点】
一种基于异步线程的测试方法,其特征在于,包括:检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的异步线程;调用所述目标线程执行所述测试对象;检测所述目标线程的第二数量;当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象获得的执行结果进行校验。

【技术特征摘要】
1.一种基于异步线程的测试方法,其特征在于,包括:
检测目标线程的第一数量;所述目标线程为线程池类中执行测试对象的
异步线程;
调用所述目标线程执行所述测试对象;
检测所述目标线程的第二数量;
当所述第一数量与所述第二数量相等时,对所述目标线程执行测试对象
获得的执行结果进行校验。
2.根据权利要求1所述的方法,其特征在于,所述线程池类具有获取
活跃线程数量的方法;所述检测目标线程的第一数量的步骤包括:
调用所述获取活跃线程数量的方法,获得目标线程的第一数量。
3.根据权利要求1所述的方法,其特征在于,所述调用所述目标线程
执行所述测试对象的步骤包括:
传入执行所述测试对象所需的参数;
在所述目标线程中按照所述参数执行所述测试对象。
4.根据权利要求2所述的方法,其特征在于,所述检测所述目标线程
的第二数量的步骤包括:
调用所述获取活跃线程数量的方法,获得所述目标线程的第二数量。
5.根据权利要求1或2或3或4所述的方法,其特征在于,还包括:
当所述第一数量与所述第二数量相异时,返回执行所述检测所述目标线
程的第二数量的步骤。
6.根据权利要求5所述的方法,其特征在于,所述线程池类包括
ThreadPoolExecutor,所述获取活跃线程数量的方法包括getActiveCount。
7.一种基于异步线程的测试装置,其...

【专利技术属性】
技术研发人员:倪军
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1