软件测试需要学什么技术,零基础大概要学多久

2549 篇文章 34 订阅
2065 篇文章 14 订阅

软件测试需要学什么?别急,本篇回答将为你彻底解答清楚,全篇总字数接近10000字,皆为一字字撰写,如果你嫌“太长”,我已经设置好了目录以及内容导读,具体内容如下:

1、想成为自动化测试工程师到底需要学哪些知识;2、新手学习到什么阶段可以去找工作;3、不同阶段的测试工程师能拿到什么水平的薪资;4、零基础学习软件测试必看的5大壁坑建议5、300G软件测试新人学习资料合集下

一、自动化软件测试工程师完整学习体系

1、软件测试基础知识

学习目标:对软件测试整理的测试流程有清晰的概念,了解软件测试到底是做什么的,软件测试的各种专业术语是什么意思,以及多种不同的软件测试类型区分,测试用例的作用、本质以及如何撰写,测试报告、缺陷管理、常见的软件测试工具 (selenium|Postman|禅道的认识)等等

①软件测试概念:常见的软件测试类型、软件测试的概念掌握、软件质量模型等等

②测试用例:明白测试用例如何设计,测试用例的系统化设计原则,常见的几类测试用例设计方法(因果图法、场景法、正交表法、边界值法、等价类方法等等)

③缺陷管理:正确掌握何谓“缺陷”,常见的缺陷判定方法,缺陷报告的撰写方法,缺陷如何系统性的跟踪和维护等等

④Web项目实战:基础的Web测试项目实战,通过实战了解和掌握基础的软件测试流程、测试项目分析、测试计划和测试方案的设计等等

⑤App项目实战:掌握和了解APP的测试方法,Android、IOS、鸿蒙等不同系统的测试解决方案,Adb的应用等等

⑥测试管理工具:禅道、Testhub、Jira等不同测试工具的特性和优劣,以及测试管理工具的应用场景和原理等等。

2、计算机基础知识

学习目标:主要掌握计算机的系统基础原理(内存信息、运作原理、Linux操作系统命令)、测试的基本理论知识、前端方面的基础知识(HTML+CSS+JavaScript)等。

①计算机基础:掌握和熟悉计算机的组成部分(CPU、GPU、内存等等)、常用的Dos命令等;

②测试理论:软件测试的目的和最终定义,软件测试的术语系列、软件产品的基本测试流程和系统化的测试模型;

③HTML基础:HTML标记语言的基本语法和结构、CSS和DIV层及网页样式的概念,熟悉和掌握常见的HTML标签语法和作用,以及JavaScript语言的基础语法和应用

④Linux系统:掌握Linux系统的安装和操作,Linux终端的各类常见命令的作用(文件操作命令、用户权限管理命令、应用安装和升级的命令)、Docker的安装和使用、以及常见的Linux远程连接方式和方法,其次还要掌握Vi编辑器的使用

在这里插入图片描述
3、Sql数据库的学习

学习目标:掌握基本的sql语句的使用方法,以及常见的sql增删改查、聚合函数以及各类条件查询、子查询的命令。同时需要了解Sql数据库在诸如接口和性能测试中扮演的“角色”和意义

①数据库的基本概念:什么是数据库,数据库都有哪些类型;

②数据库语法:学习掌握Sql语句的基本语法;

③数据库查询:学习和掌握多种数据库的查询方法,比如复杂查询、多表查询 、条件查询等等;

④数据库索引:了解和掌握数据库索引以及数据库事务相关的概念;

⑤数据库客户端:常见的数据库客户端的使用方法, 以及不同的客户端的优劣和应用场景。

在这里插入图片描述
4、编程语言学习

学习目标:对于软件测试工程师而言,想要在软件测试领域做的不错,就需要掌握至少一门编程语言。没有编程基础的我们建议选择Python,如果有一定编程语言基础的可以选择Java。但是Java入门周期和学习难度相对于Python要大一些,但是两者在市面上的应用领域其实差不多,Python在某些领域(人工智能、爬虫和数据分析)要更优于Java语言。所以测试猿大课堂的软件测试课程大纲,就是以Python语言为课标的。

①Python基础:学习和掌握Python语言的基础语法、Python的运行环境以及安装

②Python数据结构:学习和掌握Python的几种数据结构,诸如基础数据结构(数字类型、字符串类型、数值运算、关键字参数等等)和组合数据结构(列表、 字典、元组、集合、hash对象、内存数据结构地址等等)

③程序控制:学习和掌握Python语言中的异常处理、顺序/循环/判断/结构、逻辑运算等

