ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:23.89KB ,
资源ID:19388150      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19388150.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自动化测试原理Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自动化测试原理Word文档下载推荐.docx

1、大部分开源测试工具可免费使用,只要不做商业用途即可。更大的选择余地:可以打破商业测试工具的垄断地位,给测试人员更多的选择空间。可自己改造:源代码开放,意味着可对其进行修改、补充和完善,可对其进行个性化改造。虽然开源测试工具拥有一定的优势,但是,同时也存在很多不足之处,包括以下几方面。安装和部署相对困难:大部分开源测试工具的安装配置过程比较烦琐,需要测试人员付出一定的努力。易用性:开源测试工具在易用性、用户体验方面做得不够完善。稳定性:部分开源测试工具的稳定性不够强。学习和获取技术支持的难度:大部分开源测试工具不提供培训指导和技术支持服务,联机帮助和用户手册不够完善,增加了测试人员的学习难度。3

2、.1.3自主开发测试工具目前,很多软件测试组织其实已经具备了自己动手开发测试工具的条件:市场对于测试工具的接受程度在不断提高,人们对测试工具的认识不断加强和深入,对测试工具原理的理解不断提高。从脚本化到数据驱动,再到关键字驱动等,很多新的测试工具理念被引入并被广泛接受。由于技术的成熟,测试工具变得容易构建。软件系统现在变得更容易测试,可测试性更强,COM、XML、HTTP、HTML等标准化的接口使得测试更加容易进行。托管程序(例如Java、.NET)的反射机制使得查找定位对象,以及捕捉对象和操作对象更加容易。一些开源的框架可以被利用。利用开源框架平台来组合、搭建适合自己测试项目使用的测试平台和

3、测试框架。自己动手开发测试工具的优势有以下方面。购买成本为零。简便:只需要开发自己需要的那部分功能。个性化:可自己定制需要的功能,随时修改,配置项目组成员的使用习惯。可扩展性:可随时增加新的功能。可充分利用项目组熟悉的语言开发,利用自己的技术优势。可使用自己熟悉的脚本语言,不需要使用商业工具提供的厂商脚本语言。然而,虽然自己动手设计和开发测试工具有很多好处,但是必须考虑随之而来的成本问题。自己开发测试工具的成本只是开发时间和人员投入的成本,以及维护的成本。当然,如果把测试工具推广到其他项目组,则也会有学习和培训成本。另外,需要考虑测试工具的实用性,不要做一个大而全的、面面俱到的、很多功能基本上

4、不会被用到的测试工具。3.2自动化测试工具选型为了保证在一个测试团队中成功地应用某款测试工具,尤其是对于大型商业工具的应用,应该首先进行工具的选型,通过分析实际情况,确定选用范围。对选用范围内的几款测试工具进行试用。根据试用的反馈效果决定最终采用哪款测试工具。在大规模使用工具之前,还应该对测试人员进行全面的工具培训。培训后,正式在项目中应用测试工具,制定相应的测试工具使用策略,并把工具融入测试工作中。3.2.1测试工具评估测试工具的选型是成功应用测试工具的第一步,测试工具的选型应该注意以下几点:(1)首先,分析项目的特点,软件系统采用的开发工具、语言、技术、平台等。还要结合测试的类型、测试的要

5、求。(2)同时还要了解目前存在的各种测试工具的情况,包括工具的生产厂家、价格、产品特性、技术支持和售后服务情况,还要了解该工具的市场占有率、使用人群等情况,如果是国外厂商生产的测试工具,最好再了解清楚国内的代理机构的情况等。(3)选型的最后一步是编写选型报告。通过综合分析所有收集回来的材料,横向比较测试工具的优势和劣势。3.2.2测试工具试用在初步选型后,可定出几个满足要求的测试工具,然后进行深入的试用工作,应该尽可能尝试测试工具的所有功能,并且可能的话,要尽量在项目的软件系统中尝试。需要制定一份详细的测试工具的试用计划,因为这可能是一项长时间的、需要谨慎进行的工作,尤其是对于那些商业的测试工

