本发明专利技术涉及一种具有改变向导的脚本分析器,其生成用于演进应用的准确测试脚本。应用经常具有复杂的图形用户接口,对于该复杂的图形用户接口,GUI元素的排列和组合导致了潜在命令和命令序列的大量字段需要测试。而且,这些应用随时间改变,这使得之前的测试脚本无法工作。脚本分析器自动地生成新的测试脚本以可靠地测试后续的应用版本,同时极大地降低了达到后续应用版本的时间、成本和资源支出。
【技术实现步骤摘要】
本7>开内容涉及测试脚本的分析和生成,该测试脚本用于测试图 形用户接口应用,并且尤其涉及为了与新的应用版本一起使用而变换先前的测试脚本。
技术介绍
进步技术的持续前进已经使计算机软件应用复杂化,从而有助于 日常生活的几乎每方面的自动化。如今的应用存在以辅助撰写小说、 申报所得税、分析婴儿名字的历史趋势。这些应用的一个几乎普遍存在的特征在于,他们采用了图形用户接口 (GUI)。另一个几乎普遍存在的方面在于,GUI应用(GAP)需要在发布之前进行彻底测试。然而,在过去,对应用实现GUI要比彻底测试GAP容易。对于 任何非常复杂的GAP来说,GUI元素的排列和组合使得潜在命令和 命令序列的大量字段可能具有其严重程度从无关紧要到关键故障的 任何缺陷(bug)。使该问题加剧的是,应用开发者在压力下连续添 加新特征、更新GUI并且发布应用的新版本。结果,即^使针对GAP 之前版本的测试脚本是充分的,原始的测试脚本也几乎不可能充分测 试后续修改的应用。人工测试大规模企业GAP是乏味的、易出错的以及费力的。重 要的GAP包含依次包含数千个GUI对象的数百个GUI屏幕。为了自 动测试GAP,测试工程师使用脚本语言(例如,JavaScript和VBScript) 编写程序,并且这些测试脚本通过模仿经由对GAP的GUI对象执行 动作来与这些GAP进行交互的用户,从而借助不同的状态来驱动 GAP。通常,测试脚本仿真GPA的用户以及他们访问和操纵这些GAP 的GUI对象的声明。例如,声明如下VbWindow("Login"(登 入)).VbEdit("txtAgentsName").Set"Shawn"定位其标题为登入的窗口并且通过基于Visual-Basic的控制创建 该窗口,然后定位其名称为txtAgentsName的文本框,该文本框是其 父亲为登入窗口的GUI对象。通过调用具有参数"Shawn"的方法集, 文本框的值设置为"Shawn"。诸如QTP和Rational Robot的商业工具有助于通过跟踪GUI对象 上的光标指示以及"^丸行期望的动作生成测试脚本。这些工具生成可以 重放所捕获用户动作的脚本代码。生成的代码充当用于创建脚本以使 脚本测试自动化的框架。测试工程师将代码添加到生成的脚本上,使 得这些脚本可以使用不同的输入值来重放,从而实现GAP的功能。利用人工编写的代码扩展测试脚本来自动进行测试使得测试脚 本更加复杂、很难理解、维护以及演进。尽管事先已知测试脚本访问8并且操纵GUI元素,但是不清楚在编译时如何检测导致运行时错误的操作。使用通过测试平台导出的API调用继续作为访问和操纵GAP 的GUI对象的主要模式,并且这些API调用导致测试脚本中的各种 运行时错误。例如,测试人员可能错误使用测试脚本源代码中的平台 API调用,从而访问了并非意在访问的GUI元素。检查由第三方API调用引起的潜在瑕疵是困难的技术挑战,该潜 在瑕疯导致不正确的测试和测试脚本中的运行时错误。而且,使用 API调用来访问以及操纵GUI对象存在根本问题。第一,API调用采 用GUI对象的名称和属性值作为可用的字符串输入参数。这些输入参 数的值通常仅在运行时已知,这使得不可能应用有效彻底的检查算 法。第二,测试平台导出许多不同的API调用,并且这些API调用的 高度复杂性使得程序员很难理解使用哪个API调用以及如何组合它 们以访问并操作GUI对象。这些问题导致测试脚本中的大量缺陷,很 多缺陷在检测测试脚本源代码期间很难检测。由于应用需求规范包括描述GAP (特别是其GUI对象)的高级 概念,所以出现了其他问题。不幸地是,将GAP的GUI对象回溯到 这些高级概念是个难题,因为程序员并不记录这些轨迹。因而,当测 试人员创建GAP时,他们花费相当多的时间通过阅读文档并且与主 题专家交谈来理解如何使用这些GAP。在将测试人员重新分配到其他 任务或测试人员退出公司之后,常常会丧失这种关键的知识。现有的创建测试脚本方法的一个可感知的益处是不需要类型检 查,因为脚本代码是直接从GUI生成的。例如,如果给出GAP中的 特定GUI对象,测试工具可以产生对应的声明,其导航至具有描述其 性质的字符串参数、使用API调用的这些对象。然而,事实上,该可 察觉的益处引起了困难的技术挑战,因为测试脚本和GAP之间的语 义不一致。假设,例如,在维护阶段,GAP的GUI改变了。脚本解告。然而,得到的脚本不是在运行时失败就是产生不正确的测试结果, 因为其代码试图访问改变的或不再存在的GUI对象。因此,需要具有支持分析和演进逻辑的测试脚本生成架构,其解 决了上述问题和其他之前遇到的问题。
技术实现思路
测试脚本变换架构生成针对具有随时间改变的图形用户接口的 应用的准确的测试脚本。由于应用改变,^使得之前的测试脚本无法工 作。该架构便于新测试脚本的自动生成,以可靠地测试后续应用版本, 并且可以极大地降低达到新测试脚本的时间、成本和资源支出。测试脚本变换架构("架构")可以包括图形用户接口 (GUI)类型模型和GUI模型构建器(builder)逻辑。GUI模型构建器逻辑接 受作为输入的GUI类型模型、当前GAP版本以及后续的GAP版本。 GUI模型构建器逻辑生成作为输出的当前GAP GUI模型以及后续的 GAP GUI模型。此外,该架构包括GUI比较器逻辑。该GUI比较器逻辑接受作 为输入的当前GAPGUI模型以及后续的GAP GUI模型,并且生成作 为输出的GUI差异模型。该GUI差异模型包括GUI元素差异条目, 其标识在当前GAP版本和后续GAP版本之间匹配、但是在当前GAP 版本和后续GAP版本之间在特征中有所不同的特定GUI元素。该架 构进一步包括脚本分析器。基于当前测试脚本的抽象语法树表示,该 脚本分析器生成改变向导、经变换的测试脚本或这两者。改变向导可 以包括,例如,为了根据后续GAP版本使用而变换当前测试脚本的 脚本变换信息。经变换的测试脚本(为了根据后续的GAP版本使用) 可以包括,例如,当前测试脚本中的从当前测试脚本条目生成的修改 的脚本条目。在查看了以下附图和详细描述后,其他系统、方法、特征和优势 对于本领域的技术人员将显而易见。所有此类附加的系统、方法、特征和优势包括在本描述内、包括在所要求的主题的范围内并且由以下 权利要求书所保护。附图说明参考以下附图和描述可以更好地理解该系统。附图中的元素不需 要按比例绘制,而是将重点放在对系统原理的说明。在附图中,同样 的参考数字表示遍及不同视图中的对应部分。图1示出了测试脚本变换架构。图2示出了该测试脚本变换架构执行的处理的流程图。图3示出了 GUI元素定型(typing )系统。图4示出了 GUI元素类型映射。图5示出了 GUI元素类型映射用户接口。图6示出了 GUI元素定型逻辑的流程图。图7示出了 GUI元素映射系统。图8示出了 GUI元素版本映射。图9示出了 GUI元素版本映射用户接口。图IO示出了 GUI元素版本映射逻辑的流程图。图11示出了 GUI元素定型和映射系统。图12示出了元数据演进工具架构。图13示出了元数据库架构。图14示出了符号消息的示例。图15示出了元数据处理的流程图。图16本文档来自技高网...
【技术保护点】
一种用于测试脚本变换分析的产品,其用于针对从当前图形用户接口应用(GAP)版本产生的后续GAP版本来生成经变换的测试脚本,从而测试所述后续GAP,所述产品包括: 机器可读介质; 差异模型逻辑,其存储在所述机器可读介质上,可用于产 生图形用户接口(GUI)差异模型,所述差异模型针对特定GUI元素捕获从所述当前GAP到所述后续GAP的GUI元素改变;以及 脚本分析逻辑,其存储在所述机器可读介质上,可用于: 接收所述GUI差异模型; 接收用于测试所述当前 GAP的当前测试脚本的当前测试脚本表示,包括测试脚本声明向量; 在对象库中定位与所述测试脚本声明向量相匹配的GUI对象条目; 在所述GUI差异模型中定位与所述GUI对象条目相匹配的GUI元素差异条目; 分析所述GUI元素差 异条目,以确定所述特定GUI元素是否已经改变;以及 当GUI元素分析确定所述GUI元素已经改变时,输出针对所述当前测试脚本的改变说明符。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:M格雷查尼克,谢晴,傅忱,
申请(专利权)人:埃森哲环球服务有限公司,
类型:发明
国别省市:CH[瑞士]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。