④函数:掌握和学习Python的函数运用、函数的定义和作用域等,内置函数和函数传参

⑤面向对象:学习Python语言面向对象编程的特点,掌握对象编程的特色和优势, 学习面向对象编程的底层逻辑及特殊方法

⑥日志:学习掌握Python的日志格式、配置文件以及内置的占位符等等

⑦测试框架:学习和掌握Python中的Unittest和Pytest两种常用的测试框架,两种框架本身可应用 于单元测试,但更多的是用于编写自动化测试脚本【非常重要】

⑧并发编程:和Java语言一样,Python有其独特的多进程、多线程、线程池、分布等并发编程,学员需要学习和掌握Python的并发编程的特色和方法

⑨网络编程:学习和掌握TCP服务端和客户端的使用方法,学习Python对HTTP/HTTPS协议的响应,以及socket的编程基础

在这里插入图片描述
5、接口测试

学习目标:学习和掌握接口测试的概念和原理。掌握HTTP/HTTPS协议的原理,学习和掌握Dubbox的接口测试方法和协议接口能力,主要掌握Postman的操作以及使用技巧

①HTTP/HTTPS协议:学习和掌握HTTP/HTTPS协议的原理

②请求:学习和掌握常见的Get、Post请求

③Cookie:学习和掌握Cookie、Session的原理以及解决方案

④接口相关:学习掌握接口的文档、接口的基本概念以及接口的测试用例编写,熟悉和掌握接口相关的Postman、Jmeter、SoapUI等测试工具的使用方法

在这里插入图片描述
6、性能测试

学习目标:性能测试属于高端测试工程师需要掌握的技术,对技术要求也有一定的门槛。学习性能测试需要掌握系统架构、Loadrunner等常用的测试工具。学习系统化的测试思维和流程,掌握性能测试的设计与需求分析,以及编写测试脚本。

①性能测试基础:学习和掌握性能测试的意义、性能测试的分类以及常见的性能指标概念的理解

②性能测试需求与设计:学习掌握性能测试的系统化需求分析、性能测试的场景设计

③性能测试进阶:主要掌握性能测试的脚本编写原理与方法,以及监控测试执行的资源,学习性能调优、回归测试等相关的概念与底层逻辑

③性能测试工具:深度掌握Jmeter和Loadrunner的拓展用法,学习性能测试的报告输出

在这里插入图片描述
7、App自动化测试

学习目标:APP自动化测试,是当前软件测试行业中较为主流的测试技术。我们需要掌握APP测试工具Appium的使用,掌握常见的多系统(Android、IOS、鸿蒙)系统的测试APP方法,移动自动化测试环境的搭建

①APP测试环境搭建:主要学习掌握Appium、模拟器、Adb、Desktop等测试环境搭建的必备知识,了解真机设备的调式模式,以及系统化的测试环境的搭建方法

②Appium的使用:掌握Appium的元素定位(原生App元素定位、WebApp应用元素定位)与元素交互(常见的界面互动操作方法、元素的基本属性和页面等待)方法

③测试框架封装:学习和掌握Appium集成、以及Adb工具的使用,了解移动App测试的深度应用(屏幕截图、异常处理、Appium日志解析等等)

在这里插入图片描述
8、持续集成和持续测试

学习目标:主要学习和掌握持续集成Jenkins、Git的环境部署,以及对应的系统化分支的学习,掌握Docker容器的部署和应用

①版本控制Git:为什么需要版本控制,为什么是git,git的部署,git的分支结构,分支合并和冲突解决

②持续集成Jenkins:Jenkins的作用,enkins环境部署,基本的文件结构,Jenkins基本的使用以及插件的使用

③容器Docker:Dockers的来源,docker镜像,容器

在这里插入图片描述

二、不同阶段的测试工程师需要掌握的技能体系

1、可以找工作的初级测试工程师

这里说的测试工程师,是主攻软件的“测试”领域。也就是专业对接和负责软件的BUG查找、测试业务的执行、测试用例设计、测试计划的编写、测试报告生成等等。

这类测试工程师需要掌握的技能如下:

软件测试的整理测试流程和概念,熟练软件测试的用例设计和编写;

熟练掌握几种常见的去缺陷管理工具(禅道、SVN、Testhub、Jira等),熟悉缺陷的定义标准和系统化的测试计划编写等;

掌握Web自动化测试、App自动化测试的测试环境搭建和测试方法;

掌握接口自动化测试的Postman、Jmeter工具的使用,同时深度了解HTTP/HTTPS协议的原理和作用。

