自从Win8应运而生以来,Windows应用商店便立马成为开发者展示的舞台,而这短短的几年里应用的数量就可数以万计,这也不可避免地出现了良莠不齐的局面。我们都知道Visual Studio是目前最流行的Windows平台应用程序的集成开发环境。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,我们也可以使用它来开发Win8应用。另一方面,Visual Studio也可以用来进行软件测试,其自带的模板则更为方便,在Visual Studio Ultimate 2013里新出的Win应用程序UI测试则会帮助我们更加直观地对Win8应用进行测试,这样我们就可以很容易检测出Win8应用的bug。
先来介绍下UI测试的基本知识,通过应用程序的用户界面 (UI) 来操作该应用程序的自动测试称为编码的 UI 测试 (CUIT)。 这些测试包括对 UI 控件的功能测试。 它们使你可以验证整个应用程序(包括其用户界面)是否正常运行。 编码的 UI 测试对于在用户界面中存在验证或其他逻辑(例如在网页中)的情况特别有用。 它们也经常用于自动化现有的手动测试。如下图所示,一种典型的开发体验可能是这样一种情况:最初,你只需建立自己的应用程序(F5),并通过单击 UI 控件来验证一切是否运行正常。 你可能会决定创建一个编码的测试,这样就不需要继续手动测试应用程序。 根据在应用程序中进行测试的特定功能,你可以针对任何一个功能测试或者针对可能会或可能不会包括 UI 级别测试的集成测试编写代码。 如果你只想直接访问某些业务逻辑,则可以编写单元测试代码。 然而,在特定情况下,在应用程序中包括各种 UI 控件的测试将是有益的。 编码的 UI 测试可以自动化初始 (F5) 方案,以便验证代码改动不会影响你的应用程序的功能。
接下来我就详细的介绍如何使用编码的 UI 测试来测试 Windows 应用商店应用:
(1)为 Windows 应用商店应用创建新编码的 UI 测试项目(文件→新建→项目→应用商店应用→Windows应用程序→编码的UI测试(Windows)
(2)选择使用十字线工具编辑UI映射
(3)在编码的 UI 测试生成器中使用十字线工具以选择应用磁贴、右键单击“AutomationId”,然后选择“将值复制到剪贴板”。稍后将剪贴板中的值用于编 写操作以启动可供测试的应用。
(4)在运行的 Windows 应用商店应用中,使用十字线工具以选择按钮控件和文本框控件。 在添加每个控件后,请在编码的 UI 测试生成器工具栏中选择“将控件添加到 UI 控件图”按钮
(5)在编码的UI测试生成器工具栏中选择“生成代码”按钮,然后选择“生成”
来为对 UI 控件图所做的更改创建代码。
(6)使用十字线工具选择文本框控件,然后选择“DisplayTest”属性
(7)添加断言,将在测试中使用它以验证该值是否正确。为断言添加并生成代码。
(8)在“解决方案资源管理器”中,打开 UIMap.Designer.cs 文件,以查看为断言方法和控件添加的代码。
(9)在“解决方案资源管理器”中,打开 CodedUITest1.cs。针对使用已添加UIMap 的控件运行测试所需的操作,将代码添加到CodeUTTestMethod1方法:
(10)运行测试即可
实验分析:
针对Win8的一个计算器应用我们进行如下的测试
- 测试用例和结果:
表1--测试用例
测试编号 |
输入 |
预期输出 |
实际输出 |
是否通过测试 |
1 |
2×3= |
6 |
6 |
是 |
2 |
2√ |
1.414213562373 |
1.414213562373 |
是 |
3 |
4√ |
2 |
4 |
否 |
4 |
3 1/x |
0.333333333333 |
0.333333333333 |
是 |
5 |
5 1/x |
0.2 |
5 |
否 |
6 |
8÷0= |
(显示异常信息) |
正无穷大 |
是 |
7 |
0 1/x |
(显示异常信息) |
0 |
否 |
8 |
-3÷6= |
- 0.5 |
-0.5 |
是 |
9 |
36÷5×= |
(显示异常信息) |
51.84 |
否 |
10 |
3-5×6= |
-27 |
-12 |
否 |
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
2.测试问题报告
表2--问题总结
问题编号 |
用例编号 |
问题描述 |
问题级别 |
1 |
3 |
开平方出错(完全平方数不能开) |
3 |
2 |
5 |
倒数出错(2、4、5、8不能倒) |
3 |
3 |
7 |
除零出错 |
1 |
4 |
9 |
用户非法输入 |
4 |
5 |
10 |
算符优先级出错 |
2 |
(5)结果截图:(分别为测试通过和未通过的截图,其他类似,不再一一罗列)