GUI回归测试

发表于:2008-5-26 16:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

分享:

www

图2:Acrobat Reader的部分GUI调用树

  图2是Acrobat Reader的部分调用树的例子。结点表示GUI的成员,边表示成员间的调用关系。成员的名称说明了他们的功能。例如,FileOpen是Reader中用于打开文件的成员,图2中的树在Main和FileOpen之间有线连接,说明Main包含有一个事件,名称为Open(可参见图1),该事件可以激活FileOpen。

4 GUI回归测试实例

  通过(1)GUI结构修改的例子,(2)测试用例对于修改后的GUI不可用的例子,(3)如何分析GUI可以识别不可用用例,(4)不可用用例可以如何修改来获得新的测试用例,我们已经对GUI回归测试技术有了一个整体的认识。如果一个结点的语法发生改变,尽管GUI的输出可能变化但测试用例仍然有可能是可用的。

wwww

(a)原始GUI                 (b)修改后的GUI                 (c)原始的G-CFG                 (d)修改后的G-CFG

  图3 表示了一个GUI,修改后的版本,以及它们相应的G-CFG图。原始的GUI包含4个事件,Cut、Copy、Paste和Print,当GUI被激活时,这4个动作都可以被访问。修改后的GUI包含4个原始事件中的3个;Print动作被删除而另3个事件被整合到一个下拉菜单里,通过点击Edit可以触发。单个事件的语法都没有改变。图3的(c)和(d)分别展示了原始和修改后的GUI的G-CFG图。原始GUI的G-CFG用4个点代表4个事件。修改后的GUI的G-CFG图与原始GUI的G-CFG图相差很多;它不再是全连结图,Edit动作必须在其他事件执行之前执行。以下4种改变总结了这两张G-CFG的差别:

1. events_deleted = {Print}

2. events_added = {Edit}

3. efg_edges_deleted =
{(Cut,Cut),(Copy,Copy),(Paste,Paste),(Print,Print),(Cut,Copy),(Cut,Paste),(Copy,Cut),(Copy,Paste),
(Copy,Print),(Print,Cut),(Print,Copy),(Print,Paste),(Paste,Cut),(Paste,Copy),(Paste,Print)}

4. efg_edges_added =
{(Edit,Edit),(Edit,Cut),(Edit,Copy),(Edit,Paste),(Cut,Edit),(Copy,Edit),(Paste,Eidt)}

e

表1 原始GUI的4个事件序列

  表1 显示4个事件序列用来测试原始GUI。列1是测试用例号,列2是测试用例的事件序列,列3是在G-CFG图中用于测试用例的事件,列4是G-CFG图中的边。通过测试以下测试用例可以得到以下结果:

1. 由于Print在GUI的结构中被删除了,因此事件1对于修改后的GUI是非法的。

2. 因为(Cut,Paste)和(Copy,Cut)在GUI的结构被删除了,事件序列3和4 对于修改后的GUI是非法的。

3. 事件序列2仍然是合法的,因为Cut在修改后的GUI中仍然是可用的。(只要初始的状态下Edit已经被执行了)

  查看原始和修改后的GUI结构,我们知道,事件3和4是可以被修复的以获得合法的事件序列。对于事件3的修改可以是<Cut; Edit; Paste>;对于事件序列4的修改是<Copy; Edit; Cut; Edit; Paste>。这两个修改后的序列就是合法的了,并且可以用于修改后的GUI。而对于事件1的修改就不明显了,因为它包含了在修改后的GUI中不存在的事件Print。在这个例子中,这个事件序列将作为不可修复的测试用例被丢弃。本例说明了一些不可用测试用例是不可以被修复的。在修复工作之后,测试设计人员还要从剩下的3个事件序列中进行选择,然后使用它们进行回归测试。需要注意的是,时间2原本就是可以在修改后的GUI上使用的,因此当在事件序列中没有任何改变时,测试设计人员可以选择不重新运行该事件序列(除非在暗藏的代码中进行了改动)。在本例中,剩下的事件序列3和4加上其他新的测试用例,将被用于回归测试。

  对于GUI来说,因为某些改变会造成测试用例不可用,因此在测试用例被修复前,可能要经过很多次的修改工作。我们的技术就是通过多种方式修复测试用例。

  也许你会注意到,仅仅在G-CFG中添加新的事件或是关系而不删除任何的事件或关系,将不会导致事件序列非法。从原始测试集合中得到的事件序列或是没有使用任何新的事件,或是没有覆盖任何新的关系。如果关系和事件都没有被删除,则原有的测试用例仍然可以在修改后的GUI上使用。

 

53/5<12345>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号