Visual Studio 2005 新增的测试功能使我们的开发工作更为快捷,代码质量在一定程度上有所提高。想必大家对类的单元测试已经比较熟悉,这里我们来看看它提供的另一项更为有趣的 测试——用户界面自动化测试。事实上这个测试的本质仍是单元测试,单元测试的各种方法在用户界面测试中仍然可用。
我们以一个简单的 Windows Form 应用程序为例(在 Visual Studio 2005 Team System 下演示,其它版本亦可参考)。如图所示,这是一个一元二次方程的求解程序。
在 Visual Studio 2005 中加载这个程序的工程,切换到待测试窗体(Form1)的源代码视图。添加一个用户界面测试最简单的方法是在事件函数声明代码上右击鼠标,在快捷菜单中点 击“Create Unit Tests”。在弹出的对话框中点选待测试的函数(特别是事件函数),确定。当然,手工添加一个单元测试项目也是可以的,但通过快捷菜单自动生成的代码中 包含了一些测试辅助类和对象的声明,使用起来更加方便。
本例中,我们由 btnWorkOut_Click 创建单元测试,自动生成的代码如下:
[DeploymentItem("XandY.exe")] [TestMethod()]
public void btnWorkOut_ClickTest() { Form1 target = new Form1(); MyTestProject.XandY_Form1Accessor accessor = new MyTestProject.XandY_Form1Accessor(target); object sender = null; // TODO: Initialize to an appropriate value EventArgs e = null; // TODO: Initialize to an appropriate value accessor.btnWorkOut_Click(sender, e); Assert.Inconclusive("A method that does not return a value cannot be verified."); }
|
熟悉单元测试的朋友应该明白 [TestMethod()] 属性的含义。在这个测试函数中,target 是待测试窗体的一个实例。sender 和 e 是各个事件函数必备的参数,一般情况下取 null 即可。最重要的是 accessor 对象,它是我们进行用户界面自动化测试的“总代理”。通过它可以访问到待测试窗体的各个方法、属性和控件,并可调用控件已声明的各个事件。由此,我们可以 用 accessor 模拟使用者通过键盘、鼠标对用户界面的各项操作,同时即时获知程序中各个变量的状态。有兴趣的朋友可以读读 XandY_Form1Accessor 类的定义,了解这个“总代理”工作的奥秘。
我们对测试代码进行以下修改,以便对程序运行的正确性进行测试。
[DeploymentItem("XandY.exe")] [TestMethod()]
public void btnWorkOut_ClickTest() { Form1 target = new Form1(); MyTestProject.XandY_Form1Accessor accessor = new MyTestProject.XandY_Form1Accessor(target); object sender = null; // TODO: Initialize to an appropriate value EventArgs e = null; // TODO: Initialize to an appropriate value target.Show(); target.Refresh(); System.Threading.Thread.Sleep(1000); accessor.textBox1.Text = "2"; accessor.textBox2.Text = "4"; accessor.textBox3.Text = "2"; target.Refresh(); System.Threading.Thread.Sleep(1000); accessor.btnWorkOut_Click(sender, e); target.Refresh(); Assert.IsTrue(accessor.d >= 0); Assert.IsNotNull(accessor.xx); Assert.IsNotNull(accessor.xy); Console.WriteLine("X1 = " + accessor.textBox4.Text); Console.WriteLine("X2 = " + accessor.textBox5.Text); System.Threading.Thread.Sleep(1000); target.Close(); }
|
以上代码中,我们通过 target.Show() 呈现窗体,通过 target.Refresh() 可以即时地刷新窗体内容在屏幕的显示,通过 System.Threading.Thread.Sleep(1000) 来延时。这几段代码都不是必需的,加入它们是为了便于程序反应和测试者观察,我们也完全可以在不显示用户界面的情况下更快地运行自动测试。至于用 Assert 来监控变量状态和用 Console 做输出,用过单元测试的朋友都应该了解。
此时,我们运行这个测试,就会在屏幕上先后看到窗体被加载,三个文本框被填入数据,计算结果出现在下面的文本框中,最后窗体被关闭。
再来看看测试结果的输出,符合我们的预期。
Visual Studio 2005 的用户界面自动化测试就是这么简单。对于一般的测试,它使测试人员不必深究应用程序底层的实现。当然,对于本例这样简单的程序,我们用不着这么麻烦的测 试,但是对于用户界面更加复杂的程序,操作上存在更多的组合方式,手工测试的繁琐程度以及查找问题的难度便大大上升了。使用 Visual Studio 2005 提供的自动化测试手段将在很大程度上减轻测试人员的负担。有兴趣的朋友甚至可以在这个基础上进行二次开发,引入自动化测试脚本等专业测试方案,实现通用性 更强的用户界面自动化测试。
分享到:
相关推荐
在当今的软件开发过程中,自动化测试已成为提升效率和质量的关键环节。特别是在图形用户界面(GUI)测试方面,传统的手工测试方法因其重复性、耗时以及易出错等缺陷,逐渐被自动化技术所取代。本书《图形用户界面...
在本章"Python实现Web UI自动化测试实战-Chapter-13"中,我们将深入探讨如何利用Python语言进行Web用户界面(UI)的自动化测试。这一领域对于软件开发来说至关重要,因为它能够有效地提升测试效率,减少手动测试的...
在本章"Python实现Web UI自动化测试实战-Chapter-12"中,我们将深入探讨如何利用Python语言进行高效的Web用户界面(UI)自动化测试。这一领域对于软件开发和测试团队至关重要,因为它能节省大量手动测试的时间,提高...
这可能是自动化测试项目的源代码仓库名称,"auto_ui"可能代表自动化用户界面测试,"master"通常是Git仓库的主分支,包含最新的稳定代码。 综上所述,web版本自动化测试报告是对Web应用进行系统化、自动化的质量验证...
"基于C# UI Automation自动化测试自动化测试示例工程" 是一个使用C#编程语言构建的项目,其核心目标是实现UI(用户界面)自动化测试。UI Automation是.NET Framework提供的一种用于测试Windows应用程序用户界面的...
在本例中,我们关注的是使用Python和Selenium库来实现登录界面的自动化测试。下面将详细阐述这个过程中的关键知识点。 1. Python编程语言:Python是一种高级、解释型、交互式和面向对象的脚本语言,以其简洁明了的...
自动化测试是指通过使用特定的软件工具来执行预设的测试案例,以评估软件产品的功能、性能或其他特性的过程。相比传统的人工测试方法,自动化测试能够显著提高测试效率和一致性,并降低错误率。 #### 三、自动化...
再者,APP UI自动化测试针对移动应用的用户界面,通常使用Appium、UiAutomator或Espresso等工具,能够在真实设备或模拟器上执行操作,测试应用的功能和性能。这部分可能需要对Android或iOS平台的SDK有一定的了解。 ...
本资源“自动化测试练习源代码.zip”提供了一套用于学习和实践自动化测试的源代码,帮助开发者掌握自动化测试的基本概念和技术。下面将详细探讨自动化测试的相关知识点。 1. 自动化测试基础: 自动化测试是使用...
Java UI自动化测试框架是软件开发过程中的重要工具,主要用于提高测试效率,确保应用程序用户界面的稳定性和可靠性。本文将深入探讨基于Java的UI自动化测试框架,包括其核心组件、使用的技术以及如何应用于Android ...
自动化测试技术是现代软件开发过程中不可或缺的一部分,它与传统的人工测试相比,具有显著的优势和特点。本课程“软件自动化测试技术学习”旨在帮助学员理解自动化测试的基本概念,掌握其典型应用,并熟悉常用的测试...
GUI界面自动化测试的主要目标是模拟用户操作以验证软件应用的功能和性能,包括输入数据、操作界面元素以及验证输出结果等。GUI自动化测试可以分为两种核心要素的替代:自动输入和智能判断。自动输入是指使用计算机...
在自动化测试平台中,Python3可以用于编写测试脚本,如使用unittest或pytest框架进行单元测试和集成测试。此外,Python3的requests库可以用于模拟HTTP请求,检验API接口的正确性。 2. Django:Django是Python的一个...
4. 用户界面友好:一个优秀的自动化测试工具应当具有直观的用户界面,方便用户进行脚本编辑、测试计划设置和结果分析。uwsc很可能提供了这样的界面,使得非编程背景的测试人员也能轻松上手。 5. 报告与日志:uwsc...
综上所述,要实现成功的自动化测试,我们需要从多个方面着手:选择合适的测试用例进行自动化、编写稳定可靠的自动化脚本、挑选合适的自动化测试平台等。只有综合考虑这些因素,才能确保自动化测试的有效实施,从而...
UI自动化测试主要关注用户界面(UI)的行为,模拟真实用户与应用程序的交互,验证功能是否按预期工作。在这个领域,通常会使用各种自动化测试工具和技术来实现。 UI自动化测试的目标是快速、准确地执行重复性的测试...