一种自动化软件测试方法

文档序号:6338045阅读:874来源:国知局
专利名称:一种自动化软件测试方法
技术领域
本发明涉及软件测试领域,尤其涉及一种自动化软件测试方法。
背景技术
随着计算机软件的规模越来越大,软件测试成为了软件质量保障的关键环节,软件测试自动化的发展也成为了软件测试领域所无法逾越的发展阶段。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明书和编码的最终复审,是软件质量保障的关键步骤。其定义可简略概括为为了发现错误而运行程序的过程。随着软件规模的不断扩大,软件质量问题已成为制约计算机发展的主要因素之一。作为保证软件质量和可靠性的手段,软件测试起着不可替代的作用。随着信息化的发展和技术的进步,信息化软件的架构也由C/S结构发展到了现在的B/S架构,如今信息化软件的主流正是通过hternet访问,基于Web的应用程序。和以往的软件相比,基于Web的信息化软件有着不同于以往软件的特点1)集中包括数据库集中,信息系统管理集中,业务管理集约化。2)大分布按照地域广泛分布,这与“集中”的特点是对立统一的。3)大量包括数据量大,业务量大。正是由于以上的特点,基于Web的信息化软件相比传统软件,带来了非常大的优越性,但同时也带来了很多挑战,这是因为基于Web的信息系统的大分布,决定了 Web服务器要同时接受大量的数据请求。这样一旦Web服务器瘫痪即将造成巨大的损失。这就对 Web系统的性能提出了要求,要求产品在上线前必须接受严格的性能测试。

发明内容
有鉴于此,本发明主要针对基于Web的性能测试,对自动化测试脚本进行设计、录制和完善,提出了一套新颖的自动化软件测试方法。具体地,本发明提出了一种自动化软件测试方法,该方法包括创建测试脚本;部署测试场景并运行测试脚本;以及分析测试结果。根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述创建测试脚本的步骤进一步包括选择协议;选择基于HTML的脚本;以及在脚本中插入事务,以便在所述分析测试结果的步骤中查看到该事务的响应时间。根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述创建测试脚本的步骤进一步包括在所述测试脚本中插入集合点,以使在所述集合处多个虚拟用户并发进行同一操作,以提高操作的并发程度。
根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述创建测试脚本的步骤进一步包括设置网络带宽以模拟不同带宽的网络;以及设置所述测试脚本的迭代次数。 根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述创建部署测试场景并运行测试脚本的步骤进一步包括设置测试负载机的数量,设置脚本的执行方式修正超时数值;以及设置IP欺骗。根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述设置脚本的执行方式的步骤包括设置用户的启动方式;以及设置用户的终止方式根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述设置IP欺骗的步骤进一步包括将测试负载机设定为使用静态IP。 根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述分析测试结果的步骤进一步包括查看事务的响应时间、服务器的平均吞吐量和执行用户人数;分析有关性能指标是否符合需求。根据本发明的一个优选实施例,在上述自动化软件测试方法中,所述分析有关性能指标是否符合需求的步骤包括分析可用内存曲线是否正常;分析是否存在内存泄漏;分析CPU利用率曲线是否平缓,且平均利用率是否低于90% ;以及分析网络带宽是否满足流量要求。应当理解,本发明以上的一般性描述和以下的详细描述都是示例性和说明性的,并且旨在为如权利要求所述的本发明提供进一步的解释。


