基于.NET平台GUI自动化测试框架的设计

软件测试是保证软件质量的有效手段。目前,在GUI自动化测试中,很多软件体系都采用录制回放技术。这种技术要求测试者通过鼠标和键盘的点击进行工作,脚本记录事件,然后以自动化测试的方式进行回放。记录下来的测试脚本必须经过编辑和调试之后插入验证和检查点。产生的脚本通常是硬编码,需要测试人员对脚本进行编辑以及参数化操作。同时,界面元素属性的任何变化都会影响脚本的运行,有时甚至需要重新录制脚本。

1 .NET中的反射机制

通常,应用程序(包括桌面程序和Web应用)都由一些基本的界面控件组成,所有的软件指令都是通过控件以事件或消息的形式传递给后台处理。GUI自动化测试的本质是对GUI中的控件元素提供编程手段[2]。在基于GUI对象识别和控制的自动化测试工具中,过去一直依赖于Windows API函数的调用。而随着新的编程语言和平台的出现,涌现了很多新的语言特性,这些语言特性可用于自动化测试工具的设计,例如反射机制就是其中一项技术。

反射(Reflection)是.NET中的重要机制,通过反射可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件及构造函数等,还可以获得每个成员的名称、限定符和参数等。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。程序集包含模块,而模块包含类型,类型又包含成员,反射则提供了封装程序集、模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型,然后调用类型的方法或访问其字段和属性[3]。

2 框架的整体设计

自动化测试框架的搭建基本上占了整个自动化测试工作量的40%,是自动化测试实施的一个重要组成部分。软件自动化框架从本质看是一系列的策略思想、规范文件和代码的集合。本文提出一种改进的轻量级的GUI自动化测试框架,该框架可以帮助用户避免当前测试工具出现的缺陷。此框架将具备以下五个特性:GUI控件自动搜索、自动生成和执行测试脚本、基于数据驱动的原则、测试的自动验证、使用编程语言开发。框架的整体设计如图1所示。从图1可以看出,该框架让测试人员从繁重的录制工作中解放出来,将更多的时间和精力集中在测试用例的设计中。

3 框架具体开发

3.1 加载被测试程序

为了测试GUI应用程序,必须在测试工具中运行被测程序使两个程序交互。使用Assembly定义和加载程序集,加载在程序集清单中列出模块,并从此程序集中查找类型,创建该类型的实例。为了使这两个应用程序实现交互,必须通过多线程机制实现。下面是通过反射加载被测程序的核心代码[4]:

Assembly asm=Assembly.LoadFrom(path);
    Type t1=asm.GetType(formName);
    testForm=(Form)asmCreateInstance(t1.FullName);
    ParameterizedThreadStart pt=new ParameterizedThreadStart(AppRun);
    Thread thread=new Thread(pt);
    thread.Start(testForm);
    private void AppRun(Form theForm)
    {
       Application.Run(theForm);
    }

 

作者:段 莹 郭利刚   来源:21IC电子网
微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“YD5GAI”免费领取《中国移动:5G网络AI应用典型场景技术解决方案白皮书
  • 2、回复“5G6G”免费领取《5G_6G毫米波测试技术白皮书-2022_03-21
  • 3、回复“YD6G”免费领取《中国移动:6G至简无线接入网白皮书
  • 4、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 5、回复“ZGDX”免费领取《中国电信5GNTN技术白皮书
  • 6、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 7、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 8、回复“5GX3”免费领取《R1623501-g605G的系统架构1
  • 本周热点本月热点

     

      最热通信招聘

      最新招聘信息

    最新技术文章

    最新论坛贴子