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


相关文章
|
30天前
|
敏捷开发 分布式计算 测试技术
深入理解软件测试中的自动化框架选择与优化策略
【2月更文挑战第29天】 在软件开发的生命周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的普及,自动化测试成为确保软件质量和加快产品上市速度的关键手段。本文将探讨在构建自动化测试框架时面临的挑战,分析不同类型自动化框架的特点及其适用场景,并提出一系列优化策略,旨在帮助测试工程师提高测试效率,确保测试结果的准确性。
16 0
|
3天前
|
敏捷开发 监控 前端开发
深入理解自动化测试框架Selenium的架构与实践
【4月更文挑战第16天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快迭代速度的关键手段。Selenium作为一种广泛使用的自动化测试工具,其开源、跨平台的特性使得它成为业界的首选之一。本文旨在剖析Selenium的核心架构,并结合实际案例探讨其在复杂Web应用测试中的高效实践方法。通过详细解读Selenium组件间的交互机制以及如何优化测试脚本,我们希望为读者提供深入理解Selenium并有效运用于日常测试工作的参考。
11 1
|
4天前
|
自然语言处理 测试技术 API
深入理解自动化测试框架Selenium的设计理念与实践
【4月更文挑战第15天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加速迭代的关键手段。Selenium作为一种广泛使用的自动化测试框架,提供了对多种浏览器和平台的支持,极大地促进了Web应用的功能测试。本文旨在剖析Selenium的核心设计理念,探讨其在实际项目中的应用,并指出常见的误区及最佳实践,以期帮助测试工程师更高效地利用Selenium进行测试工作。
|
5天前
|
监控 测试技术 API
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第14天】在软件开发过程中,自动化测试是确保代码质量、减少人工重复劳动的关键步骤。Selenium作为一款广泛使用的自动化测试工具,提供了对多种浏览器和操作系统的支持。本文将探讨Selenium的核心组件及其架构设计,分析其如何通过WebDriver与浏览器交互,以及它如何支持多种编程语言进行脚本编写。同时,我们还将讨论Selenium Grid的作用以及它如何实现并行测试,以缩短测试周期并提高测试效率。
169 58
|
7天前
|
Web App开发 前端开发 Java
框架分析(11)-测试框架
框架分析(11)-测试框架
|
21天前
|
敏捷开发 设计模式 监控
深入理解自动化测试框架的设计原则
在软件开发的复杂多变环境中,自动化测试已成为确保产品质量和加速市场交付的关键步骤。本文将探讨自动化测试框架的设计原则,包括模块化、可扩展性、易用性和可靠性,旨在为软件测试工程师提供构建高效、健壮且易于维护的自动化测试系统的指导。通过分析设计模式的应用,我们将了解如何减少代码冗余,提高测试覆盖率,并适应快速变化的技术要求。
|
22天前
|
前端开发 IDE JavaScript
深入理解自动化测试框架Selenium的设计与实现
本文旨在探讨开源自动化测试框架Selenium的核心设计及其实现机制。通过分析其架构、组件和工作原理,揭示Selenium如何有效地支持跨浏览器、跨平台的自动化Web测试。文中不仅介绍了Selenium的主要功能模块,还详细讨论了其面临的挑战及应对策略,为读者提供了深入了解和使用Selenium的理论基础和实践指导。
|
26天前
|
设计模式 敏捷开发 监控
深入理解与应用软件自动化测试框架
在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将详细探讨自动化测试框架的核心原理、设计模式及其在实际项目中的应用。我们将分析几种流行的自动化测试工具,如Selenium、Appium和JUnit,并讨论它们如何集成以形成强大的测试解决方案。文章还将展示通过自定义框架来满足特定测试需求的实例,以及如何通过持续集成和持续部署(CI/CD)流程优化测试实践。
|
27天前
|
敏捷开发 IDE 测试技术
深入理解自动化测试框架Selenium的设计理念与实践
随着敏捷开发和持续集成的理念深入人心,自动化测试在软件开发周期中扮演着越来越重要的角色。Selenium作为一个广泛使用的自动化测试工具,其设计理念和实践对于提高测试效率和质量具有指导意义。本文将深入探讨Selenium的核心设计原则、架构以及最佳实践,旨在帮助读者构建更稳定、高效的自动化测试系统。
|
27天前
|
jenkins 测试技术 持续交付
深入理解自动化测试框架设计原则与实践
本文旨在探讨自动化测试框架的设计原则及其在实际项目中的应用。通过对自动化测试框架的系统剖析,我们揭示了有效构建和维持测试框架的核心要素,并提供了一套实用的指导方案来帮助读者实现高效、可靠的自动化测试流程。文章不仅聚焦于框架的技术细节,也强调了灵活性、可维护性和可扩展性在设计时的重要性,同时结合实际案例分析,展示了如何在不同测试环境中定制化和优化测试框架。

热门文章

最新文章