一位十年测试的修炼之路,希望能帮你点清现实

news2024/11/25 17:17:15

对于刚进入软件测试工作岗位的新人,如何快速、健康的在职业道路上成长,作者谈了几点自己看法:

1、兴趣是最好的老师 对于软件测试工作,通常是比较枯燥的,如果没有兴趣很难做到持久。

我最近参与了一个软件测试项目,在测试团队中,有三位是在校学生,他们以兼职的身份到公司上班,他们都是软件相关专业的本科生和研究生,基础都不错。但是,只有其中一位表现最突出,因为他很珍惜这份社会实践的工作机会,做事认真,找出了很多高优先级的Bug。 另两位同学,在参加项目不到1个月后就以各种理由退出了。在我与他们的交流中,其中一位说测试工作太枯燥了,没有挑战性,他更希望做软件开发的工作。这位同学由于不喜欢做软件测试,实际上他对软件测试技术缺乏基本的了解。所以他在7天的测试工作中,只找到了3个Bug(正常情况下,其他测试人员每天能找到5个缺陷)。因此,从绩效评比中他的成效最低。 另一位同学虽然愿意做软件测试,但是他觉得现在的黑盒测试太简单,学习不到测试技术的高级技巧,他更愿意学习白盒测试,能够自己测试软件源代码。而现在的项目没有这部分的内容,所以尽管他工作成绩也不错,但是积极性不高。 因此,建议同学们在寻找工作中,首先需要了解,你是否愿意做软件测试,愿意做白盒测试还是功能的黑盒测试,不要盲目的参与到工作中,否则对于用人单位,对于个人的成长都是浪费。

2、测试人员要学会思考 测试是个技术工作,需要学会主动思考。

如果你遇到一个好的测试主管(组长),他会主动的解决你的测试实际技术难点,这是你的幸运。但是测试问题错综复杂,测试主管工作很忙,他没有时间解决你遇到的任何技术问题,需要你自己分析问题的性质,尝试各种解决方法,搜索网络上的文章,最好如果仍然解决不了才向主管求助。 我们反对遇到问题表现得很茫然失措,不要问一些很“弱智”的问题,否则主管认为你解决问题的能力不做,学习能力欠缺,这样对于今后的发展不利。 测试人员如何思考?根据问题的现象思考。问题是属于测试专业知识不足引起的,还是测试用例等测试文档模糊、错误引起的,是个别现象还是测试项目的其他内容都存在的普遍现象。测试要从模拟用户使用的角度展看,因此要用最终用的角度,分析问题的严重程度。 在询问最终的解决方法前,确保你根据自己的经验尝试了各种解决方法,并且尽量把你发现的问题和猜测,告诉测试主管,证明你已经主动思考了,但是没有找到好的解决方法,或者不能确定是否方法可行。

3、选择适合的测试学习材料 软件测试的技术博大精深,对于初学者该从何入手呢?

可以从以下几个方面学习: 第一是公司提供的培训材料。测试新员工到公司后一般都要经过短暂的培训,这是学习的最好的第一手材料。针对性特别强,都是公司今后用到的测试知识的总结,针对性和实用性都很强。如果有不懂得问题,可以随时提出来,因为你是测试新人,不懂要问,任何人都不会对你的能力表示怀疑。 第二是借助测试项目的测试文档学习,包括测试计划、测试用例,测试缺陷数据库,可以先看看以前发现了哪些bug,这些bug是怎么发现的,有什么规律和特征,学习别人怎么写测试缺陷报告。 第三是阅读测试书籍和测试网站和论坛。这些内容很多,建议利用工作之后的时间,根据自己的知识有选择的选择测试书籍,先从基础知识阅读。正式出版的书的内容质量都比较高,而测试网站和论坛的文章良莠不齐,有些只是只言片语,很多还存在错误。因此,需要有一定的鉴别能力,否则会误导,浪费时间。

4、巩固测试知识基础 练武术需要先练“蹲马步”,否则直接学习刀枪棍棒等十八般武器,只能学到几招皮毛,甚至伤及自己,武林高手都是基础很牢固的,内功很深厚的。

