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程序集,这些程序集包含自动化元素所需的类。

相关推荐
雯0609~37 分钟前
C#winform:连接mysql,并将数据展示到页面
开发语言·c#
@Crazy Snail37 分钟前
C# 多线程异步--Token
开发语言·c#·token·task
好玩的Matlab(NCEPU)1 小时前
C#+数据库 实现动态权限设置
开发语言·数据库·c#
xcLeigh2 小时前
C# Winform 俄罗斯方块小游戏源码
开发语言·c#
2403_889461683 小时前
智控水利:道品科技农业灌区自动化闸门引领农业灌溉新变革
大数据·网络·人工智能·经验分享·科技·自动化·云计算
Amd7943 小时前
Nuxt.js 应用中的 webpack:done 事件钩子
ui·webpack·编译·nuxt.js·加载·清理·钩子
开心羊咩咩4 小时前
element-ui 中el-calendar 日历插件获取显示的第一天和最后一天【原创】
java·javascript·ui
青龙摄影5 小时前
[自动化]获取每次翻页后的页面 URL
运维·自动化·jquery
!chen5 小时前
自动化立体仓库堆垛机货叉故障处理
运维·自动化
大数据AI人工智能培训专家培训讲师叶梓5 小时前
ECLAIR:利用基础模型实现企业自动化
运维·人工智能·语言模型·自然语言处理·自动化·大模型·多模态