DevExpress WinForms中文教程 - 如何通过UI测试自动化增强应用可靠性?(一)

DevExpress WinForm拥有180+组件和UI库,能为Windows Forms 平台创建具有影响力的业务解决方案。DevExpress WinForm能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

UI自动化测试利用特定的工具/框架来模拟用户与界面的交互,并帮助确保应用程序满足相关的最终用户需求。当与其他测试方法(API测试、单元测试等)结合使用时,UI自动化可以提高应用程序的稳定性,减少花在手工测试上的时间,当然还可以提高用户满意度。在本文中,我们将向您展示如何使用UI自动化在Visual Studio 2022中编写简单/高级UI测试。

在开始之前,我们先看看UI测试的优势:

  • UI测试以应用程序为目标,允许您测试应用程序流(端到端测试),涵盖应用程序的所有元素,包括UI和业务逻辑(而单元测试侧重于测试应用程序中的单个模块、类或组件)。
  • UI测试有助于识别与导航、数据输入和跨不同屏幕的工作流相关的问题,这些问题可能不会被其他测试捕获。
  • UI测试为测试复杂场景和边缘情况提供了效率和可伸缩性(单元测试对于测试单个代码单元是必不可少的)。请注意,UI测试可能需要更长的时间来执行,因为它们与UI交互,并在应用程序开发管道中稍后运行(单元测试通常更快,并且在提交到存储库之前进行了检查)。

获取DevExpress v23.2.5正式版下载(Q技术交流:909157416)

UI测试自动化是如何工作的?

UI测试不能直接访问真正的应用对象,没有这样的访问,测试如何与UI控件交互?Windows Forms平台允许您通过自动化元素与应用程序交互(Windows Forms平台构建了一个可由外部应用程序查询的自动化树),自动化树中的每个元素都包含有关UI元素的信息,并可用于执行基本操作(例如单击、读取/更改文本、滚动、选择),所有这些都可以通过自动化模式获得。UI测试访问特定的自动化元素,并根据需要与它们交互。

Accessibility Insights 工具允许您检查由特定UI控件构建的自动化树,并查看UI自动化控制模式。

辅助技术也依赖于UI元素的自动化树和结构,在DevExpress WinForm v23.2版本中,我们增强了大多数DevExpress WinForms UI控件的可访问性树,以确保辅助技术可以获得必要的信息,来符合WCAG中概述的可访问性指南。

创建UI自动化测试
1. 配置WinForms应用程序进行测试

要测试的WinForms应用程序("UIAutomationTestingExample")包括以下数据表单:

  • LogInForm - 模拟对授权服务的调用,该服务异步返回用户的登录结果(带有延迟)。
  • CustomersForm -- 包括用于在屏幕上显示客户信息的DevExpress数据网格。"Name"列显示来自数据源的客户名称,"Is Modified"unbind列表示最终用户是否修改了客户信息。

首先,我们将在应用程序启动时启用WindowsFormsSettings.UseUIAutomation设置,来强制DevExpress UI组件使用UI自动化模式并创建一个完整的UI自动化树:

cs 复制代码
using System;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraEditors;

namespace UIAutomationTestingExample {
internal static class Program {
///
/// The main entry point for the application.
///
[STAThread]
static void Main() {
WindowsFormsSettings.UseUIAutomation = DefaultBoolean.True;

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

LogInForm loginForm = new LogInForm();
if (loginForm.ShowDialog() == DialogResult.OK) {
CustomersForm customersForm = new CustomersForm();
Application.Run(customersForm);
}
}
}
}
2. 创建NUnit测试项目

接下来,我们将创建一个包含NUnit测试的项目(TestRunner),并将其添加到解决方案中。

我们将不得不引用UIAutomationClient和UIAutomationTypes程序集,这些程序集包含自动化元素所需的类。

相关推荐
林川~014 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
web守墓人6 小时前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang
He BianGu9 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_04279 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
千里码aicood9 小时前
基于PLC的简易三轴工件搬运平台设计
自动化·plc
惟恋惜11 小时前
第 3 章 · 列表、滚动与 Lazy 深入:告别 RecyclerView 思维
ui·android jetpack
科技研学社11 小时前
自动化缝制升级:支撑产业海外转移,降低建厂用工门槛
人工智能·自动化
懂软件的胡子个哥12 小时前
微信二次开发如何保护接口安全,Token、权限和重放防护都要考虑
微信·自动化·wechatapi·个人微信号二次开发·微信群管理
Htr_14 小时前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop
tang_042715 小时前
【Hi.Ltd 专题】第7期:Threading 采集线程、锁与 LRU 缓存
经验分享·c#·hi.ltd系列