专利名称:软件自动化测试方法
技术领域:
本发明涉及软件测试技术,特别是涉及一种软件自动化测试方法。
背景技术:
软件自动化测试就是模拟手动测试步骤,执行用某种程序设计语言编制的测试程序,控制被测软件的执行,完成软件测试的过程。近年来随着软件自动化测试技术的发展特别是高效的自动化测试框架技术与优秀的自动化测试工具出现,已经很大程度提高了自动化测试脚本的开发效率,掌握自动化测试脚本的开发能力已成为一个测试人员的一个基本技能。现有的自动化测试方法中测试用例的执行是按照用户设置测试任务的顺序进行的。随着自动化测试脚本的广泛应用,测试系统要执行的自动化测试任务增多,而每个自动化测试任务将包含多个自动化测试用例,因此,相应地,测试系统要执行的自动化测试用例数量不断增加,这样,必将导致测试脚本的执行效率开始下降。
发明内容
有鉴于此,本发明的主要目的在于提供一种软件自动化测试方法,该方法能有效提高自动化测试效率。为了达到上述目的,本发明提出的技术方案为—种软件自动化测试方法,该方法包括以下步骤a、根据预设的优先级确定策略,确定当前需要执行的各测试任务的优先级;b、对于每个所述测试任务,根据预设的用例组织优化策略,对该测试任务包含的所有用例的数量和执行顺序进行优化,得到该测试任务的用例优化组合序列;C、按照所述各测试任务的优先级降序,将所有测试任务进行排序;根据当前的测试客户端数量N和所述各测试任务间的关联关系,按照任务均衡的原则将所述排序后的测试任务分为N个子队列,各所述子队列分别与不同的测试客户端相对应,其中,不同子队列的测试任务间无关联关系,且各子队列中测试任务的顺序为所述优先级的降序;d、对于各所述子队列,将其所包含的各测试任务分别替换为对应的所述用例优化组合序列,得到该子队列所对应的用例队列,并在该子队列对应的测试客户端上依次执行所述用例队列中的各用例。综上所述,本发明提出的软件自动化测试方法,通过对自动化测试任务以及各自动化测试任务所包含的测试用例的执行顺序进行优化排序,可以有效提高整个自动化测试过程的执行效率。
图1为本发明实施例一的流程示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。本发明的核心思想是考虑测试任务和用例的特性以及任务间或用例间的关联程度等因素,对测试任务及用例的执行顺序和数量进行优化,采用减少多个相同用例的重复运行等手段,提高自动化测试的整体执行效率。图1为本发明实施例一的流程示意图,如图1所示,该实施例包括步骤101、根据预设的优先级确定策略,确定当前需要执行的各测试任务的优先级。本步骤,对测试任务的优先级进行确定,将有利于在后续步骤中基于此对任务的执行顺序进行优化,以提高任务的执行效率。这里,所述优先级确定策略可以根据实际需要预先设置。较佳地,可以包括如果所述测试任务在当前的测试系统中保存有相同测试任务的经验值,则根据该经验值以及预设的经验值与优先级映射关系,确定该测试任务的优先级,否则,根据当前预设的优先级动态生成规则,确定该测试任务的优先级,如果当前没有所述优先级动态生成规则,则将测试人员输入该测试任务时指定的初始优先级作为该测试任务的优先级,如果该测试任务没有初始优先级,则将预设的缺省优先级设置为该测试任务的优先级。所述经验值可以为测试系统中所记录的相同测试任务最近一次执行时所需的时间或最近一次执行时的优先级。在实际应用中,所述优先级动态生成规则可以由测试人员通过用户界面进行预先设置,具体设置规则时可考虑下述几个因素测试任务所属类型,测试任务包含的用例数量,与其他测试任务的关联程度以及测试任务的缺省优先级大小,测试人员可根据实际需要选择上述一个或多个因素的组合制定合适的优先级动态生成规则。另外,当考虑测试任务所属类型时,具体可从下述几种类型考虑1)是用户接收测试还是普通模块测试幻是功能测试还是性能测试幻是前台还是后台测试任务4)是简单业务还是复杂业务。较佳地,上述几种类型中前者的优先级可以设置的比后者的高,以提高任务的整体执行效率。在实际应用中可依上述次序根据测试任务所属类型确定优先级, 例如,当一测试任务无法确定是用户接收测试还是普通模块测试则根据其是功能测试还是性能测试来确定优先级。较佳地,为了进一步提高任务的执行效率,可以对较大任务进行拆分,这样,可以确保不同任务的执行时间差异不是太大,进而可以确保此后将优化后的任务队列依次配置在各测试客户端上后,各测试客户端的任务执行时间不会因不同任务包含的用例个数差异较大而存在较大的差异。在具体实现上述思想时,可对于包含用例的数量大于预设阈值M的测试任务,进行拆分,使拆分后的测试任务所包含的用例数量不超过所述阈值M。这里,对于阈值M,M设置的越小,需要拆分的任务数也会越多,相应地算法复杂度也会增加,但是,任务在各测试客户端上进行优化分配的准确性也会提高,反之,M设置的越大,提高任务的整体执行效率的效果会越小。具体地,本领域技术人员,可根据实际需要设置合适的M取值。
步骤102、对于每个所述测试任务,根据预设的用例组织优化策略,对该测试任务包含的所有用例的数量和执行顺序进行优化,得到该测试任务的用例优化组合序列。这里,利用所述用例组织优化策略,对各测试任务的用例进行优化,可以提高测试任务的执行效率。较佳地,所述用例组织优化策略可以包括对于相同的两个以上的用例,只保留排在首位的用例;根据用例间的关联关系,将需要先执行的用例排列在相应的需要后执行的用例之前。在上述用例组织优化策略中,对于相同的两个以上的用例,只保留排在首位的用例,即只保留所有相同用例中序号最小的一个,比如,用例序列为A1、B2、A3、C4、A5、D6、A7、E8经过执行优化处理后,变为A1、B2、C3、D4、E5,因此减少了三个用例的执行。(注 A、B...为用例的标识号,后面数值为用例在队列中的序号)步骤103、按照所述各测试任务的优先级降序,将所有测试任务进行排序;根据当前的测试客户端数量N和所述各测试任务间的关联关系,按照任务均衡的原则将所述排序后的测试任务分为N个子队列,各所述子队列分别与不同的测试客户端相对应,其中,不同子队列的测试任务间无关联关系,且各子队列中测试任务的顺序为所述优先级的降序。这里,在进行N个子队列的划分时需要遵守各子队列任务均衡的原则,以确保各子队列的执行时间均衡,从而可以提高测试任务的整体执行效率。下面对本步骤的具体实现进行举例说明。首先,读取要执行测试任务的优先级,如标识号ID为T1、T2、T3、T4、T5、T6的测试任务的优先级分别是1、3、2、2、3、1。然后,将高优先级的测试任务排在前面生成一个新的自动化执行队列就是Τ1、 Τ6、Τ3、Τ4、Τ2、Τ5。接下来,再根据客户端的数量和任务关联程度数据情况对上述队列(Tl、Τ6、Τ3、 Τ4.Τ2.Τ5)进行子队列的划分。假如,测试客户端资源ID为C1、C2、C3,任务关联程度数据表明T2必须等T3执行完成才执行、T4与T5与其它任务没有关联关系,经过优化与分解后得到的三个子队列如下C1:T1、T4C2:T6、T5C3:T3、T2步骤104、对于各所述子队列,将其所包含的各测试任务分别替换为对应的所述用例优化组合序列,得到该子队列所对应的用例队列,并在该子队列对应的测试客户端上依次执行所述用例队列中的各用例。进一步地,为了提高自动化测试的灵活性,本步骤中得到子队列所对应的用例队列后,测试人员可根据实际需要对排序好的用例队列进行调整。具体地,测试系统可通过测试管理界面,将所述子队列的用例队列以及其中各用例所属的测试任务,通知给测试人员, 所述测试人员根据当前的测试需要对所述用例队列进行修订。然后,测试客户端再基于修订后的用例队列进行执行即可。具体测试客户端执行用例的方法与现有系统相同,在此不再赘述。
进一步地,还可以统计各所述测试任务本次执行时所需要的时间并保存在测试系统中,以便下次相同测试任务执行时,作为经验值提供给该测试任务,以助其确认优先级。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种软件自动化测试方法,其特征在于,该方法包括以下步骤a、根据预设的优先级确定策略,确定当前需要执行的各测试任务的优先级;b、对于每个所述测试任务,根据预设的用例组织优化策略,对该测试任务包含的所有用例的数量和执行顺序进行优化,得到该测试任务的用例优化组合序列;C、按照所述各测试任务的优先级降序,将所有测试任务进行排序;根据当前的测试客户端数量N和所述各测试任务间的关联关系,按照任务均衡的原则将所述排序后的测试任务分为N个子队列,各所述子队列分别与不同的测试客户端相对应,其中,不同子队列的测试任务间无关联关系,且各子队列中测试任务的顺序为所述优先级的降序;d、对于各所述子队列,将其所包含的各测试任务分别替换为对应的所述用例优化组合序列,得到该子队列所对应的用例队列,并在该子队列对应的测试客户端上依次执行所述用例队列中的各用例。
2.根据权利要求1所述的方法,其特征在于,所述步骤a之前所述方法进一步包括 对于包含用例的数量大于预设阈值M的测试任务,进行拆分,使拆分后的测试任务所包含的用例数量不超过所述阈值M。
3.根据权利要求1所述的方法,其特征在于,步骤a中所述优先级确定策略包括 如果所述测试任务在当前的测试系统中保存有相同测试任务的经验值,则根据该经验值以及预设的经验值与优先级映射关系,确定该测试任务的优先级,否则,根据当前预设的优先级动态生成规则,确定该测试任务的优先级,如果当前没有所述优先级动态生成规则, 则将测试人员输入该测试任务时指定的初始优先级作为该测试任务的优先级,如果该测试任务没有初始优先级,则将预设的缺省优先级设置为该测试任务的优先级。
4.根据权利要求1所述的方法,其特征在于,步骤a中所述经验值为最近一次执行时所需的时间或最近一次执行时的优先级。
5.根据权利要求1所述的方法,其特征在于,步骤b中所述用例组织优化策略包括 对于相同的两个以上的用例,只保留排在首位的用例;根据用例间的关联关系,将需要先执行的用例排列在相应的需要后执行的用例之前。
6.根据权利要求1所述的方法,其特征在于,所述步骤d中进行所述执行之前进一步包括通过测试管理界面,将所述子队列的用例队列以及其中各用例所属的测试任务,通知给测试人员,所述测试人员根据当前的测试需要对所述用例队列进行修订。
7.根据权利要求1所述的方法,其特征在于,所述步骤d中进行所述执行时进一步包括统计各所述测试任务本次执行时所需要的时间并保存。
全文摘要
本发明提供了一种软件自动化测试方法,通过对自动化测试任务以及各自动化测试任务所包含的测试用例的执行顺序进行优化排序,可以有效提高整个自动化测试过程的执行效率。
文档编号G06F11/36GK102495804SQ20111044399
公开日2012年6月13日 申请日期2011年12月27日 优先权日2011年12月27日
发明者王庆丰 申请人:创新科存储技术(深圳)有限公司, 创新科软件技术(深圳)有限公司