
本发明涉及软件测试技术领域,特别涉及自动生成图形用户界面的测试脚本的技术领域。
背景技术:现有的自动化测试工具,在对图形用户界面(GUI)进行自动化测试时,都需要测试人员根据测试用例的要求,手工的编写相应的测试脚本,而自动化测试工具本身只能够自动的运行这些已经编写好的测试脚本,比如,基于Windows的自动化测试工具Winrunner和基于Linux的自动化测试工具Xrunner都属于这种情况。这样的自动化测试工具存在如下问题:1、人工撰写测试脚本有一定困难。不同的自动化测试工具有各自不同的编程风格和语法,测试人员需要熟悉如何编写合格的测试脚本,此外,不同的测试用例需要包含不同的测试脚本;2、测试脚本的维护有一定困难。一旦被测的图形用户界面改变,所有的测试脚本需要手动修改。
技术实现要素:本发明所要解决的技术问题是提供一种自动生成图形用户界面的测试脚本的方法及装置,以解决现有技术中测试人员需要手工撰写测试脚本,脚本维护困难的问题。为了解决这个问题,本发明的第一方面在于提供一种自动生成图形用户界面的测试脚本的方法,包括如下步骤:1)定义被测图形用户界面中的每个构件的信息:定义每个构件的属性和该构件与其他构件的相互约束关系;2)撰写测试用例文件:将拟向被测图形用户界面中的每个构件写入的值和测试检查点信息存于该文件;3)生成构件组合值文件:对测试用例文件中的所有构件的值进行组合,得到若干个组合值文件,每个文件包含一种可能的组合;4)对每个组合值文件中的每一个构件添加操作类型:根据构件的属性,确定组合值文件中的每一个构件值的操作类型;5)确定每个组合值文件中的各个操作之间的先后顺序:根据构件的相互约束关系,重新排列组合值文件中的每一个操作的先后顺序。6)生成测试脚本:将测试检查点信息加入每个组合值文件的最后,得到测试脚本文件。为解决这个问题,与上述第一方面相结合,本发明的第二方面在于提供一种自动生成图形用户界面的测试脚本的方法,所述的每个构件的属性的取值范围是一个集合,包括对该构件所有可能的操作类型。为了解决这个问题,与上述第一方面相结合,本发明的第三方面在于提供一种自动生成图形用户界面的测试脚本的方法,所述的每个构件的相互约束关系的取值范围是一个集合,包括该构件与其他构件之间的所有输入和输出关系。为解决这个问题,与上述第一方面相结合,本发明的第四方面在于提供一种自动生成图形用户界面的测试脚本的方法,所述的每个构件的信息还包括构件的编号、类型、名称。为解决这个问题,本发明还提供一种自动生成图形用户界面的测试脚本的装置,包括用于定义被测图形用户界面中的每个构件的信息的模块,其定义每个构件的属性和该构件与其他构件的相互约束关系;用于撰写测试用例文件的模块,其将拟向被测图形用户界面中的每个构件写入的值和测试检查点信息存于该文件;用于生成构件值组合文件的模块,其对测试用例文件中的所有构件的值进行组合,得到若干个组合值文件,每个文件包含一种可能的组合;用于对每个组合值文件中的每一个构件值添加操作类型的模块,其根据构件的属性,确定组合值文件中的每一个构件值的操作类型;用于确定每个组合值文件中的各个操作之间的先后顺序的模块,其根据构件的相互约束关系,重新排列组合值文件中的每一个操作的先后顺序;用于生成测试脚本的模块,其将测试检查点信息加入每个组合值文件的最后,得到测试脚本文件。与现有技术相比,本发明提供的一种自动生成图形用户界面的测试脚本的方法及装置,其有益的技术效果是:1、减少了测试人员手动编写测试脚本的工作量。由于能够根据测试用例文件自动的生成测试脚本文件,因此,不再需要测试者掌握测试脚本编程的语法;2、便于测试脚本的维护:一旦被测图形用户界面发生变动,只需要修改测试用例文件,就能自动重新生成新的测试脚本文件。附图说明图1是本发明提出的一种自动生成图形用户界面的测试脚本的方法的总体流程图;图2是本发明提出的一种自动生成图形用户界面的测试脚本的装置的示意性框图;图3是本发明具体实施方式中的被测图形用户界面的示意图。具体实施方式下面结合附图和具体实施方式对本发明作进一步说明。在本实施例中,我们对附图3所示的一个图形用户界面进行测试。第一步:定义被测图形用户界面中的每个构件的信息,按照如下格式定义每一个构件的信息:W={id,type,name,attribute,constraint}其中,id是该构件的编号;type是该构件的类型,如:文本框、按钮、下拉框等;name是该构件的名称;attibute是该构件的属性,其取值范围是一个集合,用于描述对于该构件所有可能的操作类型,比如:插入、删除、点击、选择等;constraint是该构件与其他构件之间的约束关系,比如:用于描述该构件是另一个构件的输入等。具体到附图3可以看出,该图形用户界面一共包括四个构件,分别是:“Amount”、“Rate”、“Term”和“Calculate”。对于每一个构件,按照上述格式定义其信息如下:W1={id1,文本框,Amount,插入/删除,w1->w4}W2={id2,文本框,Rate,插入/删除,w2->w4}W3={id3,下拉框,Term,选择,w3->w4}W4={id4,按钮,Calculate,点击,w4->Window2}其中,w1->w4、w2->w4、w3->w4表示w1、w2和w3是w4的输入,w4->Window2表示w4的输出是另一个窗口Window2以及在Window2中显示的内容。第二步:撰写测试用例文件,包含如下信息:W1:21,0,-999W2:1.0,6.48W3:1,2,3W4:单击、双击检查Window2该测试用例文件中,以每一个构件值为一行,包括了测试过程中拟向被测图形用户界面中的每个构件写入的值,最后一行还注明了该测试用例的检查点信息。第三步:生成构件组合值文件。对第二步的测试用例文件中的构件值进行组合,每一种可能的组合就是一个构件值组合文件,下面是其中的几种组合的示例:组合值文件1:w121w21.0w31w4单击组合值文件2:w10w21.0w31w4单击组合值文件3:w1-999w21.0w31w4单击组合值文件4:w1-999w26.48w33w4双击第四步:确定每个组合值文件中的每一个构件值的操作类型。根据第一步定义的构件的属性attribute,确定组合值文件中的每一个构件值的操作类型,并将该操作类型添加到组合值文件中。添加操作类型后的组合值文件如下所示:组合值文件1:插入w121插入w21.0选择w31点击w4单击组合值文件2:插入w10插入w21.0选择w31点击w4单击组合值文件3:插入w1-999插入w21.0选择w31点击w4单击组合值文件4:插入w1-999插入w26.48选择w33点击w4双击第五步:确定每个组合值文件中的各个操作之间的先后顺序。根据第一步定义的构件的相互约束关系constraint可知,w1、w2和w3的输出都是w4所必需的输入,因此,应该先对w1、w2和w3进行相应的操作以后,再操作w4,所以,对第四步得到的组合之文件的每一个操作进行重新排序时,就按照这个准则进行。本实施例中,重新排序以前,组合之文件中的操作顺序刚好满足这个准则的要求,因此重新排序以后,顺序保持不变。第六步:生成测试脚本。将第二步撰写的测试用例文件中的测试检查点信息加入第五步得到的每个组合值文件的最后,得到测试脚本文件如下:测试脚本文件1:插入w121插入w21.0选择w31点击w4单击检查Window2测试脚本文件2:插入w10插入w21.0选择w31点击w4单击检查Window2测试脚本文件3:插入w1-999插入w21.0选择w31点击w4单击检查Window2测试脚本文件4:插入w1-999插入w26.48选择w33点击w4双击检查Window2从以上描述可以看出,第一步所定义的信息是图形用户界面的开发设计者提供的,只有第二步需要图形用户界面的测试人员手动撰写,而这步所涉及的工作量并不大,需要较大工作量的后面几步,都可以由计算机自动生成。并且,如果对被测的图形用户界面做出了修改,需要重新测试时,只需修改测试用例文件,然后让计算机自动执行后面四个步骤,就可以快速的生成所需要的新测试脚本。