6、具,动辄上百万的购置费用。很多公司由于没有谨慎进行前期的选型和试用工作,导致购买的测试工具不适用,或者使用效果不理想,最后被测试人员扔在角落里。不要仅仅听信测试工具销售人员的介绍就轻易购买,一定要自己组织一次详细的试用活动,确认适合在项目中使用,才能购买。3.2.3自动化测试工具的培训确定了选用的测试工具后,正式在测试项目中使用该测试工具之前,还需要组织相关测试人员进行测试工具的培训。测试工具的培训可包括以下内容。(1)测试工具的总体介绍主要给测试人员讲解测试工具包括哪些主要的功能和特性,可用于哪些方面的测试。(2)测试工具操作方法介绍主要给测试人员讲解测试工具的每一项功能的使用方法、操作步骤

7、、注意事项等方面的内容。一般可由工具厂商派遣的技术支持人员进行,也可由熟悉该工具的测试人员来介绍,例如,负责前期测试工具试用的测试人员。(3)测试工具使用实践,则是结合某个具体的例子给测试人员演示测试工具的使用方法和使用经验等。一般可由负责该测试工具试用的测试人员进行。(4)对测试工具相关的测试理论进行讲解的目的是为了让测试人员了解该测试工具的原理,以及工具所应用的领域的相关理论知识,让测试人员在理论知识的指导下能更好、更恰当、更充分、更正确地使用测试工具。测试工具的培训是成功引入测试工具的关键环节,在正式使用测试工具之前,应该确保测试人员充分掌握测试工具的基本使用方法,避免在使用过程中碰到很

8、多工具操作和使用上的问题,导致测试进度缓慢。3.3自动化测试工具的原理测试工具的优势在于可部分地替代人工的测试过程,能重复不断地执行,能精确判断数值和字符对象。自动化测试工具把测试用例用自动的方式执行,例如,自动地产生数据,自动地打开应用程序,自动地查找控件,自动地输入数据,自动地操作控件,自动地收集测试结果,自动地与预期结果进行比较等。自动化功能测试工具可基于GUI层面进行测试,也可基于代码层面进行测试。只要实现了自动化执行测试用例,自动化地检查测试数据的测试工具,替代人工进行测试步骤的执行,从而验证应用程序是否满足了特定功能的测试工具,都可以称为自动化功能测试工具。3.3.1基于代码层面的

9、功能自动化测试工具基于代码层面的功能自动化测试工具主要是一些单元测试工具,例如JUnit、NUnit、MSTest等,这些工具直接访问被测试的应用程序的代码,对其中的类和函数进行调用,输入各种测试数据,检查函数的返回值,通过比较返回值与期待的值是否一致来判断测试是否通过。图3.2所示的是Visual Studio.NET 2005中的单元测试管理界面。图3.2 Visual Studio.NET 2005中的单元测试管理界面这种类型的工具主要实现了测试代码框架产生的自动化,例如,下面代码是Visual Studio.NET 2005中的单元测试框架MSTest为某个类的方法自动产生的单元测试代

10、码框架:/以下代码由Microsoft Visual Studio 2005生成。/测试所有者应该检查每个测试的有效性。using Microsoft.VisualStudio.TestTools.UnitTesting;using System;using System.Text;using System.Collections.Generic;using AUT;namespace TestProject1/summary/这是AUT.Form1的测试类,旨在包含所有AUT.Form1单元测试/summaryTestClass()public class Form1Testprivate

11、TestContext testContextInstance;/获取或设置测试上下文,上下文提供有关当前测试运行及其功能的信息。/summary public TestContext TestContextgetreturn testContextInstance;settestContextInstance=value;#region附加测试属性/编写测试时,可使用以下附加属性:/使用ClassInitialize在运行类中的第一个测试前先运行代码/ClassInitialize()/public static void MyClassInitialize(TestContext test

