一种基于QT的应用程序自动化测试方法与流程

文档序号:12596949阅读:3134来源:国知局
一种基于QT的应用程序自动化测试方法与流程

本发明属于软件自动化测试领域,具体涉及一种基于QT的应用程序自动化测试方法。



背景技术:

随着计算机软件规模的不断扩大,图形用户界面(GUI,Graphical User Interface)的应用程序也越来越多。为了确保软件的可靠性,通常会针对GUI应用程序进行手工测试或自动化测试。

由于手工测试需要占用测试人员的大量时间和精力,进行重复繁琐的测试工作,存在测试效率低下以及误测、漏测等问题。所以越来越多的GUI应用程序借助于自动化测试技术进行快速、全面的测试,从而提高软件质量、缩短软件发布周期,也使测试人员可以摆脱枯燥乏味的重复性测试工作。

目前,被广泛采用的自动化测试方法主要是录制回放技术,通常需要截获整个测试过程的“用户操作”,并生成脚本,然后以自动化测试的方式回放“用户操作”。这种测试方法有一些缺陷:首先,它需要测试人员对脚本进行编辑以及参数化操作;其次,自动化测试的回放过程是坐标敏感化的,录制和回放过程中界面及其中各控件的坐标位置必须一致,否则可能会导致测试失败或结果不正确;最后,对于界面中的一些非标准控件,它需要有对应的识别方法。

在现有的GUI应用程序开发中,QT作为一个非常流行的GUI开发框架,支持类Unix、Windows以及IOS、Andriod、WindowsPhone等平台,将每一个“用户操作”解析成一到多个QT事件,本发明针对QT的应用程序提出一种自动化测试方法,可以有效地解决上述自动化测试方法的缺陷。



技术实现要素:

本发明提出一种基于QT的应用程序自动化测试方法,该方法只需要简单地运行应用程序就可以完成录制回放操作,同时其回放过程是坐标不敏感的,即使回放时界面内控件位置发生变化,也不会影响测试结果,可以使回放测试库长久有效,并且该方法采用了统一有效的控件识别方法,可唯一的识别出控件,包括非标准控件,以降低识别不同控件带来的负担和错误机率。

本发明提供的技术方案包括以下步骤:

步骤1:录制测试用例。

重新实现QT的事件处理方法代替其原有的事件处理方法,截获GUI应用程序运行过程产生的所有QT事件,对于自动化测试平台所需要的QT事件,将事件类型、事件数据、事件发生的时间以及对应的控件属性信息编码保存到事件文件,然后执行事件操作;对于其它QT事件,直接执行事件操作。同时将GUI应用程序运行过程中的待测信息保存为数据文件。

其中,所述自动化测试平台所需要的QT事件包括鼠标事件、键盘事件、滚轮事件、触屏事件等。

所述事件类型包括鼠标单击按下、鼠标单击抬起、鼠标移动、鼠标双击、键盘按下、键盘抬起、鼠标滑轮滚动、触屏开始、触屏更新、触屏结束等。

所述事件数据包括事件的相对坐标、按键、组合键等。

所述事件发生的时间即截获到事件时相对于应用程序开始执行的时间值。

所述控件属性信息包括控件名、父控件名、控件类名、父控件类名等。

所述GUI应用程序运行过程中的待测信息包括但不限于关键步骤日志、各种控件的输入数据、应用程序产生的输出数据等,所有开发人员关注的测试内容均可以输出到数据文件。

步骤2:回放测试用例。

解析录制过程中生成的事件文件,获得所有事件相关的信息,然后利用控件的属性信息查找出唯一的控件,并利用事件相关的数据合成QT事件,再根据事件发生的时间,逐一将合成的QT事件发送到事件队列中执行,从而完成应用程序的自动运行。同时也将GUI应用程序运行过程的待测信息保存为数据文件。

其中,所述解析录制过程中生成的事件文件,即根据录制过程中记录事件文件的编码方法,反编码事件文件获得所有事件类型、事件数据、事件发生的时间以及对应的控件属性信息。

所述利用控件的属性信息查找出唯一的控件,即利用控件名、父控件名、控件类名、父控件类名等属性唯一标识出单一控件。

所述利用事件相关的数据合成QT事件,即对于鼠标事件、触屏事件或者滚轮事件,则根据父控件的绝对坐标和子控件的相对坐标计算出子控件的绝对坐标,对于键盘事件等与坐标无关的事件则无需坐标转换,然后模拟生成不同的QT事件。

步骤3:根据录制过程与回放过程中记录的待测信息,比较待测信息的数据文件差异。

附图说明

图1为本发明实施例中自动化测试流程图

图2为本发明实施例中GUI应用程序界面图

图3为本发明实施例中录制过程记录的事件文件结构图

图4为本发明实施例中GUI应用程序运行过程记录的待测信息结构图

