TAO 项目: 一个直观的UI 测试工具集 (一)
如今,几乎所有的商业软件都有一个图形用户界面(GUI)。从用户的角度看,一个直观的功能正确的GUI往往比软件的功能更重要。根据论文“A Comprehensive Framework for Testing Graphical User Interfaces” 的统计显示,GUI通常占总代码量的45% - 60%。测试GUI代码对于软件测试开发工程师而言,既独特又富有挑战。
首先,在软件开发周期中,GUI的改变是绝对的,而稳定则是相对的。在用户进行Beta版本的试用时,他们的反馈往往集中在用户体验即GUI上。而与之相对应的是,开发人员也乐意修改这样的问题因为其开销通常相对可以控制。但是,这给测试组带来了极大的挑战。他们不但要确保最小的回归(REGRESSION)风险,而要承担诸如更新测试用例和自动化等额外的工作[2]。
再则,管理大量的GUI测试用例也是个难题。 GUI上一个貌似简单的改变,会影响到几百个已有的测试用例。根据我们的经验,软件产品的测试用例中,25%甚至更多都是GUI相关的,其中80%的都可以自动化。在软件开发周期中,一个对话框可能会改变多次,其相应的管理成本也随之水涨船高。
最后,传统的测试标准可能不能很好的对GUI测试进行评估。比如: 通常测试经理认为70%以上的代码覆盖率为可以接受的测试结果,然而对于GUI来说,你只要简单通过打开每一个对话框,就可以达到较高的代码覆盖率。由此可见,代码覆盖率和GUI测试覆盖的层次、深度没有直接的关系,还必须采用其他的测试标准。
现在已经有了一些关于GUI测试方面的研究,例如,GUITAR项目。GUITAR利用模式对话框的属性去获得“事件流图”,然后围绕“事件流图”自动生成测试用例。但是,GUITAR可能不适合非模式对话框为主的软件 (比如基于MMC开发的GUI),而且它也缺少系统的途径去管理整个测试过程。
这篇文章介绍了一套GUI测试工具集,我们内部将它命名为“Tao项目”。这是个全面的解决方案,包括用户引导的测试用例和测试自动化生成器、静态二进制分析器、GUI变化跟踪器和综合的报表机制。
接下来,本文将对Tao项目进行简单,下一篇文章将详细描述Tao项目的不同组成部分和流程,以及项目今后的研究工作方向。
Tao项目概述
道可道,非常道。道是一种传统的中国哲学思想, 其精髓乃万物皆有其规律,人类需顺应自然法则以实现游刃有余。根据这种思想,我们设计了这个GUI测试工具组来应对上文中所提到的挑战。图1描绘了通常GUI测试周期中的主要测试活动。
图1 通常GUI测试周期的主要活动
Tao针对这些测试步骤,提供了一个完全解决方案,图2显示了它的主要构成部分。
图2 TAO工具组
TAG (测试用例自动化生成器) :用户引导的测试用例和测试自动化生成器。根据预先定义好的规则和基于知识系统的模型,它能生成测试用例和相应的自动化测试代码。
Visual Tree (可视化树图) :这个树图描绘了GUI的结构,能够形象地显示测试用例报告、自动自动化报告和UI差别变化结果。
Static Binary Analysis (静态二进制分析器) :对于用支持反射(REFLECTION)的编程语言编写的GUI,这个工具会生成静态分析结果。
Automation Framework (自动化框架) :执行测试自动化的底层工具。
UI Diff Tool (UI差别跟踪器) :它能扫描目标GUI的差别,并把这些差别在树图中用图形化的方式显示出来。作为输出的一部分,它会建议用户可能需要更新的相应测试用例和测试自动化。
Bug Filer (Bug 管理器) :是专门发送GUI bug的工具。它把GUI bug根据不同的原因进行分类,这可用作bug趋势分析和质量评估。
王景村(测试经理)、李敏(测试主管)