您好,欢迎光临有路网!
Python自动化测试入门与进阶实战
QQ咨询:
有路璐璐:

Python自动化测试入门与进阶实战

  • 作者:唐文
  • 出版社:机械工业出版社
  • ISBN:9787111674016
  • 出版日期:2021年03月01日
  • 页数:0
  • 定价:¥79.00
  • 猜你也喜欢

    分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    《Python自动化测试入门与进阶实战》从Python自动化测试的概念开始讲解,然后逐步深入讲解自动化测试的进阶知识,*后通过两个综合项目案例,**介绍如何使用unittest requests Selenium进行RESTful API和跨终端自动化测试,让读者能够从实践中学会项目分析,编写出高质量和高复用性的测试代码,并全面、系统、深入地掌握Selenium的相关知识。 《Python自动化测试入门与进阶实战》共10章,分为2篇。第1篇“Python自动化测试基础”,涵盖的主要内容有自动化测试概述、Python HTTP接口编程、Selenium基础知识、Python模拟数据测试、Python爬虫测试接口、性能测试、App自动化测试及pytest单元测试;第2篇“Python自动化测试实战”,涵盖的主要内容有基于RESTful API的自动化测试案例,以及基于Selenium的Web自动化测试案例。 《Python自动化测试入门与进阶实战》内容全面,语言通俗易懂,案例丰富,代码规范,特别适合有一定Python编程基础而想要学习Python自动化测试技术的人员阅读,也适合对自动化测试
    文章节选
    第1章 自动化测试概述 随着软件和网站的业务功能越来越多样化和复杂化,常规的测试方法已经难以满足实际的工作需求和快节奏的开发迭代。特别是在一些敏捷开发团队里,QA(Quality Assurance,质量保证)成为工作中极为重要的一环。测试工程师不仅需要掌握必要的人工测试手段,而且还要学习和掌握自动化测试技术,从而提高工作效率和测试质量。 自动化测试如同AI无人车,无须人工干预,便可以通过程序和预设配置实现自动化测试,完全覆盖人工测试中较为复杂甚至难以实现的测试点。如今讲究“斜杠青年”(拥有多重职业身份的人),测试人员也应该了解一些必要的编程知识,以丰富自己的技术栈,从研发角度剖析测试会有意想不到的收获。 本章将对测试方式的分类、自动化测试思想及应用场景,以及接口测试和UI测试做简单介绍。 1.1 测试方式分类 关于测试,维度不同,分类方式也多种多样。根据内容来划分,可以将其分为如下4类。 l 功能性测试:测试软件的功能是否如预期一样正常,也包含兼容性测试。 l 性能测试:对系统的各项性能指标进行测试,如页面的响应和渲染速度等。 l 特性测试:测试不同平台的差异,如PC端和移动端的兼容性差异。 l **测试:测试数据传输和存储的**性及访问资源的权限。 针对整个开发周期部署,则可以把测试融入一种V型流程中。 RAD(Rap Application Development,快速应用开发)模型是软件开发中的一个重要模型,由于该模型的构图形似字母V,所以又称为软件测试的V模型。RAD模型大体可以划分为以下几个阶段:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试和验收测试。如图1.1所示。 图1.1 RAD模型 根据测试级别来划分,可以将测试分为以下5类。 l 单元测试:是指在研发初期开始的针对单一接口或单元级别功能进行的测试。 l 集成测试:是指在迭代过程中每次集成后就进行的测试,以保证每次小幅迭代的功能点都能被测试并通过验证。 l 接口测试:顾名思义,就是针对系统接口进行的测试,可以使用Mock数据来做冒烟测试。 l 系统测试:是指根据系统设计书的指导对系统的功能点进行测试,以发现软件潜在的问题,从而保证系统的正常运行。 l 验收测试:是指根据功能说明书的功能点进行的测试,以保证产品顺利交付给用户(客户),也称为交付测试。 以上测试分类也可以视为一个完整的测试流程,即完成单元测试后再进行集成测试,以此类推。本书将会对这几种测试分别介绍对应的方案,让读者能系统地学习测试体系,从而在实际工作中运用合适的方法来完成测试工作。 其中,单元测试并非测试工程师独有,研发工程师在开发过程中也需要对自己的代码进行单元测试,以保证*小可用单元的功能满足需求。除此之外,近几年国内也开始流行TDD(测试驱动开发)的开发模式,即在开发实际功能之前,要求***先编写测试代码,以满足测试代码为要求来编写业务代码。这种新的开发方式让测试和开发之间的边界变得模糊,甚至让测试工作的开展优先于实际编程,直接指导*终的编码。 进行单元测试需要有一定的编程能力,在不同的技术栈中都有类似的开源框架可以使用。其中,Python**使用的框架是pytest和unittest。因为笔者*初的技术栈是PHP,所以使用过PHP的开源单元测试框架PHPUnit。通过编写单元测试代码,可以提前发现业务功能中存在的问题,从而避免更大问题的产生,岂不美哉? 在各种测试中,需要**学习的是自动化测试,下一节会具体介绍。 1.2 自动化测试的概念和优点 自动化测试相对于人工测试来说更加**。简单来说,自动化测试是一种将人工测试中重复的测试步骤实现机器化、代码化,避免烦琐、易错的人工操作和结果比较,并利用工具进行全面、可反复的测试回溯的方法。 从广义上来讲,一切通过程序或工具来代替、辅助人工测试的手段都可以看作自动化测试。除了功能性测试外,性能测试也算是一种指标性的自动化测试。 传统的人工测试流程如图1.2所示。 自动化测试可以在以下步骤中发挥作用:使用程序或者工具进行测试数据的收集、整理与清洗,以及接口服务的调用,用程序断言判断结果和预期,*终将结果进行持久化存储并且加以分析。 和人工测试比较,自动化测试的优点如下: l 完成重复性工作,提高工作效率。 l 抽象业务逻辑,方便功能复用。 l 使每次测试无差异。人工测试因为人为因素,无法保证每次的测试条件和测试结果都一致。 l 自动化测试对增量接口的测试非常稳定,改动成本较低。 l 每次结果可复现和回溯,对于提高测试的质量和反馈非常有帮助。 对于自动化测试,Mike Cohn在2009年出版的Succeeding with Agile: Software Development using Scrum一书中提出了分层自动化测试模型,它被定义为一种“三层金字塔”结构,如图1.3所示。 图1.3 分层自动化测试模型 分层自动化测试的观点是:单元测试非常重要,它是一切测试的基石;服务层测试的稳定性直接影响UI层的表现。 传统观点的自动化测试更专注于用户界面(UI)层的自动化测试,如对页面或客户端屏幕上的元素和单击效果进行检测,通过快速反馈定位问题。而分层自动化测试更强调从UI层到*小逻辑单元层都需要测试,从不同层次保证产品和服务的稳定。 可以看出,传统的UI层测试仅测试“三层金字塔”的*上层,也就是*接近用户操作的层级。而下面的服务层和单元层测试更为重要,服务层给UI层所需的数据和逻辑业务提供稳定的服务,而单元层则是*小的逻辑单元,供服务层进行调用。 针对分层自动化测试模型,我们在实际工作中是这样进行实践的: l 针对UI层,进行人工测试及用户界面的自动化测试。 l 针对Service层,通过自动化框架或工具进行接口测试。 l 针对Unit层,基于*小模块进行单元测试。 1.3 为什么用Python进行自动化测试 自动化测试可以使用的编程语言很多,例如针对单元测试,Java有JUnit和TestNG框架,PHP有PHPUnit框架,Python有unittest和pytest框架等。在众多的编程语言中,Python凭借学习成本较低,以及强大的社区和生态,成为*适合进行自动化测试的编程语言。 使用Python做自动化测试的优势如下: l 编写自动化测试脚本非常简单和方便,相较于其他编程语言更易入门。 l 拥有成熟的自动化框架。Selenium框架自开源以来已经成为*受欢迎的测试框架,它能帮助测试人员加速测试进度,从而顺利交付项目。 l 丰富的类库支持。无论是HTTP(Hyper Text Transfer Protocol,超文本传输协议)网络请求和文件流处理,还是Socket编程及多线程,Python都有强大的工具库可以开箱即用,不用“重复造轮子”,效率非常高。 l Python程序结构简洁、易读,可方便迭代及文档化管理。 l 和人工测试相比,Python编程能让测试人员有机会转型为研发型测试,这对职业发展也有帮助。 Python在本书中的实际应用很多,如图1.4所示。 图1.4 Python在本书中的实际应用 其中,Selenium相关技术和实践是本书要**介绍的内容,压力测试是除功能性测试外较为重要的测试方向,而爬虫编程作为Python开发的一大特色,在本书中也会做一些介绍,并且会涉及多线程爬虫这一高阶实战内容。综上所述,用Python编程的方式实现针对接口和UI层的测试非常有效,下一节会具体介绍。 1.4 接口测试和UI测试的比较 首先谈谈接口测试。接口测试和日常的人工测试不同,它往往不是一个对完整功能的测试,而是对某个服务的函数或者对外暴露的访问接口进行测试,测试的目的是检测该接口是否稳定可靠以及是否符合预设的用例测试结果。 一般来说,接口测试可以分为下面三种情况。 (1)基于HTTP的接口测试:例如对用户**个人数据详情接口进行测试,会使用GET方式向服务器发出请求,获取数据后进行解析,*终与预设期望进行对比,如图1.5所示。 图1.5 HTTP接口调用示意图 (2)基于Web服务的接口测试:例如,支付**对外暴露SOAP服务,可以编写Python程序对Web服务进行远程调用,并传入相应参数,解析返回数据,如图1.6所示。 图1.6 Web服务接口调用示意图 由于远程调用通常使用XML方式,对入参的构造复杂度高于HTTP方式,并且接口的返回结果也需要特别解析。 (3)基于其他通信协议的接口测试:例如WebSocket协议,需要Python通过客户端连接到WebSocket服务器进行双向通信,发送测试数据,测试相关接口响应是否正常,并解析返回的数据。该方式相比传统的轮询方式更加**。使用WebSocket协议时,前端可以利用HTML 5技术通过WebSocket客户端调用服务器回调接口,如图1.7所示。 图1.7 WebSocket接口调用示意图 接口自动化测**程序或者封装好的工具对测试全过程进行模拟,并收集结果进行自动分析,从而有效地解决人工测试的低效问题并减少了可能造成的误差。接口自动化测试类似于黑盒测试,测试人员基于已有的接口说明文档对用例进行测试。 UI测试和接口测试不同,它是基于用户界面进行测试,需要针对页面的特定内容和功能进行。根据平台的不同,UI测试可以分为Web端UI测试和移动端UI测试。Web端UI测试分为以下几类: l Web整体页面测试; l Web内容测试; l Web导航测试; l Web图形测试; l Web表单测试; l Web兼容性测试(多平台兼容性)。 移动端UI测试分为以下几类。 l 基础功能测试:基础功能的相关测试要特别注意边界值、异常数据等问题。应分析需求和功能要求,对流程进行梳理,以“跑通”基础的功能为主,针对边界值和特殊情况做**测试。 l 数据交互测试:在完成了基础功能测试之后,针对页面上的数据流进行测试,也需要针对边界和特殊值进行测试,以保证功能可靠。 l 性能测试:包括对页面响应速度、资源加载、流量消耗、CPU占有率、电量的变化及App稳定性(卡屏或闪退等问题)的测试。 移动端的测试情况比PC端(Web端)复杂得多,测试难度倍增。相对PC端而言,移动端的设备屏幕尺寸多,许多操作非常精细、复杂,不同的平台有不同的操作特性,增加了人工测试的工作量和难度。而自动化测试可以通过工具模拟用户在不同移动设备上的操作,快捷、精准地完成测试。Python体系中有跨平台测试框架Appium,它通过使用WebDriver协议来测试iOS、Android和Windows三大主流平台的应用。 接口测试和UI测试的差异对比如表1.1所示。 表1.1 接口测试和UI测试的差异对比 对 比 项 接 口 测 试 UI测试 是否涉及页面 不涉及 涉及 是否需要跨平台测试 不需要,基于协议即可 需要,平台差异大 操作的复杂度 低,按要求传递即可 高,屏幕操作受限 性能要求 中等 高,用户体验有要求 由此可以看出,接口测试更加具有程序化的可能性,只需要基于特定的协议进行接口请求即可,不涉及页面和复杂的操作,非常适合进行自动化测试。本书第2章会专门介绍如何进行接口测试,感兴趣的读者可以直接阅读第2章的相关内容。 基于UI的测试其实也可以自动化进行,但需要借助第三方工具,如可以模拟页面操作的Selenium。利用这个开源框架可以通过相应的浏览器驱动来操作浏览器,编写模拟鼠标单击、填充文本框、前进或后退页面、定位页面元素等操作的程序,*终完成UI的自动化测试工作。 通过自动化测试,可以有效地避免重复性的测试及人工测试可能带来的低效和错误。除此之外,通过学习相关知识,可以让测试工程师提高编程能力,拓展新的职业发展空间——测试开发工程师。如今,越来越多的工程师具有复合型能力,既可以进行测试工作,也可以进行一些开发工作。能力圈的扩展,使个人的技能树更加圆满,不仅对就业有好处,也给个人职业发展提供了更多的可能性。随着以新基建为代表的5G技术的日渐成熟,人工智能时代也越来越近,如果一个人躺在舒适区,一直处于低效的人工工作中,那么工作价值会随着时间变得低廉,不利于个人技术能力和职场竞争力的提高,特别是在这个需要终生学习的时代。有时候,学习一门新的技术需要有“空杯”的心态,对本书中不熟悉的内容,读者可以自行进行知识补充。相信通过后续章节的学习,读者能逐渐掌握新的技术和工具,了解其基本的功能,并在工作中进行尝试,这样做下来一定会有所收获。 1.5 小 结 本章主要介绍了自动化测试的定义和应用场景,通过对比人工测试,越发显示出自动化测试的**和强大。本章的知识点如下: l 自动化测试基于工具或程序模拟用户操作,实现流程的自动化。 l 分层自动化测试模型从*上层到*下层分别为UI层、Service层和Unit层。 l UI测试的复杂度大于接口测试,App端需要使用自动化测试框架进行**测试。 千里之行,始于足下。第2章将会从*基础的HTTP接口测试讲起,手动封装工具类,再结合相关知识点进行实践,达到知行合一。
    目录
    第1篇 Python自动化测试基础 第1章 自动化测试概述 2 1.1 测试方式分类 2 1.2 自动化测试的概念和优点 4 1.3 为什么用Python进行自动化测试 5 1.4 接口测试和UI测试的比较 6 1.5 小结 10 第2章 Python HTTP接口编程 11 2.1 发起HTTP请求示例 11 2.1.1 HTTP请求原理解析 11 2.1.2 利用Python发起HTTP请求 13 2.1.3 利用Python处理响应对象 14 2.2 HTTP简介 14 2.2.1 HTTP状态码 15 2.2.2 利用Python处理业务码 18 2.3 GET和POST请求 19 2.3.1 HTTP请求方式 20 2.3.2 利用Python发起GET请求 20 2.3.3 利用Python发起POST请求 22 2.3.4 利用Python完成自动登录示例 24 2.4 小结 25 第3章 Selenium基础知识 26 3.1 Selenium概述 26 3.2 Selenium环境搭建 27 3.2.1 安装Selenium包 27 3.2.2 安装不同浏览器的驱动包 27 3.3 在Selenium中选择元素对象 28 3.3.1 根据id和name选择元素对象 28 3.3.2 根据link text选择元素对象 29 3.3.3 根据XPath选择元素对象 29 3.3.4 CSS选择器 30 3.4 使用Selenium完成自动登录 33 3.4.1 自动登录百度网盘 34 3.4.2 自动登录QQ空间 36 3.5 鼠标事件 36 3.6 键盘事件 39 3.7 对一组对象定位 40 3.8 对层级对象定位 43 3.9 iframe中的对象定位 46 3.10 调试方法 48 3.11 对话框处理 49 3.12 跨浏览器的窗口处理 50 3.13 分页处理 51 3.14 控制浏览器的滚动条 53 3.15 小结 54 第4章 Python模拟数据测试 55 4.1 模拟测试简介 55 4.1.1 模拟测试的定义和使用场景 55 4.1.2 安装Mock库 56 4.1.3 Mock对象简介 56 4.1.4 简单用例 57 4.2 测试留言板功能 58 4.2.1 测试新增功能 59 4.2.2 对测试失败的情况进行处理 62 4.3 Mock库的**用法 63 4.3.1 Patch简介 63 4.3.2 Patch的简单用例 63 4.3.3 利用Patch测试购物车类 64 4.4 模拟登录 68 4.4.1 登录的完整用例 68 4.4.2 通过面向对象的方式实现登录 70 4.5 小结 70 第5章 Python爬虫测试接口 72 5.1 爬虫测试简介 72 5.1.1 爬虫测试的思路和流程 72 5.1.2 urllib库的使用 73 5.1.3 urllib 3简介 78 5.1.4 BeautifulSoup的使用 79 5.1.5 使用BeautifulSoup爬取BOSS直聘网站上的信息 82 5.1.6 正则表达式简介 90 5.1.7 封装一个强大的爬虫工具类 93 5.2 Scrapy基础 94 5.2.1 Scrapy简介 94 5.2.2 Scrapy的基本用法 96 5.2.3 Scrapy爬虫实践 99 5.3 测试商品列表页面的完整用例 102 5.4 多线程爬虫用例 106 5.5 反爬虫**策略 108 5.5.1 tesserocr库简介 109 5.5.2 图片滑块验证码 112 5.5.3 IP限制 115 5.6 小结 116 第6章 性能测试 118 6.1 性能测试简介 118 6.2 Locust工具的使用 119 6.2.1 环境搭建 120 6.2.2 Locust快速入门 124 6.2.3 Locust和其他工具集成 129 6.3 常用的压力测试工具 130 6.3.1 轻量级http_load工具的使用 131 6.3.2 webbench工具的使用 132 6.3.3 AB工具的使用 133 6.3.4 利用Python操作AB工具 137 6.4 利用多线程实现性能提升 141 6.5 使用JMeter对Selenium自动化代码进行压力测试 146 6.6 小结 152 第7章 App自动化测试 154 7.1 App自动化测试简介 154 7.2 测试计划设计 157 7.3 Appium自动化测试框架 159 7.3.1 Appium工具简介 159 7.3.2 环境搭建 160 7.3.3 Android Studio的简单使用 165 7.3.4 自动化测试手机计算器 169 7.3.5 Appium的常用API 172 7.4 小结 175 第8章 使用pytest进行单元测试 176 8.1 单元测试简介 176 8.1.1 单元测试的重要性 177 8.1.2 单元测试框架简介 178 8.1.3 安装pytest 179 8.1.4 pytest的简单用例 180 8.2 pytest的基本用法 189 8.2.1 断言 190 8.2.2 异常处理 192 8.2.3 执行测试和参数设置 193 8.2.4 对测试结果进行分析和处理 198 8.3 pytest进阶之conftest的使用 202 8.4 其他单元测试框架 206 8.5 小结 208 第2篇 Python自动化测试实战 第9章 基于RESTful API的自动化测试案例 210 9.1 RESTful API简介 210 9.2 接口分析 211 9.3 编写配置 214 9.4 数据准备 221 9.5 新增文章接口测试代码用例 222 9.6 修改文章接口测试代码用例 225 9.7 删除文章接口测试代码用例 226 9.8 查询文章接口测试代码用例 227 9.9 API测试工具 229 9.9.1 Tavern简介 229 9.9.2 Tavern的基本用法 229 9.9.3 使用Tavern测试文章的所有接口 231 9.10 小结 232 第10章 基于Selenium的Web自动化测试案例 233 10.1 自研自动化测试框架 233 10.2 使用Selenium自动化操作网盘 242 10.2.1 基本操作封装 242 10.2.2 发送通知邮件 247 10.3 使用Lettuce进行测试 250 10.3.1 TDD和BDD简介 251 10.3.2 使用pytest-bdd进行测试 252 10.3.3 Lettuce初体验 255 10.3.4 编写Lettuce程序 258 10.3.5 Aloe的使用 260 10.4 Selenium跨浏览器测试实战 262 10.4.1 Selenium Server的安装 262 10.4.2 Selenium数据驱动测试 267 10.4.3 poium测试库 274 10.4.4 pyautoTest Web UI自动化项目 275 10.5 小结 277

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外