• 我第一份Python自动化测试工作能找到13k的工作,就是掌握了这些技术栈


    给大家总结我一年时间学了哪些python自动化测试技术:

    一、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层的自动化测试”。对于性能测试,接口测试一般不把它们归纳为自动化测试的范畴。

    为什么要做自动化测试

    根据《中国软件测试从业人员调查报告》,手工测试占到的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 + SeleniumSelenium+unittest框架

    为什么不是QTP 或其它工具?

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

    四、我们该学什么

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

    从语言易学性来讲: ruby、python;

    从语言应用广度来讲: python、java、C#、php;

    从语言相关测试技术成熟度及资料来讲: python、java、ruby;

    备注: 你可以考虑整个技术团队主流用什么语言,然后选择相应的语言;

    备注: 我们在这里自然选择目前市面上最火,使用范围广,技术成熟度大的Python讲解;

    五、需要学会的自动化测试框架

    1.了解自动化测试框架

    很多人都听过自动化测试框架,为什么会有自动化测试框架?因为框架提供了很多基础功能,还可以自己封装一些重复的代码模块,这样我们调用比较方便,或者对一些不了解代码的人,修改脚本也可以很快的掌握自动化测试框架。根据自动化测试目标不一致,分为三种:appUI自动化测试,webUI自动化测试,接口自动化测试。

    appUI搭建框架使用python+uniitest+appium工具

    webUI搭建框架使用python+selenium+unittest

    接口测试框架使用python+unittest+requests

    2.先学习搭建webUI自动化测试框架,掌握其中搭建框架的思想后,其他两个很快就会掌握,因为框架思路是一致的,只是掌握的知识不一样。搭建webUI自动化测试框架,需要学习以下知识(学完之后再重新整理):

    (1)python:需要一门编程需要来编写测试脚本(必须学习unittest和文件管理),做web自动化,需要理解web页面是怎样开发的,所以需要了解html,css,javascript怎么开发web页面的,这对我们学习web自动化有很大的帮助,学习这些内容后,我们要学习selenium模块是怎么操作web页面的,这里就要学习selenium模块中api和定位元素方法;

    (2)学习到这里,已经可以搭建一个框架了,但是远远不够,现在框架大部门都是需要数据和程序分离,但是数据存储到那里呢?数据可以存储到txt文件,csv文件,excel文件中,MYSQL数据库中,因为现在很多调用的数据都是存放到数据库中的,所以我们需要学习mysql数据库;

    (3)搭建框架中,有些数据进行配置可以改变测试内容,例如浏览器啊,这些数据可以存放到配置文件中,配置文件格式一般分为ini和conf文件,读取配置文件需要了解python configparse模块,测试过程中,出现问题,需要定位问题出现的位置。所以需要学习python 的logging模块,打印日志,测试完成后,你想要知道结果统计,需要HTMLTestRunner;

    (4)框架搭建完成后,你要考虑怎么每个时间段自动执行,需要持续集成,需要用到jenkins,jenkins一般都部署到服务器上,我们编写的代码需要上传到服务器上,一般都会使用git和svn;还有,要自动发报告,简单学习下smtplib模块吧,它能让你的报告以邮件的形式发送到团队成员的手中;

    (5)appium使用的api和定位方法和selenium一样,只是比selenium多了几个触屏的api, 而接口测试需要用到requests,主要是http相关。

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

    学习路线规划:

    1.python(python不过关,别谈自动化);

    2.Web基础(网页基础)

    3.Selenium框架

    4.unittest框架

    5.Robot Framwork框架

    6.项目

    七、推荐的前端书籍

    第一本:《Python自动化测试实践》

    第二本:《Python接口自动化测试》

    第三本:《Selenium2/3 自动化测试实战,基于Python语言》

    第四本:《App自动化测试与框架实战》

    第五本:《Robot Framework自动化测试修炼宝典》

    第六本:《全栈自动化测试实战 基于TestNG、HttpClient、Selenium和Appium》

    八、需要用到的工具

    1、接口测试工具

    1.Fiddler

    它是一个 HTTP协议调试代理工具,说白了就是一个抓 http 包的工具。 web测试和手机测试都能用到这个工具。既然是 http 协议,这个工具也能支持接口测试。

    2.Postman

    Postman一款非常流行的 API 调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如 Jmeter 、 soapUI 等。不过,对于开发过程中去调试接口, Postman 确实足够的简单方便,而且功能强大。这是一款 google 工程师开发的一个插件,可以安装到 chrome 浏览器上。支持不同接口测试请求,能够管理测试套件和自动化运行。

    弱点在于,自动化断言功能不强大,不能和 Jenkins和代码管理库进行持续集成测试。但是,绝对是一个很好的半手工,半自动化测试工具,我一般在写自动化接口测试用例,会打开 postman 进行辅助测试和 debug 。

    这个是一款计算机上抓包工具,支持抓各种包,TCP,UDP,HTTP都支持。如果做底层网络数据测试,一般都需要用到它。

    3.SoupUI

    SoapUI是一个开源测试工具,通过soap /http来检查、调用、实现 Web Service 的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。

    SoapUI 是一个自由和开放源码的跨平台功能测试解决方案。通过一个易于使用的图形界面和企业级功能,SoapUI 让你轻松、快速创建和执行自动化功能、回归、合规和负载测试。在一个测试环境,SoapUI 提供完整的测试覆盖,并支持所有的标准协议和技术。

    SoapUI 基于Java 开发,支持多个平台,安装非常简单。

    这个是一个开源免费和企业版收费的软件。在国外的接口测试,使用非常多。这个工具能够支持接口自动化测试和接口性能测试,也能支持和jenkins做持续集成测试。了解一下就可以,自己可以下载一个社区免费版,做一个demo试试。

    4.Java代码做接口测试

    代码是万能,笔记工具也是代码开发出来的。为什么要用代码做接口自动化测试呢。因为,有些工具功能是有限制,很多公司,需要一些特定的功能,工具不支持,只好用代码进行开发。

    一般用Java做自动化测试,主要是利用httpclient.jar这个包,然后利用junit或者testng这样的单元测试工具,进行测试用例的开发,然后在jenkins上创建一个job,进行持续集成测试。

    5.Python代码做接口测试

    和 Java 一样, Python 中利用一个很好,功能强大的第三方库requests,能够方便都创建接口自动化用例。python 下单元测试框架,一般采用unittest。生成测试报告,一般选择HTMLTestRunner.py。同样,可以和jenkins做持续集成测试。

    6.LoadRunner

    不要以为 LR 只能做性能测试,loadrunner同样可以做接口自动化和接口压力测试。只是我们很多人,不会利用 LR 的函数,进行开发接口测试用例。

    7.JMeter

    JMeter同 loadrunner 一样,都是以性能测试出名,一般用 JMeter 也是做接口性能测试。例如 java+Jmeter+ant+jenkins 做接口性能监听测试。

    以上介绍的这些工具,基本覆盖了接口功能测试、接口自动化测试、接口性能测试。
    九、如何找工作的问题?
    在校的大学生一定不能错过大四的秋招,秋招是非常重要的,一般在秋招的时候都是一些比较好的公司,这个时候往往公司的数量也特别多,能走秋招就走秋招。如果秋招没有准备好,就等明年的春招,反正能通过校招进企业就通过校招进,一旦错过了校招,社招就会变得异常艰难。

    还有IT圈一个非常重要的规则,就是通过熟人介绍,很多公司都有猎头,这些猎头就是发掘那些技术好的人才,通过各种方式进行挖人,所以通过关系进行内推也是找工作的主要方式,内推要更加容易就业。

    再就是自己去投简历,这样找工作的方式就是海投,海投就会比较累,但是如果你技术能力强,也可以找到自己心仪的公司。如果是大学生,我建议一定要通过校招走,在学习的过程中,多认识一些关系,以后打算在这个圈子里面混,少不了认识一些公司的HR资源以及技术方面比较不错的大佬。

    最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

    在这里插入图片描述

    这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

    如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

    敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

    自学推荐B站视频:

    零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

    自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

    在这里插入图片描述

  • 相关阅读:
    CSS学习笔记
    K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar
    LeetCode 387---First Unique Character in a String
    极客的浪漫「GitHub 热点速览 v.22.41」
    NPDP考试倒计时,如何高效提分?
    《安富莱嵌入式周报》第277期:业界首款Cortex-M55+Ethos-U55 NPU套件发布,20个墨水屏菊花链玩法,氙气灯镇流器设计
    【Unity2D】提升tilemap地图绘制速度的技巧
    【出人意料】一种基于Vue2监听器(watch)和定时器(setInterval)的轨迹播放方法实现方案
    深度学习常见损失函数总结+Pytroch实现
    AC修炼计划(AtCoder Regular Contest 180) A~C
  • 原文地址:https://blog.csdn.net/weixin_57805858/article/details/126544133