一种云计算环境下的自动化测试数据生成方法

文档序号:9326796阅读:440来源:国知局
一种云计算环境下的自动化测试数据生成方法【
技术领域
】[0001]本发明属于性能测试的
技术领域
,特别涉及一种云计算环境下的自动化测试数据生成方法。【
背景技术
】[0002]软件测试是保证并提高软件质量的重要手段,它是软件生命周期中不可或缺的重要环节。软件测试过程中,测试数据的生成是其核心问题,也是软件测试的关键与难点所在。生成合适的测试数据是高效地进行软件测试的基础。量子蛙跳算法为软件测试数据生成提供了丰富的理论和方法,能有效提高软件测试的效率。[0003]任何一个测试都离不开手工测试,基于测试用例,在测试初期我们需要手工测试,但是手工测试也有它的很大局限性,首先不可能覆盖每一条路径,单元测试还不存在重复性问题,一旦到了回归测试,测试工作的工作量将会变的非常大,许多与时序、死锁、资源冲突、多线程等有关的错误,通过手工测试很难捕捉到进行系统负载、性能测试时,需要模拟大量数据或大量并发用户等各种应用场合时,这也是手工测试无法模拟的。如果整个测试过程的测试数据量是庞大的,而且数据变化频繁,需要在短时间内(1天)完成,仅仅依赖测试人员手工地测试数据,在测试管理工具中进行输入、修改、删除等操作,几乎不可能做到,而且效率低,容易产生测试数据不一致,这样就给其它测试人员提供了不可靠的测试数据,造成测试结果的失效。[0004]JMeter是Apache组织开发的基于java的测试工具,相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强,目前已大量应用在各个公司的性能测试过程中。它提供了一个利用本地ProxyServer(代理服务器)来录制生成测试脚本的功能,实现了强大的测试功能并能够提供聚合报告,当build-项任务时,在若干任务中查找所需的任务,运行结束后生成HTML报告(report),并查看测试的输出结果。生成的报告上显示了每次测试运行的结果,包括测试状态、时间、数据执行顺序以及所有测试花费的时间,使用户或测试开发者直观的掌握整体测试状况、查看测试报告结果。同时,Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。其只需要定义一些触发条件便可支持基于任务的持续构建,并且有一套自己的插件开发规范,而目前基于性能持续集成(持续集成)的有一个开源性能插件DynamicParameters。在此基础上,搭建JMeter和Jenkins测试平台,该平台提供了Java编程语言的测试驱动函数库。用Jenkins提供的api通知Jenkins编译工程项目,并在工程设置中填写项目信息和自动触发Jmeter插件需要加载的测试结果路径,编写自动化测试脚本,调用Jmeter测试工具对项目进行测试,并生成测试结果。这样方便了软件开发测试工作者随时对比测试结果,从测试结果对比中,找出程序代码的缺陷以提高程序代码的健壮性。[0005]JMeter可以模拟大量的客户端向服务器发送请求来测试服务器的强度,并分析服务器的整体性能。Jmeter运行时生成多个线程模拟多个用户执行请求,每次请求都记录了请求的响应时间、请求发起时间、请求结果等信息,产生的结果文件为后缀为.jtl的xml格式文件。所以这个文件具有文件大、性能持续集成测试记录条数多等特性,同时,友好的GUI界面方便用户使用,开源,适用于大中型Web系统性能测试,并且免费,学习曲线低。不过它和其他java应用程序一样,执行过程中需要占用大量内存。[0006]为了最大限度的灵活性,在JMeter架构下采用正则表达式创建断言,通过带有断言的脚本以验证程序代码能否返回期望的结果,实现了对应用程序的功能测试。仅仅需要几句简单的命令语句,就可以完成一个jmeter文件对一个jar类型文件(yang,table)的控制。同时,jmeter文件可以随着测试进行、软件的应用性能完善以及文件更新,实时的修改代码和更新数据以更适合测试的要求。然而,当排队等待测试的数据量很大时,则需要耗掉大量的时间才能完成一个周期的测试,无法满足开发测试人员检验产品性能的需求,为测试工作带来了诸多的不便;同时,如果一个待测试的文件(table)脚本中的数据过多时,将其载入jmeter工具的反应时间过长,且操作十分迟钝。因此,就急需一种能够快速处理大量数据文件的脚本的方法,同时需要服务器及时清理内存垃圾,减少磁盘空间的占用,提高测试结果数据的解析和读取效率。然而,由于多个用户共享内存,这样就需要向终端申请资源(即内存),如果被分配的内存不足,将会导致测试失败,而系统的内存资源是十分有限的,并不能满足软件开发工作者不断的需求,而云计算软件测试能够有效地利用云平台动态可扩展的海量资源,节省测试时间和降低测试成本,是一种较好的测试解决方案。但是现有的云计算软件测试平台和服务在使用时需要收取费用,部分整体化解决方案价格昂贵,而且,这些云测试平台和解决方案是商业公司或测试即服务(TestingasaService,TaaS)提供商专有的,它们的底层设计对外是不开放的,外部研究人员很难进行相关问题的深入研究。【
发明内容】[0007]本发明要解决的技术问题是:克服现有技术在软件测试中处理速度慢、内存空间紧缺、测试易失败的不足,基于量子蛙跳算法和云计算技术,提供一种云计算环境下的自动化测试数据生成方法及系统。[0008]本发明的技术问题可以通过以下技术方案实现:[0009]-种云计算环境下的自动化测试数据生成方法,包含测试计划定义、将待测试数据上传到云测试平台、测试执行、测试报告生成与分析4个步骤;[0010]所述的测试计划定义是,在建立一个测试计划时,在JMeter的GUI界面上该测试计划以树形结构显示,而测试计划的内容存储为一个xml格式的文件,所述的xml格式的文件是对树形测试计划的形式化描述;当测试执行模块执行测试计划时,就会依据所述的xml格式的文件的描述判定应该在内存中建立什么样的对象来反映用户建立的测试计划,并根据不同的对象产生各自的行为对待测试系统进行访问;[0011]所述的将待测试数据上传到云测试平台是,在云测试平台上实现对所有待测数据采用量子蛙跳算法获得最优测试数据进行分组测试,进行软件测试各模块的统计、关联分析,然后应用大数据处理数据;所有测试相关的应用程序、测试工具、测试用例、测试环境都先部署到云测试平台上,借助云计算技术进行测试;[0012]所述的测试执行是,将上传到云测试平台的数据通过JMeter开启多线程模拟多用户的操作,其中每个线程都调用测试计划中的元件对象并执行这些对象定义的操作;[0013]所述的测试报告生成与分析是,在测试执行过程中实时的收集平均响应时间、系统吞吐量,并将结果以聚合报告的形式显示给测试人员,供其进行分析和参考。[0014]本发明所述的云测试平台具体是由四个层次构成的,即云资源层、云资源管理层、服务管理层和用户管理层。[0015]本发明旨在以Jmeter自动化测试工具和Jenkins持续集成软件为基底,构造一个云计算软件测试平台架构,以解决测试过程中内存紧缺的现象,采用一个大数据缓冲池,将性能持续集成测试记录按每次性能持续集成测试请求载入内存的缓冲队列中,在云平台上实现测试,用量子蛙跳算法获得最优测试数据进行分组测试,进行软件测试各数据的统计、关联分析,然后应用云计算技术处理数据,最终加快数据处理测试速度,节省内存空间。[0016]本发明有以下有益效果:[0017]1、本发明使用持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1