《基于Selenium Python的自动化测试框架的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Selenium Python的自动化测试框架的设计与实现.doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘要随着互联网行业的快速发展,敏捷开发快速迭代的性质。传统软件测试的技术和方式并不完全适用于如今的Web系统的测试,对于企业引进自动化测试是非常必要的。目前,市场上已经有许多自动化测试工具和框架。如何构建一套适合自我测试的工具或框架,满足实际需求的自动化测试框架是每个研究自动化测试或自动化测试的工作者需要考虑和解决的问题。本文主要是利用软件测试知识、自动化测试相关教程和自动化测试框架理论,在结合对当前市场上流行的自动化测试工具的分析结果,使用高效、简洁、灵活的Python语言去实现一款基于Selenium+Python的自动化测试框架,该框架的测试对象主要是功能测试。在使用该测试框架过程中,需
2、要提高测试脚本的维护性、复用性和扩展性,有利于实现减少测试成本的消耗、提高测试执行的效率和保证软件产品的质量。关键词: 自动化测试 测试框架 Selenium框架 Python脚本AbstractWith With the agile development of the Internet industry. Nowadays, traditional software testing techniques and methods are not fully applicable to Web system testing, so it is very necessary for enterp
3、rises to introduce automated testing. At present, there are a lot of automated testing tools and shell frame in the market. How to build a set of self-test means or shell frame to meet the physical demands of automated testing framework is a problem that every researcher of automated testing or test
4、 automation needs to consider and solve. Thispapermainlyusestheknowledgeofsoftwaretesting,relatedcoursesofautomatictestingandthetheoryofautomatictestingframework.Combiningwiththeanalysisresultsofthepopularautomatictestingtoolsinthecurrentmarket,itusestheefficient,conciseandflexiblePythonlanguagetore
5、alizeanautomatictestingframeworkbasedonselenium+python.Thetestingobjectofthisframeworkismainlyfunctiontesting.In using the test framework at this process, we need to improve the maintainability, reusability and augmentability of test scripts, which is instrumental in reducing the consumption of test
6、 costs, improving the efficiency of test execution and ensuring the quality of software products. Key words: Automatic Test Framework Selenium Framework Python Script目 录第一章 绪论11.1 研究背景及意义11.2 国内外研究现状11.3 研究目标与内容21.4 本文结构31.5 本章小结3第二章 自动化测试技术研究42.1 软件自动化测试概念研究42.1.1 自动化测试定义42.1.2 自动化测试过程52.1.3 自动化测试框
7、架分类62.2 软件自动化测试框架研究72.2.1 主流自动化测试框架研究72.2.2 自动化测试框架设计原则研究72.3 软件自动化测试工具研究82.3.1 自动化测试工具分类研究82.3.2 Selenium工具研究92.3.3 Selenium WebDriver工具研究92.4 Python语言特点介绍102.5 本章小结10第三章 自动化测试框架需求分析113.1 测试框架功能需求分析113.1.1 测试用例管理模块测试需求分析113.1.2 测试业务模块需求分析113.1.3 数据模块需求分析123.1.4 日志模块需求分析123.1.5 测试报告模块需求分析123.2 测试框架非
8、功能需求分析123.3 本章小结13第四章 自动化测试框架设计144.1 测试框架的整体架构144.2 测试业务模块设计144.2.1 公共类封装144.2.2 各个页面类封装154.2.3 用例管理模块设计154.3 数据模块设计164.4 日志模块设计164.4.1 截图164.4.2 自定义日志服务和日志输出164.5 测试报告模块设计174.5.1 生成测试报告174.5.2 发送测试报告174.6 本章小结17第五章 自动化测试框架实现185.1 开发工具185.2 测试框架方案实现185.3 测试业务模块实现195.3.1 公共类封装195.3.2 页面类封装235.3.3 测试用
9、例管理模块实现245.4 数据模块实现255.5 日志模块实现265.5.1 截图265.5.2 自定义日志服务265.6 测试报告模块实现285.7 本章小结28第六章 应用实践296.1 搭建测试环境296.2 测试执行296.3 测试报告306.4 本章小结31第七章 总结与展望327.1 总结327.2后续研究展望327.3 本章小结32参 考 文 献33致谢34图表目录图 2-1 自动化测试基本流程5表 2-1 用于黑盒测试的自动化工具8表 2-2 用于白盒测试的自动化工具8表 2-3 用于管理测试过程的管理工具8图 2-2 Selenium - RC的原理9图 2-3 Seleni
10、um工作基本原理10图 3-1 测试框架功能需求分析11图 4-1 测试框架的整体结构14图 4-2 公共类封装15图 4-3 Testcase结构16表 5-1 开发环境及工具18图 5-1 测试框架结构19图 5-2 页面基本操作封装20图 5-3 页面元素定位及基本操作封装21表 5-2 八大元素定位21图 5-4 页面基本操作和信息获取封装22图 5-5 浏览器封装22图 5-6 页面类封装24图 5-7 测试用例脚本结构24图 5-8 登录页面的测试用例脚本具体实现25图 5-9 登录页面的测试用例输入数据25图 5-10 截图功能封装26图 5-11 日志类封装27图 5-12 调
11、用第三方库生成测试报告28图 6-1 正确用例验证登录29图 6-2 错误用例验证登录30图 6-3 测试报告30图 6-4 测试报告详情展示31广东东软学院本科生毕业设计(论文)第一章 绪论1.1 研究背景及意义随着软件行业的发展,公司是越来越重视测试部门的发展,这就使得测试工作者更加的需要实力,所有对于自动化测试这一领域是一定需要涉及的,不光如此,自动化测试其本身也是很有价值的。引入自动测试可以在不同程度上提高整个项目的测试效率,与手工测试一起保证软件产品的高质量。身处这个互联网行业发展迅速的时代,对测试人员来说,随着技术的不断更新,是需要不断提升个人的核心竞争力,以期待符合企业用人需求和
12、对自动化、性能、接口测试的硬性要求,以及对编码、数据库、服务器等综合应用需求。总的来说,于这个时代软件、互联网行业的工作者来说,特别是测试工作者,对于自动化测试的学习和运用是一个提升能力的途径。现如今可以辅助进行自动化测试的工具有很多,有商业化的,有开源性质的。其中Selenium就属于开源的,可以很好的用于学习。自动化测试在一个版本周期比较长且主要功能业务改变的可能性不大的项目中是非常有存在意义的。在这样的项目中,首先,枯燥、重复的手工操作可以进行脚本化,用于避免人为因素影响测试的进展及质量,可以解放部分时间。其次,对于一些软件,比如其功能比较全面、整体框架比较稳定,进行新版本发布时,这些软
13、件的整体页面及其整体功能变化不大。类似这样的软件迭代就比较适合用自动化测试框架进行测试,可以提高软件的可信度。再次,它可以更好地利用资源,如工作日的晚上和每周的周末,可以用自动化测试来代替人工测试,使公司的资源可以被充分利用起来。最后,在版本快速迭代的过程中,自动化测试的目的是为了保证产品的质量,而不是发现更多的Bug,多数的Bug还是需要手工测试才会暴露出来。 本毕业论文主要是利用软件测试知识、自动化测试相关教程和自动化测试框架理论,在结合对当前市场上流行的自动化测试工具的分析结果,使用高效、简洁、灵活的Python语言去实现一款基于Selenium+Python的自动化测试框架,框架以功能
14、测试为主。在使用该测试框架过程中,需要提高测试脚本的维护性、复用性和扩展性,有利于实现减少测试成本的消耗、提高测试效率和执行速度和保证其测试的产品的质量。1.2 国内外研究现状本文研究基于Selenium+Python的自动化测试框架,在此也段落分别介绍Selenium、Python以及自动化测试的现今的发展及其历史起源。Selenium是ThoughtWorks测试团队开发的。最初,它只是一个名为JavaScript runner的简单测试工具,由Jason Huggins在2004年编写。在后来的一系列发展中,逐渐成为了现在这样的一个开源、免费、独立的自动化测试工具。出色的多语言开发特性、
15、跨平台、跨浏览器的工作兼容性使得Selenium获得了许多研发团队的青睐1。1991年,出现python编译器。自从Python编译器出现以来,Python已经有了核心数据类型,如类、函数、异常处理机制、表、字典和基于模块的扩展系统。Python的发展主要由Guido和他的团队以及社区进行推动的。在Python 2.0版本之后,Python的开发方法是完全开源的。到现在,Python已经拥有了一个稳定的框架。Python是一种编程语言,它围绕对象组织代码,支持多种编程模式,并自动回收内存。Python的标准库 (Battery Included)非常强大和稳定。正因为如此,Python已经开始
16、扩展第三方包。Python一直是一种美丽、清晰、简单的语言,因而被广泛使用。第一代自动化测试通过硬件记录键盘输入,然后回放。其测试脚本的维护是非常非常不容易的。第二代自动化测试已经从硬件转换为通过软件录制/播放生成自动化的测试脚本,同时增加了检查点功能对软件进行自动化测试是否正确进行验证,自动化测试的整体范围比前身的范围要扩大了很多2。第三代开始逐渐被称为测试框架,其功能是将脚本进行抽象化,使理解不了测试脚本源代码、完全不会编写测试脚本的人也会使用该工具来完成测试。第四代Mercury Business Process Testing:关注的是业务需求。1.3 研究目标与内容本文利用所学的软件
17、测试基础知识、自动化测试相关教程和自动化测试框架理论,在综合分析当前市场流行的自动化测试工具,实现一个基于Selenium+Python的自动化测试框架,该框架侧重于功能测试。在使用过程中,有必要提高测试脚本的可维护性、可重用性和可扩展性,从而降低自动化测试的成本,提高自动化测试的测试执行效率,以到达保证软件的整体质量的目的。本篇论文的主要研究内容如下:(1)研究和分析软件测试的基础知识、自动化测试的相关技术和自动化测试框架技术。本文分析了当前市场上流行的自动化测试工具,介绍了Selenium自动化测试系列工具及其特点,分析了Selenium自动化测试的工作原理和实现机制。(2)结合测试理论与
18、实际测试需求,分析并定义基于Selenium+Python的自动化测试框架的功能和非功能需求。(3)根据分析出来的需求点,设计和实现基于Selenium+Python的易于维护、易于扩展、可复用的自动化测试框架,以实现Web应用程序功能的自动化测试。(4)应用与实践。以校友邦为测试对象,设计一些测试用例,通过实现的框架进行脚本执行,并对自动化测试生成的测试结果报告进行分析。1.4 本文结构本毕业论文章节结构及相应章节内容展示:第一章 绪论:对本毕业论文的研究背景及意义、国内外自动化测试相关研究现状以及论文的整体结构进行阐述。第二章 自动化测试相关技术研究:对自动化测试的理论、过程、框架和工具进
19、行相关研究。第三章 自动化测试框架需求分析:对测试框架的功能和非功能需求这两方面进行分析和叙述。第四章 自动化测试框架设计:对基于Selenium+Python的自动化测试框架的总体架构进行设计,然后对框架涉及的所有功能和需要用到的测试输入数据进行设计。第五章 自动化测试框架实现:实现基于Selenium+Python的自动化测试框架,包括开发环境的搭建以及各个功能和数据的具体实现。第六章 应用实践:介绍基于Selenium+Python的自动化测试框架在真实项目中的运用,以及对测试结果报告进行简要分析。第七章 总结与展望:对实现的测试框架其成果进行总结,以及对未来的展望。1.5 本章小结本章
20、是对自动化测试的研究背景和意义进行一个简要的概述说明,对本课题的研究内容和自动化测试在国内外的现状进行一个总的综述。同时对本课题进行一个纲要介绍。第二章 自动化测试技术研究2.1 软件自动化测试概念研究2.1.1 自动化测试定义自动化测试(Automated Test)是把机器执行测试代替手工测试的一种过程,即通过执行编写的自动化程序脚本来模拟手工测试的过程2。根据需要,自动化测试可以包括所有的测试阶段,支持跨平台,并且与进程没有关系。通常情况下,进行软件测试,都是先进行理解需求,在进行需求评审,评审通过后,开始编写自动化测试的整体测试计划、和用于自动化测试的测试用例编写,然后在通过自动化测试
21、用例评审会议,评审会议通过后,测试人员才会正式的进行测试,前面的步骤只是介入测试和对正式执行测试的一些准备工作。当进入执行测试阶段时,测试人员需要根据测试用例对被测系统进行测试,测试完成后,将分析测试结果并将其与预期结果进行比较,如果测试用例与预期相同,则判断为通过,需要将其按照正常的Bug提交流程提交到项目管理工具中,方便于项目开发人员进行Bug的修复。在这个样的手工测试过程中是一个耗时耗力的工作,如此操作虽然对测试的质量有很高的保证,但它同时对人力、物力以及一些资源造成了浪费。因此,为了节省各种资源(包括人力、物力、时间、硬件),提高测试执行效率和测试的质量,以及不脱轨于国家计算机信息化的
22、发展,紧跟软件的迭代速度,自动化测试注入软件行业是一个必然事件。自动化测试现在运用得比较多的三个地方是单元测试、接口测试,界面测试。单元自动化测试是软件的数据处理层,是系统中可检测和验证的最小模块,在很大程度上,它将依赖于一些自动化测试的基本框架,例如JUnit,TestNG,Python的Unittest等;接口自动化测试是各种软件的另一个基本业务逻辑层,它直接用于全面检查和验证各种软件模块的初始化参数和返回数据,以及与系统和服务之间的数据交换。常用的接口测试工具包括Postman(非常简单,操作简单,免费享受)、JMeter(开源社区,基本功能非常强大,免费享受)、LoadRunner(付
23、费购买)等;UI自动化测试是对各种软件应用程序界面层进行测试。测试中的其他大部分工作都相对集中在这里,因为用户基本都是与这一层进行交互,常见的测试工具有Robot framework、Selenium、Appium等等工具。2.1.2 自动化测试过程在当下,进行一个项目的开发,测试与开发是并行的,都会同时介入项目,只是侧重点不一致。自动化测试也是测试,从本质上来进与手工测试没什么不同,都是用于软件测试质量保证,只不过自动化技术的测试是利用自动化测试技术相关工具和代码自动构造输入,并自动检查结果的连续输出是否可以满足期望,手动测试要求执行测试的人员自己执行所有测试。利用自动化技术进行自动化测试需
24、要制定最终测试计划,深入分析测试的实际需求,并对用户需求进行评审,然后设计用于测试人员手动进行测试的测试用例,在其中挑选出一些手工测试用例转换为自动化测试用例,完成用例评审,根据需求,选取相应的工具进行搭建自动化测试的框架,框架搭建完毕就可以开始编写自动化测试过程中需要的脚本,在使用的测试脚本都编写完成并成功调试通过后,进行脚本执行然后生成自动化测试结果分析报告,并根据最终测试正式报告对最终测试的最终结果进行分析,并完整记录测试中的核心问题,追踪Bug,进行回归测试、执行测试脚本,根据实际情况结束测试,如图2-1。这基本就是一个完整的自动化测试完成流程。当然,用于执行自动化的自动化测试脚本是需
25、要持续改进和优化的,这样做的目的是希望提高自动化测试脚本的可维护性、复用性和扩展性,有利于实现减少测试成本的消耗、提高测试执行的效率和保证软件质量的目的。图 2-1 自动化测试基本流程(1)测试计划制定测试之前,制定一个总体方案(测试计划),在整个计划中必须写清楚测试的对象和目的、自动化测试的具体测试内容和具体会用到的测试方法、测试进度的详细计划和安排、测试所需的人力物力准备等。一个好的测试计划可以很好的指导整个测试过程。(2)对进行自动化测试进行需求分析当被测系统满足其整体需求的变化不会很频繁,项目周期持续时间长、有生命力,最终的测试数据是全面的,并且用于自动化测试的测试用例和脚本的可重用性
26、和可移植性非常强,并且被测试系统开发具有标准化和可测试性。当公司本身具有自动化设备最终测试的相关前提条件和高质量资源时,此时就可以分析自动化测试的内容以及更多需求。在此过程中,有必要定义自动测试的覆盖范围,测试用例和测试要使用的数据,并将其整理成文档,方便后续使用。(3)设计用于自动化测试的用例深入分析需求,然后设计可用的用例,设计用例需要注意其设计的测试用例是否覆盖了分析出来的所有的需求点,如若无误,则可以将其整理为测试用例文档。当然,并不是所有设计出来的用例都适合用于自动化测试的事实,有必要从详细设计的用例中选择适合于自动化测试的用例,并将其转化为自动化测试用例脚本。在条件允许的情况下,建
27、议把一些参数信息(如:登录、注册界面的用户、密码等数据)独立出来,形成一份测试数据,写入Excel,并将其放到实现的自动化测试框架中去。(4)测试框架的搭建及测试脚本编写自动化测试框架类似与软件架构,是需要明确在使用此框架使需要用到哪些文件、哪些结构,以及调用这些文件或结构的过程。在编写脚本的过程中,将公共类进行封装,分别进行调用。如果有需要,可以对一些数据进行参数化。在脚本编写完毕后,是需要其编写的脚本进行反复不断的调试,避免框架本身的问题造成测试结果的失误,对于调试,一定要调试到脚本运行正常不会出错为止。在脚本的编写以及对其进行命名时都需要注意其是否要符合规范,以方便进行统一的管理和维护。
28、(5)运行脚本,即执行测试在此过程中会生成日志,也会有相应的问题记录截图和测试报告生成。需要分析其结果,以便定位失败用例和发现缺陷。在此过程中发现的Bug需要提交到相应的缺陷管理工具中,方便对Bug的跟踪。待开发人员修复完成后,需要进行回归测试,如若通过则关闭,否则将会继续修改。2.1.3 自动化测试框架分类应对于不同测试需求以及测试条件的测试框架也明显不同,不过大多数框架都是由基础模块、执行模块、管理模块和统计模块中的一个或多个组合而成3,4,9。下面具体介绍几个常见的测试框架类型。(1)模块化测试框架。其优点是将测试脚本按照应用程序的功能模块进行封装。当需要修改某个模块的时候,不会影响其他
29、模块,提高脚本的独立性和可维护性。各个模块可以进行组装或者被其他框架引用,提高脚本的复用性和拓展性。(2)关键字驱动框架。自身存在一个底层的关键字处理逻辑,用户通过输入合法的关键字就可以驱动测试任务的执行,是后期维护工作最小的自动化测试框架。但此框架很难进行调试,因为它使用标准的外部数据源(如Excel数据表)读取信息脚本中的关键字。(3)测试库框架。测试库驱动是实现脚本和测试数据有内在逻辑的分离5,这种分离与模块化框架的分离不同,它是按预设在工程中的许多个性方法并引用这些方法以完成测试任务的框架。优点是脚本复用率高、后期维护量小。(4)数据驱动框架。数据驱动框架的基本思想是将最终测试数据与最
30、终测试脚本分离,将数据文件放在外部的储存空间中,需要时再引入即可。其优点是数据与脚本是分离的其可维护性提高。(5)混合测试框架。理论上,上述的框架都可以单独运行测试,但在现实的中问题多是复杂而多样的,单个测试框架完成测试很难覆盖全面,所以将以上四种测试框架实行按需组合形成混合框架,是比较完美的解决措施。混合测试框架虽然其维护工作量大于单个框架,但其实用性也是最高的。2.2 软件自动化测试框架研究2.2.1 主流自动化测试框架研究Robot框架是基于Python语言结构的开源项目。它是关键字驱动的,有许多的测试库。使用Selenium WebDriver时,它支持系统中Web应用程序的自动化测试
31、;当使用Appnium时,它支持移动应用测试(如Android),另外也支持数据库测试。以及拥有许多的API外部设备接口,支持基本功能扩展。Tellurium是用于web应用程序的自动化测试框架。它是在Selenium的基础上搭建成立的,但它与Selenium还是存在很多的不同,例如,selenium有两种模式:录制模式和回放模式,而Tellurium不是录制和回放模式,而是侧重于网页模块。QTP是用于系统自动化测试。 QTP非常适合需要重复测试的测试模块。它最常用于回归测试和版本升级为其他版本的最终测试。 QTP测试之前,需要还考虑怎样去测试需要测试的软件,比如测试要用的数据、函数和需要哪些
32、操作都需要提前考虑清楚。PhoenixAutotest是基于用Python+Java编写的自动化测试框架。它涵盖了Web UI自动化测试所需的大多数基本功能封装。2.2.2 自动化测试框架设计原则研究(1)最终测试框架和被测试项目需要相互独立。大部分企业只有开发一个测试框架的精力,而被测试的项目则是多种多样的,这样就只能要求测试框架有能力去测试这些项目中的共同部分,而其他部分采用人工检测5。(2)编写测试框架脚本时,应遵守开发代码所要求的可靠性、可扩展性、可维护性、健壮性等原则,特别注意的是尽量使各个部分都相对独立方便后期修改和维护。(3)测试脚本语言与框架编程语言相适应原则。脚本测试语言需要
33、由测试项目的具体特征确定,这样才能避免测试项目迁移的导致大量需重写的麻烦。2.3 软件自动化测试工具研究2.3.1 自动化测试工具分类研究随着电子科技的不断进步人们对软件自动化检测的需求越来越大,各类自动化测试工具应运而生,尽管功能与种类繁多但根据测试方法的不同可分为黑盒自动化测试工具、白盒自动化测试工具和测试管理工具6。自动化测试的工具,大多数基本来自于Mercury Interactive (MI) 、Segue、IBM/Rational、Compuware和Empirix等公司,其中占主流的自动化测试软件来至于MI公司。常见的用于黑盒测试的自动化测试工具,如表2-1所示。表 2-1 用于
34、黑盒测试的自动化工具工具支持语言简介Robot frameworkPython/Java开源软件,支持关键字驱动,可以实现验收测试以及驱动开发和在短时间内完成关键字以及测试用例的编写,对测试自动化人员的编程能力要求较高。WinRunnerJava其主要功能是用于检验被测系统或软件程序是否如期运行。LoadRunnerJava该工具主要是通过模拟实际用户在系统使用过程中的操作行为和对实时性能进行监测,从而查找和发现问题出现位置和方式,并预测系统行为进行系统性能优化。Quick Test Professional VB该工具适合功能、回归测试,可以根据录播进行自动捕获、验证和重放用户的交互行为,有
35、助于提高自动化开发效率Selenium支持多种语言开源软件,可扩展性强,比较灵活,支持各种语言,可以集成到很多的开发工具中。几种用于白盒测试的自动化测试工具,如表2-2所示。表 2-2 用于白盒测试的自动化工具工具支持语言简介Jtest代码分析和动态类、组件测试C+ Test代码分析和动态测试SmartCheckVB函数调用次数,所占比例统计以及稳定性跟踪CodeReviewVB自动源代码分析工具常见的用于管理测试过程的管理工具,如表2-3所示。表 2-3 用于管理测试过程的管理工具工具公司简介TeamManagerRational对测试的需求、测试的计划、测试的用例和测试的实施过程进行管理、
36、同时可以对缺陷进行跟踪处理。TrackRecordCompuwareTestDirectorMercury InteractiveWebLoadRadview用于性能测试TestBytes针对数据库测试本课题研究的自动化测试框架主要是自动化功能测试即黑盒测试的,使用Selenium用于自动化测试,其优点有,完全开源、免费,具有很强的可扩展性,相对的灵活性,支持多种语言编程和改写,可以集成到多数开发工具中去。2.3.2 Selenium工具研究Selenium是一款应用广泛的免费开源自动化测试工具并且能够使用多种语言进行编写,其主要由IDE、Grid、RC三大基本组件构成7。其中RC是Selen
37、ium的核心组成部分,是可以为测试脚本访问应用的代理服务器,具体原理如图2-2所示。不过在最新的Selenium 3.0中 WebDriver已经能够代替其工作;IDE是对脚本进行初步构建,可以通过录制来进行简单的脚本生成、并可以对生成的脚本代码执行简单的脚本编辑和灵活的操作步骤来回放其他功能;Grid测试辅助工具,可以可分布式执行测试。图 2-2 Selenium - RC的原理2.3.3 Selenium WebDriver工具研究Selenium WedDriver是Selenium中重要的组件,该工具新发掘了一些全新的功能,比如更具组织性的API,在一定程度摆脱了是Selenium1的
38、局限性,是Selenium升级完善象征和代表,拥有更为简洁的编程接口8。WebDriver的优点:WebDriver使用HtmlUnit时,无需打开浏览器就可以进行测试;基于浏览器的内部接口实现自动化测试,模拟真实用户使用情况;提供合理简洁的面向对象API,提高了自动化测试脚本的编写效率9。在使用过程中不需要进行单独启动Selenium Server。它可以支持不同类型的浏览器及不同版本的浏览器,具有非常好的兼容性。图 2-3 Selenium工作基本原理2.4 Python语言特点介绍Python是一种开源的自由语言,它代表了简单性的思想。python和大多数主流高级编程语言(例如C和Jav
39、a)都是面向对象的,而且python在编程时,不用去考虑底层细节,用python写的代码程序不需要编译就可以直接运行;python有很强大的标准库,比如文档生成、电子邮件等,Python的另一个优点是使用强制缩进使代码可读。2.5 本章小结这一章主要对自动化测试的相关技术进行了概述,首先是对软件自动化的相关知识进行普及,之后对自动化测试框架和其设计原则进行了阐述说明,最后对自动化测试工具的大体分类进行了描述,并介绍了有关于本选题要设计的Selenum工具的相关知识和Python语言的特点。第三章 自动化测试框架需求分析3.1 测试框架功能需求分析该框架的功能需求点包括以下七点:自动执行编写的测
40、试用例,不需要人为干预;执行测试用例需要用到的数据设计为独立于框架以外,方便对测试数据的修改;执行测试用例的过程中需要有日志和截图进行记录脚本执行轨迹和结果,便于对错误进行定位;各个页面的测试脚本相互独立,不可以去影响其他页面的用例执行;测试执行完毕需要将生成的测试报告发给指定的人员。如图3-1所示。图 3-1 测试框架功能需求分析3.1.1 测试用例管理模块测试需求分析在现行自动化技术测试的基本框架中,测试用例是脚本编写的主要部分。另外,由于其产品的不断迭代,测试用例将会同步更新或添加。因此,在设计测试用例的脚本时,必须考虑对上一阶段和下一阶段的良好维护。对于自动化测试的测试案例,可以考虑以
41、下几点来进行编写:(1)通常,需要选择需要重复执行并且执行过程耗时的测试用例。(2)对于一些逻辑性更强、更复杂、更难实现的测试用例,我们可以选择不用自动化测试来实现它们。而是手动测试可能更快、更方便。(3)对于页面的各公共控件的边缘用例也可以暂时不用自动化测试去实现。3.1.2 测试业务模块需求分析Web自动化测试是需要打开浏览器的,为了使测试框架便于维护,不去大面积的修改代码,这个小部分需要封装浏览器模块的功能,力求实现浏览器在打开和关闭同一状态后的通用方法,使后面每条测试脚本就可以直接调用打开和关闭浏览器方法,脚本只需要专注具体的测试业务逻辑的实现即可。在测试过程中会用到很多如截图方法、元
42、素定位方法、元素通用操作方法以及警示框处理方法等公共的测试方法。因此,在测试框架的构建中常常需要封装一些常用的公共方法,只要是软件页面的一些常用操作都可以选择写在该页面基类中,这个页面基类相对于一个公共的函数库,存放着常用的公共方法,后面有需要的地方直接调用即可。本文内容研究中的测试大框架需要封装8个定位元素的方法和一种截图方法,常用的鼠标点击方法,处理警告框的方法,Web浏览器的前进和后退方法,一种隐式等待时间的方法、关闭当前窗口和切换到新窗口的方法、输入框和选择框的方法等一些常用的功能函数或者方法。3.1.3 数据模块需求分析Selenium 作为一个可以跟随编写者意愿自主配置的自动化测试
43、框架,开始自动化测试的第一个步骤就是根据特定自动化测试需求对各种输入数据进行配置,这是一个设计框架能够基本运行的前提,也是其后续测试脚本运行的重要基础。输入数据一般可分为测试框架的基本操作所需的综合数据和基于框架的测试所需的最终数据两大类。框架完整的能够处理这些用户输入数据,并在此基础上,可以触发启动整个框架并运行它进行完整的测试。因此,配置最终测试数据是整个框架的基本功能。 3.1.4 日志模块需求分析当这个框架开始运行时,它将能够输出日志。所有的日志都是检查程序整体运行并发现错误的最重要手段。对于系统的自动测试,需要知道自动执行这个测试的过程、执行情况和执行错误的处理情况,以便测试人员要能
44、够快速地定位到脚本具体失败的位置,排查出失败的原因是脚本Bug还是应用的Bug。所以需要在程序的关键位置或者步骤节点下设置日志输出。因此,在自动化测试框架中还需要提前封装一个日志类的功能模块,便于输出日志。3.1.5 测试报告模块需求分析当所有的测试用例都执行完毕之后,会自动生成自动化测试结果报告,并自动地将正式测试结果报告发送给相关人员,测试用例的执行结果以表格的形式在自动化测试报告中展示,在报告中可以对测试结果到达一目了然的效果。3.2 测试框架非功能需求分析根据框架的特点和实现自动测试结果的目的,测试框架的潜在非功能需求如下:(1)有效性确保系统的自动化测试能够正常、连续和有效地通过,在
45、测试过程中能准确有效的找出被测系统的真实缺陷,尽量避免非正常错误。(2)稳定性稳定性是一个软件的必要因素,框架是否稳定将决定其是否可以正常使用,并到达自动化测试的最终目的。(3)可扩展性自动测试框架设计原则上应与待测系统分离,使其用途更广泛。但是在现实情况中,对于要测试的不同系统,在自动测试实现过程中必须有特定内容,因此为了满足不同项目的不同测试需求,可扩展性在自动化技术测试的基本框架中是必不可少的。(4)可维护性一般来说,用自动化测试框架进行测试主要都是将其运用需要进行回归测试的软件中。因为一个系统基本都不会只有一期项目,而是会通过一期、二期甚至更多期项目来不断增加和完善其系统功能,一个测试
46、脚本是需要进行多次运行的,而随着自动化测试脚本的不断增加,新版本的回归测试量会渐增,这使得自动化测试框架的负载不断变大,因此框架必须是可维护的,才能保持长期的可用性9。3.3 本章小结从实现自动化测试基本框架的短期目标出发,结合Selenium测试工具的突出特点,分析了实现框架需要定义的功能需求和非功能需求,并对这个框架的需求有一个整体的梳理。该框架应支持数据配置,测试环境的准备以及测试集的动态性构建,最终测试的执行,测试结果报告的自动生成以及对测试执行脚本类库的支持。 第四章 自动化测试框架设计4.1 测试框架的整体架构通过具体的分析这个框架的实际需求,对整个框架进行一个具体的设计,对实现每个需求点都做一个对应的设计,为后期的测试框架实现提供一个完整清晰的思路逻辑。设计的框架结构中对每个需要实现的需求点都提供了进一步的实现步骤。具体的自动化测试框架其整体架构设计,如图4-1所示。图 4-1 测试框架的整体结构4.2 测试业务模块设计4.2.1 公共类封装在公共类中封装通用的操作方法,比如封装8个定位元素的方法和一种截图方法,常用的鼠标点击方法,处理警告框的方法,Web浏览器的前进和后退方法,一种隐式等待时间的方法、关闭