当前位置: 首页 > news >正文

如何实现WinApp的UI自动化测试?

WinApp(WindowsAPP)是运行在Windows操作系统上的应用程序,通常会提供一个可视的界面,用于和用户交互。例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome,都属于WinApp。常见的WinApp,其扩展名基本都是*.exe,运行后也都会有一个漂亮、易用的UI界面,本章就详细介绍如何通过脚本实现WinApp的UI自动化测试。

1.1.WinApp测试简介

Windows系统下开发GUI应用程序有很多方式,常见有基于C++的Qt、MFC、WTL、wxWidgets、DirectUI、Htmlayout,基于C#的Winform、WPF,基于Chromium和Node.js的Electron,基于Java的AWT、Swing,基于Pascal的Delphi,基于Go语言的walk,每种技术都有自己的亮点。但对于测试人员来说,都要全面开展测试,为保障产品质量下足功夫,带给用户好的体验。

WinApp测试涉及面非常广,大方向上可以从安装与卸载、升级更新、UI界面、业务功能、性能、交叉事件、兼容性、安全性、硬件环境、异常情况几个方面开展测试。

安装与卸载:验证程序是否可以正确安装、运行、卸载。

升级更新:新版本发布后,存在更新提示,且下载、安装、更新、启动、运行、卸载等功能正常。

UI界面:验证程序界面的布局、风格是否与需求相符,文字、菜单、配色、图片等显示正确,易操作、人性化。

业务功能:验证需求说明书中描述的业务功能模块均以实现,且符合预期。

性能:验证程序的负载能力,对CPU、磁盘、内存、电量等的消耗。

交叉事件:与Windows系统上的其它应用互不影响。例如同时打开被测程序和其它一个程序,两者互不干扰,都可以稳定运行。

兼容性:可以在支持的不同品牌、型号、系统版本上正常运行。

安全性:安全性是非常重要的一项测试,例如用户权限、数据安全、接口安全。

硬件环境:不同硬件环境下验证,例如CPU、磁盘、内存、笔记本电量等对程序的影响。

异常情况:各种异常情况下测试程序,例如磁盘不足、网络不佳等情况。

WinApp的功能测试实质上和测试人员测试Web、移动端APP的功能测试是相同的,都是一种黑盒测试。以需求为准,运用各种测试方法设计测试用例,尽可能地思考、全覆盖用户使用场景,实现测试用例,保障产品质量。

1.2.WinApp自动化测试工具

WinApp自动化测试工具非常多,但不同的项目实现自动化测试有着不同的目的,因此根据自己需求结合自动化测试工具的优缺点,选择合适的工具尤为重要,对后续的自动化脚本开发及维护都大有裨益。下面整理了一些WinApp自动化测试工具,给大家提供参考。

1.AutoIt

AutoIt当前最新版本是v3,是用以编写并生成具有BASIC语言风格的脚本程序的免费软件,它被设计用来在Windows GUI(用户界面)中进行自动操作。使用AutoIt可以模拟鼠标和键盘实现对窗口/控件的操作,是一款非常优秀的Windows GUI自动化测试软件。AutoIt有着诸多优点,例如简单易懂的类BASIC表达式、操作窗口与进程、直接与窗口的"标准控件"交互、脚本可以编译为标准可执行文件、COM支持、直接调用外部DLL和Windows API函数、高精度和易使用的数学运算。AutoIt在设计时就尽可能小,且不用依赖外部DLL文件或添加注册表项目即可独立运行,也可以安全的成为服务运行。脚本可以使用Aut2Exe编译为可独立运行的文件。

2.WinAppDriver

WinAppDriver(Windows Application Driver)是微软的一款客户端自动化测试工具,类似Selenium的UI自动化测试服务工具。支持测试运行在Windows 10或Windows Server 2016以上系统的UWP、WinForms、WPF、Win32程序。WinAppDriver支持Appium,因此使用Appium-Python-Client依赖库可以像测试移动端APP一样,完成Windows桌面程序的自动化脚本的开发。

3.PyWinAuto

PyWinAuto是Python的一个库,用于测试Windows系统上的GUI应用程序,允许发送鼠标和键盘操作到窗口对话框和控件。PyWinAuto提供的API是对Windows标准控件的行为处理,例如指定窗口、鼠标操作、键盘操作、获取窗口或控件属性,使用方便,且对中文也有很好地支持

4.PyAutoGUI

PyAutoGUI是Python的一个第三方库,可对GUI程序实现自动化测试。主要通过控制鼠标和键盘,与其他应用程序交互。PyAutoGUI可以在Windows、macOS和Linux系统上工作,支持Python2和Python3。

5.Coded UI

Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32、Web、WPF等UI自动化测试,是一个非常强大的测试工具。它的原理是获取到Windows窗口上的控件,然后针对控件的部分属性进行获取和对比,模拟对控件点击、双击、右键点击等事件。Coded UI不但支持手动编写,还支持自动录制。

6.UIAutomation

UIAutomation封装了微软的UIAutomation API,支持测试Win32、MFC、WPF、Modern UI(Metro UI)、Qt、Firefox等UI框架程序,它提供许多好用的功能,例如获取窗口对象、窗口属性调整、截图、全局热键注册、剪切板操作和管理员权限提权。是一款非常优秀的自动化测试工具。

最后如果你想学习软件测试和需要软件测试资料

相关文章:

  • SpringBoot当中的Singleton和Prototype详解
  • linux x86 setup_arch代码注释
  • 2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)
  • Linux操作系统( YUM软件仓库技术 )
  • 【数值分析】choleskey分解,matlab实现
  • OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图
  • DS|队列
  • Docker 容器命令总汇
  • 【温故而知新】探讨下对vue的mixin的理解
  • springcloud微服务篇--6.网关Gateway
  • Mybatis 传参的方式
  • 计算机组成原理-总线概述
  • 【数据结构——二叉树】二叉树及其应用2023(头歌习题)【合集】
  • 解决基于VectorGrid的矢量瓦片Y轴偏移的问题
  • 软件有效找不到dll文件,五种可靠的解决dll方法分享
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Git的一些常用操作
  • js中的正则表达式入门
  • Less 日常用法
  • Node + FFmpeg 实现Canvas动画导出视频
  • Redis 懒删除(lazy free)简史
  • spring boot下thymeleaf全局静态变量配置
  • 彻底搞懂浏览器Event-loop
  • 代理模式
  • 浮现式设计
  • 嵌入式文件系统
  • 新手搭建网站的主要流程
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • #define
  • #includecmath
  • #LLM入门|Prompt#3.3_存储_Memory
  • (10)STL算法之搜索(二) 二分查找
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)JAVA中的堆栈
  • (转)用.Net的File控件上传文件的解决方案
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .Net Remoting常用部署结构
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net6Api后台+uniapp导出Excel
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @Autowired自动装配
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [DevOps云实践] 彻底删除AWS云资源
  • [FlareOn5]Ultimate Minesweeper
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [IE9] IE9 beta版下载链接
  • [LeetCode] Merge Two Sorted Lists
  • [Linux_IMX6ULL驱动开发]-基础驱动