薪资水平:6-12K 左右

这个阶段的测试员,一般是刚学习软测到可以就业的程度。 大部分都是掌握了软件测试理论概念、常见的测试流程和测试类型;熟练测试用例的设计和编写;对软件的生命周期、工作流程有大致的了解。知道如何分析软件的用户需求点;掌握一些常见的缺陷定义和缺陷报告的生成。有一些实战项目经验的可能对禅道、SVN、git等测试相关的工具有一定的了解和使用经验。
再稍微优秀一些的自动化测试工程师,还掌握了Linux、Sql数据库、前端HTML等基本的计算机技能。并且了解接口测试的概念和WEB+selenium的测试环境搭建和初步测试,APP移动端测试同样也需要掌握一些。

2、中级测试工程师

对于现在大多数的互联网公司而言,中级自动化测试工程需要是他们非常渴求的人才。这类人才大多都掌握了一门或者多门编程开发语言(Python、Java、C++等)。中级测试工程师能支撑起整个企业测试部门的完整测试体系搭建,包括针对企业产品研发的自动化测试脚本,对于软件的性能、压测、UI、接口、前后端业务等等做全方位测试设计和管理。

中级测试工程师需要掌握的技能如下:

至少掌握一门编程语言,Python、Java、C++都可以。没有编程基础的我们建议选择Python,因为Python入门难度和学习周期相对其他开发语言更加容易一些,对新手比较友好,而且Python在测试领域的应用极为广泛;

熟练掌握常见的自动化测试框架的环境搭建(testNG+selenium+appium+requests等);

熟练掌握APP移动自动化测试的完整流程和测试方法,尤其要熟练掌握Monkey的使用;

熟练掌握Python+requests的测试框架的开发;

能够独立完成基于selenium的完整web自动化测试的框架开发;

深度掌握性能测试中Jmeter和Loadrunner的拓展用法,能独立完成APP/WEB的性能测试。

薪资水平:15-25K 左右

这个阶段的测试员,一般是刚学习软测到可以就业的程度。大部分都是掌握了软件测试理论概念、常见的测试流程和测试类型;熟练测试用例的设计和编写;对软件的生命周期、工作流程有大致的了解。知道如何分析软件的用户需求点;掌握一些常见的缺陷定义和缺陷报告的生成。有一些实战项目经验的可能对禅道、SVN、git等测试相关的工具有一定的了解和使用经验。
再稍微优秀一些的自动化测试工程师,还掌握了Linux、Sql数据库、前端HTML等基本的计算机技能。并且了解接口测试的概念和WEB+selenium的测试环境搭建和初步测试,APP移动端测试同样也需要掌握一些。

3、 高级测试开发工程师+架构师

高级测试开发工程师基本上可以称得上整个企业产品+测试部门的一把手。这类岗位一般都是以管理者居多。本身负责团队的运作、软件整体的测试流程把控、白盒测试的体系搭建,企业大型自动化测试平台的开发和管理,以及整个测试体系的质量管理和监控。

对软件测试的整体流程和细节做到烂熟于心的地步,这类经验一定是经过无数的测试实战方能生成的;

熟练各类型的软件测试(APP、小程序、前后端、WEB、sever等等)方法和扎实的经验,并且对各类型市面上的测试工具运用自如;

对CD/CI有比较熟练的实战经验,能熟练的使用DevOps,具有完善的测试架构能力;

有熟练的编程开发能力,深谙软件的底层代码逻辑和结构,能够独立开发、管理和完善自动化测试框架;

拥有优秀的团队领导能力,合理安排测试团队的人员组织和安排。

薪资水平:30-50W 左右年薪

测试工程师因其工作的特殊性,需要掌握产品的用户需求、设计需求以及产品的底层结构等各方面,测试人员会从用户的角度出发,去看待软件产品各方面可能存在的不利体验和准确诉求。
所以经验比较足的测试人员,对产品的各个维度都能做整体化的把控。比如分析产品的用户需求和体验,以用户的角度来把握产品的定位和功能的迭代等等。可以说从测试转为产品经理的人,一定是一名非常有全局性、前瞻性的优秀产品经理或者测试经理。

三、零基础学习软件测试必看的5大壁坑建议

1、一定要打好前期基础

软件测试的学习,总体来讲大致分为三个阶段。

第一阶段主要掌握软件测试的基础知识,比如:软件测试概念、软件测试分类、测试流程、测试评审、测试用例和测试计划等等。这一块儿的基础概念知识,是后期学习自动化测试的基石。掌握好了软测基础,后面的学习将会顺利很多;