图5为本发明实施例中调整GUI应用程序布局的界面图

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合实施例中的附图,对本发明的技术方案进行清晰、完整地描述。

本发明实施例提供了一种基于QT的应用程序自动化测试方法,参见图1,本实施例提供的方法流程包括:

第一步,录制测试用例。

以图2所示的GUI应用程序为例,应用程序中包含按钮ButtonA与编辑控件EditB,其中ButtonA的控件名为ButtonA、类名为QPushButton、相对坐标为PA,EditB的控件名为EditB、类名为QLineEdit、相对坐标为PB,应用程序主界面的控件名为MainDialog、类名为QDialog。

测试人员的录制操作步骤为:

(1) 鼠标左键单击ButtonA;

(2) 鼠标移动至EditB;

(3) 鼠标左键单击EditB;

(4) 在EditB中键入字符“q”。

在操作过程中,重新实现的事件处理方法截获到所需要的QT事件为,

EAmp:在时间T1,鼠标在ButtonA上左键单击按下事件;

EAmr:在时间T2,鼠标在ButtonA上左键单击抬起事件;

Emm:在时间T3,鼠标从ButtonA移动到EditB的事件,用Emm表示过程中的鼠标移动事件;

EBmp:在时间T4,鼠标在EditB中左键单击按下事件;

EBmr:在时间T5,鼠标在EditB中左键单击抬起事件;

EBkp:在时间T6,在EditB中,按键Q按下事件;

EBkr:在时间T7,在EditB中,按键Q抬起事件;

然后将事件的所有相关信息记录在事件文件EventFile中,其结构参考图3。EventFile中的内容为,

[1] T1 | MousePress | PA | LeftButton | MainDialog/ButtonA | QDialog/QPushButton

[2] T2 | MouseRelease | PA | LeftButton | MainDialog/ButtonA | QDialog/QPushButton

[3] T3 | MouseMove | Pmm | NoButton | MainDialog | QDialog

[4] T4 | MousePress | PB | LeftButton | MainDialog/EditB | QDialog/QLineEdit

[5] T5 | MouseRelease | PB | LeftButton | MainDialog/EditB | QDialog/QLineEdit

[6] T6 | KeyPress | PB | QKey | MainDialog/EditB | QDialog/QLineEdit

[7] T7 | KeyRelease | PB | QKey | MainDialog/EditB | QDialog/QLineEdit

其中Pmm表示鼠标从ButtonA移动至EditB过程中的相对坐标值,MousePress、MouseRelease、MouseMove、KeyPress、KeyRelease分别表示不同的QT事件类型,LeftButton表示鼠标左键,NoButton表示在鼠标移动过程中没有鼠标按键按下或者抬起,QKey表示按键Q。

同时,在GUI应用程序中将控件属性信息以及控件B的字符“q”写出到数据文件DataFile1中,其结构参考图4。

第二步,回放测试用例。

参考图2所示的GUI应用程序中,回放该测试用例的流程为,

(1) 解析录制过程的EventFile,获得EventFile中事件EAmp、EAmr、Emm、EBmp、EBmr、EBkp、EBkr的各个字段;

(2) 通过控件名MainDialog/ButtonA、MainDialog、MainDialog/EditB查找出控件,再根据控件的类名QDialog/QPushButton、QDialog、QDialog/QLineEdit唯一标识出单一控件;

(3) 将逐一合成的事件EAmp、EAmr、Emm、EBmp、EBmr、EBkp、EBkr发送到QT的事件队列中,分派、执行事件,完成应用程序的自动运行。

同时,在GUI应用程序回放过程中也将会产生数据文件DataFile2,其结构参考图4。

第三步,根据录制过程与回放过程中记录的待测信息,比较待测信息的数据文件差异。

比较录制过程和回放过程生成的数据文件DataFile1与DataFile2中的内容是否完全一致,判别测试用例是否录制成功。

在本发明中,由于事件数据中采用事件的相对坐标,所以在界面中控件的位置发生变化时,参考图5所示,GUI应用程序的回放测试及待测信息的比较结果将不受影响。

综上所述,本发明的有益效果如下:

(1) 基于QT的应用程序自动化测试,利用控件名、父控件名、控件类名、父控件类名等控件属性唯一识别出了控件,大大地降低了识别不同控件带来的负担和错误机率;

(2) 录制过程不需要测试人员编辑脚本,测试人员只需要执行应用程序,然后自动或手动地进行回放测试并且利用录制和回放过程中记录的待测信息自动比较差异,极大地节约了人力成本;

(3) 在GUI应用程序开发的后期,只需要增加用于输出应用程序待测信息的相关代码,即可支持自动化测试;

(4) 由于事件数据中采用控件的相对坐标信息,GUI应用程序中界面元素的位置变化,将不会影响已经建立的回放测试库,可以使回放测试库长久有效;

(5) 可以在多个平台上,针对支持自动化测试的QT应用程序,使用已经建立的回放测试库。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1