WinForm自动化测试工具开发札记(1)

简介:
序言
        一转眼来北京已经四个月了。度过了回龙观没有暖气的冬天,迎来了春天——脑子终于化开了。
        明天搬家,搬到积水潭,这样可以离工作的地方(Sigma大厦)近一些。我以为我能改变自己夜行动物的习惯,看来努力失败了。还是在晚上工作吧,这回到多晚都没事了,不用急着赶城铁,走着都能回家。
        背后那个组的同仁们自己开发了一个WinForm的自动测试工具,挺好玩儿,那么我就自己开发一个吧。业余时间做一做,一是深化对软件测试的理解,二是提高一下自己的编程水平——在技术与艺术上都追求品质。

2006-03-22
        兵马未动,先搞粮食。
        今天先找了些参考资料,然后决定了一下使用什么技术来开发这个大玩具。
         资料:
        [1] MSDN:这个不用多说吧,百科全书。
        [2] Programming Windows 5th Edition:因为要用到Win32编程,这本书是非常好的参考,以前一直没好好看,今天又祭器这面大旗。
        [3] Effective GUI Test Automation: Developing an Automated GUI Testing Tool:Sybex的书,内容不错,就是有点啰嗦,没办法,参考资料少,咱就耐着性子看吧。
         技术:
        就这个软件本身而言,由于是自动控制计算机(主要是用户输入部分),所以应属于Windows底层程序开发。这种底层开发,Win32是正道,但如果用Win32开发,写UI的难度太大了——除非写个命令行程序。另一个选择就是MFC,可惜UI还是不太好写,更要命的是MFC使用C++,C++对XML的支持实在是让俺不敢怎么恭维。为什么要用XML?是啊,自动化测试吗,测试员要录制测试脚本,再执行测试脚本,用XML语言写脚本比较现成哦,我可不想自己再开发一套脚本Tag。C#借.NET的光,对XML天生支持的不赖,而且写起UI来是飞速完成的。可惜哦,架在.NET Framework的高台上,与底层遥遥相望……调底层的API只能使用PInvoke和内存对齐,而且Win32函数里那些怪怪的数据类型怎么转成.NET的类型呢?(头大)
技术
UI
底层
XML
Win32
X
O
X
MFC
X
O
X
C#
O
X
O
        听背后组的MM说,他们是写了一个COM,然后又在C#里写的UI,对此,俺表示怀疑。第一:写COM干吗呢?写一个原生(非托管)DLL不就结了?搞个COM还要安装,麻烦的不行不行的;第二:……还没想好,回头再说。
        根据上表评估,我还是打算选用C#,底层虽然难搞,但不是不能搞。写个引擎,封装在一个DLL程序集里算了。就这么定了,明天开始概要设计了。
        对了,补两句。刚才试了试用Process类和Form类的一些静态方法,看看能不能避开PInvoke,结果发现使用Process的实例属性“主窗体Handle”得到的数值的确与Win32 的FindWindow得到的一样,可惜用Form的FromHandle来处理这个值就得不到主窗体——K~~~,我不生气,不生气……




本文转自 水之真谛 51CTO博客,原文链接:http://blog.51cto.com/liutiemeng/18761,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
13天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
110 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
23天前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
137 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
27天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
149 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
46 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
1月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
2月前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
53 2
|
2月前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
2月前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
201 4