如何快速且有效的学习自动化测试?
我写一个学习路线吧:
1.学习python基本语法。
2学习路线图
https://www.processon.com/view/link/64e729486ece22263c3e
学习HTML/CSS下的html、xml、webservice三个教程。
3. 然后下一个python的requests库学习写最简单的网络爬虫。知乎上爬虫教程一大堆。
3是第一个里程碑,学写简单爬虫一方面有一定的成就感,一方面又知道了接口到底是怎么回事。同时还学到了怎么解析一个页面,
4.学习python的测试框架unittest,知道怎样用unittest和python的mock模块写一个小单元测试。
5.把3和4结合起来,你掌握http自动化接口测试。
6.学selenium的库和页面对象模式
7.把2、4、5、6结合起来,你应该能写既支持web测试又支持接口测试的自动化测试脚本了。
8.学robotframework,你可以把自动化测试变成关键字驱动和数据驱动的了。
9.学python的高级一点的语法。如装饰器、线程进程协程。你可以让测试并行执行,并自动记录测试步骤到log文件里了。
10.学jenkins,测试不再需要你手工去启动了。测试也可以分步式运行到多个环境上了。
11.学docker、git、gitlab等的简单使用,从此测试脚本不用再人肉更新、测试环境也不用人工搭建。这里也要学linux的简单使用,
12.回到w3cshool,学习javascript、ajax、jquery、bootstrap。至此你可以写50%以上简单网站的前端了。
13.学习python的flask库,学mysql或mongodb是怎样和flask一起用的。至此你可以写简单网站的后台了。你还可以快速开发webservice接口了。
14.综合12和13,你可以开发一些测试管理工具了。比如写一个管理很多jenkins master的ci调度平台。也可以写一个提供统一样式的测试报告的web展示平台。写一个监控所有测试情况的看板。写帮你生成测试文档的脚本。写测试环境的管理工具。
并且14是一个里程碑,你可以理解开发人员的一些思路了,比如为什么开发人员老是不愿意好好写单元测试、老是说这不是bug、老是说几点干完但却拖到半夜还做不完,特别是你做的东西交给别人测的时候。你也可以理解web测试的接口测试、单元测试怎样做比较好,因为如果不好,你是不愿意用到自己写的网站工具上的,你会觉得浪费时间。老实说我从来没用selenium给自己写的网站做过测试,完全不想做,但接口测试和单元测试我还是很愿意做的。主要因为基于图形界面的自动化测试效率低。我当时组里有其他测试人员执意要给我这个网站做selenium,我劝阻不了,但最后界面需求不断修改,他也没坚持做下来,从这个工具网站的第二个大版本开始就放弃了。
15.学压测工具locust、jmeter等,7里写的框架可以支持压力测试了。同一套接口测试脚本,既做自动化测试又做压测了。注:现在主流是jmeter,而未来属于像locust这样的工具,它让测试人员写代码来描述性能测试。jmeter的控件和图形界面适合新手入门,但基于图形界面做的话效率低一点。其他gatling、grinder都在自身的设计理念上比jmeter先进。
16.想做app测试的话,学一个appium之类的框架。p s:我没有学这个,主要看项目方向是否需要。
17.补课时间,好好把计算机网络补起来,这个是真有用,我原单位用openstack搞云计算的时候,网络这块是最经常出问题的。网络我学得不好,就得不断求实验室的人帮忙。
算法题刷起来,平时没多少用但是面试经常考,数据库我说实话我毕业后就没怎么系统学过,好像我用得不多。
linux操作系统再补补,鸟哥私房菜看看完。很多人用了n年linux连系统权限咋回事都不懂,这个有点无语的。
18.java补起来。没办法,用java的单位多。要找工作机会也多。现在流行java+python都要会。其实都差不多,举一反三。但能用python的地方我还是喜欢python。
19.不知道后面再怎么学了。我想再提高提高web开发能力。前端框架学一个,以后开发一些更漂亮更炫的前端页面。再学下什么消息中间件之类的,去面试曾经被这个的问题虐过。
我相信再怎么基础差,到了这里做做大部分单位的自动化测试是随便做做了。但是,恐怕你到这个时候也不愿意回去写那种常见的selenim脚本了吧。按我们单位的情况,原来写的脚本是robot脚本加一些自定义库,和别的单位的selenium、appium本质上都类似,都很简单不用动脑筋。这时候我原单位里有的人就转去做devops,搞ci、cd。有的人去做自动化测试教练(其实就是写测试基础库和搞培训)、测试工具开发(偏web开发)。这几类我都试过后感觉对devops更有兴趣,当然我做的具体工作还是从自动化测试开始的。自动化测试的学习路线和devops可以很好地衔接起来。因为自动化测试方面的专家较少,而devops讲究的是自动化整个流程,不仅是测试,但自动化别的阶段和自动化测试阶段,目前还没有太大本质区别。
至于自动化测试架构师的职位,其实就看你单位怎么设置职位了。做技术的人总想着挂个架构师头衔,但其实这个架构师和开发的架构师差距还很大啊。到这里也不要沾沾自喜…可能只是你在这个公司资历熬的久。
----------------
回一下评论里的问题:
1.最快多久入门:
很快,
不一定要按顺序从1学下来,以最快加入项目组干活来看,像我现在单位,要求真的很低,掌握1、8、10、11就可以干活了。我原来组里带一个黑盒测试出身的人(三到五年经验)带到他能写出一个case,完成一个合格的脚本大概一两周吧。
但是,我不得不说,我也没办法把这些人带成高手。真正的入门我认为是要具备快速学习的能力开始。
就我在我原公司待过两个部门,我见到的具备快速学习能力的测试人员屈指可数,真的非常非常少,而且很多都是不再写代码的测试架构师。(敢情大部分人都是等别人学好了来教你?)
我的亲身经历就是,我学一个东西花两三天,用学的东西做一个东西花一个礼拜,优化到比较好用可能花个把月。
但我教别的测试人员接手这个东西要教一两个月?!要教好多遍?!给了官方教程的链接告诉我看不懂或看不完?!这就尴尬了。我想去做新的东西,而不是被自己做的东西绑住..变成唯一的维护人员...
所以我写的这么多点的学习路线,真正目的是希望读者在学习过程中培养快速学习的能力。然后摆脱学习路线自行学习。而并不是说让你按部就班一条一条学下来。我自己也才学到14和15。
2.开发转测试的学习路线
首先开发转测试是很可惜的。然后既然做了自动化测试,基于原有的开发经验,你应该很快发现:自动化测试技术含量极低。
大部分人做的就是调用开源工具的接口,这甚至不应该算写是程序。
一个应届生,培训一星期,一定能胜任。
并且,即使他做三年这种自动化测试,他的水平也不会再有提高。唯一区别就是,以前他要一边看工具的API文档一边写脚本,三年后他不用看文档可以直接写。写的速度快了一点点。
测试界的很多新人往往误以为自动化测试高大上,事实上并非如此,而且这是一个很无聊没什么挑战性的工作。并且以重复劳动为主。
然后,做得好一点的地方,多多少少会对测试脚本做一定的抽象,形成一些测试框架。假如你是asp开发转过来的,万一你要设计框架的时候,不要把框架做成图形界面+拖拽控件的,那会非常难用。同样对java出身转测试的人说,请不要把测试框架设计成自带一大堆眼花缭乱的xml配置的,特别是不要让别人老是去改一大堆的xml文件。更不要做成web平台形式的测试框架,特别是不要让测试人员在浏览器里写代码。
这些做法,我都遇到过,可用性很低。
另一个很麻烦的问题是很多自动化测试不稳定。有时pass有时fail。因此一个脚本要反复调,来提高稳定性,这部分是很麻烦的工作。
还有一个问题是很多自动化测试不可靠,即使他fail了,你也不敢说是软件bug,实际工作中每个fail我这里都要分析很长时间,联络很多人才能确定他是不是bug。
所以,学习路线上的建议,我集中于怎样不再做简单低级的自动化测试工作上。我个人觉得自动化测试这份工作本身仅仅作为一个过渡会比较好。就像手工测试一样,我做手工测试时的目标就是不再做手工测试,做自动化测试时的目标就是不再做自动化测试。
那么来看学习路线
1.从开发转自动化测试
2.学习各种测试工具:
不一一列举了,前面已经有了。
一般主流工具都会就可以了。记住这些工具仅仅只是一些api调用,调用这些工具和你asp拖拽一个控件并没有本质区别。
3.加强对测试和相关理论与的理解,以下不分先后:
单元测试原理(包括mock)
接口测试原理(不就是调接口么,顶多加个和单元测试差不多的mock)
性能测试原理(微软有个web性能测试的电子书很好,性能测试原理是唯一一个需要看书学习的,其他几个都太简单不需要看书)
自动化测试原理(归根结底就是一些简单抽象简单封装和一些第三方库的调用)
分布式测试原理(最简单就是master+slave,你可以看看jenkins、selenium grid、jmeter都实现了不同的分布式);
持续集成原理(都不好意思说这能算原理,掌握jenkins和他的一些常用插件就好了);
配置管理原理(为啥要用git,为啥要分branch等等,怎么做一个项目的配置管理);
数据分析原理(我学的ELK,可以用来做测试结果分析和可视化————》进一步你可以转型做专业的数据分析,告别有点无聊的自动化测试,不过我原单位选择了从外面招一个人来而我也不想转这个方向)
4.写点自己的工具
原理都懂了,写起工具来简直势不可挡。
特别是你如果搞的python,很多东西都可以自己写一写啊,都很容易实现啊。有那么多第三方库对吧。实现起来还特别快。
比如,找一个可视化方面的库,你可以轻松自定义测试结果报告,做出你想要的任何高大上的图。这些图表在性能测试的时候很有用,那么尝试给jmeter或者给locust实现一个更漂亮的图表吧。
然后你可能觉得比如jmeter的图表不能实时展示很不好用(jneter会建议你用命令行模式执行较高负载的测试,那么报告要测试跑完你才看得到),自己写一个,让他能实时展示出来。其实网上已经有了,你都不用写直接看一下都行。
但应该要有能力写。
特别注意很多人把3和4颠倒了,写出来的工具根本就很不好用。遇到过这些人遗留的历史工具n多次了。神烦。他反正自己写出来自己不用的,工具质量低也没有领导会关注。
5.告别自动化测试
还是要和前面直接搞自动化测试的人一样补各种基础知识。以及掌握至少两个主流的语言(比如python和java)。以及具备从前端到后台的基本开发能力。至此你可以做大部分公司的自动化测试、测试开发相关工作。
别看前面12345好像很费时间,其实大部分人只是早年没有方向,没有好平台,所以才费时间。我大部分时间都在摸索这条路上。真的学得好的话也就三四年时间你就到这里了吧。到这步之后的区别就是开发能力了。
测试门槛低,天花板也低,这时你就快到天花板了吧,按我个人浅见,就是到了。我也很难想象,哪里还能找到一个月基本工资三万四万的测试工作(通过延长每天工作时间倒是可能拿到这个数)。但对开发来说,还是有这种基本工资的。(股票另算)
总结
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面
自动化测试相关教程推荐:
2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili
2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili
测试开发相关教程推荐
2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili
postman/jmeter/fiddler测试工具类教程推荐
讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili
2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili
2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili
总结:
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!
相关文章:
如何快速且有效的学习自动化测试?
我写一个学习路线吧: 1.学习python基本语法。 2学习路线图 https://www.processon.com/view/link/64e729486ece22263c3e 学习HTML/CSS下的html、xml、webservice三个教程。 3. 然后下一个python的requests库学习写最简单的网络爬虫。知乎上爬虫教程一大堆。 3是…...
openmmlab大模型实战营01
与环境进行交互——智能体更合适 模型微调常见方式 模型评测 模型部署常见问题你 大语言模型本身不具备最新信息和知识的获取,此时需要搭建包含不同模块的智能体框架 智能体:以大语言模型为核心,进行规划、推理和执行...
HarmonyOS-ArkTS基本语法及声明式UI描述
初识ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语…...
字符串转成时间的SQL,一个多种数据库通用的函数
select date 2010-10-06 from dual; date 函数,此函数适用于: 1.MySQL数据库 2.Oracle数据库 3.达梦数据库 4.人大金仓数据库...
CMake入门教程【核心篇】查找包(find_package)
😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「本文的内容」:CMake入门教程 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.使用方法1.1基本用…...
Stable Diffusion好用的显卡推荐
Stable Diffusion 是一款顶级的人工智能艺术生成工具,以其快速的性能、用户友好的界面和显着的效果而闻名。然而,在沉浸体验之前,有必要验证您的计算机(显卡)是否符合最佳功能所需的严格规范。今天我们将介绍三款高性价…...
Spring 对请求参数的优雅处方式(重写序列化方法)
Spring 对请求参数的优雅处方式(重写序列化方法) 描述前端传参方式介绍代码实现:1、重写序列化方式代码2、设置类自动加载到 Spring 中 描述 在我们日常项目开发过程中,往往会遇到前端请求参数中有空格的情况,前端提交…...
2024年中职“网络安全“—数字调查取证(attack817.pcapng)
目录 1.通过分析数据包找出恶意用户最初访问HTTP服务的包号,将该值作为Flag值提交, Flag格式为flag{xxx}; 2.继续查看数据包文件分析出恶意用户扫描了哪些端口,将全部的端口号按照一定顺序作为Flag值,提示:注意端口…...
如何使用VsCode编译C语言?
下载VsCode (1) 解压到D盘跟目录 (2) 运行[vscode.reg],注册右键菜单 (3) 进入[pack]文件夹,运行[install.bat]。安装基本插件。 下载mingw32 (1) 解压任意目录 (2) 我的电脑右键–高级系统设置–高级–环境变量–系统变量–Path(双击)–空白行(双击)–…...
SpringCloud 和 Linux 八股文第三期五问五答
SpringCloud 和 Linux 八股文第三期五问五答 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的! ⭐点赞⭐收藏⭐不迷路!⭐ 1)Linux常用命令 2)如何查看测试项目的日志 一…...
组件通信方式
组件通信方式有:vuex,ref,父子通信(父传子、子传父),兄弟通信(eventBus), 祖先后代通信(依赖注入) 父传子:父组件内:在子组件标签上设置自定义属…...
kbdnecnt.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复?
不少人都在问“kbdnecnt.DLL文件”是什么?为什么电脑总是报错提示说“kbdnecnt.DLL文件缺失,软件无法启动”? 首先,先来了解“kbdnecnt.DLL文件”是什么? kbdnecnt.DLL是Windows操作系统中的一个动态链接库文件&#…...
Linux账户安全
一.Linux账户与组的基本概念 在Limux操作系统中,每一个文件和程序都归属于一个特定的 “用户”。每个用户都由一个唯一的身份来标识,这个标识称为用户ID (UserID, UID )。系统中的每一个用户也至少需要属于一个“用户分组”,即由系统管理员所…...
深度生成模型之GAN优化目标设计与改进 ->(个人学习记录笔记)
文章目录 深度生成模型之GAN优化目标设计与改进原始GAN优化目标的问题1. JS散度度量问题2. 梯度问题 优化目标的设计与改进1. 最小二乘损失GAN2. Energy-based GAN(EBGAN)3. Wasserstein GAN4. WGAN-GP5. Boundary Equilibrium GAN(BEGAN)6. Loss Sensitive GAN7. Relativeisti…...
程序员如何高效学习技术?
我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。 不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。面试官问技术…...
一个无经验的大学毕业生,可以转行做软件测试吗?我的真实案例
在转行之前,我一直在思考,当代年轻人的真实生活情况究竟是什么样的。 朝九晚六,无休止的加班,每天往返于公司与家,没有一点点自己的生活,只能从心里面麻痹自己,以求得最后的慰籍。 这就是我之…...
三.Linux无名管道(PIPE)和有名管道(FIFO)的区别
目录 命名管道(Named Pipe): 无名管道(Anonymous Pipe): 总结: 无名管道(Anonymous Pipe)和命名管道(Named Pipe)都是进程间通信的机制&#x…...
英文字母替换加密(后移n位)
思路:首先写出后移(前移)1位的情况 , 然后逐渐累加至N位情况 #include <stdio.h> void test(char arr[] , int n ) { int i 0; int z 0; if( n < 0 ) { while( i ! n ) { …...
HAproxy群集
HAproxy群集 常见的集群调度器HAproxy 、nginx、LVS区别HAproxynginxlvs HAproxy介绍HAproxy特点HAproxy常见的负载均衡策略HAproxy会话保持HAproxy配置实例 常见的集群调度器 常见的web集群调度器分为软件和硬件 软件:LVS Haproxy nginx 硬件: F5 Ar…...
LeetCode2469. Convert the Temperature
文章目录 一、题目二、题解 一、题目 You are given a non-negative floating point number rounded to two decimal places celsius, that denotes the temperature in Celsius. You should convert Celsius into Kelvin and Fahrenheit and return it as an array ans [ke…...
【ROS2】MOMO的鱼香ROS2(五)ROS2入门篇——ROS2接口与自定义
ROS2接口与自定义 引言1 ROS2自带接口1.1 ROS2通用标准消息包1.2 ROS2传感器消息包1.3 ROS2几何相关消息包 2 ROS2接口介绍2.1 常用CLI命令2.2 原始数据类型与包装类型 3 自定义接口示例3.1 接口定义3.2 自定义接口RCLPY 引言 笔者跟着鱼香ROS的ROS2学习之旅 学习参考…...
python c语言 代码动态检查,python c语言语法分析
大家好,小编来为大家解答以下问题,python c语言 代码动态检查,python c语言语法分析,今天让我们一起来看看吧! Source code download: 本文相关源码 初学编程,应该学习哪一门编程语言,有不少人感…...
C++ DAY6 作业
1.用模板类写顺序表 #include <iostream>using namespace std;#define MAXSIZE 10 template <typename T> class Arr {T *data NULL;int len 0; public://构造函数Arr():data(new T){}Arr(T a,int len):data(new T(a)),len(len){}//析构函数~Arr(){delete data;}…...
华为服务器安装银河麒麟V10操作系统(IBMC安装)
iBMC是华为面向服务器全生命周期的服务器嵌入式管理系统。提供硬件状态监控、部署、节能、安全等系列管理工具,标准化接口构建服务器管理更加完善的生态系统。 服务器BMC IP:192.168.2.100 一、准备工作 1、确保本机和服务器BMC管理口在同一网络 2、银…...
macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法
在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…...
Chatgpt为什么像打字机逐字输出?磨洋工,防止数据库被盗
在他后台的数据库里肯定是完整的结果,每次只给你一个单词一个单词的输送,一方面是为了耍酷,好像真的是一个人在那给你说话,另一方面也是防止第三方的抄袭者最快速度盗取采集偷走数据库。防止他们的服务器崩溃,可以多收几个月会员费。 都说搞…...
ubuntu 卸载桌面
要卸载Ubuntu上的桌面环境,您可以按照以下步骤进行操作: 登录到您的Ubuntu系统,并打开终端。 确认您当前正在使用的桌面环境。可以运行以下命令来查看已安装的桌面环境: s /usr/share/xsessions/ 根据您当前使用的桌面环境&…...
Linux文件fd剖析
学习之前,首先要认识什么是文件? 空文件也是要在内存中占据空间的,因为它还有属性数据。文件 属性 内容文件操作 对内容 对属性 或者对内容和属性的操作标定一个文件的时候,必须使用:路径文件名,文件具…...
VMWARE ESXi存储多路径策略修改
一、存储多路径介绍 VMware 路径选择插件 (PSP) 负责选择 I/O 请求的物理路径。插件是 VMware NMP 的子模块。NMP 根据设备类型为每个逻辑设备分配默认 PSP。每个PSP 启用并执行相应的路径选择策略。支持的路径选项有以下3种: VMW_PSP_MRU - 最近使用 它将选择在系…...
结构体详解
结构体: 一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构 结构体可以用来封装一些属性来组成新的类型。 结构体的大小: 结构体的大小不是结构体元素单纯相加。内存对齐(若计算机使用32位字长的cpu,对32位的…...
网站排名查询平台/中国seo排行榜
CentOS7——阿里云ESC 安装 Docker 步骤:1. 安装 Docker2. 配置阿里镜像源3. Docker 服务常用命令1. 安装 Docker # 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 添加软件源信息 sudo yum-config-manager --add-re…...
阿里云镜像wordpress/广州网络推广平台
130年来, 以千里挑一的苛刻, 记录下世界各个角落的绝美风景。 国家地理杂志的拍摄者 深入常人难以到达的环境, 冒着重重危险拍下的每一帧, 都承载着所有摄影记者的梦想。 37000英尺的高空, 太平洋上巨大的积雨云。 肯尼…...
关掉自己做的网站/运营培训
文本编辑器有很多,图形模式下有gedit、kwrite等编辑器,文本模式下的编辑器有vi、vim(vi的增强版本)和nano。vi和vim是Linux系统中最常用的编辑器。有人曾这样的说过在世界上有三种人:一种是使用Vi的,另一种…...
做seo网站 公司/淘宝运营主要做些什么
今天编写C程序在使用头文件#include<cstring>中的strcpy()和strcat()函数时出现了一个错误:error C4996: strcpy: This function or variable may be unsafe. Consider using strcpy_s instead.在网上搜了一下大概知道怎么解决了,并且知道为什么出…...
外贸营销网站建设方案/seo快速排名多少钱
不论是典型的注册开发商,还是运营商管理的CP/SP,都可以通过开发商互联网或者运营商互联网使用另外的两个在线工具:ClassID生成器和测试签名生成器。 通过ClassID生成器可以为应用生成一个全球唯一的ClassID,在线工具的主要功能部分…...
建设网站的重要意义/深圳优化服务
声明: 按类别特征词选择算法声明 vector<pair<string,double>>LocalDFFeatureSelectionForPerclass(DICTIONARY&mymap,CONTINGENCY&contingencyTable,stringclassLabel);//局部DF法针对每个词对每个类别进行排序voidDFFeatureSelection(vector&…...