在下一部分中,我们将定义一个GUI测试用例,并说明GUI的修改影响GUI测试用例的很多途径。然后,我们将在第3部分定义GUI控制流图和GUI调用图。第4部分中将会介绍一个GUI回归测试的例子。第5部分将详细描述回归测试人员将如何使用本文中的修复技术。在第6部分中,我们将通过在Acrobat Reader和WordPad两个软件上使用回归测试技术说明实验结果。最后,在第7部分中,我们将展示目前的一些相关研究。第8章包括本文的总结和未来的工作。
2 GUI模型和测试案例
在这一部分中,我们首先要介绍在GUI测试框架中GUI的模型。尔后我们将定义一个GUI测试用例并引入不可用以及可用测试模型的定义。
一个GUI被模型化为一组对象或窗口O={o1,o2,…om}(例如,标签、表格、按钮、文本框等)以及一组属性P={p1,p2,…pl}(例如,前景、名称)。每一个GUI都会使用对象的相关属性的某些性质。在任何时刻,GUI的状态都可以通过它所包含的所有对象以及所有属性的值来描述。因此,我们定义GUI的状态为:
定义:GUI的状态是指GUI中包含的所有对象的所有属性的状态集。
GUI的有效初始状态定义如下。
定义:如果GUI在初次被激活时的状态Si∈SI,则状态集SI称作该GUI的有效初始状态。
GUI的状态不是一成不变的,在GUI上运行的事件会改变GUI的状态。这些改变后的状态成为改变态。这些事件将被状态转换器进行定义。
定义:事件E={e1,e2,…,en}是可以使GUI的状态转换到另一个状态的函数。
函数表示Sj = e(Si)用于表示状态Sj是由于执行了事件e由状态Si转换而来的。对于测试人员而言,重要的是符合GUI结构的事件序列。我们将测试中使用到的有效的事件序列定义如下。
定义:GUI的有效事件序列为e1;e2;e3;…;en,其中ei+1将在ei之后立刻执行。
一个事件序列如果不是有效的,将被称作非有效事件序列。例如,在MS Word中,剪切(在编辑菜单下)不能在打开(在文件菜单下)执行后立即被执行,因此事件序列<打开,剪切>就是非有效的(忽略键盘快捷方式)。
最后,还要定义GUI测试用例。
定义:GUI测试用例可以表示为(So,e1;e2;…;en),包括任何S0∈SI,SI为初始状态,e1;e2;…;en为一个有效的事件序列。
如果在测试用例中的初始状态是非有效状态或者它其中的事件是无效的,那么这个测试用例就是不可执行的。
定义:如果GUI的改变造成状态So非有效或是事件序列e1;e2;…;en是无法完成的,则测试用例(So,e1;e2;…;en)是不可用的。
不可用的测试用例是不能在GUI上执行的,通常就会被丢弃。
定义:如果测试用例(So,e1;e2;…;en)是可以在修改后的GUI上执行,则该测试用例是可用的。
因为GUI的测试用例的生成是很昂贵的,因此我们设计了这项新技术来修复不可用的测试用例。首先描述GUI的结构来检测出GUI结构上的变化,然后使用这一信息来修复不可用测试用例。并且,由于目前的GUI都非常的大,例如,它们通常包含大量的事件和窗口,我们的描述将使GUI分割为便于管理的几部分。
文章来源于领测软件测试网 https://www.ltesting.net/