附图主要是用于提供对本发明进一步的理解。附图示出了本发明的实施例,并与本说明书一起起到解释本发明原理的作用。附图中图1示意性地示出了根据本发明的用于软件测试的自动化测试装置的结构图。图2示意性地示出了根据本发明的自动化软件测试方法的流程图。
具体实施例方式以下结合附图详细描述本发明的技术方案。现有技术的手工测试至少存在以下的局限性
A、无法覆盖所有代码路径,功能性测试用例在每轮测试中都是必不可少的,具有一定的机械性、重复性。B、一些与时序、死锁、资源冲突、多线程相关的错误,手工测试很难捕捉。C、进行系统负载、性能测试时,一些模拟大量数据或大量并发用户等各种场合很难用手工进行测试。D、进行系统可靠性测试,需要模拟系统运行多久时间的时候能稳定运行,这些都是手工测试很难进行的。E、手工测试速度相对比较慢,如果一天进行几百个测试用例,在一天内用手工进行测试很难完成。相对地,本发明的自动化测试装置至少具备以下优势A、缩短软件开发的测试周期,进度快。B、测试效率高(充分利用硬件资源)。C、节省人力资源,降低测试成本。D、增强测试的稳定性、可靠性,提高测试的准确度和精确度,增加软件信任度。E、使用测试工具相对比较容易,能提高测试结果。F、能进行负载、性能测试,这些手工都无法完成。当然,在实际工作中要确保能用自动化测试的事情决不用手工测试,同时要做到适合手工测试的内容决不要花费高昂的成本做自动化测试。另外,不要因为某方面不能自动化测试而不做测试。本发明的自动测试装置尤其适合于单元测试、集成测试、系统负载测试、性能测试、稳定性测试、可靠性测试等。图1示意性地示出了根据本发明的用于软件测试的自动化测试装置的结构图。如图所示,本发明的用于软件测试的自动化测试装置100包括用于创建虚拟用户和系统负载的虚拟用户生成器101 ;用于组织虚拟用户生成器101所创建的系统负载、设定虚拟用户数量并生成和运行测试脚本的控制器102 ;以及保存运行测试脚本的所有数据并对所得到的数据进行分析的分析组件103。通过虚拟用户生成器101,用户可简便创建起虚拟用户和系统负载。该虚拟用户生成器101能生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。后续的组件将其转化为测试脚本。控制器102根据系统负载的业务流程和所设定的虚拟用户数量生成所述测试脚本。例如,通过控制器102,测试人员可以快速地组织起多用户的测试方案(负载方案、业务流程组合与虚拟用户数量),使测试过程自动化。同时,控制器102也可以用来限定负载方案。此外,控制器102还可以在生成测试脚本时在测试脚本中插入事务,以便在分析组件 103进行分析时查看到该事务的响应时间。或者,控制器102也可以在生成测试脚本时在该测试脚本中插入一集合点。在运行该测试脚本时,在集合点处使多个虚拟用户执行同一操作,以提高并发程度。此外,控制器102还可以为测试脚本设定迭代次数。控制器102使用虚拟用户生成器101生成的脚本对目标软件进行模拟场景测试, 场景运行后,所有的数据将由分析组件103保留并对所得的数据进行分析。图2示意性地示出了根据本发明的自动化软件测试方法的流程图。如图2所示,本发明的自动化软件测试方法包括创建测试脚本201 ;部署测试场景并运行测试脚本202 ;以及分析测试结果203。在创建测试脚本201的步骤之中,用户可以选择适当的协议,web服务器一般选择http协议。录制方式一般选择基于HTM L的脚本,但有下列情况选择基于URL的脚本。不是基于浏览器的应用程序,应用程序中包含jaVaScript脚本且产生了请求,基于浏览器的应用程序使用了 https协议。在录制过程中不要后退页面。如果想测定某个操作的响应时间,可以在脚本中插入事务,使用事务把该操作包装起来。分析执行结果的时候可以查看到该事务的响应时间。此外,在该步骤201中还可以插入集合点,以使多个用户并发进行同一操作,提高操作的并发程度,以对服务器增加负载,测试并发能力。此外,用户还可以设置网络带宽以模拟不同带宽的网络,设置迭代次数。此外,该步骤还包括对脚本进行参数化,设置参数变更方式,以及关联脚本。在部署测试场景并运行测试脚本202的步骤之中,部署测试场景主要包含选择脚本,设定执行用户数,选择测试负载机,设置脚本执行的方式,设置集合点点,设置运行时间设定。如果要模拟的用户数比较多,应该设置多台测试负载机,一般主流的PC机至少能模拟100个用户对服务器的访问。此外,设置脚本的执行方式包括设置用户的启动方式和设置用户的终止方式。此外,该步骤还可以设置集合点,并可以设置用户通过集合点的方式。当浏览web页面较大时,在测试的时候可能出现超时(timeout)错误。针对该问题,可以适当修正超时数值。此外,还可以设置IP欺骗。如果服务器对用户的IP有限制(安全原因),则需要启用IP欺骗。设置IP欺骗应该注意1)测试负载机应该使用静态IP ;2)在选择测试负载机之前开启IP欺骗开关。此外,还可以设置服务器监控计数器。包含内存,CPU,线程,进程,网络,磁盘。在分析测试结果203的步骤之中,可以查看分析结果、查看事务的响应时间、服务器的平均吞吐量,执行用户人数等。此外,还可以查看线程图,用户变化图,响应时间图,吞吐量图;查看服务器监控的计数器图;分析各个性能指标是否符合需求,比如可用内存曲线是否正常,是否存在内存泄漏;CPU利用率曲线是否平缓,平均利用率是否低于90% ;线程数是否正常,而不是一直在增长;网络带宽是否满足流量需求;磁盘是否满足用户操作要求等等;分析各个曲线图是否存在异常情况,比如响应时间是否满足需求;系统是否支持要求的并发;随着负载的增加,吞吐量是否同样增加,吞吐量是否存在瓶颈等等。有时候分析单个要素并不能反映存在的问题,需要多个要素联系起来进行分析。比如,可以把用户数的变化图和吞吐量图联系起来进行分析。本发明的装置支持把两个表合并进行分析,把用户数变化图和吞吐量变化图合并,就可以观察吞吐量是否随着用户数的变化而相应时间。如果随着用户数的增加,吞吐量持平或者下降,说明此时系统吞吐量达到了最大值,系统达到了瓶颈。
权利要求
1.一种自动化软件测试方法,该方法包括 创建测试脚本;部署测试场景并运行测试脚本;以及分析测试结果。
2.如权利要求1所述的自动化软件测试方法,其特征在于,所述创建测试脚本的步骤进一步包括选择协议;选择基于HTML的脚本;以及在脚本中插入事务,以便在所述分析测试结果的步骤中查看到该事务的响应时间。
3.如权利要求1所述的自动化软件测试方法,其特征在于,所述创建测试脚本的步骤进一步包括在所述测试脚本中插入集合点,以使在所述集合处多个虚拟用户并发进行同一操作, 以提高操作的并发程度。
4.如权利要求1所述的自动化软件测试方法,其特征在于,所述创建测试脚本的步骤进一步包括设置网络带宽以模拟不同带宽的网络;以及设置所述测试脚本的迭代次数。
5.如权利要求1所述的自动化软件测试方法,其特征在于,所述创建部署测试场景并运行测试脚本的步骤进一步包括设置测试负载机的数量, 设置脚本的执行方式 修正超时数值;以及设置IP欺骗。
6.如权利要求5所述的自动化软件测试方法,其特征在于,所述设置脚本的执行方式的步骤包括设置用户的启动方式;以及设置用户的终止方式
7.如权利要求5所述的自动化软件测试方法,其特征在于,所述设置IP欺骗的步骤进一步包括将测试负载机设定为使用静态IP。
8.如权利要求1所述的自动化软件测试方法,其特征在于,所述分析测试结果的步骤进一步包括查看事务的响应时间、服务器的平均吞吐量和执行用户人数; 分析有关性能指标是否符合需求。
9.如权利要求8所述的自动化软件测试方法,其特征在于,所述分析有关性能指标是否符合需求的步骤包括分析可用内存曲线是否正常; 分析是否存在内存泄漏;分析CPU利用率曲线是否平缓,且平均利用率是否低于90% ;以及分析网络带宽是否满足流量要求。
全文摘要
本发明提出了一种自动化软件测试方法,该方法包括创建测试脚本;部署测试场景并运行测试脚本;以及分析测试结果。本发明可以缩短软件开发的测试周期,提高测试效率,节省人力资源,降低测试成本。
文档编号G06F11/36GK102567186SQ201010579450
公开日2012年7月11日 申请日期2010年12月8日 优先权日2010年12月8日
发明者陆晨, 陈楠生 申请人:上海杉达学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1