Coded UI 测试自动化框架:从入门到实战的完整指南
自动化 UI 测试是交付高质量应用的关键。Coded UI Test (CUIT) 是集成在 Visual Studio 中的强大工具,让开发者和 QA 工程师无缝协作,为桌面和 Web 应用创建可维护测试。
什么是 Coded UI Test?
Coded UI Test (CUIT) 通过用户界面驱动应用,验证每个 UI 控件行为符合预期。它将手动测试步骤转化为可重复脚本,确保跨构建的一致测试覆盖。
Coded UI Test 关键特性
- Windows 和 Web 应用的完整功能 UI 测试。
- 自动生成 VB.NET 或 C# 代码。
- 与 ALM 故事跟踪深度集成。
- 在持续集成管道中构建、部署和测试。
- 本地、远程和数据驱动测试执行。
- 可扩展架构支持自定义测试逻辑。
- 意图感知录制与弹性回放。
支持技术
CUIT 覆盖广泛 UI 类型:
- Windows 桌面应用(WinForms、WPF)
- Web 服务(SOAP、ASPX 等)
- Windows Phone 应用
- WPF (Windows Presentation Foundation)
- Web 应用(HTML、Silverlight、HTML5)
为什么选择 Coded UI 进行自动化?
- 开发者和测试人员统一语言和工具集。
- 广泛平台支持——Web 和桌面皆备。
- 高级元素识别和同步。
- 回放引擎提供
WaitForControlExist、WaitForReadyLevel等等待工具。 - 通过测试代理远程执行。
- 分层框架支持复杂测试设计。
- 内置 log4net.dll 日志记录提供详细诊断。
- 描述性编程允许基于对象属性自动化。
- 原生 AJAX 控件支持。
创建 Coded UI 测试
三种主要途径:
- 转换现有手动测试录制。
- 从头创建新测试。
- 直接编写测试代码。
CUIT 项目典型文件结构
| 文件 | 内容 | 可编辑 |
|---|---|---|
| UIMap.Designer.cs | UI 映射自动生成代码。 | 否 |
| UIMap.cs | UI 映射自定义修改。 | 是 |
| CodedUITest1.cs | 测试类、方法、断言。 | 是 |
| UIMap.uitest | UI 映射 XML 表示。 | 否 |
例如 UIMap.Designer.cs 包含生成的 UIMap 类,UIMap.cs 存放自定义逻辑。直接修改设计器文件不推荐,因更改可能被覆盖。
执行 Coded UI 测试
CUIT 支持两种主要执行路径:
- 录制并回放测试场景。
- 手工编码测试逻辑。
典型步骤:
- 创建 Coded UI 测试项目。
- 添加新 Coded UI 测试文件。
- 记录期望用户操作。
- 验证 UI 值(如文本框)。
- 查看生成的测试代码。
- 按需添加额外操作和断言。
- 微调测试细节。
- 运行测试并分析结果。
最佳实践
- 优先用 Test Builder 创建测试。
- 避免直接编辑
UIMap.Designer.cs。 - 将测试构建为录制方法序列。
- 每个方法聚焦单个页面或对话框。
- 使用描述性方法名提升清晰度。
- 录制方法动作尽量少于 10 个。
- 让 Test Builder 自动生成断言。
- UI 变更时重新录制受影响部分。
- 直接编码时依赖设计器提供的类以保可靠性。
CUIT 与 Selenium 与 QTP 对比
关键差异:
- Selenium 专注 Web 浏览器,不支持 WPF 或原生 Windows 应用。
- Coded UI 独特支持 Windows Store 和 Phone 应用。
- TestComplete 可测 Windows 应用但需插件。
核心收获
- Coded UI 通过 UI 驱动应用,适合端到端功能测试。
- 支持从 Web 服务到 Windows Phone 应用的广泛技术栈。
- 框架促进开发者和测试人员用单一语言协作。
- 关键项目文件:
UIMap.Designer.cs、UIMap.cs、CodedUITest1.cs、UIMap.uitest。
C语言