做软件测试也是这个道理。很多出入测试行业的新人,希望走捷径,往往听信各种测试培训机构的宣传,认为参加几天的能力提高班,就可以步入测试高手的殿堂,这是错误的,也是要吃大亏的。 另一个错误就是还没有学会测试的基本概念,就盲目地学习各种大型商业自动化测试软件,结果花了很多时间和金钱,只是学会了工具的具体操作。到了实际测试项目中,无法有效利用工具解决实际测试问题。 实际上,作为测试新手,大部分都是从手工功能测试开始起步的,大型自动化测试只有成为测试高手,才有机会使用。另外测试工具的操作是很简单的技术问题,关键是如何发挥测试工具的作用,这需要测试策略。 所以,初学者要老老实实的学习测试基础知识,学习各种测试术语、测试概念、测试分类、测试的流程、测试项目的执行过程等。如果这些都不懂,今后的职业发展会成为限制。 学习是痛苦的过程,但是学习是增强技能的必然之路。学习测试知识没有捷径,需要日积月累,需要勤奋,需要思考,需要总结,从一点一滴学起。

5、不断学习行业知识 测试人员除了学习和掌握测试技术外,还需要不断学习行业知识,这是区别普通测试技术人员和测试行业专家的最好方法。

学习什么行业知识呢?根据你测试的软件的应用领域决定。例如,你正在测试的是电信行业的应用软件,那么你需要学习电信行业知识,包括术语、业务和行业技术。怎么学习呢?可以与客户交流,与开发人员交流,看专业书和文章。 学习行业知识是个不断进步的过程,每个行业都有很系统的知识架构,首先学习工作中最需要的理论和技术。然后有机会和兴趣的时候,不断细化和深入。 高级的测试人员需要精通测试技术,掌握行业知识,可以提供行业软件的测试和质量保证方案。对于初学者,要认识到经过不断努力,可以成为测试行业专家。千里之行,始于足下,目前最重要的是从测试入门知识开始。

 软件测试是一个深不可测的行业,它的一大特点就是入门简单深入很难,说实话作为一个老测试人员,我也不敢十分肯定的说自己已经到后期了。

做测试的一定要精通一门编程语言,比如Python、JAVA、C++都可以,这是深入学习测试的基础。一些的入门测试人员不懂还可能可以糊弄过去,但是楼主说的测试后期不懂编程语言是肯定不行的。除了语言以外,就是要互联掌握一种性能测试的工具,比如JMeter、LoadRunner等等,这些都是测试人员的基础,我就不详细说了跟着我下面规划好的路线来学习的话能走很多的弯路。(配套学习课件我放在最后面的小卡片上面了,有兴趣的小伙伴可以点击)

第一阶段 测试基础
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。
毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?

测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法
质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。

第二阶段 常见的测试工具
测试工具永远是软件测试人员的得力助手,不能完全依赖工具,但也不能没有工具,在学习软件过程中,要著中软件测试工具的使用,下图覆盖初、中级软件测试工程师所需具备的测试工具,要想学好,下手学习吧。

混在软件测试职业圈,工具千千万,不可能每个都会用,至少要知道有哪些工具可用,什么时候该用什么工具,每个工具能解决什么问题,然后再深入应用几款工具即可,下面就带大家总结一下。

测试管理工具

禅道:简单好用,市场主流,互联网行业居多
Jira:简单好用
QC/ALM:复杂,收费,电信/金融行业使用较多
bugzilla:功能简单
svn:代码和文档管理工具
git:但是多分支管理比svn好

接口测试工具

Jmeter(开源)
postman
SoapUI
推荐使用 jmeter 和 postman。

性能测试工具

loadrunner:大而全,要学精通还是有点难度,重量级工具,过去和现在都是行业老大
jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用
Locust:基于python的一个性能测试工具

白盒测试工具

junit/testng:java下的单元测试框架
unittest/pytest:python下的单元测试框架
cppunit:跨平台的c++单元测试框架
PhpUnit:Php语言下的单元测试框架
TestBed:一个重量级的白盒测试软件,可以进行单元测试、集成测试、静态测试,军工行业常用
Klockword:静态测试工具,军工行业常用

持续集成工具

Jenkins:比较常见的一种CI工具
Hudson

网络测试工具

以HTTP/HTTPs协议为主,网络测试工具有:
wireshark
fiddler
charles

app自动化工具

appium:这个应该算是目前最流行的基于app的自动化测试框架了
uiautomator:安卓自动化测试框架,基本上支持安卓的所有事件操作
Monkey:安卓自带的测试工具
Monkey Runner:Monkey改进版,支持自己编写脚本测试,用Python语言
Robotium:一款国外的Android自动化测试框架,用法比较

web安全测试工具

appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来
fiddler:网络抓包工具
burpsuite:暴力破解、抓包工具
skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。

第三阶段 代码学习
好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
接下来,你要考虑你的发展方向了
是成为一个自动化测试工程师呢?
还是性能测试工程师呢?
还是安全测试工程师呢?
啊!这个问题好难!我也不知道该怎么选。
反正我啥都会一点,哪个岗位都能去面一面。
关于方向的选择,看我的这篇文章

