专利名称:一种自动化测试方法及装置的制作方法
技术领域:
本发明涉及软件测试领域,特别是涉及一种自动化测试方法及装置。
背景技术:
随着软件产品的规模扩大,测试人员测试软件的速度很难跟上开发软件的
脚步。这就很需要一种模式来帮助测试人员让计算机自动在软件界面上进行 鼠标点击和按键操作,这就是自动化测试。
自动化测试过程就是执行自动化测试用例的过程,自动化测试用例包括自 动化测试脚本、界面控件信息、输入输出数据。其中,界面控件是指被测试软 件的界面元素,例如,可以包括按钮、文本输入框、选择框等等。这些界面元 素通常是显示在软件界面上,用户可以通过鼠标、键盘等对其进行操作。而界 面控件信息是指存储在数据库中的界面元素的属性信息。
在自动化测试中,由于没有人为的参与,因此,为了测试这些界面控件是 否能够实现相应的功能,就需要在测试时模拟人对界面控件进行操作的过程。 为了实现这一模拟过程,就需要有界面控件信息,通过界面控件信息定位到软 件上的界面控件,并将焦点放在指定界面控件上,进而才能实现对该界面控件 的键盘输入、鼠标点击等操作。
自动化测试所需的界面控件信息通常是测试用例的一部分,即在测试用例 中已经包含了界面控件信息,但是如果界面控件变动(由于被测试软件的版本 升级等原因),而测试用例中的界面控制信息没有同步更新,则自动化脚本才丸 行时有偏差甚至失败。
但是,界面控件信息需要在编写自动化用例时进行人工获取,如果被测试 软件的界面控件发生变化,则需要由软件测试人员手动同步修改测试用例中的 界面控件信息,以避免发生执行失败。但是这个过程中需要消耗大量人力进行 错误定位,同时也使自动化测试维护的成本增高。
发明内容
有鉴于此,本发明的目的在于提供一种自动化测试方法及装置,即使被测 试软件的界面控件发生变化后,也不需要重新手动维护测试用例。
为实现上述目的,本发明提供了如下方案 一种自动化测试方法,包括 在被测试软件中植入抽取引擎;
当所述抽取引擎监控到将要显示被测试软件界面的事件时,抽取所述被测 试软件的界面控件信息,并保存所述界面控件信息;
根据所述保存的界面控件信息,定位所述净皮测试软件界面上对应的界面控 件,以^便完成对所述净皮测试软件的自动化测试。
优选的,还包括
初始化界面控件信息的动态获取参数; 所述保存所述界面控件信息之前还包括
根据所述动态获取参数判断是否为自动化测试,如果是,执行所述保存所 述界面控件信息的步骤。
优选的,所述保存所述界面控件信息之后还包括
将所述抽取引擎从所述被测试软件中脱离。
优选的,所述抽取所述被测试软件的界面控件信息之前还包括
判断被测试软件的界面控件是否发生变化,如果发生变化,则抽取发生变 化的界面控件的信息;
利用所述发生变化的界面控件的信息更新测试用例中的界面控件信息。
优选的,保存所述界面控件信息包括
生成所述界面控件信息的数据包,并将所述数据包输出为本地緩存。 优选的,所述抽取所述被测试软件的界面控件信息包括 在所述被测试软件中构建界面控件基类,并遍历所述被测试软件中所有的 界面控件。
一种自动化测试装置,包括
植入单元,用于在被测试软件中植入抽取引擎;
抽取引擎,用于当监控到将要显示被测试软件界面的事件时,抽取所述被
5测试软件的界面控件信息,并保存所述界面控件信息;
定位单元,用于自动化测试脚本根据所述保存的界面控件信息,定位所述 被测试软件界面上对应的界面控件,以便完成对所述净皮测试软件的自动化测试。
优选的,还包括
初始化单元,用于初始化界面控件信息的动态获取参数; 所述抽取引擎还包括
第一判断子单元,用于根据所述动态获取参数判断是否为自动化测试,如 果是,执行所述保存所述界面控件信息的步骤。 优选的,还包括.-
脱离单元,用于当所述抽取引擎保存所述界面控件信息之后,将所述抽取 亏1擎从所述被测试软件中脱离。 优选的,所述抽取引擎还包括
第二判断子单元,用于判断被测试软件的界面控件是否发生变化,如果发 生变化,则抽取发生变化的界面控件的信息;
更新子单元,用于利用所述发生变化的界面控件的信息更新测试用例中的 界面控件信息。
优选的,所述抽取引擎包括
数据包生成子单元,用于生成所述界面控件信息的数据包; 输出子单元,用于将所述数据包输出为本地緩存。 优选的,所述抽取引擎包括
基类构建子单元,用于在被测试软件中构建界面控件基类; 遍历子单元,用于遍历所述被测试软件中所有的界面控件。 根据本发明提供的具体实施例,本发明公开了以下技术效果 本发明实施例中,由于能够在被测试软件中植入抽取引擎,而抽取引擎能 够在被测试软件的界面显示之前,获取被测试软件的界面控件信息,并进行保 存,因此,自动化测试脚本直接根据保存的界面控制信息就能够定位所述被测 试软件界面上对应的界面控件,并完成对所述#1测试软件的自动化测试。可见, 即使被测试软件的界面控件发生了变化,也能够通过抽取引擎自动跟踪这种变化,相当于同步更新了自动化测试用例,因此,消除了被测试软件的界面控件 变化产生的影响,解决了界面控件变化后需要重新维护测试用例的问题,可以 避免由进行错误定位而消耗大量人力,同时也降低了自动化测试的维护成本。
图1是本发明实施例提供的方法的流程图2是本发明实施例提供的第一装置的示意图; 图3是本发明实施例提供的第二装置的示意图; 图4是本发明实施例提供的第三装置的示意图; 图5是本发明实施例提供的第四装置的示意图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
参见图1,本发明实施例提供的自动化测试方法包括以下步骤
S101:在被测试软件中植入抽取引擎;
所述抽取引擎相当于一段程序,该程序能够自动获取出界面上的控件信 息。抽取引擎相当于是被测试软件与自动化测试程序之间的接口,可以抽取被 测试软件的界面控件信息,并提供给自动化测试程序使用。这样,当被测试软 件的界面控件发生变化时,就不需要手动地修改测试用例了,抽取引擎可以自 动实现测试用例的更新。
具体实现时,自动化程序执行测试用例的同时,自动化测试脚本将启动需 要测试的软件,此时,就可以在被测试软件中才直入抽取引擎。
S102:当所述抽取引擎监控到将要显示被测试软件界面的事件时,抽取所 述被测试软件的界面控件信息,并保存所述界面控件信息;
启动被测试软件之后,被测试软件的界面需要显示出来,该过程需要经历 创建窗体、显示并激活等事件。抽取引擎就是要监控将要显示被测试软件界面的事件, 一旦监控到,就可以抽取被测试软件的界面控件信息。具体进行抽取 时,可以首先在被测试软件中构建界面的控件基类,然后遍历被测试软件的所 有界面控件。
抽取被测试软件的界面控件信息之后,需要将这些界面控件信息进行保 存,以便于在测试过程中使用。具体实现时,由于通常在对软件进行自动化测 试时,都需要将自动化测试脚本、界面控制信息、输入输出数据等緩存在本地, 因此,抽取引擎抽取的界面控件信息也可以先生成数据包,并緩存在本地,用 抽取引擎抽取到的界面控件信息覆盖原来的界面控件信息,这样,自动化脚本
就可以读取这些緩存,并转换为界面控件信息进行界面控件的定位。
将抽取到的界面控件信息緩存在本地的好处在于,数据仅在本地进行緩存 输出,可以使得资源消耗在千毫秒级,而且不需要与应用服务器交互,产生的 性能消耗可不计。
S103:根据所述保存的界面控件信息,定位所述被测试软件界面上对应的 界面控件,以便完成对所述被测试软件的自动化测试。
由于被测试软件的界面在显示之后便不会再发生变化,因此根据之前保存 的界面控件信息,就可以定位被测试软件界面上对应的界面控件,把焦点放在 相应的界面控件上,然后自动化测试程序就可以对这些界面控件进行模拟鼠标 键盘操作了 。
可见,本发明实施例提供的方法中,由于引入了抽取引擎,可以在开始执 行测试之前,抽取到被测试软件的界面控件信息,使测试用例中的界面控件信 息获得即时更新,因此即使被测试软件的界面控件由于版本更新等原因发生变 化,也不需要手动修改测试用例中的界面控件信息,这部分工作可以由抽取引 擎自动完成。因此,消除了被测试软件的界面控件变化产生的影响,解决了界 面控件变化后需要重新维护测试用例的问题,可以避免由进行错误定位而消耗 大量人力,同时也降低了自动化测试的维护成本。
在抽取引擎抽取到界面控件信息并进行保存之后,为了不影响自动化测试 过程,还可以将抽取引擎从被测试软件中脱离出来。该脱离过程与之前的植入 过程相对应,由于在被测试软件中植入了抽取引擎(相当于植入了一段程序),因此,在测试真正开始之后,应该将抽取引擎脱离出来,否则可能会使测试过 程受到影响甚至无法成功完成。
因此,界面控件信息的动态获取功能相当于仅是临时植入到被测试软件 中,并在完成动态获取之后从被测试软件中脱离,因此对被测试软件没有影响, 不需要特别的维护。
由于通常只有在自动化软件测试中才会需要界面控件信息,因此,本发明 实施例中的抽取引擎只有在自动化测试的过程中才会发挥作用。这是因为,在 手动测试中,通常是由测试人员或用户输入数据,并观察软件的反应(输出), 从而判断行为是否正确,因此,手动测试的过程并不需要模拟人进行鼠标和键 盘操作(而是真实的鼠标和键盘操作),在测试过程中也就不需要被测试软件 的界面控件信息。
因此,在本发明实施例中,还可以预先定义界面控件信息的动态获取参数, 并依据是否为自动化测试对参数进行初始化,抽取引擎在在抽取到界面控制信 息之后,可以首先根据参数来判断此次测试是否为自动化测试,如果是,则保 存抽取到界面控件信息,否则可以不必保存。具体实现时,可以将初始化的所 述动态获取参数写在注册表中,抽取引擎可以到注册表中获取所述动态获取参 数的值。利用所述动态获取参数进行控制,使得抽取引擎只在自动化测试中执 行,该过程对应用程序无逻辑影响。
当然,由于自动化测试程序的测试用例中也包含有被测试软件的界面控件 信息(即在抽取引擎抽取界面控件之前,本地緩存中已经存在界面控件信息), 只是在测试之前不知道被测试软件的界面控件是否已经发生变化,以致与测试 用例中的界面控件信息不同。可见,如果被测试软件的界面控件没有发生变化, 则不需要抽取,直接用测试用例中的界面控件信息即可定位到被测试软件的界 面控件。另一方面,即使被测试软件的界面控件发生了变化,也可能只是一部 分界面控件发生变化,因此,也只需要抽取这部分发生变化的界面控件信息, 并替代测试用例中的界面控件信息中相应的部分即可。
因此,在本发明的优选实施例中,还可以在抽取某界面控件的信息之前, 首先判断该界面控件是否发生了变化,如果发生变化则抽取,并用新抽取到的界面控件信息更新原测试用例中的界面控件信息;如果某界面控件没有发生变 化,则可以不必抽取该界面控件的信息。这样,最终也可以保证测试用例中的 界面控件信息与当前被测试软件的界面控件信息同步,进而保证成功完成对该 软件的测试。
其中,在判断界面控件是否发生变化时,可以采用以下方法
标识匹配法抽取引擎通过界面控件的标识(一般就是界面控件上显示的 字符)来判断界面控件是否发生变化,如果有相同标识的界面控件的信息发生 变化,或者出现新增的界面控件等,抽取引擎即时更新测试用例中的界面控件 信息。
与本发明实施例提供的自动化测试的方法相对应,本发明实施例还提供了 一种自动化测试的装置,参见图2,该装置包括以下单元
植入单元U201,用于在被测试软件中植入抽取引擎;
抽取引擎U202,用于当监控到将要显示被测试软件界面的事件时,抽取 所述被测试软件的界面控件信息,并保存所述界面控件信息;
定位单元U203,用于自动化测试脚本根据所述保存的界面控件信息,定 位所述被测试软件界面上对应的界面控件,以便完成对所述被测试软件的自动 化测试。
通过抽取引擎就可以自动在被测试软件界面上寻找对应的界面控件,就可 以即时获取被测试软件的当前界面控件信息,用即时获取到的界面控件信息可 以准确地定位到被测试软件上的界面控件,,进而达到模拟界面控件操作的目 的,成功完成对被测试软件的自动化测试。因此,在测试时,即使被测试软件 的界面控件发生变化,导致测试用例中的界面控件信息无法定位到界面控件, 本发明实施例也可以通过抽取引擎来消除这种影响。
由于手动测试不需要模拟对界面控件的操作,因此,通常只有在自动化测 试时才需要界面控件信息。这就需要对抽取引擎进行控制,为此,本发明实施 例引入了界面控件信息自动获取参数,通过该参数对抽取引擎进行控制。此时, 参见图3,该装置还可以包括
10初始化单元U204,用于初始化界面控件信息的动态获取参数; 此时,抽取引擎U202还包括
第 一判断子单元U2021,用于根据所述动态获取参数判断是否为自动化测 试,如果是,执行所述保存所述界面控件信息的步骤。
在抽取引擎抽取到被测试软件的界面控件信息并进行保存后,为了不影响 正常的测试,还可以将抽取引擎从被测试软件中脱离出来,此时,该装置还包 括
脱离单元U205,用于当所述抽取引擎保存所述界面控件信息之后,将所 述抽取? 1擎从所述被测试软件中脱离。
由于被测试软件的界面控件可能没有发生变化,也可能只有一部分界面控 件发生了变化,因此,在本发明的其他实施例中,也可以不采用全面釆集并全 面覆盖的方法,而是仅抽取发生变化的界面控件信息,并对测试用例中的界面 控件信息进行更新。此时,参见图4,抽取引擎U202还包括
第二判断子单元U2022,用于判断被测试软件的界面控件是否发生变化, 如果发生变化,则抽取发生变化的界面控件的信息;
更新子单元U2023,用于利用所述发生变化的界面控件的信息更新测试用 例中的界面控件信息。
因此,可以把变化后的界面控件信息同步到测试用例,这样同样可以避免 测试用例的手动纟务改。
抽取引擎202在保存抽取到的界面控件信息时,可以首先生成所述界面控 件信息的数据包,然后将所述数据包输出为本地緩存。此时,参见图5,抽取 引擎U202可以包括
数据包生成子单元U2024,用于生成所述界面控件信息的数据包;
输出子单元U2025,用于将所述数据包输出为本地緩存。
抽取引擎U202在具体进行界面控件信息抽取时,可以首先在被测试软件 中构建界面控件基类,然后遍历所述被测试软件中所有的界面控件。此时,抽 取引擎U202可以包括基类构建子单元U2026,用于在被测试软件中构建界面控件基类; 遍历子单元U2027,用于遍历所述被测试软件中所有的界面控件。 以上对本发明所提供的一种自动化测试方法及装置,进行了详细介绍,本
明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技 术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处。 综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种自动化测试方法,其特征在于,包括在被测试软件中植入抽取引擎;当所述抽取引擎监控到将要显示被测试软件界面的串件时,抽取所述被测试软件的界面控件信息,并保存所述界面控件信息;根据所述保存的界面控件信息,定位所述被测试软件界面上对应的界面控件,以便完成对所述被测试软件的自动化测试。
2、 根据权利要求1所述的方法,其特征在于,还包括 初始化界面控件信息的动态获取参数; 所述保存所述界面控件信息之前还包括根据所述动态获取参数判断是否为自动化测试,如果是,执行所述保存所 述界面控件信息的步骤。
3、 根据权利要求1所述的方法,其特征在于,所述保存所述界面控件信 息之后还包括将所述抽取引擎从所述被测试软件中脱离。
4、 根据权利要求1所述的方法,其特征在于,所述抽取所述被测试软件 的界面控件信息之前还包括判断被测试软件的界面控件是否发生变化,如果发生变化,则抽取发生变 化的界面控件的信息;利用所述发生变化的界面控件的信息更新测试用例中的界面控件信息。
5、 根据权利要求1至4任一项所述的方法,其特征在于,保存所述界面 控件信息包括生成所述界面控件信息的数据包,并将所述数据包输出为本地緩存。
6、 根据权利要求1至4任一项所述的方法,其特征在于,所述抽取所述被测试软件的界面控件信息包括在所述被测试软件中构建界面控件基类,并遍历所述被测试软件中所有的 界面控件。
7、 一种自动化测试装置,其特征在于,包括 植入单元,用于在被测试软件中植入抽取引擎;抽取引擎,用于当监控到将要显示被测试软件界面的事件时,抽取所述被测试软件的界面控件信息,并保存所述界面控件信息;定位单元,用于自动化测试脚本根据所述保存的界面控件信息,定位所述 被测试软件界面上对应的界面控件,以便完成对所述被测试软件的自动化测试。
8、 根据权利要求7所述的装置,其特征在于,还包括 初始化单元,用于初始化界面控件信息的动态获取参数; 所述抽取引擎还包括第一判断子单元,用于根据所述动态获取参数判断是否为自动化测试,如 果是,执行所述保存所述界面控件信息的步骤。
9、 根据权利要求7所述的装置,其特征在于,还包括脱离单元,用于当所述抽取引擎保存所述界面控件信息之后,将所述抽取 亏1擎从所述被测试软件中脱离。
10、 根据权利要求7所述的装置,其特征在于,所述抽取引擎还包括 第二判断子单元,用于判断被测试软件的界面控件是否发生变化,如果发生变化,则抽取发生变化的界面控件的信息;更新子单元,用于利用所述发生变化的界面控件的信息更新测试用例中的 界面控件信息。
11、 根据权利要求7至IO任一项所述的装置,其特征在于,所述抽取引 擎包括凄t据包生成子单元,用于生成所述界面控件信息的凄t据包; 输出子单元,用于将所述数据包输出为本地緩存。
12、 根据权利要求7至IO任一项所述的装置,其特征在于,所述抽取引 擎包括基类构建子单元,用于在被测试软件中构建界面控件基类; 遍历子单元,用于遍历所述被测试软件中所有的界面控件。
全文摘要
本发明公开了一种自动化测试方法,该方法包括在被测试软件中植入抽取引擎;当所述抽取引擎监控到将要显示被测试软件界面的事件时,抽取所述被测试软件的界面控件信息,并保存所述界面控件信息;根据所述保存的界面控件信息,定位所述被测试软件界面上对应的界面控件,以便完成对所述被测试软件的自动化测试。本发明还公开了一种自动化测试装置。通过本发明,消除了被测试软件的界面控件变化产生的影响,解决了界面控件变化后需要重新维护测试用例的问题。
文档编号G06F11/36GK101630286SQ20091016105
公开日2010年1月20日 申请日期2009年8月7日 优先权日2009年8月7日
发明者邓润祥 申请人:金蝶软件(中国)有限公司