《基于Python+Selenium的web自动化测试框架的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于Python+Selenium的web自动化测试框架的设计与实现.doc(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要最近这些年来,随着科技与计算机行业的发展,软件测试的重要性越来越突出,传统方式的手工测试主要根据测试用例来手动执行测试,测试用例没有覆盖到的地方则采用错误猜测的方式去弥补,这样大量的重复的劳动容易产生疲劳,很容易导致错误的产生和测试的盲点。使用自动化测试可以测试UI界面的布局和排版、大小等等,还可以进行兼容性测试、稳定性测试等。在进行工作的时候,能够有效提高软件测试的效率和灵活性,减短软件开发的周期;节约测试的花费,也可以使测试用例更加易于维护。本文主要研究的是软件测试的理论基础和相关的实现技术,阐述了软件自动化测试框架的关键点,设计并且实现了一个基于python+selenium的we
2、b自动化测试框架,并在此自动化测试框架的基础上实现了简单的自动化测试功能。关键词:web自动化测试 selenium+python 自动化测试框架AbstractIn recent years, with the development of technology and computer industry, software testing has becoming more and more prominent. The traditional manual testing is mainly based on test cases to manually perform tests, a
3、nd the places not covered by test cases are made up by the way of error guessing, so a lot of repeated labor is prone to fatigue, which is easy to lead to the generation and testing of errors The blind spot of.Automatic testing can be used to test the layout, layout, size, etc. of UI interface, as w
4、ell as compatibility test and stability test. In the process of work, it can effectively improve the efficiency and flexibility of software testing, reduce the cycle of software development; save the cost of testing, but also make the test cases easier to maintain;.This paper mainly studies the theo
5、retical basis and related key technologies of software testing, and expounds the key points of software automated testing framework, including software automated testing life cycle, how to build high-quality automated testing process, etc. Design and implement a web automation testing framework base
6、d on Python + selenium, and realize the automation testing function based on this framework.Keywords: Web automated testing Selenium+ Python Automated testing framework 目录第一章 绪论11.1课题研究背景11.2 国内外发展现状与发展过程11.2.1 国内发展历史11.2.2 国外研究现状21.3 本文的主要内容和实现目标21.4 论文结构2第二章 传统软件测试概述42.1软件测试概述42.1.1 软件测试的定义42.1.2
7、软件测试的分类42.1.3 软件测试的过程模型52.1.4 软件测试相关流程和文档62.2 软件自动化测试相关理论72.2.1 自动化测试的定义72.2.2 自动化测试的对象82.2.3 自动化测试框架的分类82.2.4 为什么要进行自动化测试102.3 Web自动化测试概述102.3.1 Web应用的测试内容10第三章 Web自动化测试框架需求分析123.1 自动化测试框架功能需求分析123.1.1 自动化框架支持的测试类型123.1.2自动化框架支持的执行策略133.2 自动化测试框架内部逻辑需求分析143.3 测试脚本集成开发环境153.4 构建工具的选择15第四章 Web自动化测试框架
8、的设计164.1 自动化测试框架的整体架构164.2 自动化测试框架服务层设计164.3 自动化测试框架执行层设计184.4 测试脚本分层架构设计22第五章 Web自动化测试框架的实现245.1 自动化测试脚本封层架构的实现255.1.1 Utility层的实现265.1.2 Page层的实现295.1.3 Test层的实现315.1.4 UI层的实现315.1.5 Testsuit层的实现325.2 提供的执行策略335.3 自动化测试框架的实现345.4辅助功能355.5 测试数据存储365.6 测试结果输出365.7 Selenium对浏览器的支持365.8 自动化测试脚本开发遵循的原则
9、37第六章 web自动化测试框架的应用实例396.1 百度搜索测试用例396.1.1 百度搜索用例的设计396.1.2 测试脚本的创建396.2 百度登录测试用例406.2.1 百度搜索用例的设计406.2.2 测试脚本的创建406.3维普查看个人信息测试用例426.3.1 维普查看个人信息用例的设计426.3.1 测试脚本的创建426.4 运行测试用例及查看测试报告45第七章 总结48参考文献49致谢50广东东软学院本科生毕业设计(论文)第一章 绪论1.1课题研究背景随着互联网技术的迅猛发展,软 件 开 发 过 程 中,软件测试是不可或缺的一部分 ,也是能够保证软件质量的一种重要方式,进行软
10、件测试,既能够确保了软件的质量,也降低了软件后期维护的成本。进 行 自动化测试能够在很大程度上杜绝人为工作出现的失误和降低工作的难度,使工作流程更加精简。不仅提高了工作的效率,还保证了质量的良好性,增加了软件的可用性和投资的效益。近年来,Firefox、Internet、Chrome等浏览器被很广泛的使用,传统的信息与数据库、财政、娱乐、教育等许多方面都开始使用和利用互联网,产生最大最长远的价值。Web具有非常强大的并发性,因为在很短的时间内,Web内的一个网页能够支持被成千上万的人去点击请求查看或者使用。但是随着用户的增加,Web应用程序日渐复杂的功能需求,Web系统中潜在的漏洞或者弊端也会
11、越来越多。所以,对于一个网站来说,拥有一套高效的、可管理的测试框架是必不可少的。传统的测试工作主要是使用手工进行测试用例的编写并一条一条的去执行用例。这种测试方式不仅工作量大,工作效率也低。繁琐、重复枯燥的手工测试会导致测试人员工作疲劳和工作质量下降,从而影响到软件的质量。因为需求变更而不得不进行的大量的重复手工测试是最常见的。使用自动化测试可以降低需求变更的时候的测试工作的成本以及减少工作量和提高测试的效率,也能使软件各能够更加满足用户的需求。而自动化测试框架在进行自动化测试工作的时候也是极其重要的。本文将以百度和维普网站的业务为例,在详细设计自动化测试框架之后,实现基于此框架的自动化测试功
12、能。1.2 国内外发展现状与发展过程1.2.1 国内发展历史软件相关的领域和行业越来越受到关注,在最近这几年也在你朝着越来越好的方向发展飞速,因为中国在这个领域起步和发展的比较晚,在这方面不如其他发达国家发展的好,但是,近年来中国在软件方面发展的越来越快,越来越好,在短视频这方面也有着领先的趋势。随着Web应用在政府、教育、教务、金融、娱乐等领域的广泛使用,人们愈发认识到Web应用的实用性和便捷性,随着软件质量要求的提高,必须要在经过严格的测试以后才能将软件正式的投入运营和使用,在计算机相关的行业里,软件测试发展的越来越快,软件测试方面的人才的需求也剧增。在国内,软件测试的发展还不是特别好,还
13、处于一个起步阶段的状态。但是软件测试的发展前景光明,随着软件市场的发展与扩大,软件测试这个岗位越来越重要,作为开发过程中不可或缺的软件测试的需求以及网站也开始增多。1.2.2 国外研究现状在国际上,软件测试是软件质量监控的一种方法,是一项非常重要并且不可或缺的工作任务,测试也是一个独立于其他工作的。在IBM、微软等大型系统软件公司,在较多重要的开发项目团里面,开发人员通常是测试人员的两倍甚至是四倍以上,比例相差非常的大。自动化测试技术也在快速的发展。许多自动化测试工具被开发出来。自动化测试系统正在朝着通越来越好、越来越智能化的方向高速稳定发展。1.3 本文的主要内容和实现目标本文主要是针对we
14、b应用,设计和实现一个能够支持UI功能测试、兼容性测试和稳定性测试的web自动化测试框架,并且能够生成自动化测试报告和自动发送测试集结果报告,提供一些比较实用的辅助功能。在进行测试工作的时候使用这个自动化测试框架,不仅能够使脚本更利于维护,而且能够使脚本的复用性得到提升。能够达到节省编写测试脚本的时间以及保证产品的质量得到目的。以下是本文的主要研究的对象和内容:(1)在功能和非功能方面分别对web自动化测试框架进行相关的需求分析。(2)针对本自动化测试框架,进行一个相关的整体框架的详细设计和分层的设计,本自动化测试框架的整个框架分别分成Utility、Page、Test、UI和TestSuit
15、这五层。(3)对webdriver基于selenium的底层接口进行二次封装,实现提高脚本的可维护和可复用性的目的。1.4 论文结构本论文的章节内容如下所示:第一章:绪论,这一章主要是进行一个关于课题的研究背景、国内的发展历史、国外的发展现状、本文主要说明的内容和实现的目标的简单的叙述说明。第二章:传 统 软 件 测 试概述,这一章主要 是 对 传 统 软 件 测试和自动化测试的定义、分 类 、 模 型 、 需要测试内容和为什么要进行自动化测试进行简单的介绍和说明。第三章:Web自动化测试框架需求分析,这一章主要是在功能和非功能方面对自动化测试框架进行一个需求分析,对构建测试框架的工具进行简单
16、的介绍说明,以及对框架的继承开发环境的简单介绍说明。第四章:Web自动化测试框架的设计,这一章主要是框架的分层设计进行一个详细的说明,以及对设计过程中需要注意的问题进行阐述。第五章:Web自动化测试框架的实现,这一章主要是介绍和说明了框架的结构是怎样的、框架实现的功能有哪些以及Selenium对浏览器的支持。第六章:Web自动化测试框架的应用,这一章主要是针对本框架编写几个简单的自动化测试实例,在框架下成功运行之后,对本自动化测试框架实现的效果进行一个展示。总结:总结主要是进行一个关于框架的实现成果与预期结果的思考以及总结,和对本框架不足的地方进行简单的说明以及对后续的发展进行说明。第二章 传
17、统软件测试概述2.1软件测试概述2.1.1 软件测试的定义如何能够提高软件的正确性、完整性以及质量使在软件测试过程中需要考虑和解决的问题。也就是说软件测试工作是去审核一种过程。或者比较测试结束之后得到的实际结果和预期结果的一种过程。软件测试是在规定的条件下去运行和操作程序,然后发现程序的错误。以此来测量待测试软件的质量,并且对这个软件程序是否能够满足软件设计的要求。软件测试工作的执行是为了发现错误,去检验程序或者产品是否能够达到用户的需和程序是否能够提高用户的使用体验。各种边界条件都是在提高软件应用程序的质量时,设计测试用例的时候应该要考虑到的。在一些比较特殊的情况下,还需要去制造极端和意外的
18、状态。根据二八原则可以知道, 百分之八十在测试过程中发现的bug一般都来自百分之二十的模块中。对于误差结果的确认过程,不可能去指定非常严格的测试计划。对于测试过程中产生的所有文档,都需要去妥善保存,以供查看。2.1.2 软件测试的分类软件测试可以根据测试过程中使用的方法或者测试的对象和测试实施的地方进行分类,常用的测试方法非常的多。包括单元测试、性能测试、手工和兼容性测试等。手工测试是属于比较原始的一种测试方法,需要由人工手动的被各个测试用例输入,然后测试的结果和机器的实际反映,需要一个一个的进行测试。虽然可以进行发散思维无既定结果的测试,但是执行的效率比较慢,量大易出错。自动化测试是有前提条
19、件的,需要在预先设定好的条件下去运行指定的系统或者程序,然后对运行得到的结果进行一个对比和评价。简单来说,自动化测试就是一个将手工测试行为转变成为机器去执行的一个过程。在自动化测试工作中,功能自动化测试占很大一部分。 图2-1 软件测试分类2.1.3 软件测试的过程模型(1)V模型这种模型是早期的测试模型,也是比较具有代表性的,在早期的开发模型中,大家总是认为在需求分析、概要设计、详细设计和编写脚本完成之后才可以进行软件测试工作。尽管整个项目的大部分时间都被测试工作占据,还是会有一些人认为测试工作的执行只适合在软件开发完成以后再去进行,并不任务测试工作也是软件开发的最主要的一个过程。通过V模型
20、,我们可以很清楚的知道从开发到测试的过程逻辑,并且可以很清晰的把测试的过程和软件的开发过程中各个不同的阶段相对应的关系都描述出来。V模型也不是比较比较完善的,也会具有一定的局限性,比如在V模型中,概要分析、软件概要设计、软件详细设计以和编写代码工作的完成是进行测试工作的前提,而不是把软件测试当做开发过程中一个重要的步骤。V模型主要是针对程序完成之后进行测试,对在需求分析阶段的问题不能早期发现,在以后的验收测试之前不太可能被发现。图2-2 软件测试的V模型(2)W模型在W模型中,把测试的过程当成是软件开发过程的核心部分,并且指出测试的对象不是唯一或者单一的,测试应该是伴随着开发一起的,并不是开发
21、工作完成之后才可以进行测试,而是完成一个部分的开发就可以开始进行对应部分的测试工作。同时进行测试和开发,这样就可以尽早的发现问题并提出相应的解决方案,W模型也具有一定的局限性, 早期的测试并没有在W模型中被表达出来,需求、设计和编码等过程在V模型和W模型中都被当成是软件开发中的过程。必须有上一环节已经顺利完成的相关指令或者提示,才能够继续执行下一环节的工作。 图2-3 软件测试的W模型2.1.4 软件测试相关流程和文档(1)测试流程软件测试的具体流程如下图2-4所示。图2-4 软件测试的流程(2)测试文档概述在软件测试的组成部分中,测试文档是非常重要的一个部分,进行测试工作的计划、测试过程中记
22、录的报告、测试发现问题的报告以及测试评估报告都是测试文档的主要包括的。软件的测试文档标准主要分:国 际 、国 家 和 行 业 标 准 ,企 业 和项 目 规范 。一般来说,编写测试文档的时候,用国际标准或者国内规范标准去作为测试文档的模板会比较好。测试工作人员建立具体项目的测试文档时,可以适当的对文档的格式进行修改,时文档更加符合项目的具体需求。(3)编写测试文档测试的对象、组织、任务计划、通过的标准、失败的标准、风险、时间分配等都是在测试计划文档里需要确定的。测试方案跟测试计划文档比较相似,但是测试方案跟测试计划文档不同的是,测试方案更加偏向去规划测试过程的技术因素。测试文档的编写过程需要非
23、常认真和细心的去对待,因为这是一项细致繁琐而且比较复杂的工作。一份好的测试文档可以为后续的测试工作提供保障,使得测试工作的完成更加顺利。所以在编写测试文档的时候,不仅需要知道测试的内容,还需要知道如何去测试,并对整个测试工作有一个大致的规划。测试文档主要包括的内容如下图2-5所示。图2-5 测试文档2.2 软件自动化测试相关理论2.2.1 自动化测试的定义在手工测试的基础上,并相对手工测试的概念而发展出来的自动化测试,指的是测试过程中无需人工干预,不是用手工进行软件测试,而是完全由测试人员预先设计好的计算机程序或者机器去进行测试工作。也就是说,通过执行用程序语言编制的自动化测试脚本去模拟手工测
24、试的擦操作步骤,在执行结束以后给出自动化测试的结果。这包含了所有的测试阶段和测试过程,它不仅能支持跨平台,而且它是独立于进程的。一般来说,测试人员在测试用例和评审完成之后按照测试用例中的描述去逐步进行测试工作,最后再对比实际的结果与实际的结果。这个是一个比较繁琐和耗时的测试过程,为了能够更加好的提高测试的效率、节省测试的花费和人力物力,就引进了自动化测试的概念以及技术。理论上,手工测试的所有流程都能够被自动化测试覆盖,但是并不是所有的项目都适合采用自动化测试去进行测试,也不是每一次都测试都进行自动化测试的。在进行自 动 化 测 试 的 时 候 ,需要考虑投资与产出的比较,一般来说,如果软件整体
25、已经比较成熟,在比较稳定的功能模块可以尝试进行自动化测试。随 着 自 动 化 测 试 的 发 展 ,不同类型的自动化测试也有不同发展。许多不一样的自动化测试工具被研发出来,使自动化测试工作可以更加顺利并且高效的展开。虽然自动化测试的好处有很多,但是也有弊端,比如在软件产品的功能不稳定的时候,需要花费很大在自动化测试脚本的维护方面,所以在自动化测试工作进行的早期阶段,测试效率不一定会比手工测试高,而且进行自动化测试时,程序无法像人工一样应对各种突发情况。因此,无论是进行自动测试还是人工测试,都需要去结合工程的实际情况。2.2.2 自动化测试的对象自动化测试的主要测试对象是像回归测试、性能测试、负
26、载测试等这些重复的工作。一般回归测试需要测试的项目都比其他测试的要多,需要花费非常多的时间。所以在没有充足的时间能够把自动化实施到整个回归测试中的时候,我们首先应该考虑实现自动延迟测试。开发自动测试的成本很高。如果只运行一次,就不太值得大家去投资和开发自动检测框架和系统。2.2.3 自动化测试框架的分类自动化测试框架,根据名字的意思来说,是可以应用自动化测试脚本的框架,自动化测试框架也是一种自动化测试工具,一般提供一个或者几个自动化测试模块。不同的开发或者测试人员所编写出来的自动化测试框架都是有一定区别的,但大体上还是相似的。 下面显示了几种类型的自动化测试框架。1. 测试框架模块化图2-6
27、模块化测试框架2. 测试库框架图2-7 测试库框架3. 关键字驱动的测试框架图2-8 关键字驱动的测试框架图2-9 关键字驱动的测试框架流程4. 数据驱动的测试框架图2-10 数据驱动的测试框架图2-11 数据驱动测试框架流程2.2.4 为什么要进行自动化测试随着国家计算机信息的发展,软件都是需要快速迭代,像一些重复性的工作可以通过自动化来完成,从而提高工作的效率和准确性,达到迭代的目的。图2-12自动化测试工作流2.3 Web自动化测试概述2.3.1 Web应用的测试内容Web应用的规模和系统的复杂度越来越大,用户对使用软件的质量要求越来越高,为了能够保证web应用的质量,一般来说,都会对W
28、eb应用进行尽可能全面的测试,以达到上线的标准和满足用户的需求。以下是Web应用比较常见的测试内容 。1. 功能测试图2-13 功能测试2. 性能测试图2-14 性能测试3. 兼容性测试图2-15 兼容性测试第三章 Web自动化测试框架需求分析因为web用户对软件的质量和要求越来越高,web应用的更新迭代越来越频繁,功能和业务流程也越来越复杂,所以为了能够在web产品在上线之前做好质量的保证,需要在产品上线之前对应用进行各种各样充分的测试,以及大量的回归测试。如果这些工作都是用人工去进行手工测试,这对公司来说,不只是测试工作效率低,也会浪费大量的人力和物力,支出与收获不成正比,所以现在越来越多
29、的公司开始引进自动化测试技术。在进行自动化工作的过程中,也需要去考虑非常多的问题。在技术和使用方面,需要考虑选择什么样的软件测试工具和软件测试开发语言、测试脚本的兼容性、测试执行的策略、还需要考虑如何才能实现真正的无人干预、如何才能提高自动化测试脚本的复用性、如何才能获得可靠的测试结果等问题。对以上问题经过思考与研究之后发现,我们需要设计和研发一个web自动化测试框架把以上这些问题进行集中处理,才能够解决这些问题。3.1 自动化测试框架功能需求分析3.1.1 自动化框架支持的测试类型以下是对基于web应用实施的自动化测试所使用的自动化测试框架的实际需求进行的分析。图3-1 支持的测试类型(1)
30、Web应用的兼容性测试本框架能够支持在主流的浏览器和版本上进行web应用的兼容性测试工作,Web应用是因为其易操作和方便才被广大用户所喜爱和使用的,只需要一个连接上网络的浏览器就可以进行操作了,但是用户通常使用不同的操作系统和版本,如果web应用不能够支持在不同的浏览器或者浏览器版本上进行操作,会给用户带来很大的不便。因此对web应用需要进行兼容性测试,保证web软件应用的UI显示和功能能够正常运行。(2)Web应用的UI自动化测试UI测试也就是运行编写的脚本模拟人对浏览器进行的操作,进行UI测试的时候,是不需要去关注应用代码的内部逻辑的。本框架能够支持UI自动化测试,本框架在进行UI自动化测
31、试的时候,能够正确的打开网址,然后自动识别页面的元素,再模拟人对页面元素进行操作,如在web页面的文本框进行文本输入,点击搜索等,然后将得到的实际结果与预期结果进行对比。(3)Web应用的稳定性测试本框架能够支持对Web应用进行稳定性测试,也就是对web应用在连续长时间的运行进行稳定性测试。通常情况下,进行稳定性测试会选择使用用户使用率高的功能模块来进行一个72小时的连续测试,然后通过计算严重问题的数量和稳定运行的平均时长去评估该web应用的稳定性测试是否可以通过。3.1.2自动化框架支持的执行策略本小节主要介绍了本自动化测试框架能够支持的执行策略以及实现的方式。 图3-2 框架支持的执行策略
32、(1)自动构建测试集图3-3 自动构建测试集(2)执行单条测试用例图3-4 执行单条测试用例(3)批量执行测试用例图3-5 批量执行测试用例(4)自动执行测试任务图3-6 自动执行测试任务(5)手工执行测试任务图3-7 手工执行测试任务3.2 自动化测试框架内部逻辑需求分析下面是几点是关于自动化测试框架功能需求以外的内部逻辑的需求分析介绍:(1)自动化测试的测试用例、测试数据以及页面的元素应该相互进行独立管理,这样子在运用需求进行变更的时候,可以减少测试工作的工作量以及提高测试代码的复用率和可维护性。(2)自动化测试的脚本应该采用分层的结构,因为测试脚本的开发维护工作占到了自动化测试实施期间的
33、发部分时间,而且现在web应用更新迭代块,每次更新迭代都需要对应用进行测试和维护,测试脚本也需要进行维护,工作量非常大。本框架对自动化测试的脚本采用分层处理,可以以减少更新迭代需求变更频繁时脚本的维护成本和提高自动化测试脚本的复用性。 (3)自动化测试框架的代码模块之间的耦合性要低,这样在需求变更的时候,或者在维护的时候,可以只对某一个模块做出修改,维护的工作量减少,代码模块之间互不影响。3.3 测试脚本集成开发环境本web自动化测试框架使用python3进行编写的,因为python是一种免费的开源语言,是轻量级的,环境纯净,简洁易读懂,支持跨平台,相同的代码可以在不同的操作系统上运行,功能强
34、大,不需要其他环境的支持,可以驱动的软件多,并且可以Selenium WebDriver也能够支持使用python语言去进行开发。在用python语言开发web自动化开发框架的时候,使用Pycharm作为集成开发环境,因为Pycharm不仅支持Python,而且能过支持多种编程语言以及能够跨平台,是一款功能比较强大的python编辑器。3.4 构建工具的选择1、JenkinsJenkins,是一款开源自动化的持续集成服务器,可以用它来配置自动化测试的计划、任务以及进行自动化任务执行的持续监控。2、Selenium WebDriverSelenium是为了各种各样不同的浏览器而被开发出来的,是一
35、款免费的开源工具,使用起来简单灵活。它与浏览器持续集成。可以通过操作系统级别使用调用模拟用户对浏览器的操作,也就是直接使用浏览器驱动对浏览器进行操作,加快测试执行的速度。第四章 Web自动化测试框架的设计4.1 自动化测试框架的整体架构本Web自动化测试框架主要有服务层和执行层这两大个主要的部分组成,服务器层是以集成服务器为主所构成的,整体架构图如图4-1所示,执行层是由测试的脚本和测试代码执行的平台构成的,在测试框架设计时需要注意的这几个事项:(1)测试框架不应该跟应用程序结合在一起,是独立于应用程序的。(2)相同的测试脚本在不同的操作系统、浏览器上运行都要能够稳定运行。(3)测试的结果必须
36、能够保证正确性,并且要在测试过程出现错误的时候能够有详细完整的日志去查看错误。 (4)测试脚本和测试数据不能够放在一起管理,应该分开管理。 图4-1整体架构4.2 自动化测试框架服务层设计本框架的服务器层主要完成的任务是,将用户在集成服务器上配置好的测试任务下发给执行层执行,执行结束之后把测试结果返回给用户,下图是服务器层的生命周期图。图4-2 任务生命周期从上图4-2中可以看出来,本框架的测试任务的生命周期,从开始到结束,一共经历了五个环节,以下是对本框架的任务生命周期的每个环节的详细说明和介绍:(1)源码脚本的检测:图4-3 源码测试脚本的检测(2)执行的触发条件:图4-4 执行的触发条件
37、(3)测试环境的准备:图4-5 测试环境的准备(4)测试的运行:图4-6 测试的运行(5)测试结果的分析:图4-7 测试结果的分析4.3 自动化测试框架执行层设计对自动化测试工作而言,只有去运行测试脚本才能够去验证测试的结果。在测试进行的时候,测试运行的时候模拟人对程序进行操作所执行的指令都是来源于测试脚本的,在脚本运行期间,对测试期间会出现的异常情况,无法进行人工干预,脚本运行期间会出现的问题也非常多,需要处理的 问题也非常多。因此,执行层的设计非常的重要。以下几点是本web自动化测试框架在设计执行层需要注意的: 图4-8 设计执行层的注意事项通过以上几点对执行层框架设计的构思与考虑,绘制的
38、执行层架构设计图如下图4-3所示。图4-9 执行层架构设计(1)测试执行驱动:图4-10 测试执行驱动(2)测试数据管理:图4-11 测试数据管理(3)自定义方法库:图4-12 自定义方法库(4)维护脚本的分层结构与模块化:图4-13 脚本的分层与模块化(5)测试结果的处理:图4-14 测试结果的处理4.4 测试脚本分层架构设计测试脚本的开发和维护耗时在进行自动化测试工作中,占到自动化测试的大部分时间。如果每次编写自动化测试脚本,都按照测试用例去重新一步步编写,没有脚本架构,对于更新迭代较快的Web自动化测试来说,一旦需求有变暖更,脚本维护的工作量相当大,代码耦合性高,可读性差。针对这些问题,
39、本框架将通过对测试脚本进行分层的架构设计来处理,下面是本框架的分层设计。图4-15 框架的分层设计第五章 Web自动化测试框架的实现在上面的章节,对本自动化测试框架进行了需求分析和详细设计,通过研究与学习,本web自动化测试框架的脚本编写和脚本的调试工作都已经完成。接下来将对该测试框架脚本的封层架构、执行策略、支持的测试类型以及辅助功能的具体实现进行介绍。框架的工程结构图如下图5-1自动化测试工程结构图所示。图5-1自动化测试工程结构图(1)common:存放公共元素,第三方库。如URL、读取Excel文件的方法、使用的信息等。主要用来定义公共的方法以及实现的辅助的功能。(2)data:存放测
40、试过程中需要使用的数据和文件,如图片、csv、txt、zip文件等。(3)drivers:存放测试过程中使用到的驱动(4)logs:存放测试过程中产生的日志文件(5)page:存放封装页面的方法,初始化URL、二次封装selenium底层对浏览器操作的函数。(6)report:存放测试生成的测试报告。(7)testcase:存放具体的测试用例脚本文件。(8)UI:存放整个工程中所有测试用例需要调用的web页面元素。(9)run:运行该run.py文件可以把单条的测试用例集合起来运行,完成特定的测试任务。也可以执行单条的测试任务。5.1 自动化测试脚本封层架构的实现自动化测试框架实现以后,测试脚
41、本执行的整个过程的基本流程图如下图5-2所示。图5-2 程序流程图测试脚本的架构一共分为UI、Page、Test、Utility、Testsuit这五层,下面将对架构的这五层分别进行介绍。5.1.1 Utility层的实现在图5-1自动化测试框架结构图的Common文件中实现了Utility层。Utility层也就是公共元素层。它主要包括URL、测试报告发送的邮件地址,使用的信息、第三方库等。根据Web自动化测试测需求,对在该文件夹下的主要文件进行简单的介绍:(1)HTMLTestRunner.py:HTMLTestRunner.py文件是一个第三方库,是一个基于unittest的单元测试的H
42、TML报告,使用HTMLTestRunn可以生成精美、简约、易懂不难理解的HTML测试结果报告。这个文件是使用python2的语言编写的,由于本框架使用的是Python3,所以需要对导入的HTMLTestRunner进行修改,下图是对HTMLTestRunner修改的步骤。图5-3 修改的步骤(2)log.py:主要是生成测试过程中的日志文件,指定保存日志的文件的路径,将日志存入到指定的文件夹中。下图5-4是log.py文件写入并保存日志的方法。图5-4 写入并保存日志的方法(3)readExcel.py:主要是封装读取excel文件中保存的测试过程中需要的数据。下图5-5是读取excel文件
43、数据的方法。图5-5 读取excel文件的方法(4)sendEmail.py:此文件主要是实现自动发送邮件的功能,在自动化测试脚本运行结束生成测试报告以后,此文件可以获取最新的测试报告,然后向文件中已获取授权码的邮箱发送自动化测试报告的html文件。下图5-6和图5-7分别是sendEmail中读取测试报告生成邮件的方法和获取最新的测试报告的方法。图5-6 生成测试报告的方法图5-7 获取最新的测试报告的方法(5)url.py:主要是测试过程中使用到的URL网址。5.1.2 Page层的实现Page层的实现,体现在Page文件夹中,在文件夹中设置了pyselenium.Py文件使测试脚本编写起
44、来更加方便,也使元素的查找更加简便。把如初始化驱动、URL、pagetitle等页面公用的方法封装在文件中,把selenium底层对浏览器操作的函数进行二次封装.(1)pageObject.py:主要是将被测页面的测试脚本与脚本中所使用到的页面元素解耦,将PageElement构造函数参数映射到webdriver定位器枚举,将被测页面的测试脚本文件放在testcase文件夹中,将测试脚本使用到的被测页面元素放置在UI文件夹中。其中的定位器如下图5-8所示:图5-8 定位器(2)pyselenium.py:该文件主要是对selenium代码进行简单的二次封装,对页面操作方法进行封装。其中查找页面
45、元素的方法封装如下图5-9所示:图5-9 查找页面元素(3)webConfig.py:主要是配置测试过程中使用的浏览器。Page层中所定义的岁浏览器的操作方法执行时程序的业务基本流程图如下图5-10所示。图5-10 操作方法执行流程5.1.3 Test层的实现Test层的实现,是在图5-1中的test层的testcase目录,这个文件下保存的是根据测试用例编写的自动化测试脚本。测试脚本的分层思路非常重要,因为需要保证脚本的可维护和可复用性。而且在编写自动化测试脚本时候,把测试脚本划分成可以再次调用的小模块,可以降低测试脚本的维护成本。Test层调用其它层的结构图如下图5-11所示。图5-11
46、Test层调用其他层的结构5.1.4 UI层的实现Page目录中体现了UI层的实现,该文件下存放了测试用例中要用的所有Web元素,把页面中所用到的元素都定义在文件里面,把每个元素的定位封装成一个方法。这是在WebDriver提供的底层函数上进行的统一的封装。UI页面层元素进行调用时业务执行的基本操作流程如下图5-12所示: 图5-12 页面元素调用流程测试的元素的XPath值是直接编写到测试用例脚本当中的。测试的数据和测试的数据进行分离,测试的数据独立存储在file文件夹中,可以调高脚本的可维护性。降低测试脚本的维护成本。因为Web页面元素经常发生变化,所以选择XPath方法进行定位。一般需要通过这几个步骤来进行WebDriver自动化测试脚本的开发:(1)导入WebDriver相关模块。(2)进行WebDriver驱动对应浏览器的实例化。