浅析如何利用Squish实行 GUI自动化测试

1.引言
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的系统操作用户界面。是软件与用户进行交互的主要方式,与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受、操作上更加便捷直观,它极大的方便了非专业用户的使用,使我们从命令行的操作方式解放出来,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。GUI软件测试是指对拥有GUI软件进行的软件测试。GUI的广泛应用为我们的程序操作提供了极大的方便,但是同时也使得GUI软件更复杂、更难以测试。

2.GUI测试难点
(1) GUI测试还没有完备的标准
对于普通的单元测试,我们只需要给目标函数一个输入并检测输出就可以了。例如:对于 Server 端逻辑的测试,我们只需要模拟客户端发起一个 HTTP 的请求就可以了,但是对于GUI的测试尚没有给出完整的定义。
(2) 复杂的GUI程序几乎无法生成完整的测试用例
用户对GUI软件的操作是任意的,而这些操作事件的发生没有固定的顺序,因此GUI软件的输入域变得非常的庞大或者无穷,导致可能无法生成完整的测试用例,这也会使得测试的期望输出也变得很复杂。
(3) 自动化GUI测试困难重重
GUI软件的输入和输出是交替进行的,而且测试输入受到GUI结构和状态的限制、输入域的不确定和事件的庞大,这些特点都会使得自动化GUI测试困难重重,自动测试时需要时刻监视GUI的结构和状态,而且输入域上的很多事件序列是无效的,这会使我们的测试过程无法正确执行或者不会得到软件的积极响应,从而很容易导致测试失败。

3.GUI测试技术
(1) 录制/回放技术
是通过测试人员在对GUI软件进行操作,然后通过专门的脚本语言进行录制,录制的过程中可以对关键点或者关心的事件和数据插入相应的验证点,录制完成后,进行回放操作,在回放的过程中,验证操作事件或者数据是否和期望的一致,从而完成测试。是目前流行的GUI测试方法。
(2) 基于有限状态自动机
有限状态自动机(Finite State Machine,简称FSM)是一种能够描述交互式系统的数学模型。GUI软件作为一种交互式系统,也可以使用FSM进行建模。但这是一个难度和工作量都很大工作。
(3) 基于UML
UML(Unified Modeling Language,统一建模语言)是用来对软件系统进行可视化建模的一种语言。利用UML用例图和活动图来生成GUI测试用例的方法。这类方法使用的前提是具有完善的UML软件设计文档或UML软件规约,具有较大的局限性。
(4) 利用人工智能方法
利用人工智能方法生成测试用例的研究主要是将智能规划方法(Planning)和遗传算法(GeneticAlgorithm)引入GUI测试用例生成。但使用这种方法时需要人工确定每个事件的初始状态和其引起的状态变化,工作量非常大,难以用于大规模GUI软件测试。使用遗传算法对熟练测试人员生成的样本测试用例集进行学习,然后根据学习的结果来生成新的测试用例。这种方法依然需要较高的人工成本,同时其效果受样本集的影响很大。

4.GUI自动化回归测试工具Squish
在创建现代复杂的GUI应用程序的时候,GUI测试是程序开发和QA的一个重要组成部分。随着应用的开发周期越来越短,短时间内通过人工去进行手动的审查GUI缺陷几乎是不可行的。Squish自动化GUI测试工具,以记录的方式快速的生成测试用例,通过测试用例的回放,发现软件产品缺陷通知相关人员及早的修复,从而节省时间、降低成本、提高效率。
Squish支持多种平台,Squish使测试人员应用GUI技术实现应用程序自动化成为可能,测试工程师可以通过Squish自由记录和编写测试使用熟悉的脚本语言来完成测试,拥有其他GUI测试工具无可替代的优点。此外,Squish提供非常紧密的集成与特定GUI技术支持。这给测试人员提供了他们正在测试(数据项,控制,和小部件,等等)的内部原理应用,也导致生产了
非常健壮和稳定的GUI测试。Squish是一个非常开放和灵活的系统,支持简单的集成与常见的测试管理系统和环境。
Squish的功能与优点:
● 智能测试记录和回放,选择非专有的脚本测试语言,以及强大的脚本编辑功能;
●插入验证点,可以验证应用关键点的功能;
●易于使用,基于Eclipse的集成开发环境;
● 测试日志记录和批处理执行,生成灵活的报告格式,自动截取验证失败的图形;
● 高级GUI控件支持和自定义控件;
● 支持交叉工具包;
● 脚本支持访问应用程序内部;
● GUI对象映射;
● 分布式和多个应用测试;
● 测试数据和数据驱动测试;
● 灵活性和可扩展性;

