美文网首页GIT使用我爱编程Python
01-Python自动化测试-学习路线

01-Python自动化测试-学习路线

作者: EndEvent | 来源:发表于2018-04-20 20:09 被阅读804次

    一、Python常用领域

    • Python用于简单脚本编程,如编写2048小游戏或12306的自动抢票软件;
    • Python用于系统编程,如开发系统应用;
    • Python用于开发网络爬虫;

      网络爬虫的用途是进行数据采集,也就是将互联网中的数据采集过来。网络爬虫的难点其实并不在于爬虫本身,由于网站方为了避免被爬取回采取各种各样的反爬虫措施,而如果想要继续从网站爬取数据就需要解决这些反爬虫措施,所以网络爬虫的难点在于反爬的攻克和处理。

    • Python用于Web开发,如个人博客、在线教育网站以及论坛等;
    • Python用于自动化运维,如通过写Python脚本实现对于服务器集群进行自动化管理;
    • Python用于网络编程,如Socket编程等;
    • Python用于数据挖掘、机器学习等大数据与人工智能领域方向的程序开发,如在人工智能领域;
    • Python用于自动化测试,如UI自动化测试(Python+Selenium等)、接口测试(Python requests等)、性能测试(Python Locust等)、安全性测试(Python Scapy等)、兼容性测试(Python+Selenium等)等;

    二、自动化测试

    • 什么是自动化测试
      广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。所以实际上从广义上来讲:性能测试、接口测试等但凡用到测试工具的测试都称为"自动化测试"。
      狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。
      当然,行业中经常说的“自动化测试”及企业中要求的“自动化测试”大多都是“基于产品或项目UI层的自动化测试”。对于性能测试,接口测试一般不把它们归纳为自动化测试的范畴。

    • 为什么要做自动化测试
      根据51testing的《中国软件测试从业人员调查报告》,手工测试占到的89% ,相对开发来说,测试的门槛底,薪资普遍较底,所要求的知识面虽然有一定广度,但缺乏深度。这是测试的普遍现状。
      正因为手功测试人门槛不高,使大量的毕业生,甚至是非专业人员涌入这个行业。从而增加了这个行业的激烈竞争。对于工作几年扔处于手工测试的人员来说都会有强列的危机感。由于工作的技术含量不高,薪资的涨幅遇到瓶颈,另一方面受到新进入者的威胁,同样的工作公司花5K招来的人就可以做,那么就不会花8K 的招。
      这个问题本不应该出现讨论技术的话题中,但他的确是大多测试人员不得不面对的一个问题。所以,从测试人员自身的发展来说,我其实非常需要通过自动化技术来增加自己有竞争力。
      自动化测试最实在的优势在于——工作好找:有一个测试工程师(并不是本人)发现一个有趣的现象,她申请过的几乎所有测试职位,在招聘时都需要自动化测试经验。但当她开始工作后,就发现这些公司都试图做自动化测试,但是结果大多不怎么地。不过,尽管她参与的都是一些悲剧的项目,不过她总能把这些悲剧包装成喜剧以应对下一次面试。

    • 自动测试的优势

      - 频繁的回归测试
      - 快速反馈
      - 几乎无限制的测试用例迭代执行
      - 支持敏捷和极限编程
      - 遵循测试用例的文档
      - 自定义缺陷报告
      - 能找出手工测试中没发现的缺陷
      
    • 自动化测试有那么多优势,为什么还有那么多项目做失败了?

      我个人推论:
      1、公司自动化测试人员能力不够;
      2、项目难度太大,功能不稳定,需求变化太快,就盲目启动自动化,导致自动化脚本开发频繁改变,更不上需求变化的速度,最终以失败告终 ;
      3、项目过于复杂,大部分功能无法实现自动化,仅仅只有小部分功能实现自动化,这个对于项目意义不大;
      4、公司人员流动大,导致自动化脚本维护的难度加大,最终夭折;

    • 什么项目适合做自动化测试?
      假如你已经决定要学习自动化测试了,如何学习是要面临的下一个问题?这个问题以被测试产品为出发点进行分析,假如你所学的技术不能得到应用(验证),将会使你的学习过程寸步难行。
      首先考考虑产品是否适合做自动化测试。这方法比较普遍的共识是从三个方面进行权衡。

      • 软件需求变动不频繁
        测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。
      • 项目周期较长
        由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
      • 自动化测试脚本可重复使用
        自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。

    三、主流自动化测试框架

    • 自动化测试框架
      桌面程序的工具有:QTP、 AutoRunner
      web应用的工具有:QTP、AutoRunner、Robot Framework、watir、selenium

    • 测试框架选择
      由于B/S架构的诸多优势,早几年前大量C/S架构的应用转为B/S结构。从而也推动了web开发与测试技术的发展。这也导致QTP框架的落寞,Selenium框架及Robot Framework框架的大量兴起。

      被测试有产品是C/S架构的,那么推荐QTP ;
      被测产品是B/S 结构,那么推荐selenium ;

    • 市面主流自动化测试框架
      RFS: Robot Framework + Selenium
      Selenium+unittest框架

      为什么不是QTP 或其它工具?因为selenium 对B/S应用支持很好,更重要的一点,它支持多语言的开发,真正的试用selenium ,你所要掌握的不仅仅是一个工具而已,你还需要学习一门语言。

    四、我们该学什么

    自然选择主流框架,假如你决定使用selenium 了之后,你又面临了一个新的问题,选择一门语言。selenium 是支持java、python、ruby、php、C#、JavaScript 。

    从语言易学性来讲: ruby、python;
    从语言应用广度来讲: python、java、C#、php;
    从语言相关测试技术成熟度及资料来讲: python、java、ruby;
    备注: 你可以考虑整个技术团队主流用什么语言,然后选择相应的语言;
    备注: 我们在这里自然选择目前市面上最火,使用范围广,技术成熟度大的Python讲解;

    五、Python自动化测试-学习路线

    学习路线规划:
    1.python(python不过关,别谈自动化);
    2.Web基础(网页基础)
    3.Selenium框架
    4.unittest框架
    5.Robot Framwork框架
    6.项目

    Python自动化测试

    六、Python篇

    Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
    Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

    • 环境搭建
      Python版本选择: 3.5版本64位3.5版本32位
      Python IDE: PyCharm社区免费版

    • 基础语法
      注释
      标识符
      保留字
      行和缩进
      输入输出
      运算符

    • 数据类型
      Numbers数字
      String字符串
      List列表
      Tuple元组
      Dictionary字典
      数据类型转换

    • 控制流
      if语句
      while语句
      for语句
      循环嵌套

    • 函数
      函数定义
      函数调用
      函数参数
      匿名函数
      作用域

    • 模块
      import 语句
      From…import 语句
      From…import* 语句
      定位模块
      命名空间与作用域
      dir()函数
      globals()和locals()函数
      reload()函数

    • 正则表达式
      re.match函数
      re.search方法
      检索和替换
      字符类和特殊字符类

    • 文件I/O
      读取键盘输入
      打开和关闭文件
      File对象的属性
      Close()方法
      Write()方法
      目录操作

    • 异常处理
      标准异常
      try/except语句
      try-finally 语句
      异常的参数
      触发异常
      用户自定义异常

    • JSON处理
      encode函数
      decode函数

    • 面向对象
      类(Class)
      类变量
      数据成员
      方法重载
      实例变量
      继承
      实例化
      方法
      对象

    七、Web篇

    Web就是在Http协议基础之上, 利用浏览器进行访问的网站。网页开发会涉及到HTML超文本标记语言、CSS层叠样式表、Javascript脚本语言。

    • 环境搭建
      编辑工具: Hbuiderl
      浏览器: 火狐/谷歌

    • HTML基础
      基本结构
      常用元素
      元素属性
      层次结构

    • CSS基础
      样式表
      选择器
      核心属性

    • Javascript基础
      变量类型
      if语句
      while语句
      for语句
      数组
      DOM操作

    八、Selenium篇

    Selenium 诞生于 2004 年,当在 ThoughtWorks 工作的 Jason Huggins 在测试一个内部应用时。作为一个聪明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的 Javascript 库,能让多浏览器自动返回测试结果。那个库最终变成了 Selenium 的核心,它是 Selenium RC(远程控制)和 Selenium IDE 所有功能的基础。
    Selenium 2(又叫 Selenium Webdriver),Selenium 1 (又叫 Selenium RC 或 Remote Control),Selenium RC 都是最主要的 Selenium 项目,直到 WebDriver 和 Selenium 合并而产生了最新且最强大的 Selenium 2.
    Selenium IDE (集成开发环境) 是一个创建测试脚本的原型工具。它是一个 Firefox 插件,提供创建自动化测试的建议接口。

    • 框架原理

    • 自动化测试流程

    • python+selenium环境搭建

    • Selenium WebDriver API实战

    • 自动化测试用例设计

    • Jenkins+SVN持续集成管理

    九、unittest篇

    自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest 提供了一个比较完整的断言方法。

    • Python+Unitest测试框架
      生成HTMLTestRunner测试报告
      测试套件
      测试套件实例
      整合HTMLTestRunner测试报告
      易读的测试报告

    十、Robot Framwork篇

    Robot Framework是一个基于Python可扩展地关键字驱动的测试自动化框架,使用Apache License 2.0,由Robot Framework Foundation开发和赞助。Robot Framework被广泛地使用在端到端地验收测试以及ATDD(acceptance-test-driven development)中,生态体系非常丰富。

    • Robot FrameWork原理
    • Robot FrameWork环境搭建
    • Robot FrameWork工具使用
    • Robot FrameWork系统关键字
    • Robot FrameWord用户自定义关键字封装
    • RFS Web自动化测试实战
    • RFS集成JQuery
    • 数据库自动化测试实战

    相关文章

      网友评论

      • IT人故事会:写的很用心,你的文章我收藏了啊
        EndEvent:@IT人故事会 感谢,后续python会跟着这条线更新,另外还会有视频教学。

      本文标题:01-Python自动化测试-学习路线

      本文链接:https://www.haomeiwen.com/subject/gcnakftx.html