基于WPF的UI自动化测试系统

2020-07-22 09:54邱长云
电脑知识与技术 2020年11期

邱长云

摘要:如今,软件应用范围变得越来越广泛,软件结构也变得更加的复杂。在这种情况下,要确保软件产品的质量,就必须要对软件进行测试。自动化测试因为有着高效率、低成本的优势得到了推广。该文主要针对基于WPF的UI自动化测试系统进行介绍。

关键词:WPF;UI;自动化测试系统

中图分类号:TP311 文献标识码:A

随着计算机技术的迅速发展,软件的应用范围越来越广泛,软件结构也越来越复杂。为了保证软件产品的质量,软件测试特别是自动化测试越来越受到人们的重视。自动化测试的最大优势就是高效率、低成本,但是自动化测试如果没有经过良好设计,不但耗资大,而且后续还有大量的维护工作。而设计良好的自动化测试框架不但维护成本低。而且效率很高。因此对自动化测试框架的研究具有很重要的意义。

目前市面上免费和商业的自动化测试系统对WPF应用程序的支持存在一些难以解决的问题以及使用不方便的问题,比如等待时间难以判断,录制过程不可靠以及操作繁杂,执行过程中性能低等问题。本文试图对其中一些具体问题提出具体的解决方案。

1对比分析

对于支持WPF应用程序的自动化测试系统,我调研了商业收费的QTP和免费的CodedUI这两套UI自动化测试系统,发现它们普遍存在部分控件无法识别,开发和维护用例成本较高等问题,为了解决这些问题,我对现有的基于WPF的自动化测试技术进行研究,结合实际的测试项目,探索出了一套全新的基于WPF的接口UI自动化测试框架的方案设计和实现。

可以看出无论是QTP和Coded UI,在WPF应用程序的自动化测试方面对于一些基础功能都有一定的支持,QTP相对而言走的更远一些。但是两者都存在一些缺陷,QTP存在着一些致命的情况,比如运行过程中不稳定,录制过程中不稳定等;Coded UI存在运行不稳定,发现的问题调试代价高等缺陷。

2功能设計

而我们自主研发一套基于WPF的接口UI自动化测试系统,需要克服它们的缺陷,同时需要具备如下功能:

1)初始化自动化测试环境。

2)生成测试用例,录制参数,添加检查点。

3)调度执行自动化测试用例。

4)实时监测和记录当前自动化测试用例执行情况和整体状态。

5)输出日志,截屏信息,运行结果,清理执行现场缓存文件。

6)设置,包括超时时间,截屏信息输出路径等。

7)测试用例备份和恢复,上传和下载。

3总体架构设计

框架开发语言使用C#,界面使用WPF,数据库选型使用免费的MySql,同时为了提高开发效率,也为了后期能够方便切换数据库,使用了.NET提供的EntityFramework来进行数据库的接口的封装。

这些功能中,“调度执行自动化测试用例”是属于这个系统的最关键的功能。

3.1系统架构

Containee是一个可执行程序进程,CaseTool,Driver,Appl,App2等模块最后最终都在Containee进程内执行。Containee之间的交互可以通过Socket通信来完成。

3.2测试用例管理模块

CaseTool是测试用例管理工具,其中的功能有生成测试用例,添加检查点,设置超时时间,截屏信息输出路径等,测试用例备份和恢复,上传和下载。其中如何生成测试用例是比较重要的功能。这个可以借鉴当前QTP或者CodedUI的实现然后改进。通过分析基于CodedUI录制的用例可以发现,CodedUI记录的是用户每次操作的绝对坐标值,所以可以改进的一个方向是记录对于当前操作控件的相对坐标值。