5.Squish自动化GUI测试过程
(1) 测试应用
Squish测试工具主要测试软件的GUI是否能够完成期望的功能。例如测试如下应用,AddressBook是一款经典的桌面应用程序,功能十分简单,但是包含了桌面级应用程序的最基本的特性(文件的打开、关闭、保存以及应用的关闭、最小化和最大化等)。

浅析如何利用Squish实行 GUI自动化测试_第1张图片
(2) 测试目标
AddressBook应用可以通过手动的添加或者删除应用数据,应用程序会保存应用数据,我们要测试在用户添加或者删除应用数据的时候,GUI应用程序是否会像我们所期望的那样,准确无误的添加或者删除数据,在最终的应用数据库中保存添加或者删除记录。
浅析如何利用Squish实行 GUI自动化测试_第2张图片
(3) 录制测试脚本
Squish工具通过录制/回放技术来完成GUI测试,通过Squish启动AddressBook应用程序,在程序中模拟用户操作,添加或者删除数据。测试脚本会自动的记录我们对程序进行的所有操作,在录制过程中Squish还提供了如下功能:
a) 插入验证点。在自动记录的过程中我们可以对感兴趣的组件或者功能点插入对应的验证点,验证组件的数据传递是否准确以及是否调用了期望的方法,访问AUT(ApplicationUnderTest)的API是Squish强大的特性之一,这使得我们的测试变得更加灵活。
b) 创建数据驱动测试。如果用户想在AddressBook中插入大量的特征数据,手动的重复添加无形的增加了测试成本,Squish提供了数据驱动测试,可以将这些数据生成表格,创建数据驱动测试,修改测试脚本,Squish会自动的添加这些测试数据,提高了测试效率。
c) 创建BDD 测试。BDD ( B e h a v i o r - D r i v e nDevelopment)测试是Squish相对灵活的一个功能,它利用Gherkin(一种解释性的脚本)语言,针对某一特定的功能创建出一个特定Scenario,Scenario可以包含完成这一特定功能的多个步骤,在软件开发阶段,开发人员可以参考相应的步骤去开发完成这一功能,在软件测试阶段,测试人员也可以利用这些步骤来编写自己的测试用例,完成软件的GUI测试工作。
浅析如何利用Squish实行 GUI自动化测试_第3张图片

(4) 回放测试
测试脚本录制完成后,包括已经插入相应的验证点或者是数据驱动测试,我们也可以对录制脚本进行手动的修改,添加或者删减某·些测试语句,然后点击脚本回放,在回放过程中,Squish会自动检查验证点。或者自动的执行数据驱动测试,回放完成后生成像对应的测试报告,验证GUI是否符合满足对应的测试需求,从而判断出AddressBook的GUI的功能点是否达到预期。
浅析如何利用Squish实行 GUI自动化测试_第4张图片
6.结论
自动化GUI测试技术是目前保证复杂的GUI程序功能的重要手段之一。随着敏捷开发方法的盛行和产品发布周期的缩短,如何在尽可能短的时间内开发出一个可靠的、完整的GUI程序变得尤为重要,Squish使这一切变得简单可行,它是广受欢迎的跨平台、多技术融合的GUI测试工具,它对现代所有种类的GUI应用进行自动化测试,降低了测试成本、提高了测试效率,极大限度的保证了GUI功能的完备。

更多内容访问:http://www.softtest.cn/

你可能感兴趣的:(软件测试)