嗯,相信你心中已经有了答案了,那我们继续往下面说。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。
还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了!
所以现在各位可以去学习编程语言了,
不过不用像开发那样,学的那么深入。
比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。
总之前期你两者二选一的学习就OK了。
啥?你问我学的啥。
我当然是两种都会啊
哈哈哈哈哈哈哈,惊不惊喜!意不意外! 

自动化方向

等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。

各种单端测试框架:unittest(python)、pytest(python)、JUnit(java)
WEB自动化测试框架:selenium(适用于java\python\javascript)
APP自动化测试框架:appium(适用于java\python\javascript)
以上的内容,根据你学的语言进行选择。
appiunm和selenium根据你参与的项目进行选择。
不过无所谓了,反正迟早都要学会的。
这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。
而且凭你那时候的水平,你都能轻松的看懂。

性能方向

对loadrunner和jmeter的掌握更加的深入。
可以手写脚本、脱离录制。
学会了多线程编程、能够手写java或者python、不用工具直接实现压测。
学习linux,毕竟性能总是和服务器打交道的。
学习系统架构的相关知识、方便你更容易的分析系统瓶颈。
说实话、性能方向的提示更难、因为需要掌握的东西太多了。
性能测试做深入了,基本上就是架构师的水平了。
可能你现在看着这个性能方向的学习一脸懵逼。
没关系、等你把上面的编程语言学会了你就不懵逼了。

 

安全方向

渗透测试
SQL注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
推荐知道创宇的学习体系。
我估计你看到这里就更懵逼了。
没关系、等你把基础的东西学会就知道我在说啥了。
毕竟你现在还是一个小白嘛。
不要去纠结这种小事。

各位在这个阶段,正常情况都应该是中级测试工程师的水平了。

第四阶段 架构学习


前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。
怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。
上面讲的都是教你应该怎么做。
在这个阶段你要自己去发现、为什么要那样做。
跨过了这个阶段就基本上可以成为专家了。
学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。
自动化测试框架、性能测试框架等等。
已经有了属于自己的一套东西了。
在群里或者论坛上去装逼、别人都会尊称你一声大佬了。
可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。
总之,到了这个阶段就没什么学习路线了。

如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后: 我给大家整理了一份完整的全套软件测试学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

                           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android AIDL跨进程通信

一、前言 什么是AIDL?AIDL用来做什么的?怎么使用AIDL? AIDL是Android的一种接口定义语言,语法跟java接口定义类似,文件格式为 .aidl 非 .java 。AIDL主要是用来实现跨进程通信,AIDL的本质也是通过Binder机…

【集群】Haproxy搭建Web群集

文章目录 一、Haproxy 相关概念1. Haproxy 的概述2. Haproxy 的主要特性3. 常见的 Web 集群调度器4. 常见的应用分析4.1 LVS 应用4.2 Haproxy 应用4.3 LVS、Nginx、Haproxy的区别 5. Haproxy 调度算法原理5.1 roundrobin5.2 static-rr5.3 leastconn5.4 source5.5 uri5.6 url_pa…

【1 TypeScript - TypeScript语法的类型】

1 认识TypeScript 主要是为了解决类型检查的痛点.是拥有类型的JavaScript超集,虽然编写的是Typescript,但是最终仍然会编译成JavaScript代码. 2 TypeScript的运行环境 使用ts-node 3 变量的声明 变量的类型推导(推断) 4 JavaScript类型 – Array类…

ThinkPHP5源码阅读-类的自动加载register与autoload的实现

文章目录 前言如何下载ThinkPHP5源码关于自动加载类类的准备进入base.phpLoader::register() 注册自动加载函数对composer 的支持对think和trait的支持对extend目录的支持 类的加载autoload方法class_alias的定义和使用findFile 查找类 作业:自定义一个可以被自动类…

Java设计模式—责任链模式(Chin of Responsibility)

目录 前言 一、责任链模式的简介 二、责任链模式的概念 三、责任链模式的作用 四、责任链模式的优、缺点 1.责任链模式的优点 2.责任链模式的缺点 五、责任链模式的应用场景 六、代码案例 UML类图 1.定义一个请求枚举类 2.定义一个请求类 3.定义一个抽象处理接口 4、…

TS中any与unknown详解,示例

文章目录 前言一、一个示例二、示例目的1、功能描述2、主要区别3、代码实现 总结 前言 本片文章主要是在写ts时遇到不知道类型,很容易就想到用any可以解决一切,但这样写并不好。所以今天就总结学习一下,比较好的处理任意类型的unknown。 一、…

