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,如需转载请自行联系原作者
目录
相关文章
|
人工智能 自然语言处理 算法
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
1769 0
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
|
传感器 人工智能 监控
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
604 0
|
12月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
923 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
875 6
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
2300 10
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1732 23
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1443 0