12、Context)/使用ClassCleanup在运行完类中的所有测试后再运行代码/ClassCleanup()/public static void MyClassCleanup()/使用TestInitialize在运行每个测试前先运行代码/TestInitialize()/public void MyTestInitialize()/使用TestCleanup在运行完每个测试后运行代码/TestCleanup()/public void MyTestCleanup()#endregion/Add(int,int)的测试DeploymentItem(AUT.exe)TestMethod()p

13、ublic void AddTest()Form1 target=new Form1();TestProject1.AUT_Form1Accessor accessor=new TestProject1.AUT_Form1Accessor(target);int i=0;/TODO:初始化为适当的值int j=0;int expected=0;int actual;actual=accessor.Add(i,j);Assert.AreEqual(expected,actual,AUT.Form1.Add未返回所需的值。);Assert.Inconclusive(验证此测试方法的正确性。在代码框

14、架的背后,单元测试框架负责查找和调用被测试的类和方法,通过代码反射机制可以访问到被测试代码中的所有方法和属性。另外,单元测试框架会提供一系列的Assert类,使用这些Assert类可以简化测试结果检查、判断的工具。在执行单元测试时,单元测试框架负责加载包含测试类的程序集文件,通过查找里面的测试类和测试方法标识来加载测试方法,例如,上面代码中的TestMethod()就是用于标识其中的测试方法。3.3.2基于浏览器和DOM对象模型的功能自动化测试工具另外一种自动化的功能测试工具是基于浏览器和DOM对象模型开发的,例如Selenium、Watir等,这些测试工具直接访问Web浏览器,利用脚本语言操

15、纵浏览器和Web页面中包含的DOM对象,从而达到模拟用户控制浏览导航、页面元素的操纵等效果,并且直接获取DOM对象的属性,从而获得Web页面元素的各种属性,通过这些属性可判断测试步骤的结果是否正确。图3.3所示的是可作为插件嵌入到Mozilla Firefox浏览器中的Selenium IDE的测试界面。图3.3 Selenium IDE的测试界面HTML DOM(Document Object Model)是一个HTML文档的编程接口,它定义了HTML的标准对象集合,并且定义了标准的访问和操纵HTML对象的方式。HTML DOM接口让测试人员可以访问和操纵HTML文档的内容。图3.4所示的界

16、面是使用了一个名为IE DOM Inspector的工具查看到的Web页面中的DOM对象。图3.4 IE DOM Inspector的界面如果熟悉和了解DOM的原理,那么完全可以自己动手编写一个基于浏览器和DOM的Web页面自动化测试工具,例如,下面的C#代码就是一个简单的例子:using System.ComponentModel;using System.Data;using System.Drawing;using System.Windows.Forms;using System.Diagnostics;using System.Threading;/引用Microsoft.mshtm

17、l的HTML接口using mshtml;/引用IE对象using SHDocVw;namespace WebAutomatedTest1public partial class Form1:Formstatic AutoResetEvent documentComplete=new AutoResetEvent(false);public Form1()InitializeComponent();private void button1_Click(object sender,EventArgs e)InternetExplorer ie=null;/启动IE的进程Process p=Pro

18、cess.Start(iexplore.exe,about:blank/等待一段时间,让IE启动Thread.Sleep(3000);if(p=null)MessageBox.Show(不能启动IE!return;SHDocVw.ShellWindows allBrowsers=new SHDocVw.ShellWindows();/附加到IE进程while(i allBrowsers.Count&ie=null)InternetExplorer browser=(InternetExplorer)allBrowsers.Item(i);if(browser.HWND=(int)p.MainW

19、indowHandle)ie=browser;+i;if(ie=null)不能附加到IE!ie.DocumentComplete+=new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete);object nil=new object();ie.Navigate(ref nil,ref nil,ref nil,ref nil);documentComplete.WaitOne();HTMLDocument Doc=(HTMLDocument)ie.Document;HTMLInputElement textB

20、ox=(HTMLInputElement)Doc.getElementById(TextBox1textBox.value=123;HTMLInputElement button=(HTMLInputElement)Doc.getElementById(Button1button.click();/验证,如果Label1的值等于123,则表示测试通过HTMLSpanElement label=(HTMLSpanElement)Doc.getElementById(Label1if(label.innerText=)测试通过!else测试不通过!private static void ie_Do

21、cumentComplete(object pDisp,ref object URL)documentComplete.Set();3.3.3基于GUI对象识别的测试工具原理目前,大部分自动化功能测试工具,尤其是商业的测试工具,都是基于GUI对象识别技术来设计的。基于GUI层面的测试需要与各种界面元素打交道,而且不同的编程语言和开发工具开发的应用程序在界面的表现、事件的响应上都略有不同,因此,设计基于GUI层面的自动化功能测试工具会更为复杂些。Windows的API中封装了很多可用于自动化测试编程的函数,例如FindWindow、GetWindowRect等函数。这些函数可在编程语言或脚本代码

22、中进行调用,从而实现自动化测试编程。例如,下面的C#代码封装了user32.dll中的FindWindow函数,实现查找指定类型和名称的控件的功能:using System.Runtime.InteropServices;namespace LowLevelGUITestpublic class Automation/引入user32.dll中的FindWindow函数DllImport(user32.dll,CharSet=CharSet.Auto)static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

23、/查找控件方法public IntPtr FindControl(string ClassName,string ControlName)/返回控件句柄return FindWindow(ClassName,ControlName);可用下面的C#代码来调用这个封装的函数:Automation automation=new Automation();/查找名为AUT的窗体IntPtr p=automation.FindControl(WindowsForms10.Window.8.app.0.378734 aAUT/判断是否找到控件if(p=IntPtr.Zero)Console.WriteL

24、ine(找不到指定的控件!如果想进一步了解GUI对象识别的原理,可以打开Visual Studio.NET 2005自带的Spy+,如图3.5所示。图3.5 Spy+的界面Spy+中的搜索查找控件功能就是这种对象识别原理的体现。例如,在图3.6所示的界面中,可以看到某个指定的窗口的句柄、标题、类。图3.6 Spy+中的搜索查找控件功能3.3.4反射机制在自动化功能测试工具中的使用在基于GUI对象识别和控制的自动化测试工具中,过去一直依赖于Windows API函数的调用。而随着新的编程语言和平台的出现,涌现了很多新的语言特性,这些语言特性可用于自动化测试工具的设计,例如反射机制就是其中一项技术

25、。程序集包括模块,模块包含类型,类型包含成员。在.NET和Java中,都提供了反射的机制,反射提供了封装程序集、模块和类型的对象,可以通过反射动态地创建类型的实例,将类型绑定到现有对象,或者从现有对象中获取类型,然后调用类型的方法或访问其字段和属性。反射机制可被用在测试中,通过反射来加载被测试程序,获取被测试程序的各种属性,触发被测试程序的各种事件,从而达到自动化测试的目的。例如,下面的C#代码通过反射机制读取程序中textBox1控件的Text属性:/获取控件属性static object GetControlPropertyValue(string controlName,string p

26、ropertyName)if(AUTForm.InvokeRequired)Thread.Sleep(1000);return AUTForm.Invoke(new GetControlPropertyValueHandler(GetControlPropertyValue),new objectcontrolName,propertyName);/获取类型Type t1=AUTForm.GetType();/获取类型中的成员FieldInfo fi=t1.GetField(controlName,BindingFlags.Public|BindingFlags.NonPublic|Bindi

27、ngFlags.Static|BindingFlags.Instance);object ctrl=fi.GetValue(AUTForm);Type t2=ctrl.GetType();/获取成员中的属性PropertyInfo pi=t2.GetProperty(propertyName,BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance);/返回控件属性值return pi.GetValue(ctrl,new object0);delegate object GetControlPropertyValu

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1