基于Rational Functional Tester 的测试脚本自动修复技术

发表于:2008-4-29 14:33

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

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

3 脚本修复技术的提出

  脚本修复技术是修复非法的事件序列,使得这些脚本可以在修改过的 GUI 上执行。表 1 中将 GUI 的变化主要是由 3 类构成的,对象的增加(例如增加了新的按钮),对象的删除(原有按钮被删除),对象的修改(原先的按钮变成了菜单选项)[30]。如果将这三类分析清楚,那么脚本修复功能就能够实现。除此之外,还有考虑依赖关系,因为对象如果存在被依赖关系,那么它的改变势必会对其产生依赖的对象产生一定的影响,因此可以将 GUI 的变化分为六类。下面分别介绍这六种状况。

表 1 GUI 的六类变化

对象变化类型 是否被依赖
增加对象 独立
增加对象 存在被依赖关系
删除对象 独立
删除对象 存在被依赖关系
修改对象 独立
修改对象 存在被依赖关系

3.1 增加对象

(1) 该对象不存在被依赖关系

  存在事件序列 (e 1,e 2...e n)。新增对象 i,如果在该序列中不存在对对象 i 的依赖事件,那么关于 i 的事件 e i 可以不放入该队列中。如图 6 中 “事件序列图 1 ” 所示,因此原事件序列可以不用改变。


图 6. 事件序列图 1
事件序列图 1

(2) 该对象存在依赖关系

  存在事件序列 (e 1,e 2...e n)。如果在该序列中存在对对象 i 的依赖事件,即 e i 是某个事件运行的前提条件。那么关于 i 的事件 e i 要放入该队列中。将 e i 放入依赖事件之前,这样可以保证原理的事件序列可以正常运行。因为对象树被更新,所有对象的事件集合也会被更新。因此在事件序列中只需要将原来 e x(依赖于 e i),更换为 e x'(e x' 为默认操作,包含了对 i 的操作)。如图 7 中 “事件序列图 2 ” 所示,e x' 替代了 e x 加入到新的事件序列中。


图 7. 事件序列图 2
事件序列图 2

  可见对于新增对象,只要原有事件序列没有产生对其的依赖,原有事件序列依然可以正常运行。

3.2 删除对象

(1) 该对象不存在被依赖关系

  存在事件序列 (e 1,e 2...e i...e n)。如果在该序列中不存在对对象 i 的依赖事件,那么关于 i 的事件 e i 可以直接从该队列中删除。如图 8 中 “事件序列图 3 ” 所示,因此原事件序列只用删除 e i 事件。


图 8. 事件序列图 3
事件序列图 3

(2) 该对象存在被依赖关系

  存在事件序列 (e 1,e 2...e i...e n)。如果在该序列中存在对对象 i 的依赖事件,那么除了关于 i 的事件 e i 要被删除之外,同时要将 e x 更改为 e x'(e x' 为默认操作,在默认操作中也删除了对 i 的依赖事件)。如图 9 中 “事件序列图 4 ” 所示,新的事件序列中原有 e i 被删除。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号