使用VS2010的CodedUI来做自己的自动化测试框架

简介:

  代码质量可以通过多种方式来改进,UI自动化测试是较为简单的一种方式。项目组现在由于人手比较少,产品质量并不好,所以这两天考虑在OpenExpressApp加入UI自动化测试提高一下产品质量。我所在公司其实已经有一套较为成熟,自主开发的测试框架,但目前只适用Delphi项目,所以我只能自己考虑一下在.Net下如何进行UI自动化测试了。  

自动化测试的三代框架

  在架构师成长之路-个人学习经验分享(公司研发峰会演讲ppt)的两页ppt中我介绍了一下自动化测试的三代框架,最基本的就是线性测试,主要基于录制回放,但是不利于重用和模块化。

如果代码是开发人员的主要资产,那么测试脚本就是测试人员的主要资产,它一样是需要模块化和可维护的,例如下面对于同一类测试案例,基于上面三代框架就会出现三种不同使用方式。

 

如何使用Code UI

  之前想使用TestApi之类的开源测试框架来做自动化测试,但是写了一个简单例子,发现有时定位控件有些问题,正好升级到VS2010,而VS2010为测试人员增加一个很好的工具,那就是CodeUITest,通过录制回放可以较为简单的进行UI测试,上手也非常的简单。虽然录制简单,但是这种方式是自动化测试的第一代框架(由于我没有深入学习CodeUI功能,如果理解有误,请多指正),当测试案例较多时,自动化测试脚本的维护一定会成为问题,所以我希望能够使用Code UI的功能来实现自动化脚本的编写。

  通过在VS2010中建立一个CodeUI测试工程,录制后查看了一下生成的代码,发现我可以按照类似的方法去封装一些代码。(具体怎么使用VS2010 CodeUI的功能网上已经有很多介绍了,大家可以去google一把)。我当时就冒出一个想法:”我能否建立一个C#项目,使用这些测试类库来构建自己的自动化测试框架,而不需要在VS2010去跑?“

尝试建立独立的测试项目

  立马新建了一个工程,引用了同录制项目中引用的两个测试的dll,按照录制生成的代码编写了一个最简单的运行程序,好奇的等待结果,可惜报错了,幸好只是引用问题,说找不到文件Microsoft.VisualStudio.TestTools.UITest.Playback.dll

  经过搜索,发现它存在于【Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\】下,加入后又跑了几次,发现连续少好几个文件,最终使用到的测试dll文件列表如下图所示:

期间发现了一些空引用的问题,还有编辑WPF DataGrid等有些问题,于是上网查找了一些文章,又经过一些尝试,最终找到了目前问题的解决办法,具体如何编写就不介绍,因为后期我会把这些代码都转为IronRuby脚本,到时再与大家介绍。目前我写的C#测试代码如下:


  
  
app.Run();
  Module orgModule = app.OpenModule(BusinessObjectTitles.Org, BusinessObjectIds.Org);
orgModule.ExecuteCommand(CommandNames.Add);
orgModule.Input(
" 名称 " , " test " );
PopupWindow win
= orgModule.ExecutePopupCommand(CommandNames.LookupSelectAdd, " 选择岗位管理 " );
ListGrid grd
= new ListGrid(win);
grd.GetCellEdit(
2 , 1 ).Text = " aaa " ;
grd.Drag(
0 , 4 );
win.OK();

这段代码运行后就会自动打开OpenExpressApp程序,然后打开【部门管理】模块,执行新增,并点击【选择岗位】按钮,编辑某个单元格,然后执行拖动多选后【确定】

如何方便编写测试案例

  既然可以基于Code UI提供的几个测试dll来编写自己的测试框架,那么我该如何更好的使用它呢?测试框架出来后,主要应用人群是测试人员,所以我希望能够通过一种方便的方式来进行编写。而能想到的最简单方案就是使用动态语言来做脚本引擎,那我该选择什么动态语言呢?IronPython还是IronRuby?

  这两门语言我只是简单了解过,还没有正式使用过,所以对它们以及它们的根源语言(Ruby和Python)我也不怎么太了解,所以从语言好坏角度我也不知道如何选择。但是我们公司的针对Delphi项目的测试框架的客户端使用的是Ruby语言,那我也就选择了Ruby,所以接下拉我就会学习一下IronRuby语言了,到时也会和大家分享一下。

 







 本文转自 jingen_zhou 51CTO博客,原文链接:http://blog.51cto.com/zhoujg/519672,如需转载请自行联系原作者


相关文章
|
4月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
2月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
162 1
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
209 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
3月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
312 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
3月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
420 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
数据采集 人工智能 自然语言处理
Playwright MCP 浏览器自动化框架全面解析
Playwright MCP是微软推出的开源项目,结合Playwright与MCP协议,让AI通过结构化数据直接操作浏览器。告别传统视觉识别,实现高效、精准的网页自动化,广泛应用于测试、爬虫、办公自动化等场景,大幅提升效率与可靠性。
|
3月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
581 0
|
3月前
|
缓存 安全 Linux
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
189 0
|
5月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
6月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架
215 3
Metasploit Pro 4.22.7-2025061201 (Linux, Windows) - 专业渗透测试框架