浅谈GUI测试,我的毕业设计
[ 2006-3-23 17:43:00 | By: Ancen ]
作者:陈培雷 Mail:AncenChen@gmail.com
计算机应用的日益普及和人机界面的友好,目前绝大部分应用软件都是基于GUI进行设计开发,所以在产品的测试活动尤其是功能测试活动中,GUI测试将占到非常大的比率,GUI测试质量和效率是整个产品质量提升和成本降低的关键。我们知道大部分软件产品都有必不可少的人机交互界面MMI,而且它的功能也基本上是通过人机交互操作来体现和完成的,所以我们可以说软件产品的GUI测试在整个产品测试中占有非常重要的地位
GUI即Graphics User Interface 图形用户界面,有时也称为WIMP=Window/Icon/Menu/Pointing Device 窗口、图标、菜单、指点设备。
GUI测试,顾名思义及对图形用户界面进行测试。一般来说当一个软件产品完成GUI设计后,它的外观架构和GUI元素基本就确定了。进入开发测试阶段后,软件开发工程师和测试工程师也都要通过对GUI的操作来调测和验证局部的或全局的软件功能
GUI测试我们可以采用手工和自动化的测试方法。当您在开发一个带有较多功能和较复杂界面的软件产品时,是不是会对繁琐的软件功能进行不断重复地回归测试而感到烦恼和疲惫。当我们会对软件的某些GUI重复不断地操作以验证某些功能本身的正确性以及对其他相关功能是否造成错误的影响。相信大家对这个阶段所付出的一切无疑会感到枯燥、厌烦和疲惫不堪。所以对于GUI测试我们一般会使用工具对GUI进行自动化的测试。
GUI的自动化测试可以由简入难的成三种类:
1)纪录回放类:
这一类不需要太多的计划,编程和调试。优点在于简单,方便。缺点在于稳定性差,所以脚本运行寿命短,而且与不同配置的兼容性差。同时由于缺少结果的验证部分,基本上找不到什么Bug。可考虑在产品开发接近尾声时,用于尚未自动化的已知Bug的回归检验。
2)测试用例自动化类:
这一类是指将需要反复测试或在多种配置下重复测试的用例自动化。基本实现过程通常为:
- 设计测试计划
- 设计测试用例
- 针对每一个用例评估自动化的可行性和经济性
- 将决定要自动化的用例作详细步骤分解。
- 编写公用步骤,公用资源库(Logging 和 exception handling 部分是必不可少的)
- 编写自动化程序(别忘了结果的验证部分)
- 调试
- 实际运行
这一类自动化测试最为灵活,也能发现较多的Bug。又能较好的与测试计划相协调。当前多数测试做的比较好的企业都主要使用这种类型的自动化。
3)自动测试类:
这一类是指自动生成测试用例并自动运行。这类自动化测试的最大的优点在于它的无限可能性。另外它通常能发现手工测试极难发现的错误。而且一旦实现了这种自动化,其维护费用实际上是大大低于前两类测试的。不过这类测试自动化的初始投入非常高,而且它的效果受其智能化程度的制约也非常大。除非是专业测试公司或是象微软、IBM这类超大型企业,多半都没有实力来研究这类测试自动化。
不过从长远来说,只要有较好的工具能将这类自动化的初始投入降下来,这类测试自动化才是软件测试发展的必然方向。
这一类测试的基本实现过程通常是:
- 购买或开发基本测试自动化框架
- 编写必要的接口,钩子,及其他公用资源。
- 建立软件、组件、或功能的行为模型
- 设立测试目标等参数
- 自动生成测试用例及测试计划
- 筛选并运行测试用例
在毕业设计使用的自动化测试工具:WinRunner,本来想用Robot,但是哪个Robot的lisence不能用,所以就只能用WinRunner了
GUI测试的测试点:
图形用户界面( GUI )对软件测试提出了有趣的挑战,因为 GUI 开发环境有可复用的构件,开发用户界面更加省时而且更加精确。同时, GUI 的复杂性也增加了,从而加大了设计和执行测试用例的难度。因为现在 GUI 设计和实现有了越来越多的类似,所以也就产生了一系列的测试标准。下列问题可以作为常见 GUI 测试的指南:
窗口:
· 窗口是否基于相关的输入和菜单命令适当地打开?
· 窗口能否改变大小、移动和滚动?
· 窗口中的数据内容能否用鼠标、功能键、方向键和键盘访问?
· 当被覆盖并重新调用后,窗口能否正确地再生?
· 需要时能否使用所有窗口相关的功能?
· 所有窗口相关的功能是可操作的吗?
· 是否有相关的下拉式菜单、工具条、滚动条、对话框、按钮、图标和其他控制可为窗口使用,并适当地显示?
· 显示多个窗口时,窗口的名称是否被适当地表示?
· 活动窗口是否被适当地加亮?
· 如果使用多任务,是否所有的窗口被实时更新?
· 多次或不正确按鼠标是否会导致无法预料的副作用?
· 窗口的声音和颜色提示和窗口的操作顺序是否符合需求?
· 窗口是否正确地被关闭?
下拉式菜单和鼠标操作:
· 菜单条是否显示在合适的语境中?
· 应用程序的菜单条是否显示系统相关的特性(如时钟显示)?
· 下拉式操作能正确工作吗?
· 菜单、调色板和工具条是否工作正确?
· 是否适当地列出了所有的菜单功能和下拉式子功能?
· 是否可以通过鼠标访问所有的菜单功能?
· 文本字体、大小和格式是否正确?
· 是否能够用其他的文本命令激活每个菜单功能?
· 菜单功能是否随当前的窗口操作加亮或变灰?
· 菜单功能是否正确执行?
· 菜单功能的名字是否具有自解释性?
· 菜单项是否有帮助,是否语境相关?
· 在整个交互式语境中,是否可以识别鼠标操作?
· 如果要求多次点击鼠标,是否能够在语境中正确识别?
· 光标、处理指示器和识别指针是否随操作恰当地改变?
数据项:
· 字母数字数据项是否能够正确回显,并输入到系统中?
· 图形模式的数据项(如滚动条)是否正常工作?
· 是否能够识别非法数据?
· 数据输入消息是否可理解?
GUI编写示例:
GUI字段 | 数据库列 | 编辑 | 错误信息 | 错误覆盖 |
活动日期 | ACTIVITY_DATE | not null data >0 | PROJECT1_G_001_A PROJECT1_G_001_B PROJECT1_G_001_C | y y y |
发票日期 | INV_NOTE_DT | not null data >0 | PROJECT1_G_005_A PROJECT1_G_005_B PROJECT1_G_005_C | y y y |
发票号 | INV_NBR | not null | PROJECT1_G_006_A | y |
mfg.代号 | MFG_NBR | not null | PROJECT1_G_007_A | y |
计划编号 | PLN_NBR | not null int >0 | PROJECT1_G_008_A
PROJECT1_G_008_B PROJECT1_G_008_B | y |