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 元素对用户操作习惯的影响。