如何实现WinApp的UI自动化测试?自动化工具如何选择人?

news2024/11/16 7:52:39

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框架程序,它提供许多好用的功能,例如获取窗口对象、窗口属性调整、截图、全局热键注册、剪切板操作和管理员权限提权。是一款非常优秀的自动化测试工具。

……

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700866.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

遇到客户服务问题,有哪些解决方法?

在当今竞争激烈的商业世界中,客户服务已成为任何成功企业不可或缺的一部分。然而,许多企业仍然难以提供高质量的客户服务。今天,我们简单聊一聊客户服务会遇到哪些问题?怎么解决? 1、客户服务人员培训不足 中小企业在…

12 MFC常用控件(二)

文章目录 滑动条控件初始化滚动条滑动滚动条获取消息 微调控件进度条控件时间控件 滑动条控件 初始化滚动条 CSliderCtrl* sliderCtrl (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);sliderCtrl->SetRange(0,100);//设置范围sliderCtrl->SetPos(50);//当前显示在50//int nPos…

常见的锁策略CAS

目录 一、乐观锁&悲观锁 1.1、悲观锁 1.2、乐观锁 二、重量级锁&轻量级锁 2.1、轻量级锁 2.2、重量级锁 三、自旋锁&挂机等待锁 3.1、自旋锁 3.2、挂起等待锁 四、读写锁&普通互斥锁 4.1、读写锁 4.2、互斥锁 五、公平锁&非公平锁 六、可…

HBase(7):大量数据的计数统计

当HBase中数据量大时,可以使用HBase中提供的MapReduce程序来进行计数统计。语法如下: $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 表名 1 启动YARN集群 启动yarn集群 start-yarn.sh 启动history server mr-jobhistory-da…

计算机视觉:多通道卷积操作

本文重点 前面我们学习了对灰度图的卷积操作(二维图像),本节课程我们学习RGB 彩色图像的卷积操作(三维立体)也就是说现在我们不仅想检测灰度图像的特征,也想检测 RGB 彩色图像的特征。 彩色图片的表示方法 彩色图片通常使用RGB(Red、Green、Blue)三个颜色通道来表示…

【裸机开发】UART 串口通信(一)—— 寄存器解析

目录 一、认识 UART 1、概念 2、帧格式 二、IO 复用为 UART 寄存器解析 1、原理图分析 2、寄存器解析 三、UART 相关寄存器解析 1、UART1_UCR1~4 2、UART1_USR1~2 3、波特率配置 4、UART1_URXD 5、UART1_UTXD 一、认识 UART 1、概念 UART 是一种通用的串行、异步…

web自动化测试如何实现(二)

目录 主流的自动化方案 web自动化测试环境如何搭建 1.安装selenium 🎁更多干货 完整版文档下载方式: 主流的自动化方案 怎么进行选择: 如果有前端开发基础:cypress 如果只打算测试web端:playwright 除此之外&a…

【运维工程师学习】Linux常用命令

Linux常用命令 验证系统版本验证系统类型(32位or64位)验证分区情况验证CPU配置验证内存配置文件操作1、pwd2、cd3、ls 如何像将ll定义为ls -l的别名,这样去设置定义别名文件操作(mkdir、rm、cp、mv)文本编辑&#xff0…

Spring专家课程Day03_SpringMVC概述

文章目录 一、SpringMVC 项目搭建1、SpringMVC 简介2、SpringMVC的核心组件和执行流程3、SpringMVC的项目创建(Idea)3.1 Maven中创建 二、Thymeleaf试图_显示注册试图三、控制器接收表达数据四、接受get请求参数_RequestParm;总结&#xff1a…

2023年网络安全比赛--Web渗透测试国赛篇(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1.获取Apache的版本号作为Flag值(例如:5.2.14)提交; 2.获取Samba服务器的版本号作为Flag值(例如:5.0.22)提交; 3.获取系统的内核版本号作为Flag值(例如:2.6.18)提交 4.网站根…

计算机网络 - 第一章(上)

1.1_1 概念及功能_哔哩哔哩_bilibili1.1_1 概念及功能是王道计算机考研 计算机网络的第2集视频,该合集共计76集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV19E411D78Q?p2&spm_id_frompageDriver&…

提高 pyecharts 生成的网页的加载速度

使用 Pyecharts 生成的可视化作品是 HTML 的形式,需要使用特定的 js 代码。如果生成完全离线可用的文件,文件里会包含大量的 js 代码,文件会过大不利于分享。如果生成没有 js 代码的文件,则默认在 pycharts.org 上加载相应的 js&a…

十一、云尚办公系统-微信公众号

云尚办公系统:微信公众号 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布,并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步!!&…

处理机调度

在多道程序环境下,内存中存在着多个进程,进程的数目往往多于处理机的数目。这就要求系统能按某种算法,动态地将处理机分配给一个处于就绪状态的进程,使之执行。分配处理机的任务是由处理机调度程序完成的。 对于大型系统运行时的…

Vue事件处理@传参

错误写法&#xff1a;将showInfo()函数直接写在vm外面。 <body><div id"root"><h2>欢迎来到{{name}}大学</h2><!--v-on: 当。。。。的时候click 点击事件时候去找showInfo这个函数--><button v-on:click"showInfo">…

图灵学院:用 Explain 查看 SQL 的执行计划

文章目录 一、Explain 概述1.1 Explain 含义及作用1.2 Explain 的基本用法 二、Explain 返回列详解2.1 数据准备2.2 id 列2.3 select_type 列2.3.1 simple2.3.2 primary2.3.3 subquery2.3.4 dependent subquery2.3.5 derived2.3.6 union2.3.7 dependent union2.3.8 union resul…

【保姆级】Redis安装教程(Windows版)

Redis安装教程&#xff08;Windows版&#xff09; 文章目录 Redis安装教程&#xff08;Windows版&#xff09;1.下载安装包2. 安装注意事项3. 注意事项4. 登录Redis客户端5. 停止Redis服务附&#xff1a;详细安装步骤附&#xff1a;RESP&#xff08;Redis桌面管理&#xff09;使…

掌握Tampermonkey,让网页玩出新花样

掌握Tampermonkey&#xff0c;让网页玩出新花样 何为Tampermonkey?Tampermonkey有何神通&#xff1f;操作示例 今天我要向朋友们介绍一个超酷的浏览器插件&#xff0c;Tampermonkey。我把它称之为一根神奇的魔法棒&#xff0c;可以让你对网页的玩法、样式和功能实现自定义。 熟…

windows环境下安装zookeeper

安装 下载地址&#xff1a;Apache Downloads 注意&#xff1a;zookeeper的安装路径不要有中文&#xff0c;建议也不要有空格 文件路径如下&#xff1a; 生成并修改zoo.cfg文件 复制zookeeper的conf目录下的zoo_simple.cfg文件&#xff0c;并重命名为zoo.cfg 修改zoo.cfg文件…

nx.draw报错 ‘_AxesStack‘ object is not callable

文章目录 前言解决办法1、关掉梯子&#xff01;&#xff01;&#xff01;2、更新pip3、更新networkx库和matplotlib库4、再次执行代码画图成功 总结 前言 用Networkx画图时报错&#xff1a; ‘_AxesStack‘ object is not callable。 解决办法 1、关掉梯子&#xff01;&#…