2023年最新网络安全入门指南,保姆级教程!啃完这篇就够了

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

大气污染扩散模型Calpuff教程

详情点击链接:大气污染扩散模型Calpuff教程一,Calpuff 1.Calpuff模型 2、Calpuff模型基础 3、Calpuff模型下载安装 1)Calpro系统安装 2)安装环境要求 3)需安装的辅助软件二,数据预处理 1.网格设置 …

Vue3-04-生命周期

Vue 的生命周期描述组件从创建到销毁的全过程。Vue3 和 Vue2 的生命周期钩子非常像,我们仍然可以在相同的场景下使用相同的钩子函数。 Vue3 在设计时对先前的版本进行了向下兼容,如果你的项目还在使用选项式 API 进行构建,那么不需要修改生命…

【stable diffusion】图片批量自动打标签、标签批量修改(BLIP、wd14)用于训练SD或者LORA模型

参考: B站教学视频【:AI绘画】新手向!Lora训练!训练集准备、tag心得、批量编辑、正则化准备】官方教程:https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_README-en.md#automatic-captioning 一、…

Springboot全文链路id,并ELK搭建部署整合全文链路id

Springboot全文链路id,并ELK搭建部署整合全文链路id 1.docker-compose.yaml部署 version: 3 services:elasticsearch:image: elasticsearch:7.13.2container_name: elasticsearchenvironment:- "cluster.nameelasticsearch" #设置集群名称为elasticsearch- "d…

[笔记]C++并发编程实战 《五》C++内存模型和原子类型操作

文章目录 前言第5章 C内存模型和原子类型操作5.1 内存模型基础5.1.1 对象和内存位置5.1.2 对象、内存位置和并发5.1.3 修改顺序 5.2 C中的原子操作和原子类型5.2.1 标准原子类型 总结 前言 第5章 C内存模型和原子类型操作 本章主要内容: C11内存模型详解标准库提…

【Docker】子系统与其相关名词的界定、Control Groups等详细讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

回收旧物系统平台开发的功能

1、定位服务 为了方便用户寻找最近的废品回收点,小程序应该提供位置服务和导航功能。 2、垃圾分类知识普及 用户可以查看所有垃圾分类知识,每种物品属于哪一个类型的垃圾分类。一目了然。相当于一本活字典,用户可以随时翻看查阅垃圾分类的…

人工智能(pytorch)搭建模型11-pytorch搭建DCGAN模型,一种生成对抗网络GAN的变体实际应用

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型11-pytorch搭建DCGAN模型,一种生成对抗网络GAN的变体实际应用,本文将具体介绍DCGAN模型的原理,并使用PyTorch搭建一个简单的DCGAN模型。我们将提供模型…

java+openlayer实现大气污染扩散模拟反演

一、模拟参数及效果 二、应用背景 大气污染是当今社会面临的一个重要问题。随着工业化和城市化的进程,大气污染问题变得越来越严重。为了更好地应对这个问题,许多科学家和研究人员开始探索大气污染扩散反演技术。 大气污染扩散反演技术是一种通过数学模…

给软件测试人的一封信,全网最佳“指路明灯“

一、一招鲜吃遍天下 你需要有一个核心技能。这个技能至少达到远超你的同事(包括开发岗位的同事的)平均水平。最好达到业界领先水平,且这个核心技能需要不断打磨提高。比如,我选择的核心技能是使用Python写代码。这个核心技能可以…

3.2 基于Java配置类整合SSM框架实现用户登录

一、基于Java配置类整合SSM框架实现用户登录 1、创建Maven项目 Maven项目 - SSMLoginNew 单击【Finish】按钮 2、添加相关依赖 在pom.xml文件里添加相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache…

Kubernetes 1.27 加快 Pod 启动速度

如何在大型集群中加快节点上的 Pod 启动&#xff1f;这是企业集群管理员常常会面临的问题。 这篇博文重点介绍了从 kubelet 一侧加快 Pod 启动的方法。此方法不涉及通过 kube-apiserver 由 controller-manager 创建 Pod 所用的时间段&#xff0c;也不包含 Pod 的调度时间或在其…

电脑最牛逼的截图方式

1.电脑桌面上空白的地方新建一个文本文档&#xff0c;将后缀名修改为bat&#xff0c;截图如下&#xff1a; 2.右键点击该文档编辑&#xff0c;在编辑界面输入start snippingtool&#xff0c;点击保存之后关闭该文档。 3.双击该文档&#xff0c;在模式里面选择响应的截图方式即可…