GUI(Graphical User Interface,图形用户界面)是计算机软件与用户进行交互的主要方式。GUI 测试是对软件的 GUI 界面进行测试。GUI 的测试对象是图形对象(包括控件)和对象的属性集合。
GUI 测试有以下几个特点: (1)从元素外观的角度测试。 元素外观主要包括:字体、控件或图形大小、形状、色彩。而字体测试是我们需要注意的,特 别是对于本土化国际化的界面测试,需要充分考虑字体的测试,否则很可能出现乱码的现象。 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集(Character Set)是多个字符的集合,种类较多,每个字符集包含的字符个数不同。常见字 符集有:ASCII 字符集、GB2312 字符集、BIG5 字符集、GB18030 字符集、Unicode 字符集等。 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于 罗马字母表的一套计算机编码系统。最初的 ASCII 是 7 位编码的字符集,只能支持 128 个字符, 为了表示更多的欧洲常用字符,对 ASCII 进行了扩展。ASCII 扩展字符集使用 8 位(bits)表示一 个字符,共 256 个字符。
GB2312 又称为GB2312-80字符集,全称为《信息交换用汉字编码字符集-基本集》,由原中 国国家标准总局发布,1981 年 5 月 1 日开始实施。 GB2312 是中国国家标准的简体中文字符集,它所收录的汉字已经覆盖 99.75%的使用频率,基 本满足了汉字的计算机处理需要,在中国大陆和新加坡获广泛使用。 BIG5 又称大五码或五大码,1984 年由中国台湾地区财团法人信息工业策进会和五家软件公司 (即宏碁(Acer)、神通(MiTAC)、佳佳、零壹(Zero One)、大众(FIC))创立,故称大五码。 GB18030 又称为 GB18030-2000,全称为《信息交换用汉字编码字符集基本集的扩充》,是我 国政府于 2000 年 3 月 17 日发布的新的汉字编码国家标准,2001 年 8 月 31 日后在中国市场上发布 的软件必须符合本标准。 Unicode 字符集编码(Universal Multiple-Octet Coded Character Set)(通用多八位编码字符集) 是由一个名为 Unicode 学术学会(Unicode Consortium)的机构制订的字符编码系统,支持现今世 界各种不同语言的书面文本的交换、处理及显示。该编码于 1990 年开始研发,1994 年正式公布, 最新版本是 2005 年 3 月 31 日发布的 Unicode 4.1.0。 (2)从元素页面布局的角度测试。 元素页面布局主要包括元素的布局、元素的位置、元素对齐方法、表格排版、页边距、行间隔、字体、颜色等。 (3)从元素行为的角度测试。 元素行为主要包括焦点获取、提示、提醒、默认值、活动状态、快捷键和帮助等。 焦点获取是指通过什么方法可以获取界面上的元素,一般要关注的测试为通过 Tab 键切换焦 点,焦点切换的顺序是从左到右、从上到下。 提示、提醒是指对界面上的一些选项或操作应该给出相关的提示或提醒。如图 11-2 所示是邮 箱的注册界面,每一项都有相关的提示信息。
默认值也称为缺省值,是指默认情况下各选项的值或状态,如一些下拉列表,系统会有一个默 认值。 活动状态是指图形对象(如按钮、复选框)元素当前的状态,以及在使用过程中状态的变换(如 是否可用、是否选中)。 快捷键又叫快速键或热键,指通过某些特定的按键、按键顺序或按键组合来完成一个操作。测 试快捷键时应该考虑两个方面的测试,一是快捷键预期的功能是否实现;二是当被测试系统的快捷 键与其他软件的快捷键出现冲突时的情况,一般当出现相同的快捷键,光标焦点在某个软件上时, 快捷键即对当前这个软件生效。 帮助是指对某个功能的作用是否给予提示,这是功能易用性的一个表现,现在的软件系统一般 都应该具备该功能,打开“文件”对话框中的帮助功能,如图 11-3 所示。 当前的 GUI 测试存在以下难点: (1)测试用例的预期结果定义复杂。 预期结果是测试用例中最重要的组成部分之一,但 GUI 软件的状态与测试历史有关,软件运 行的结果与软件初始状态、测试历史和当前测试输入都有关系,很难用简单的数据结构来表示,这 样预期结果的描述就变复杂了。
(2)测试用例的数据输入定义复杂。 与预期结果一样,测试用例的数据输入也变复杂了,因为 GUI 软件测试的输入是事件序列, 但这些事件没有固定的顺序,因此 GUI 软件的输入域变得很大。另一方面,GUI 软件的输入受到 GUI 的结构和状态的影响,在其输入域上很多事件的序列是无效的,无法正确地执行或软件无法 响应,如何有效地获得输入条件成为生成 GUI 测试用例的关键。 (3)自动执行测试用例变得更困难。 自动化测试是基于控件识别的,但我们知道 GUI 测试在设计测试用例时,预期输入和预期结 果都变得复杂,导致转换为自动化测试用例变得复杂,并且结果不容易判断,这样就不便于进行自 动化测试。 (4)测试覆盖率。 GUI 软件是事件驱动的,软件接收到事件后,立即调用相应的代码来响应该事件。由于事件 的发生没有固定的顺序,而软件的运行又与测试历史相关,使 GUI 软件的控制流和数据流变得极 其复杂,现有的功能覆盖率准则比较难判断测试的充分性。 (5)用户操作习惯受 GUI 影响。 GUI 软件一般为用户提供了若干快捷键、快捷方式等,而这些界面元素对用户操作习惯产生 重大影响,在软件可靠性分析时就需要重点考虑 GUI 元素对用户操作习惯的影响。