2022年多种自动化测试学习 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年多种自动化测试学习 .pdf》由会员分享,可在线阅读,更多相关《2022年多种自动化测试学习 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年多种自动化测试学习 2022 多种 自动化 测试 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内