第二阶段主要掌握计算机基础一类的知识。 比如:计算机概念、Linux系统的学习、MySql数据库的学习、HTTP/HTTPS(TCP/IP)协议、前端方面的知识(重点:web+selenium 自动化和 App+Appium 一块儿需要用到)。这几个点虽然前期感觉和自动化没什么关系,但是到了后期运用到接口、性能、Web、App自动化的时候都会涉及到这类计算机基础知识;

第三阶段就是各类型测试的实战教学。软件测试工程师能否拿高薪,就取决于你掌握了多少测试类型的技术。目前主流的接口自动化、App自动化、WebUI自动化和性能测试,都是市面上较为抢手的高薪就业技术点。学习过程中,一定要注意融会贯通,以及多做实战项目,这样在就业上岗的时候,我们才能从容的应对工作。

2、至少学习一门编程语言

编程语言对于软件测试的重要性我就不多说了。想必了解一点自动化软件测试,或者大致看过我们测试猿大课堂的软件测试课程视频的同学都知道。我们在后期学习的接口自动化、App自动化、Web自动化等等都是围绕着自动化来的。而自动化又是基于编程开发出来的自动化运行脚本和框架。我们使用自动化技术测试项目时,就必须要懂得如何写出可以调试界面的脚本。

当然前期可能不需要我们自己去写脚本,市面上有很多现成的自动化测试脚本和框架。但我们也必须知道怎么用,如果你不学编程语言,那么你的测试技术就定然有上线。当你掌握一门甚至多门编程语言,再来从事测试的话,你的优势将变得无限大。

编程语言这块儿,测试猿课堂建议大家可以这样选择:Python > Java。 没有编程基础的都可以这样选择,优先学 Python,其次学 Java 。因为 Python入门相对简单一些,而且 Python在各大企业中的自动化测试中应用更加广泛,可以说几乎百分之90的企业选择的自动化测试语言都是 Python.

3、注意不同测试类型的学习侧重点 提高学习效率

接口自动化:需要熟悉Python语言,然后在Python语言的基础上学习Python的联网库Requests,需要封装成测试脚本。这时候需要Pytest单元测试库或者使用Unittst+HtmltestRunner来控制脚本生成测试报告,如果有需要持续集成可以再学习Jenkins

web自动化:同样需要掌握Python语言,然后学习Python控制浏览器的库Selenium,和浏览器相对于的Webdriver

APP自动化:需要熟悉掌握Python语言,然后再Python语言的基础上,学习Python控制手机App的库Appium,手机相关的知识比如Adb,Activity,需要封装成测试脚本

上面几点都是主流的测试方案,也是初级测试工程师必须掌握的几个重要学习知识点。还有更多的内容可以根据自身的就业方向和目标,进行纵深拓展。

4、不管实战还是学习中,一定要多动手

测试猿大课堂培训的很多学员中,有一些人存在着同样的问题。那就是学习的方式和效率不太高。后来我们在每周的测验中根据这些“问题学员”的问题,进行深度追踪后,发现他们都有个统一的特点:从不记笔记!

这让我非常震惊,学习怎么能不记笔记呢?学习怎么能不动手呢?学员的想法是感觉老师讲的他们都听懂了,而且他们还可以看回放!老师也有课后PPT和源码笔记分享给他们,为什么自己还要做笔记呢?

大家一定要记得,好记性不如烂笔头!学习吸收知识的最快方式就是亲自动手!不管是记笔记,还是说老师布置的作业。

千万不要把老师课后分享的源码拿过来放在自己的环境里一跑,欸,发现可以运行,完美!就不管了,这其中大脑所缺失的记忆过程,会让你在后续的学习里,迷糊点积累的越来越多!

5、不要过于依赖现有工具 多尝试自己写工具

软件测试行业比较特殊,市面上有非常多很不错的测试工具。很多初进入软件测试行业的新手,往往会习惯于依赖于现成的测试工具,个人感觉有这些工具应付工作就足够了。但这其实是一种非常危险的“惰性思维”。

软件测试行业中其实还有非常多优秀的开源工具,而很多大型互联网企业都比较倾向基于这类开源工具进行二次开发的自动化测试平台。测试工程师也一定要多尝试着去使用这类开源工具,一来可以拓展自己的思维和眼界,二来可以尽早熟悉自动化测试框架的底层逻辑和开发实战。这一点可以在将来面试的时候,为自己的简历打上一道非常不错的色彩。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值