使用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,如需转载请自行联系原作者


相关文章
|
1月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
98 8
|
3天前
|
人工智能 运维 Prometheus
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
AIOpsLab 是微软等机构推出的开源框架,支持云服务自动化运维,涵盖故障检测、根本原因分析等完整生命周期。
59 13
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
|
9天前
|
人工智能 编解码 自然语言处理
AGUVIS:指导模型实现 GUI 自动化训练框架,结合视觉-语言模型进行训练,实现跨平台自主 GUI 交互
AGUVIS 是香港大学与 Salesforce 联合推出的纯视觉 GUI 自动化框架,能够在多种平台上实现自主 GUI 交互,结合显式规划和推理,提升复杂数字环境中的导航和交互能力。
43 8
AGUVIS:指导模型实现 GUI 自动化训练框架,结合视觉-语言模型进行训练,实现跨平台自主 GUI 交互
|
19天前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
116 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
7天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
50 15
|
16天前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
147 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
28天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
61 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
安全 Ubuntu Linux
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
46 9
Metasploit Pro 4.22.6-2024111901 (Linux, Windows) - 专业渗透测试框架
|
25天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
57 7
|
1月前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。