《2022年多种自动化测试学习 .pdf》由会员分享,可在线阅读,更多相关《2022年多种自动化测试学习 .pdf(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1. 一种高效的应用程序脚本语言 API 自动化测试方法引言应用程序往往提供了可扩展的脚本环境,如在Lotus Notes 和 Microsoft Office 等中所提供的LotusScript 、Visual Basic for Applications(VBA) 等,用户可基于这些脚本环境对应用进行二次开发和功能扩展。对脚本语言VBA 的支持是IBM Lotus Symphony 的一个新的重要功能,用户可以基于IBM Lotus Symphony 开发自己的应用程序。然而,应用程序能进行扩展的基础是脚本环境提供大量的脚本语言API , 而如何对这种脚本语言的API 进行自动化测试是一个
2、值得探讨的问题。通常进行自动化测试一般需要借助测试工具,比如对有图形界面的产品进行自动化测试往往采用Rational Functional Tester (RFT )等自动化测试工具。 如果直接使用RFT 对应用程序脚本语言API 进行自动化测试, 需要维护大量的RFT 脚本,因此本文将介绍一种高效的应用程序脚本语言进行API 自动测试的新方法。本文首先对API 测试进行了分析,然后给出了自动测试脚本语言API 的思路和方法,接着对本文中介绍的方法进行了详细阐述和分析,最后本文还将介绍结合使用RFT 对应用程序脚本语言进行API 自动测试的方法,从而进一步提高了测试效率。上文提到IBM Lot
3、us Symphony 对 VBA 的支持是IBM Lotus Symphony 一个重要功能,包含了上千个API 需要支持,使用本文介绍的测试方法,极大的节省了开发和维护脚本的时间,提高了测试效率。1 问题分析对 API 测试是一个常见的话题。根据API 的执行效果, 可以把API 分为两类 (1)有界面User Interface(UI)效果的API(2)无界面效果的API。因此对API 进行测试,从实现的角度来看,有两种方法(1)验证图形界面的效果(2)验证返回值。如图1 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
4、- 名师精心整理 - - - - - - - 第 1 页,共 30 页 - - - - - - - - - 图 1. API 分类脚本语言有和高级语言(如Java ,C+ 等)相比有其自身的特点,脚本语言如Visual Basic for Applications(VBA), Star Basic, LotusScript. 等之类的语言一般和某个应用程序结合在一起使用。VBA 在Mircosoft Office 中使用,一个Excel 文件中包含VBA 代码,如图2 所示。图 2. VBA 代码结构LotusScript. 在 Lotus Notes 等 Lotus 产品中使用,如NSF 文
5、件中包含LotusScript. 代码等。脚本语言同高级语言相比,必须依附于应用文件而存在,用户可以比较方便的基于某个产品进行扩展和定制开发自己的所喜欢的应用程序。然而如何对脚本语言形式的API 进行自动化测试探讨较少。通常,对有界面操作的功能测试进行自动化一般使用Rational Functional Tester(RFT ) 等测试工具; 对高级语言 (如 Java)形式的API 等使用JUnit 等进行测试; 对脚本语言的API,很难做到像高级语言那样方便的操作和控制。2 解决思路名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
6、 - 名师精心整理 - - - - - - - 第 2 页,共 30 页 - - - - - - - - - 如果按照RFT 测试普通GUI 的思路对含有脚本语言形式的API 进行自动化测试, 通常需要对包含这些API 的测试文件进行验证,即把测试文件作为需要测试的应用程序对待。也就说是使用RFT 对脚本语言形式的API 进行测试需要:(1)创建使用测试对象API 的测试文件( 2)使用RFT 编写测试脚本对测试文件进行验证。这样对一个脚本语言形式的API 进行自动化测试需要维护(1)包含测试对象的测试文件( 2)需要维护RFT 测试脚本,一旦被测的API 有变动,需要很大的精力进行维护。按照
7、问题分析一节中图1 的分类方法, API 可以分为2 类,对于第1 类 API ,需要验证图形界面效果的,如果进行自动化测试则需要使用RFT 等测试工具对GUI 进行验证。而第2 类 API,只需要验证返回值,不需要验证界面效果,不必使用RFT 等测试工具进行辅助。因此本文借鉴RFT 和 Junit 进行自动化测试的思想,使用RFT 对对第2 类不需要验证界面效果的API 进行自动测试。从实现的角度来看测试工程,一般包括:(1)测试工程的组织结构对于测试工程的组织,使用RFT 对 GUI 进行自动化测试有成熟的解决方案,工程组织一般采用分层的结构,AppObjects 层(驱动应用程序的Obj
8、ects ), Task 层(完成常见操作),测试脚本层(测试用例脚本)。使用Junit 等进行自动化测试时,也往往会对测试工程进行设计或分层的结构,不同的层负责完成不同的功能,从而达到易于维护的目的。(2)测试文件的组织测试文件,也就是测试脚本,是对测试用例的实现。为了方便的组织和使用测试脚本,Junit 中的每个测试方法都使用test 为前缀来命名,RFT 中使用testMain 作为执行测试脚本的入口。(3)验证点的比较自动化测试的一个核心就是对验证点的处理,只有能自动处理验证点,才能进行自动化测试,无论普通的功能测试还是对API 进行测试都不例外。 功能测试验证点的处理往往是通过其控件
9、状态,对话框标题等进行验证;对API 进行测试,可以通过其返回值,或者借助其它API 返回结果来进行验证。在JUnit 中对验证点使用assertEquals, assertNoNull 等方法对验证点进行处理,自动返回测试结果。(4)测试结果生成通常根据验证点的结果,生成测试结果。(5)测试的执行对测试脚本进行连续自动执行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 30 页 - - - - - - - - - 因此,对应用程序脚本语言的API 进行自动化测试, 也
10、可以采用上文介绍的方法进行组织和执行。下文将一一进行详细阐述。3 测试工程的组织结构VBA 之类的脚本语言不能像Java 、C+ 等高级语言单独存在,它们往往和其应用文件一起存在,如一个Excel 文件可能包含VBA 代码( ALT+F11 可以看到其代码)。因此对此类脚本语言的API 进行测试,首先需要创建相应的应用程序文件来使用这些API ,如创建一个Excel 文件。如对VBA 中的API :Worksheets.Count 进行测试,需要在test.xls 中使用方法Worksheets.Count,因此测试要测试API :Worksheets.Count 就必须创建一个Excel 文
11、件。如图3 所示。图 3. VBA API 存在的Excel 文件虽然脚本语言不能像高级语言那样方便的在一个工程中通过分层等对代码工程进行优化,但我们仍然可以借鉴上文第2 节测试工程组织结构提到的RFT 组织测试文件的思想,尽可能的对代码复用。而从功能的视角来看,测试工程或者测试工具一般需要具有以下功能(1)编写测试脚本,用于实现测试用例(2)对验证点进行处理的功能,用于实现对验证点的比较,判断验证点Fail 或者 Pass(3) 执行过程中的Log 的处理功能,用于对执行过程中结果写文件日志等(4)错误处理功能,用于执行过程中发生的错误进行恢复和处理。名师资料总结 - - -精品资料欢迎下载
12、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 30 页 - - - - - - - - - 因此对上文中提到每一个功能使用一个模块(Module )来完成。除了每个测试用例必须要和测试文件一起之外,其它的部分可以和测试用例分离,做成加载宏来供测试用例调用。4 测试脚本对于每个测试脚本来说,本文结合JUnit 和 RFT 组织测试脚本的方法, (1) 对每个测试方法使用test 为前缀名,方便组织和阅读 (2) 使用 testMain 作为执行入口, 调用测试方法。 如对方法Worksheets.Count、W
13、orksheet.Name 进行测试,我们按下列结构进行组织。清单1. 对方法Worksheets.Count、Worksheet.Name 进行测试Sub testMain() testWorksheetsCount testWorksheetName End Sub Sub testWorksheetsCount() ,. /Test Script.End Sub Sub testWorksheetName() ,./Test script.End Sub 5 验证点的比较不存在VBA 语言的类似JUnit 的测试API 的工具。 根据上文第2 节中阐述的思想, 可以自己编写相应的验证点比
14、较方法。只需要函数返回的真实值和期望值进行比较就可以得到验证点的测试结果,即和真实值和期望值相等,这验证点通过,反之则验证点失败。为了使结果更有可读性,我们可以提供验证点的描述信息。例如验证方法:assertEquals ,需要传入期望值,真实值,描述信息,同时把比较结果直接写入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 30 页 - - - - - - - - - 文本文件。测试用例脚本中,在验证点处可以调用此方法对验证点进行判断,自动生成测试结果。脚本如下所示:清
15、单2. 在验证点处可以调用此方法对验证点进行判断,自动生成测试结果Sub assertEquals(realValue As Variant, expectValue As Variant, testDescription As String) Dim vpResult As Boolean vpResult = TestAreEqual(realValue, expectValue) Dim testMsg As String testMsg = -VP Start- + Chr(13) + Chr(10) If vpResult = True Then testMsg = testMsg
16、+ VP:Result=Pass + Chr(13) + Chr(10) Else testMsg = testMsg + VP:Result=Fail + Chr(13) + Chr(10) Test_Result = False End If testMsg = testMsg + VP:Desciption= + testDescription + Chr(13) + Chr(10) testMsg = testMsg + VP:RealValue= + CStr(realValue) + Chr(13) + Chr(10) testMsg = testMsg + VP:ExpectVa
17、lue= + CStr(expectValue) + Chr(13) + Chr(10) testMsg = testMsg + -VP End- + Chr(13) + Chr(10) If TESTLOG_VERBOSE Then TestLog_ITEM testMsg End If 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 30 页 - - - - - - - - - End Sub 6 Log 文件处理的方法测试的过程中往往会有异常发生或验证点失败,为了测
18、试执行结束后对异常或者测试失败情况进行分析,需要把测试执行过程的信息进行记录,因此需要有Log 处理机制。我们把测试执行中步骤信息,测试说明, 测试结果等写入文本文件。为了有可读性, 同时方便分析Log 文件生成更易读的报告文件,需要对Log 文件的内容和格式进行定义。生成的Log 文件包括以下部分:(1)开始执行时间(2)验证点信息,包括验证点描述信息、验证点期望值、真实值、验证点的结果(3) 执行结束时间 (4) 整个测试用例的执行结果。每个测试用例生成一个Log 文件,使用测试文件名来对Log 文件来命名。我们使用以下格式:-VP Start- VP:Result=Pass or Fai
19、l VP:Desciption=The verification point description information. VP:RealValue=The real value of test object VP:ExpectValue=The expect value of test object. -VP End- 7 错误处理机制测试执行过程中必然会遇到错误发生,为了使测试能够连续的执行,不会因为一个错误而中断了整个测试的执行过程, 同时方便测试执行结束后分析错误原因,需要对运行时的错误进行处理。从测试的观点来看,测试用例是用来测试被测对象,测试脚本只需要严格按照测试用例中的步骤来
20、编写。如果对测试脚本加了容错方法,则成为测试“ 测试脚本 ” ,因此不应在每个测试脚本中加容错处理。我们只需要在testMain 方法中加上容错处理,来捕获运行时的错误, 运行时的错误描述信息写入Log 文件。代码片段如下:清单3. 将运行时的错误描述信息写入Log 文件名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 30 页 - - - - - - - - - Sub testMain ()On Error GoTo ErrorProcess testMothed1()
21、 testMothed2() . Exit Sub ErrorProcess: TestLog_Error (Err.Description) Resume.Next end sub 8 连续的执行测试上文中我们提到一个或多个API 存在一个测试文件中,也就是一个测试脚本存在于一个测试文件中。它不像 JUnit 等所有测试脚本都在一个工程中,而且有TestSuite 机制可以方便的连续执行需要的测试脚本。RFT 运行测试脚本时,会自动运行testMain 方法,且脚本都在一个Java 工程中,可以方便的连续执行所有的测试脚本。上文中介绍到本文测试脚本的组织结构,每个测试脚本都存在testMai
22、n 方法中,因此我们只需要运行测试文件,调用testMain 方法既可脚本以运行测试脚本。我们借鉴这种运行测试脚本的机制,只要可以连续处理测试文件,测试脚本就可以被连续的执行。我们使用VBA 语言来操作测试文件,连续执行测试脚本。也可以使用其它高级语言来操作测试文件,启动测试脚本。考虑到Symphony 项目中对 VBA 只是部分支持, 我们使用Java 去操作测试文件, 执行测试脚本, Symphony Toolkit 中存在相应 Java API 可以读取和操作测试文件。图4 所示其流程图:(1)读取测试文件列表(2)逐个打开测试文件( 3)调用测试脚本。对于其它脚本语言也可以根据此思想通
23、过其它方法进行操作。如使用RFT 打开测试文件,模拟用户去调用测试脚本等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 30 页 - - - - - - - - - 图 4. 连续执行测试脚本流程图9 TestSuite 的生成在 Symphony 项目中我们使用基于Domino 和 Lotus Notes 的 TestCase Database 对测试用例和测试执行进行 管理 。测试存在不同的测试阶段如FVT,SVT ,即使是一个测试阶段如FVT 又可以分为FVT F
24、ist Pass ,Regression Test 等,并且需要在不同的操作系统上进行测试,需要执行不同的测试用例集合。每个测试用例中包含了所需要的测试文件(Excel 文件),测试对象(被测API 列表)等。一个测试用例可以在多个测试Cycle 中执行,而每个测试执行文档记录都有一个唯一的URL ,因此我们可以根据测试需要,生成由URL ,测试文件名组成的TestSuite 文件。从而根据TestSuite 来执行需要被执行的测试脚本。我们使用Java 代码去操作TestCase Database 生成 TestSuite 。其核心代码片段如下:清单4. 使用Java 代码去操作TestCa
25、se Database 生成TestSuiteNotesThread.sinitThread(); / 初始化连接 Notes DB 线程Session session = NotesFactory.createSession( (String)null, (String)null, password);/ 获取连接 Notes DB 的 Seession Database database = session.getDatabase(host, nsf, false);/ 获取TestCase Database 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
26、 - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 30 页 - - - - - - - - - DocumentCollection dc = database.search(ExecCycleID= + + cycle + ); / 根据 Cycle 获取测试记录集合Document doc = dc.getFirstDocument(); / 把测试集合中的测试记录关键信息写入 TestSuite while (doc != null) suiteFileWriter.write(-DexecutionURL= + doc.getURL() + +
27、 tcID+ rn); doc = dc.getNextDocument(); 10 测试结果写TestCase DB为了对测试执行过程进行管理,执行完测试脚本,需要把测试结果写入到TestCase DB ,达到对测试过程的追踪和记。 一次测试过程往往需要对上千个API 进测试,也就会有上千个执行记录,如果根据执行结果,手工去标记执行结果的状态会浪费大量时间,而且容易出错。从上文中可以看出,对每个测试脚本我们都会生成Log 文件,Log 文件中包含测试脚本的执行结果和Test CaseID ,TestSuite 中含有可以唯一标识测试记录的URL 和 TestCase ID ,因此可以通过分析
28、Log 文件和TestSuite 文件,把测试结果批处理写入到Test Case Db 中。核心代码片段:清单5. 把测试结果批处理写入到Test Case Db 中NotesThread.sinitThread(); / 初始化连接 Notes DB 线程Session s = NotesFactory.createSession(String)null, (String)null, password); Database database = s.getDatabase(host, nsf, false);/ 获取 TestCase DataBase Document doc = db.g
29、etDocumentByUNID(getDocUNID(URL);/ 获取测试记录文档名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 30 页 - - - - - - - - - . doc.replaceItemValue(ExecCountPassed, new Integer(doc.getItemValueInteger(ExecCountPassed) + 1);/ 写入测试用例执行结果doc.replaceItemValue(ExecDateLast, ne
30、w Date().toString();/ 写入执行时间doc.save(); . 11 测试报告的生成上文中介绍到执行每个测试脚本后都会生成一个Log 文件。对整个测试来说,我们需要有一个概要的测试报告, 而不是去查看所有Log 结果文件。 我们只需要分析Log 文件和TestSuite 文件, 生成一个可读的测试包括, Symphony 项目中我们采用XSL 定义生成一个HTML 文件。对于XSL 本文中不进行介绍。12 使用 RFT 自动进行测试本节将介绍结合RFT 对脚步语言进行自动测试在IBM Lotus Symphony 中的实践。上文第8 节中提到了连续的执行的方法,因此我们只需
31、使用RFT 在 IBM Lotus Symphony 中连续打开包含需要测试的脚本API 的文件,并点击一个CommandButton,使脚本进行执行,其它的验证点处理等则由脚本语言自己处理。因此只需要编写一个通用的根据文件名,打开文件,并点击CommandButton 的 RFT 脚本,不需要对每个测试文件编写一个RFT 脚本。处理完所有的测试文件,则生成测试结果,并写入测试用例数据库TCDB 。如图5 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 30 页
32、- - - - - - - - - 图 5. RFT 自动执行测试流程图所用的RFT 脚本核心代码如下:清单5. RFT 脚本public void testMain(Object args) String fileName = ; if (args != null & args.length != 1) return; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 30 页 - - - - - - - - - fileName = (String) arg
33、s0; try / 打开测试文件 CommonTask.openFile(sample/Macro/ + fileName); /Sheet1 上的 StarMacro 按钮,根据类型 ID 进行查找 VclButton btn = new VclButton(.find:58818 326 0); / 触发调用脚本语言 API btn.click(); / 释放资源,关闭这个测试文件 CommonTask.discardAll(); catch (Throwable t) / 异常处理 / 处理 VBA 脚本生成的 Log 文本文件,放到 Log 目录下 File logDir = new
34、File(VBAConstant.OUT_DIR); if(!logDir.exists() logDir.mkdirs(); File newLoc = new File(VBAConstant.OUT_DIR, fileName.substring(0, fileName.lastIndexOf(.xls) + .log); boolean ret = VBAUtil.copyFile(logFile, newLoc); / 根据 Log 文件,分析脚本 API 执行结果boolean result = false; String excResult = VbaLogProcessor.a
35、nalyzeLog(logFile); if (excResult.equals(VbaLogProcessor.TEST_PASS) result = true; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 30 页 - - - - - - - - - else if (excResult.equals(VbaLogProcessor.TEST_FAIL) result = false; else Logger.error(Error Occured); Veri
36、fy.verifyTrue(tcid + result:, result); 根据上文的描述和以上代码,只需要使用RFT 根据文件路径和名称在IBM Lotus Symphony 中打开一个Excel 测试文件, 并点击Sheet1 中的 CommandButton: StartMacro 就可以VBA 脚本运行。如图6 所示图 6. Symphoy 中打开脚本文件StartMacro 触发的VBA 脚本代码如下所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 30
37、 页 - - - - - - - - - 清单6. StartMacro 触发的VBA 脚本代码Sub Main() On Error GoTo ErrorProcess TestMain Exit Sub ErrorProcess: TestLogMacros.TestLog_Error (Err.Description) End Sub Sub TestMain() Dim testCaseID As String TestLogMacros.TestLog_ASSERTSetVerbose (True) TestLogMacros.TestLog_Start UserForm1.Show
38、 0 testCount TestLogMacros.TestLog_End End Sub Sub testCount() TestLog_Verify ThisWorkbook.Worksheets.Count, 4, _ Test WorkSheets.Count could work correctly End Sub 回页首名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 30 页 - - - - - - - - - 总结使用本文中介绍的方法,可以方便的对脚本语
39、言API 进行自动化测试。 不仅节省了脚本维护的时间,也大大节省了对测试进行管理和执行的时间。使用本文的方法可以极大的提高对应用程序脚本语言API 的测试效率。2. 界面自动化测试总结进公司快三个月了,现在在IPTV 海外版解决方案的项目中,主要从事自动化测试。开始的一个月里我大部分时间是在看文档,由于华为的业务问题,我换了两个组,每次换组的时候,就要看对应的业务方面的文档,通过这个段时间看文档,对IPTV 的业务方面有了一个总体的了解,对我我现在的做的自动化有很大的帮助。在做自动化测试这段时间里,学到了很多。以前在学校了喜欢遇到问题时自己去解决问题,有时候会花很久的时间去弄明白一个问题,但现
40、在遇到问题,首先会认真的思考, 在短时间内解决不了的,就会带着自己思考后的想法,去请教别人自己的疑问,让别人解决,因为一个人的效率影响了整个项目的进度。下面是我做页面自动化测试的一些心得和大家分享1. 业务熟悉程度对自动化的影响。做自动化测试, 首先要对自己所做的业务要熟悉,编写自动化用例时才能够清楚下一步应该干嘛。如果不清楚业务的情况下做的会比较慢,一旦写错了,用例等于白写了。2、自动化安装需要注意的。首先,是第一次安装的话,要严格按照华为给出的安装步骤来进行安装,不然会出错。如果是以前安装过,需要卸载掉所有的关于TMSS 的东西,在清除注册表中的信息。一般安装步骤为: (根据自己的需求来选
41、择版本) 1)先安装 TMSS 客户端,并安装TMSS 客户端的补丁2)安装 GTR (检验 GTR 安装是否成功,需要安装好后,在TMSS 中“AutoSpace”下拉菜单中选择“Show GTR Window ”项,看是否出现,出现了则成功,不出现则需重装。) 3)安装 AutoSpace 4)安装 TTCN3 注: 如果是界面自动化的, 还需要安装一个IBM公司提供的一个功能 / 系统测试平台 RFT(Rational Functional Tester)主要用于界面的录制。3、在编写界面测试用例时,需要用RFT工具录制界面上的控件,录制控件用几种方法。名师资料总结 - - -精品资料欢
42、迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 30 页 - - - - - - - - - 1)正常的录制,通过录制按钮来录制,它也分为单个录制、区域录制等几种情况的。单个录制:是针对一个控件来录制,这个录制方法,如果页面框架的改动了,对其所录制的控件影响比较小,便于用例的重复使用,但是录制的效率会慢点。个人认为这种方法录制的控件,用例重用性比较好。区域录制:是针对页面上的一个区域(框架) ,在这个区域里面的控件都会被录制下来,效率比较高,但是一旦页面框架有所改动,则这些录制好的控件可能都不能用了。这
43、种方法只能是对那些页面不需要改动的系统用比较合适。如果不考虑重用性的话,可以用这种方法录制。2)通过“创建测试对象”的方法来录制,这样可以查看到一些隐藏属性,来确定控件的定位。3)静态录制,在“ scripts”下 创建一个“添加空脚本”“脚本资源管理器”中有个“检测对象”下“专用测试对象图”来录制一个控件,录制生成的文件保存后, 在录制好的控件上, “识别属性”项中选择“静态录制”并填写一些信息。4、编写界面自动化用例时,应注意的。首先介绍下, 我们编写用例最常用到的AutospaceView 窗口,它分为左右两块, 左侧是 AW窗口,右侧进行自动化用例设计。AW窗口显示了 AW 文件 MD
44、N_AW_IPTV.v1.xml 中定义的全部 AW 。右侧窗口: Title显示手工测试用例的测试步骤/ 结果等;PreShell测试用例的预置条件;CaseStep 测试用例的测试步骤;AfterShell一般是用例执行后进行环境恢复;Result窗口显示自动化用例的执行结果是否是成功跑通的。这里面有个执行顺序一般以“PreShell-CaseStep- A fterShell”执行的。这下来说说,编写时应注意:1)AW的应用,一般是从AW窗口中拖至右侧或双击AW 来使用。2)用 AW 前,首先需要先使用“激活map映射文件”的AW ,来激活我们用RFT工具录制的界面上的控件的文件,这样下
45、面用到这个文件里面的控件才能有用。3)使用每个 AW 时会有对该 AW 的描述,需要看仔细了,有时候多个逗号呀等,都会出错,我记得在用数据库检查AW 的时候,它的AW 要求不需要 SQL语句的 “;”,它的描述也没有注明,导致我误以为是 AW 问题的,最后请人解决时,人家说是多了个分号的原因。4)遇到错误时,需要仔细的看日志,很多问题都是因为看日志的不仔细导致没能查出原因。有个错误是实现 AW 的类的问题,本身AW 的类里面就有错误,本身就是无法编译的(这个问题不容易发现的) 。5、运行用例时,需要注意的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
46、 - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 30 页 - - - - - - - - - 在运行界面自动化测试用例时,首先,需要注意的是每次运行要保证只有一个IE 页面打开的,不能有两个以上IE 页面,这样会导致控件冲突,找到多个控件。其次,在调试自动化时,最好先“Unload Executor ” 在 TMSS 工具上显示的是“红叉”的标志。以上是我在界面自动化方面遇到的一些问题,及需要注意的一些地方,希望对新手有点帮助。注:如果 TMSS 运行时发现很慢的话,那需要看看是不是机器上安装了“.net Framework2.0”这个与 TMSS 冲突,
47、卸载掉应该就好了,我被这个问题,搞了好久才找到别人解决的,问了很多人开始不知道的。 ( 作者: chxw00) 3. 使用 UI Automation实现自动化测试(6)模拟鼠标在自动化测试中的应用模拟鼠标在 自动化测试 中的应用尽管 UI Automation 可以实现控件的自动化,但是,自定义控件的自动化往往由于自定义控件中对自动化的支持不够,而导致无法使用UI Automation 的相关 Pattern 来操作此控件。此时我们可以使用模拟鼠标的操作来达到相应的效果。. NET 并没有提供改变鼠标指针位置、模拟点击操作的函数;但是Windows API 提供了。在 .NET 中模拟鼠标通
48、常是调用底层的 API 来实现。注:在使用前必须添加using System.Runtime.InteropServices;命名空间。移动鼠标到指定的位置/ / Add mouse move event / / Move to specify x coordinate / Move to specify y coordinate / DllImport(user32.dll) extern static bool SetCursorPos(int x, int y); 该函数可以改变鼠标指针的位置。其中x,y 是相对于屏幕左上角的绝对位置。移动鼠标到指定的位置并进行相应的鼠标操作/ / Mo
49、use click event 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 30 页 - - - - - - - - - / / MouseEventFlag / X coordinate / Y coordinate / / DllImport(user32.dll) extern static void mouse_event(int mouseEventFlag, int incrementX, int incrementY, uint data, UIntP
50、tr extraInfo); 这个函数不仅可以设置鼠标指针绝对的位置,而且可以以相对坐标来设置。另外,该函数还可以模拟鼠标左右键点击、鼠标滚轮操作等。其中的MouseEventFlag是一个常量,定义如下:const int MOUSEEVENTF_MOVE = 0 x0001; const int MOUSEEVENTF_LEFTDOWN = 0 x0002; const int MOUSEEVENTF_LEFTUP = 0 x0004; const int MOUSEEVENTF_RIGHTDOWN = 0 x0008; const int MOUSEEVENTF_RIGHTUP = 0