版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江大学硕士学位论文 STYLEREF 标题,章标题(无序号) * MERGEFORMAT Abstract 表目录 PAGE VI目录 TOC o 1-3 h z u HYPERLINK l _Toc376864062 摘要 PAGEREF _Toc376864062 h i HYPERLINK l _Toc376864063 Abstract PAGEREF _Toc376864063 h ii HYPERLINK l _Toc376864064 图目录 PAGEREF _Toc376864064 h V HYPERLINK l _Toc376864065 表目录 PAGEREF _Toc
2、376864065 h VI HYPERLINK l _Toc376864066 第1章 绪论 PAGEREF _Toc376864066 h 1 HYPERLINK l _Toc376864067 1.1 课题背景 PAGEREF _Toc376864067 h 1 HYPERLINK l _Toc376864068 1.2 国内外现状 PAGEREF _Toc376864068 h 2 HYPERLINK l _Toc376864069 1.3 论文主要研究内容及结构安排 PAGEREF _Toc376864069 h 4 HYPERLINK l _Toc376864070 第2章 软件测
3、试及自动化测试 PAGEREF _Toc376864070 h 6 HYPERLINK l _Toc376864071 2.1 软件测试概述 PAGEREF _Toc376864071 h 6 HYPERLINK l _Toc376864072 2.2 软件测试分类 PAGEREF _Toc376864072 h 6 HYPERLINK l _Toc376864073 2.3 软件自动化测试 PAGEREF _Toc376864073 h 7 HYPERLINK l _Toc376864074 2.4 自动化测试技术及框架 PAGEREF _Toc376864074 h 8 HYPERLINK
4、 l _Toc376864075 2.5 小结 PAGEREF _Toc376864075 h 10 HYPERLINK l _Toc376864076 第3章 基于Robot框架的关键字驱动的自动化测试系统的设计与实现 PAGEREF _Toc376864076 h 11 HYPERLINK l _Toc376864077 3.1 自动化测试系统架构及功能 PAGEREF _Toc376864077 h 11 HYPERLINK l _Toc376864078 3.1.1 Rational Robot介绍 PAGEREF _Toc376864078 h 12 HYPERLINK l _Toc
5、376864079 3.1.2 Python技术 PAGEREF _Toc376864079 h 14 HYPERLINK l _Toc376864080 3.1.3 TestPartner介绍 PAGEREF _Toc376864080 h 14 HYPERLINK l _Toc376864081 3.2 关键字驱动的设计与实现 PAGEREF _Toc376864081 h 17 HYPERLINK l _Toc376864082 3.2.1 远程连接的关键字的设计与实现 PAGEREF _Toc376864082 h 17 HYPERLINK l _Toc376864083 3.2.2
6、执行远程命令的关键字的设计与实现 PAGEREF _Toc376864083 h 19 HYPERLINK l _Toc376864084 3.2.3 上传文件的关键字的设计与实现 PAGEREF _Toc376864084 h 20 HYPERLINK l _Toc376864085 3.2.4 执行第三方工具的关键字的设计与实现 PAGEREF _Toc376864085 h 22 HYPERLINK l _Toc376864086 3.2.5 界面驱动层的设计与实现 PAGEREF _Toc376864086 h 24 HYPERLINK l _Toc376864087 3.3 启动系统
7、命令 PAGEREF _Toc376864087 h 26 HYPERLINK l _Toc376864088 3.4 本章小结 PAGEREF _Toc376864088 h 26 HYPERLINK l _Toc376864089 第4章 自动化测试系统在基站软件测试中的应用 PAGEREF _Toc376864089 h 27 HYPERLINK l _Toc376864090 4.1 LTE系统概述 PAGEREF _Toc376864090 h 27 HYPERLINK l _Toc376864091 4.1.1 LTE对比3G优势 PAGEREF _Toc376864091 h 2
8、7 HYPERLINK l _Toc376864092 4.1.2 LTE网络架构 PAGEREF _Toc376864092 h 28 HYPERLINK l _Toc376864093 4.1.3 基站 PAGEREF _Toc376864093 h 29 HYPERLINK l _Toc376864094 4.2 自动化测试系统的实施 PAGEREF _Toc376864094 h 30 HYPERLINK l _Toc376864095 4.2.1 测试环境搭建 PAGEREF _Toc376864095 h 30 HYPERLINK l _Toc376864096 4.2.2 测试用
9、例设计 PAGEREF _Toc376864096 h 31 HYPERLINK l _Toc376864097 4.2.3 测试用例实现 PAGEREF _Toc376864097 h 32 HYPERLINK l _Toc376864098 4.2.4 测试用例执行 PAGEREF _Toc376864098 h 41 HYPERLINK l _Toc376864099 4.2.5 测试结果分析 PAGEREF _Toc376864099 h 42 HYPERLINK l _Toc376864100 4.3 自动化测试系统的优势 PAGEREF _Toc376864100 h 45 HYP
10、ERLINK l _Toc376864101 4.4 本章小结 PAGEREF _Toc376864101 h 46 HYPERLINK l _Toc376864102 第5章 总结与展望 PAGEREF _Toc376864102 h 47 HYPERLINK l _Toc376864103 5.1 总结 PAGEREF _Toc376864103 h 47 HYPERLINK l _Toc376864104 5.2 展望 PAGEREF _Toc376864104 h 47 HYPERLINK l _Toc376864105 参考文献 PAGEREF _Toc376864105 h 49
11、HYPERLINK l _Toc376864106 作者简历 PAGEREF _Toc376864106 h 51 HYPERLINK l _Toc376864107 致谢 PAGEREF _Toc376864107 h 52图目录 TOC h z c 图 HYPERLINK l _Toc164669029 TOC h z c 图3. HYPERLINK l _Toc376621236 图3. 1 自动化测试系统架构 PAGEREF _Toc376621236 h 11 HYPERLINK l _Toc376621237 图3. 2 Robot四层架构图 PAGEREF _Toc3766212
12、37 h 13 HYPERLINK l _Toc376621238 图3. 3 TestPartner架构图 PAGEREF _Toc376621238 h 15 HYPERLINK l _Toc376621239 图3. 4 TestPartner工程图 PAGEREF _Toc376621239 h 16 HYPERLINK l _Toc376621240 图3. 5 TestPartner脚本代码 PAGEREF _Toc376621240 h 16 HYPERLINK l _Toc376621241 图3. 6 执行用例 PAGEREF _Toc376621241 h 17 TOC h
13、 z c 图4. HYPERLINK l _Toc376621252 图4. 1 EPS网络架构图 28 HYPERLINK l _Toc376621253 图4. 2 自动化测试系统环境 PAGEREF _Toc376621253 h 31 HYPERLINK l _Toc376621254 图4. 3 自动化测试报告统计 PAGEREF _Toc376621254 h 42 HYPERLINK l _Toc376621255 图4. 4 自动化测试标签分类 PAGEREF _Toc376621255 h 42 HYPERLINK l _Toc376621256 图4. 5 测试用例通过 P
14、AGEREF _Toc376621256 h 43 HYPERLINK l _Toc376621257 图4. 6 测试执行失败 PAGEREF _Toc376621257 h 43 HYPERLINK l _Toc376621258 图4. 7 TM500连接失败 PAGEREF _Toc376621258 h 44 HYPERLINK l _Toc376621259 图4. 8 Au2检测 PAGEREF _Toc376621259 h 44 HYPERLINK l _Toc376621260 图4. 9 DL Throughput值 PAGEREF _Toc376621260 h 45
15、HYPERLINK l _Toc376621261 图4. 10 参数溢出 PAGEREF _Toc376621261 h 45表目录 TOC h z c 表4. HYPERLINK l _Toc376621131 表4. 1 测试用例setting部分 绪论 PAGE 2 PAGE 5 绪论 课题背景随着近年来软件行业的迅猛发展,尤其是国内软件的需求不断的扩大,通常软件团体往往集中在软件的开发和算法研究上,在整个软件过程中往往忽视是了对软件测试的研究,或者基本没有研究,往往讲调试就等同于测试,毕竟项目周期时间有限,人物和物力的资源匮乏,缺乏现实条件。但是,要知道软件测试是软件项目中的一个很重
16、要的环节,软件测试是控制和把握软件质量的门槛,只有具备完整的测试才能提高软件的质量,是软件产品在市场上拥有竞争力,不至于被淘汰。而在传统软件测试里所谓的软件测试不过是纯手动的测试,由于近几年软件系统不断的复杂化,手动测试人员面对如此纷繁复杂的软件系统要进行逐一的测试显得力不从心,或者说大量重复性的测试不仅浪费资源,增加了项目的预算的开销。所以在此背景下,在软件测试中使用自动化测试技术是顺理成章的趋势。自动化测试已经成为软件测试的一个组成部分,可以进行使用自动化测试一些手工测试无法完成或难以手动操作试验。自动化测试技术,如果合理使用的话,不仅可以提高软件的质量,还可以缩短项目周期,节省大量的人力
17、资源和项目成本。自动化测试在IT行业中的应用越来越广泛,所以对软件自动化测试技术的研究和应用具有理论价值和实际应用意义。近年来,4G通信成了街谈巷议的热门话题。随着移动通信网络不断的发展,当前移动通信系统的弊端越发的明显,网络堵塞难以接入,覆盖面积不够,甚至在某个偏远地区没有信号,而其中最受用户诟病的是数据传输率低下,互联网快速的发展,用户使用手机语音聊天,网络视频,下载电影已经成为生活中的常事,缓慢的数据传输速率直接影响通信网络的应用程序。虽然3G在通信系统历史上迈出了一大步,但是3G系统还是存在着各种的不足之处。基于此3GPP组织启动了长期演进项目(LTE),在LTE技术中,采用了扁平式的
18、结构,在LTE系统结构中的一些网络单元合并到基站中,因此基本功能的增加也导致测试基站增加了难度,相比手工测试,使用自动化工具可以增大测试范围,完成大量的重复测试,这些都是手工测试很难完成的。这意味这我们需要使用手动测试和自动化测试技术相结合,从而提高测试效率,缩短项目周期。在此基础上,本论文设计和实现了一种新的自动化测试系统,该系统是关键字驱动的思想来对被测系统实施自动化测试方案。 国内外现状1975年,约翰发表了关于“测试数据的选择原理”的文章在IEEE会议上1,软件测试这才作为一个研究领域。软件测试的定义,格伦福德梅亚已经清楚地定义了在软件测试的艺术这本书中。软件测试是以发现错误的程序或者
19、系统的一个过程2。有了软件测试定义,程序员开始关注软件质量,软件测试不是简单地在这个过程中发现错误。测试是任何一个程序或系统属性为目标的活性评价,测试是衡量软件质量。目前,在提高软件测试的技术中,最直接有效的方式就是测试技术,通常测试的花销占整个软件开发的百分之四十左右3,就算如此,也不能保证软件之中没有BUG。在软件业发展快速的国外,在软件项目开发软件测试的比重已经占有相当大。比如微软公司,专业测试人员往往是2倍左右的开发人员,工作量要比开发大得多。因此,传统的测试方法遇到很大的挑战,测试自动化工具应运而生,使用自动化测试工具来自动生成测试脚本,并优化测试脚本,基本上自动化测试已经成为软件行
20、业的一直趋势,走在了时代的前沿,而国内的许多软件企业也开展自动化测试工作。可以看出,自动化在软件测试中具有重要的应用价值。在初始阶段,自动化测试的目的是手动测试工作的自动化,应用比较广泛的是QTP工具4 5的使用,通过QTP录制/回放来执行测试用例的操作,包括点击,输入等等,这个阶段的自动化工作重点着重在用例上,但是随着自动化脚本的数量不断的增加,类型各有不同,包括QTP脚本,Winrunner,Perl等等。随着后来为了统一管理和调度脚本,显示执行的测试案例,包括测试用例执行和测试报告的管理,出现了所谓的自动化测试框架,自动化测试框架是一组策略的思想,规范和代码集6。它的出现很好的解决了管理
21、测试用例集合,自动运行测试脚本,生成自动化测试报告等一系列的问题。而AC(Automation Center)是一个基于QTP的自动化测试框架7,该框架的设计,以确保可扩展性和兼容性,在甲骨文公司已经成功实施。在未来的测试区,测试分工将更加清晰,同时未来的测试中必会是手动测试和自动化相互配合的模式,在测试技术和测试框架方面,现阶段最为大型企业接受和所使用的是以关键字驱动的测试技术框架。而许多国外企业也纷纷推出了自己研发的自动化测试工具,其中有IBM的Rational Functional Tester(RFT),Micro Focus公司的TestPartner,已经被惠普公司收购的Quick
22、test Professional,以及一些自动化测试框架比如说Robot Framework8,而一些开源社区在此框架平台上实现的RRAFS9,极大了促进了自动化测试的发展。与国内企业相比,国外对自动化测试的研究比较早,已经形成了一套完善的理论,自动化测试工具也早已投入运用中。自动化测试基本框架结构的类型,可分为如下几种:脚本的模块化结构,测试库模式,数据驱动结构,关键词驱动的体系结构。由专家Mercury设计的以关键字为思想和基于录制/回放的自动化技术10,关键字驱动方式的脚本可以重复使用,一般业务测试人员只需要填写相应的操作步骤即可,不必关系底层代码的具体实现。根据LogiGear提出的
23、自动化测试方法,也是上述这种思想11。自动化测试国内研究起步比较晚,而受到外界因素包括企业运转资金,员工软件水平,培训教育等等的影响,一般的公司自动化测试还仅仅停留在初级阶段,自动化测试方面主要从国外研究的经验中学习,他们大多使用第三方自动化工具,没有实力实现自主开发自动化测试系统。所以国内软件测试与国外企业相比较,还是存在着较大的差距,比如国内企业对测试没有达到相应的重视程度,还没有建立软件测试管理系统规范,自主开发的自动化工具也比较少,尽管大多数软件行业也开始自动化测试的实施,但是对设计自动化测试系统的体系缺乏认识。在软件自动化测试的应用中存在如下几点问题:一、简单的使用某个自动化测试工具
24、,缺乏好的测试执行框架来运行,就算使用测试框架,也没有良好的扩展性,维护起来通常比较麻烦。二、测试代码跟被测系统耦合性太高,当被测系统变化时,相对应的代码要进行大幅度改动。三、测试用例缺没有完善的管理环境。四、测试结果保存输出的日志不够齐全,导致调试不便。五、设计用例时有缺陷,程序复杂,这对测试人员要求比较高的编程水平来进行调试。所以,设计和开发出一套完善的自动化测试系统,进行有效的企业级测试,以及如何使用适当的方法来对具体环境下的特定的软件系统进行完整以及全面的测试,是目前在自动化测试领域的一个热点问题,对自动化测试的发展有着积极的影响。本文研究了测试自动化技术,设计和开发了一套自动化测试系
25、统,对TD-LTE基站软件功能模块实现自动化测试。 论文主要研究内容及结构安排本论文主要内容如下:本课题的自动化测试系统是在Robot Framework框架的平台上进行设计与开发,Robot框架是python语言实现的,对python脚本技术的研究是必不可少的,利用它来实现关键字驱动,还要研究Robot Framework的系统架构,其中包括Robot语法,测试文件组织结构以及测试流程等等进行分析。为了实现自动化测试系统的两个主要功能设计:关键字驱动和界面驱动。在Robot Framework框架标准库和python基础模块上进行脚本开发,实现比如远程登录,上传文件等关键字驱动的功能。研究自
26、动化功能测试工具TestPartner,并利用该工具来录制/回放生成界面脚本,为了驱动该脚本,还需要设计和实现该驱动的算法。最后应用该自动化测试系统对LTE系统架构中的eNodeB软件的功能实施自动化测试,其中包括测试操作步骤的描述,测试用例的设计与实现,运行结果报告的分析等等,再对该自动化测试系统优点进行描述以及总结与展望。本文结构安排如下:第一章:介绍了课题的相关背景,目前在国内外的研究状况以及该课题的主要内容和结构安排。第二章:介绍软件测试和测试自动化,其中包括测试的分类,测试流程,分析自动化测试的优点缺点以及适用的范围,对自动化框架Robot Framework进行了介绍,并引进自动化
27、测试工具,介绍了python语言等等。第三章:设计和实现自动化测试系统,详细介绍界面驱动的实现,关键字驱动的实现这两大系统功能模块。第四章:介绍利用自动化测试系统对被测产品进行自动化测试,包括测试用例的步骤,测试用例的设计与实现,与传统的测试技术相比,分析测试结果,最后总结了自动化测试系统对比传统测试的优势。第五章:总结与展望第2章 STYLEREF 标题 1,章标题(有序号) * MERGEFORMAT 绪论浙江大学硕士学位论文 第2章 STYLEREF 标题 1,章标题(有序号) * MERGEFORMAT 软件测试及自动化测试 基于Robot框架的关键字驱动的自动化测试系统的设计与实现
28、PAGE 4 PAGE 26基于Robot框架的关键字驱动的自动化测试系统的设计与实现 自动化测试系统架构及功能论文所设计和开发的自动化测试系统是基于Robot Framework框架的关键字驱动为核心的系统19,研发该自动化测试系统主要是用于移动通信网络中基站软件的自动化测试,并在实践中得到了应用,该系统的结构如图3.1所示:图3. SEQ 图3. * ARABIC 1 自动化测试系统架构Robot Framework框架是本自动化测试系统的平台,标准库是Robot Framework以及python自带的基础模块以及相关函数,主要用来被调用,实现相关功能。关键字扩展库,主要用来实现相关的功
29、能,这里包括登陆远程主机,上传文件,执行远程操作,断电上电,调用第三方工具等等关键字的具体实现,可以引用标准库中已经定义好的相关模块和函数。这也是本论文开发自动化测试系的重点。测试文件,本文设计的测试文件是HTML格式,当执行自动化测试时,测试文件中的关键字通过调用关键字扩展库(Keywords Libraries)来完成相关功能的实现。主要功能模块自动化测试系统包括以下几部分:一、关键字库命令驱动,进行关键字的具体实施细节,从而完成相应的功能。二、界面脚本驱动,通过驱动算法来执行界面脚本,完成对界面的操作。三、系统启动,该自动化测试系统是基于Robot Framework平台的,输入相关命令
30、可以自动执行。四、生成日志。在后面的3.2和3.3这两小节将对关键字库命令驱动,界面脚本驱动这两大功能模块进行具体的设计与实现。Rational Robot介绍Robot Framework21是一款用python语言编写的关键字驱动的自动化测试框架,由诺基亚西门子通信开发和支持的开源软件。Robot是基于表驱动的核心思想18,预先定义好关键字(关键字表示要执行的动作),然后根据关键字来执行相应的行为。Robot Framework具有如下的特点:一、测试用例可以用HTML格式保存,也可以保存文本文件。二、测试用例使用标签分类,并且测试报告和日志是HTML格式的,方便阅读。三、测试人员可以利用
31、现有的关键字编写更高级的关键字。四、用户可以创建自定义的基于Python或者Java的测试库在库函数API的基础上。Robot Framework框架四层体系结构19,如图3.2所示,可大大提高它的可扩展性。图3. SEQ 图3. * ARABIC 2 Robot四层架构图Robot Framework的源代码是用python编写的,在运行之前,必须按照python环境。测试库:一般包括两部分,测试框架的内建库Built-in Library和扩展库Extend Library。测试数据文件,它的表现形式是表格,一般是超文本标记语言(HTML)或者制表符分隔值(TSV)格式来展现,必须通过命令
32、行的形式执行测试文件,当运行时Robot Framework一般通过文件扩展名来选择相应的Test Data解释器来执行测试用例。而测试文件的格式,有下面几部分构成:设置部分,主要用于引入相关的资源文件,使用标签为测试用例添加标记,还有就是设置测试用例或者测试套件执行前或者执行之后的动作,这样做的目的在于可以初始化环境变量,在测试执行失败的时候能够继续执行下一个测试用例或者恢复环境。变量部分,主要用来定义变量。用例部分,组合关键词创建测试用例,关键词主要来源内置关键词,导入的测试库的库关键词和使用同样表格语法创建的用户关键词这三种。测试的执行会产生相应的测试报告,有个三部分构成。测试结果概述:
33、report.html,测试结果细节:log.html,和output.xml,容易与其他工具集成的测试结果。Test Tools指的是相关的分析工具,主要用来帮助测试和对测试结果的进行分析的工具,一般常见的有网络封包分析工具Wireshark。最底层System Under Test指的是被测的系统,被测系统跟核心框架没有直接的关联,它们之间通过测试库(Test Libraries)进行交互。由于Robot Framework是基于python语言开发的,以及关键字驱动的实现都需要python语言来编程实现,所以下一小节对python技术进行介绍。Python技术脚本语言也被成为动态语言,用
34、于控制程序,脚本使用文本保存,通常在被调用时编译或者解释。脚本语言主要有Perl,Shell,Python,Ruby等等,其中Shell是应用于Linux,UNIX操作平台的脚本语言,是用户与系统交互的桥梁。而Python和Ruby是目前应用的最多的脚本语言。Python由Guido van Rossum创建,Python是一种解释型的、面向对象的、动态类型的脚本语言22。Python语法简单清晰,易读懂而且容易维护,而且拥有非常丰富的类库,深受程序员的欢迎和喜爱。Python运行速度较快,底层使用C语言实现,大部分标准库和第三方库也是通过C来实现。当你运用Python语言编写程序的时候根本无
35、需关注底层的实现细节,因为它是开源的,因此它可以被移植到包括Linux、Windows等等这些平台上23。当程序被执行时,python解释器把.py文件中的源代码编译成字节码的中间形式,然后执行编译后的字节码文件通过虚拟机,这种机制跟Java相似,并不需要被编译成一个计算机识别的二进制代码。所以Python看起来更加简单,便于移植。Python支持面向过程的同时还支持面向对象的编程,并有一个非常大的标准库,使用标准库可以处理多种应用,如单元测试,数据库等。Python使用中通过强制缩进的形式令代码看起来清晰简洁,使代码具有更好的可读性。当然它也拥有自身的缺陷。例如,一个单独的语句,它采用缩进的
36、方式会带来一些麻烦,有时与tab和空格混合会导致错误,但错误是很难分开。 TestPartner介绍TestPartner24是一款Compuware开发的工具,主要用来进行自动化功能测试。它集合了VBA的功能,供测试人员调用来具体的测试。用户可以通过可视化脚本,自动向导来完成重复测试,也可以利用可视化导航器生成测试用例,非常的简便,对于初学者来说容易上手。测试可以显示为树状结构,方便用户观察测试的路径,TestPartner架构如图3.3所示。 图3. SEQ 图3. * ARABIC 3 TestPartner架构图 其工作流程如下:一、制定测试计划,由于TestPartner主要用于完成
37、软件的功能测试,所以在测试计划阶段,首先要分析被测应用软件的特点是否适用于进行自动化测试,通常TestPartner工具用于软件界面相对稳定的回归测试中,通过适当的分析来确定特征点进行测试。二、创建脚本,当测试人员对被测软件进行功能操作的时候,TestPartner借着自动录制机制将详细描述每个步骤的操作的记录,并自动生成测试脚本。三、增强的脚本,完成脚本录制后,测试人员可以增加检查点,来验证软件的功能是正确的,也可以将固定的参数替换成变量来代替。四、运行测试,对修改的脚本运行,反复的调试直到脚本能够完成测试计划要求的功能为止。五、分析测试,系统会自动生成一个详细的测试结果完成的报告。Test
38、Partner的脚本语言是VBA编写23,简单易懂,通过录制TestPartner可以捕获用户的所有行为,包括点击鼠标,输入数据等等并生成对应的脚本。图3.4中展示的是录制的脚本包括cell_block,logon_sm等等。图3. SEQ 图3. * ARABIC 4 TestPartner工程图图3. SEQ 图3. * ARABIC 5 TestPartner脚本代码在录制好的脚本中含有固定的数值,通过编辑脚本,使得变量参数化。如图3.5所示对录制脚本进行编辑。通过命令行的形式来执行测试用例如图3.6:执行如下的命令C:Program FilesCompuwareTestPartnerT
39、P.exe -d Test-in-a-Box -u Admin -v -p admin -r Common -s CaseName图3. SEQ 图3. * ARABIC 6 执行用例通过自动化开发和测试脚本执行,Testparnter帮助测试人员和质量管理人员更有效地开发测试,从而使软件更早的上线运行。TestPartner的缺点在于无法实现多个相对独立脚本的连续自动执行,而且数据与数据耦合性太高,需要进行脚本优化工作,否则脚本的重复使用率不高。 关键字驱动的设计与实现关键字驱动25:利用可以被Robot Framework框架识别的python语言对标准库/python自带的模块或者函数进
40、行二次封装生成类和函数,从而实现自动化测试系统的功能,比如连接远程主机,执行远程命令,上传文件,断电上电,连接TM500,操作第三方工具等等,下面主要设计与实现在自动化测试应用中比较常见的几种关键字。 远程连接的关键字的设计与实现连接远程主机是使用最为频繁的命令,在自动化执行过程中需要不断的切换主机来完成相应的操作。通常登陆Linux系统或者Windows系统的命令封装在Telnet.py中。关键字connect to host,用于登陆远程主机,通常默认使用Telnet方式连接主机。登陆远程主机,必须输入有效的参数,其中包括host主机名,port端口号,默认使用23。user,passwd
41、:用户面和密码,默认是mpt默认为空,timeout超时时间,设置超时为120秒。输出信息:主机连接成功的状态。关键字connect to host实现思路如下:def connect_to_host(self, host, port = 23, user = public, passwd = public, prompt = , timeout = 120sec): This keyword opens a telnet connection to a remote host and logs in. 判断prompt值是否等于None或者为空 if prompt = = None or p
42、rompt = = : 重新赋值给变量myprompt else: 把prompt赋值给myprompt if 用户名为空: prompt非空时,得到Telnet主机的返回值 conn = TelnetConnection(host, port, myprompt, timeout, CR) else: prompt为空时,得到Telnet主机的返回值 conn = TelnetConnection(host, port, , timeout, CR) if用户名非空: 返回conn.login登陆信息给ret else: 返回conn.login登陆信息给ret 当返回的信息中含有Micro
43、soft,登陆的为Windows if ret.find(Microsoft) = 0: Windows elif ret.find(%s % user) = 0: Linux elif ret.find(openSUSE) = 0: Linux elif ret.find(Flexi Transport Module) = 0: Linux else : 表示登陆到某设备上 self._telnet_connectionsconn = Device return conn 执行远程命令的关键字的设计与实现关键字execute shell command通常用于执行远程命令操作,在测试用例用例
44、中也是使用比较多的一个关键字。execute shell command需要输入的参数:command为需要执行的命令,timeout超时时间设置为0秒,username用户名为root,password密码为空。输出信息:返回命令执行后的结果。关键字execute shell command实现思路如下:def execute_shell_command_without_check(self,command,timeout=0,password=, username=root):登陆linuxif self._telnet_connectionsself._current=Linux and
45、 password!= and username!=root: 写入当前登陆的用户名self._current.write(su + username)设置为新的提示符赋给origpromptorigprompt=self._current.set_prompt(Password:)读取输出结果直到为Noneself._current.read_until_prompt(None)self._current.write(password)将密码写入origprompt.append(%s.*$|# % username)再次读取输出结果直到提示为空 将echo $?写入下一行中self._cu
46、rrent.set_prompt(origprompt)self._current.read_until_prompt()self._current.write(echo $?)将读取的输出结果通过空格进行行分隔return_linesreturn_lines=self._current.read_until_prompt().splitlines()try: return_code=int(return_lines0)except ValueError: return_code=int(return_lines1)if return_code!=0: 提示登陆失败 raise Executi
47、onFailed, CANNOT to change user %s with password:%s. % (username,password)self._current.write(command)try:执行命令,返回执行的结果except AssertionError, e:失败信息 上传文件的关键字的设计与实现FileZilla,一个FTP客户端软件而且它属于开源不收费的软件,有客户端版本和服务器版本。客户端版本可以运行在Linux,window,Mac OS上运行,该服务器可以在window系统中运行。基于该工具的关键字,主要用于上传和下载文件,它的实现封装在FTP.py文件中。
48、下面展示的是上传文件的具体实现过程。设计思想:首先定义一个FTP_Client类,并在类中定义上传单个文件的函数和退出ftp服务器的函数。在类外面自定义一个ftp_upload函数调用类FTP_Client中的函数即可实现上传文件到ftp服务器的功能。具体实现的代码如下:class FTP_Client(): def _init_(self, host, port, username, password): self.ftp = FTP() 连接FTP服务器,输入参数(主机地址和端口号) try: self.ftp.connect(host,int(port) except Exception
49、, e: 连接异常,打印并输出异常信息 try:进行登陆验证 self.ftp.login(username, password) except Exception, e: 登陆异常,输出异常信息 print self.ftp.getwelcome()定义一个函数 def ftp_upload_single_file(self, local_file_dir, host_file_name, host_dir): try: 登陆成功后,切换到host_dir目录 self.ftp.cwd(host_dir) except Exception, e: 切换到该目录失败,异常 设置缓冲大小为102
50、40bufsize = 10240 以二进制读模式(rb)打开local_file_dir,并返回结果file_handler try: file_handler = open(local_file_dir,rb) print ftp open local file %s OK. % host_dir except Exception, e: 失败 ftp_cmd =STOR + host_file_name try: 进行文件上传 self.ftp.storbinary(ftp_cmd, file_handler, bufsize) except Exception, e: 异常 关闭文件
51、file_handler.close() 类中定义退出FTP服务器函数 def ftp_quit(self): self.ftp.quit()关键字的实现过程只需要调用上面定义好的类中的函数即可。输入参数说明:host代表主机的地址,port即是端口号。实现代码如下:def ftp_upload(host, port, username, password, local_file_dir, host_file_name, host_dir): This keyword use ftp upload file to ftp server. cftp = FTP_Client(host, port
52、, username, password) try: cftp.ftp_upload_single_file(local_file_dir, host_file_name, host_dir) finally: cftp.ftp_quit() 执行第三方工具的关键字的设计与实现第三方工具主要用于辅助测试并对结果进行分析,这里主要介绍wireshark,wireshark是一个网络数据包分析软件,主要功能是拦截网络数据包并显示最详细的可能的网络数据包数据。关键字start tshark以命令行形式驱动wireshark软件,输出执行后的结果,输入参数说明:file_dir代表文件目录。inter
53、face表示以太网接口,默认为eth0。duration表示时间间隔。设计思想如下:分为两种连接方式,一种是telnet连接方式,另外是ssh。在两种不同连接方式下分别对Windows和Linux执行抓包命令。def start_tshark(file_dir, interface = eth0, duration = , filte = None, login_type = telnet): This keyword start wireshark capture and save the file as text file -new if telnet = = login_type: co
54、nnection_type = connections.get_current_connection_type() if时间间隔等于空: option = else: option = -a duration:%s % duration if 过滤条件为空: filte = ip else: pass if 连接类型connection_type是Windows:command = psexec -i -d cmd /c tshark -i %s%s -R %s -V %s % (interface, option,filte, file_dir) ret=connections.execut
55、e_shell_command_without_check(command) elif 连接类型connection_type是Linux或者Device: command =nohup tshark -i %s%s -R %s -V %s & % (interface, option, filte, file_dir) ret=connections.execute_shell_command_without_check(command) else: 抛出异常,未知的类型 elif ssh = = login_type: if duration = = : option = else: op
56、tion = -a duration:%s % duration if filte = = None: filte = ip else: pass command = nohup tshark -i %s%s -R %s -V %s & % (interface, option, filte, file_dir) ret = connections.execute_ssh_command_without_check(command)通过对关键字的开发来操作相应的命令,包括上传文件,登陆远程主机,执行远程命令,以及对第三方工具的控制和操作,这里不再叙述其他关键字的驱动实现。 界面驱动层的设计与实
57、现为了实现对界面脚本26进行驱动的功能,需要利用python脚本开发驱动GUI算法。驱动界面脚本的分为两部分,实现的算法如下:第一部分,调用这个关键字可以为录制好的脚本输入需要的参数,这样做可以提高脚本利用率。设计思路如下:检索parameters的类型,一般的格式为name=value,将参数利用=进行分割成数组类型,最后将name与value用=连接起来赋给输入的参数parameter,并写入文件。def write_parameters_to_file_for_tp(parameters,file_path=C:parameters_tp.txt):his keyword will re
58、move the specify file if it exist, and write parametersfile_path文件,如果存在删除if os.path.exists(file_path): os.remove(file_path)通过追加的方式openfile_handle = open(file_path, a) try: 判断参数parameters是否是list类型 if isinstance(parameters, list): for parameter in parameters: 将每行参数用=分隔成数组类型,结果赋给temp tmp = parameter.sp
59、lit(=) name = tmp0 value = tmp1 len_tmp = len(tmp) 如果长度大于2,value重新赋值if 2 len_tmp: for i in xrange(len_tmp-2): value = value + = +tmpi+2 查询name中是否有空格,如果有将name中空格用_换后重新赋给name if re.search( , name): name = name.replace( , _) 将name与value用=连接起来赋给输入的参数parameter,将获取的新参数parameter写入文件对象file_object并换行 paramet
60、er = =.join(name, value) file_handle.write(parameter + n) elif parameters: 操作同上面一样关闭文件对象file_handle.close()只要调用上述脚本就可以为录制的脚本输入其所需要的参数。第二部分,执行脚本,只需要输入录制好的脚本名称即可。实现算法如下:def run_testpartner(script_name, TEST_LOG_DIRECTORY, sw_release= ): 脚本转为小写字母 script_name = script_name.lower() 检索脚本是否存在空格 if re.searc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际贸易课程设计表
- 音乐艺术中心教师合同
- 钢压延加工中的经济效益评估与风险管理方法研究探索考核试卷
- 生物质燃气的资源分布与利用潜力考核试卷
- 擦地拖把的类型和清洁方法考核试卷
- 金属表面处理技术对包装设备的影响与改进考核试卷
- 构建企业教育培训的工作满意度调查考核试卷
- 铁矿市场的市场需求与剩余产能考核试卷
- 铜矿储量评估与资源管理考核试卷
- 燃油自动加油设备相关行业投资方案
- CJT 192-2017 内衬不锈钢复合钢管
- 2024男女双方自愿离婚协议书
- TDT 1015.2-2024 地籍数据库 第2部分:自然资源(正式版)
- 窗帘售后服务协议
- 工作室加盟合作合同
- 《国有企业管理人员处分条例》学习解读课件
- 大量收购青苗姜合同
- 2024年中国建筑科学研究院限公司校园招聘【重点基础提升】模拟试题(共500题)附带答案详解
- 2024年农业农村知识考试必背复习题库(浓缩500题)
- 数字资源管理规章制度
- 缺血性脑卒中全流程规范化管理
评论
0/150
提交评论