软件测试该如何学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试该如何学习相关的知识,希望对你有一定的参考价值。

参考技术A

一、学习路线图(点击图片即可放大,可清晰观看)

二、软件测试视频第一阶段-前置基础知识

1、学习目标:

可掌握的核心能力:

1. 熟悉计算机相关概念;
2. 掌握基础的测试理论;
3. 熟练掌握html常用标签和语法规范;
4. 掌握使用CSS定义网页样式;
5. 掌握js的基本用法;

2、知识点:

1)计算机基础
计算机组成部分、操作系统分类、B/S和C/S架构、常用DOS命令、服务器域名
2)测试理论
软件测试的目的、软件测试定义、软件测试原则、产品质量模型、测试基本流程
3)HTML基础
HTML基础语法、标签属性、图片标签、超链接、锚点、表单
4)CSS基础
CSS基础语法、CSS四类选择器、常用文字属性、行高属性、边框、盒子模型、内外边距
5)JS基础
JS基础语法、JS引入方式

三、软件测试视频篇第二阶段-linux和数据库

1、学习目标:

可掌握的核心能力:
1. 掌握Linux操作系统按照和配置;
2. 熟练掌握Linux常用命令;
3. 掌握数据库增删改查操作;
4. 熟悉数据库索引、视图、事务、常见函数等高级功能;
5. 掌握Redis的string类型、hash类型、set类型、list类型等基本类型和操作;

2、知识点:

1)LINUX(熟悉)
操作系统介绍、操作系统发展历史、CentOS图形界面、文件和目录、常用LINUX命令使用、vim文本编辑器的使用
2)数据库介绍(熟悉)
数据库基本概念、关系型数据库介绍、mysql安装与使用、Navicat使用
3)SQL语言(重点)
数据表操作、数据操作-增删改查、条件查询、排序、聚合函数、分组、分页、连接查询、自关联、子查询、子查询演练
4)数据库高级功能(了解)
数据库设计、命令行操作数据库、函数、存储过程、视图、事务、索引、外键、用户密码
5)redis数据库功能(掌握)
掌握Redis的string类型、hash类型、set类型、list类型等基本类型和操作;

四、软件测试视频篇第三阶段-测试基础

1、学习目标:

可掌握的核心能力:

1. 掌握测试的基本概念和测试常见分类;
2. 熟练掌握黑盒测试用例设计方法,进行功能测试用例设计;
3. 熟练掌握缺陷报告的编写;
4. 熟悉测试管理工具禅道和JIRA的使用
5. 掌握项目测试流程;
6. 掌握Web项目功能测试分析和用例编写;
7. 熟悉测试计划,测试方案,测试报告的核心内容
8. 掌握功能测试与数据库的关系
9. 掌握Fiddler工具的使用

2、知识点:

1)软件测试理论
软件测试的分类,软件开发模型和测试模型,软件的质量模型,测试用例的定义和要素
2)测试用例设计
等价类方法、边界值方法、因果图、判定表、状态迁移法、正交、场景
3)缺陷管理
缺陷定义、缺陷的判定标准、缺陷报告、缺陷跟踪流程
4)Web项目实战
搭建项目的测试环境,如何快速熟悉项目,项目的测试流程,测试计划和方案,功能测试分析,状态迁移法的使用,流程测试分析,非功能测试分析,测试报告编写,Fiddler抓包
5)App项目实战
6)测试管理工具
禅道的使用,JIRA的使用

五、软件测试视频篇第四阶段-编程+数据结构

1、学习目标:

可掌握的核心能力:
1. 掌握Python基础语法, 具备基础的编程能力;
2. 建立编程思维以及面向对象程序设计思想。

2、知识点:

1)Python开发环境
Python开发环境的搭建、Pycharm使用
2)Python基础
变量以及变量的类型、标识符和关键字、变量名命名方式、算数运算符、变量数据类型转换、输入和输出、注释、if语句基本格式、if…else…语句、if…elif..else语句、逻辑运算符、比较关系运算符、运算符优先级、while循环语法格式、while嵌套应用、break的用法、continue的用法、列表概念及操作、元组概念及操作、字典概念及操作、字符串概念及操作、集合概念及操作、for循环及for…else用法、函数的基本语法、函数执行流程、文档注释、带参数的函数、带返回值的函数、函数的嵌套调用、匿名函数、递归函数、局部变量和全局变量、引用、文件的概念、文件的打开与关闭、文件读写, 以及文件定位读写、文件、目录相关操作
3)面向对象
面向对象介绍、类和对象的概念、魔术方法的意义及作用、对象成员的访问控制权限、继承的概念及意义、继承、多层继承和多继承、多态的概念以及应用、类属性和实例属性、实例方法、类方法、静态方法、设计模式: 单例模式
4)异常处理
理解异常的作用、捕获异常、异常的传递规则、自定义异常
5)模块和包
模块和包的概念、__all__的用法、import语句用法、from...import...用法、from...import * 用法

六、软件测试视频篇第五阶段——WEB自动化

1、学习目标:

可掌握的核心能力:
1.能够熟练搭建Web自动化测试环境;
2.熟练掌握元素的定位方法和元素操作;
3.掌握鼠标键盘操作及HTML特殊元素的处理;
4.掌握使用UnitTest管理自动化测试的脚本;
5.熟练掌握PO模式的设计思想,并能够对页面进行封装;
6.掌握数据驱动的实现方式;
7.掌握日志的相关概念,以及日志的收集处理;
8.掌握在实际的项目中如何灵活运用自动化的相关技术。

2、知识点:

1)WEB自动化入门
自动化测试的理论知识、主流的Web自动化测试框架介绍、Selenium的发展历史及工作原理、元素查看工具使用、环境搭建
2)WEB自动化基础
元素基础定位方法、Xpath和CSS元素定位方法、元素常见操作、浏览器操作方法、鼠标键盘操作、显示等待和隐式等待、HTML特殊元素处理、窗口截图、验证码处理
3)WEB自动化中级
UnitTest框架、Fixture、UnitTest断言、参数化、测试报告
4)WEB自动化高级
PO模式、数据驱动、日志处理
5)项目实战
自动化测试流程、项目自动化框架设计、自动化代码实现

七、软件测试视频篇第六阶段——移动自动化

1、学习目标:

可掌握的核心能力:
1.掌握移动端APP测试特性;
2.能够熟练搭建移动自动化测试环境;
3.熟悉appium的工作原理;
4.熟练掌握ADB工具的使用;
5.熟练掌握元素的定位方法、元素操作和手势操作;
6.掌握单元测试框架pytest的使用;
7.掌握YAML数据读写;
8.掌握使用allure生成测试报告;
9.熟练掌握PO模式的设计思想;
10.掌握数据驱动的实现方式;
11.掌握Git的使用方式;
12.掌握Jenkins持续集成的环境配置;
13.掌握在实际的项目中如何灵活运用移动自动化的相关技术。

2、知识点:

1)移动自动化特性
APP应用系统架构、测试环境及发布平台、APP敏捷开发模式、APP应用测试要点、业务功能测试、兼容性测试、安装卸载升级测试、交叉事件测试、Push消息测试、性能测试、用户体验测试、稳定性测试
2)移动自动化基础
移动端测试分类及特点、ADB命令及Monkey使用、appium环境搭建、appium工作原理
3)移动自动化中级
APP和手机系统操作、元素定位、元素操作、高级手势操作、混合APP测试、PyTest测试框架、定制测试报告、YAML数据读写
4)移动自动化高级
PO模式、数据驱动、Git、Jenkins持续集成
5)项目实战
APP项目实战

八、软件测试视频篇第七阶段——接口测试

1、学习目标:

可掌握的核心能力:
1.掌握接口及接口测试相关概念;
2.掌握使用Postman进行接口测试;
3.熟练掌握数据库的基本操作和事务操作;
4.掌握requests库使用及脚本封装;
5.掌握接口测试框架的设计和封装;
6.掌握使用持续集成工具管理接口测试脚本;
7.掌握在实际的项目中如何灵活运用接口测试的相关技术。

2、知识点:

1)接口测试基础
接口及接口测试概念、HTTP协议、接口规范、项目环境说明、接口测试流程
2)Postman实现接口测试
Postman介绍和安装、Postman基本用法、Postman高级用法、Postman测试报告、项目实战
3)数据库操作
数据库介绍、数据库基本操作、数据库事务操作
4)代码实现接口测试
Requests库、集成UnitTest、接口测试框架开发、项目实战
5)持续集成
持续集成介绍、Git、Jenkins、持续集成之Postman、持续集成之代码
6)接口测试扩展
Mock测试、接口测试总结

九、软件测试视频篇第八阶段——性能测试

1、学习目标:

可掌握的核心能力:
1.能够熟练搭建性能测试环境;
2.掌握性能测试基础理论;
3.掌握Jmeter常用组件使用;
4.掌握Jmeter编写和录制性能测试脚本;
5.掌握基于jmeter实现单一和混合场景搭建;
6.掌握思考时间、事务、逻辑控制器在性能测试场景的应用;
7.掌握Jmeter常用性能插件进行图表分析;
8.掌握Linux服务型性能监控方法和指标;
9.掌握数据库监控和调优的常见方法。

2、知识点:

1)性能测试基础
性能测试理论、性能测试分类、性能测试常用指标、性能测试流程
2)性能测试工具
常用性能测试工具、Jmeter环境搭建、Jmeter功能概要、元件作用及执行顺序、线程组、参数化、断言、关联、连接数据库、逻辑控制器、定时器、分布式、测试报告
3)项目-接口性能测试
项目API文档分析、接口清单梳理、接口脚本设计、并发数据计算、逻辑控制器项目应用、单一场景搭建、常用响应图表插件及应用
4)项目-web性能测试
脚本录制、正则过滤、cookie管理器、事务控制器、思考时间、混合场景搭建、web性能脚本执行与分析
5)性能测试调优
windows服务器性能监控、linux服务器性能监控、性能测试报告

十、软件测试视频篇第九阶段——综合项目实战

1、学习目标:

可掌握的核心能力:
1.掌握功能测试在真实的项目中如何实施;
2.掌握基于Selenium的Web自动化测试框架搭建和使用;
3.掌握基于Appium的APP自动化测试框架搭建和使用;
4.掌握使用工具实现接口测试;
5.掌握基于Python+Requests库的接口自动化测试框架的搭建和使用;
6.掌握Locust性能测试框架的使用;
7.掌握如何对APP进行性能测试;
8.掌握在实际的项目中如何灵活运用相关测试技术。

2、知识点:

1)项目介绍
项目简介、项目架构
2)功能测试
功能测试设计思路、自媒体端测试、后台管理端测试、用户APP端测试
3)UI自动化测试
Selenium Grid、搭建自动化测试框架、编写自动化测试脚本
4)接口测试
接口测试流程、基于工具的接口测试、基于代码的接口测试
5)性能测试
Locust框架、APP性能测试

渗透测试入门指南之小白该如何学习渗透?

前言:

内容都是精华,如果想要入安全的行,强烈建议仔细阅读。

一、渗透测试是什么?

释义:我们理解的渗透测试是通过各种⼿段对⽬标进⾏⼀次渗透(攻击),通过渗透来测试⽬标的安全防护能⼒和安全防护意识。

打个⽐⽅:⽐如电视剧《我是特种兵》⾥⾯的演习,特种部队(进攻⽅)渗透到蓝军(防守⽅)的指挥部进⾏斩⾸,如果斩⾸成功,那么就可以知道蓝⽅的防守能⼒不够好,需要改进,反之就是特种部队的特种作战能⼒不⾜,需要提升。

那么渗透测试⼯程师就相当于特种部队⾥⾯的特战队员,我们需要对我们的⽬标做⼀次渗透,以测试⽬标的防护能⼒。渗透测试⼯程师就相当于⽭,⽬标就相当于盾。

二、学习渗透测试的战略⽅针是什么?

I:其实这个⽅针很简单,但是很多⼈就是⽆法严格贯彻执⾏。简单来说就是: 多学,逮住⼏套视频,使劲看,使劲学,使劲啃透。

II:所谓技术⼤神是怎么样的呢?技术好?

说技术好是很宽泛的,很表⾯的。我们把技术好剖析开来就是:懂得多, 解决问题能⼒强。其中,想要懂得多⽐较容易实现,多学习知识就⾏了,但是否能把知识⽤于⼯作,这就是解决问题的能⼒了,这个能⼒需要培养,也有的⼈解决问题的能⼒天⽣就⽐别⼈好,这也就是为什么有些学历低的⼈,却⽐很多学历⾼的⼈混的还要好的⼀个很重要的原因了。

III:知识的积累

想要懂得多,就要话⼤量时间去看,去记,去实践,去总结。⼤家可以看到,⽆论是电视上还是现实中,绝⼤多数满腹诗论的⼈都较为低调,因为他们把⾃⼰⼀天中⼤量的时间花在了学习和研究上⾯。

那么我们学习渗透测试,到底该如何去学呢?

找到⼀个有⾜够多技术总结的⽂章或者是视频教程来学习,⼀定要静⼼学习,学习从来都不是浮躁的⼈能做好的事情,⽆论是学语⽂数学还是渗透测试。学完⼀套就学第⼆套,起码得看三套视频,这三套有很多知识点是重叠的,但是因为讲解⼈的讲解⽅法不同,你也就会有不⼀样的理解,更能帮助你消化吸收知识。

三套视频总课时加起来得有250课,如果每课约为20分钟,那就是5000分钟,⼤约就是连续学习84个⼩时,如果这84个⼩时的知识你都懂了,那么恭喜你,你⼊门了,你能对⼩型⽹站发起渗透测试了。

IV:解决问题的能⼒

解决问题之前要找到问题出现的根本原因。⽐如你觉得你跟你的⼥(男)朋友分⼿是因为某⼀件事出现了分歧的争吵,但事实上是因为你们的观念不同,因为你们不够相爱,争吵只是你们分⼿的导⽕索,并不是根本原因。

所以,透过现象看本质⾮常重要,这关乎我们能否彻底的把问题解决。那时候有个⼈跟我说,他看了很多教程,也懂很多知识,但就是⽆法实战,所以他实习的时候不敢去⾯试安全公司。

他表达得有点粗俗:“我看过很多视频,也懂得怎么利⽤某个漏洞,但是当⾯对⼀个⽹站的时候,我就是不懂的怎么下⼿,就⽐如有个美⼥躺在我⾝下,我都不知道怎么下⼿。”

我特别纳闷,既然美⼥都躺下了,你为何不替她宽⾐解带?不会宽⾐解带?那你也不懂去看看岛国的爱情动作教育⽚?那其实说到底就是你看不到⾃⼰的知识储备量不够。既然知识不够,那就胆⼦来凑啊,不会宽⾐解带,就撕开啊!还是不会撕开,那你就脸⽪厚⼀点,让⼈家⼥⽣⾃⼰来啊。

这种事情的最终⽬的是达到双⽅都愉悦的⽬的,谁主动都可以的啊。回到渗透测试上来,他不知道如何对⼀个⽹站下⼿,我问他为什么?他说不知道,这就是我们开头说到的,不知道如何对⼀个⽹站下⼿是他不敢去⾯试安全公司的⼀个原因,但是根本原因是他不会变换⽅法,没有舍我其谁的勇⽓。

2021最新整理网络安全\\渗透测试/安全学习(全套视频、大厂面经、精品手册、必备工具包)一>戳我<一

三、学习渗透测试的具体⽅法是什么?

1. 关注⼀些安全站点:这样可以了解最新的东西,提⾼对安全的亲切度,这样你不惧怕它,才能靠近它,占有它。

2. 找⼏部⾼质量的视频教程,坚持学完,并做好每个视频的笔记。我以前学习是别⼈每讲完⼀个知识点我就把视频暂停,然后把笔记做好再继续看的,甚⾄把视频⾥⾯的代码抄下来,⾃⼰读再⼀遍那个代码(虽然读不懂,但是混个脸熟也挺好)。

3. 制定⼀个⼩阶段的学习计划及⽬标。

4. 建⽴⼀个⾃⼰的博客,把⾃⼰的所学、⾃⼰的笔记记录下来。这个很重要,因为这样你可以以⼀个第三者的视⾓看待⾃⼰的东西,就会找出不⾜,你就可以改进。

5. 每天看⼏篇漏洞⽂章,以增加⾃⼰的漏洞只是储备量。

6. 每天遇到新的问题,我们不妨⽤笔记录下来,⼀个⼀个的解决,不要着急,古⼈云:欲速则不达,慢慢的,你的只是储备量就会多起来的。

7. 买两本纸质书籍当作理论⽀撑,因为视频⾥⾯讲的理论没有以⽂字呈现,⼤家理解起来也是有困难的。这⾥推荐⼏本:⼊门级别的《Web安全渗透剖析》,进阶级别的《⽩帽⼦讲web安全》、《⽹络攻防实战研究:漏洞利⽤与提权》。

8. 找⼀些跟⾃⼰志同道合的朋友⼀起学习。⽐如加⼀些讨论氛围好的QQ群,⼀些⼩密圈,⼀些论坛。

四、学习过程中遇到的各种疑难杂症怎么解决?

I:渗透要不要学编程?

相信⼈都会有这个疑虑,那么作为职业的渗透测试的我,可以跟⼤家说⼀下我的看法。

学习渗透测试之前要明⽩渗透测试这个领域包含什么东西,渗透测试是集合计算机各领域的知识于⼀体衍⽣出来的计算机新领域。

请看下图:

从上图就可以清晰的看到,渗透测试会涉及包括但不限于数据库的知识、⽹络技术的知识、操作系统的知识、编程的知识。所以你觉得你要不要学习编程呢?

计算机各领域的知识⽔平决定你渗透⽔平的上限

⽐如你编程⽔平⾼,那你在代码审计的时候就会⽐别⼈强,写出的漏洞利⽤⼯具就会⽐别⼈的好⽤;⽐如你数据库知识⽔平⾼,那你在进⾏SQL注⼊攻击的时候,你就可以写出更多更好的SQL注⼊语句,能绕过别⼈绕不过的WAF;⽐如你⽹络⽔平⾼,那你在内⽹渗透的时候就可以⽐别⼈更容易了解⽬标的⽹络架构,拿到⼀张⽹络拓扑就能⾃⼰在哪个部位,拿到以⼀个路由器的配置⽂件,就知道⼈家做了哪些路由;再⽐如你操作系统玩的好,你提权就更加强,你的信息收集效率就会更加⾼,你就可以⾼效筛选出想要得到的信息。

五、计算机各领域的知识⽔平,我们该学到什么程度呢?

我说了,计算机各领域的知识⽔平决定你渗透⽔平的上限那咱们零基础是不是要把上⾯的都学的很好了再搞渗透呢? 并不是的,作为初学者,可以先学习那些基础,⽐如你先学⼀个编程语⾔的基础,⽤PHP做例⼦,你起码要懂if else这些、连接数据库;⽐如学数据库,⽤MySQL做例⼦,那⾄少也是要会增删改查、⼦查询这⼏个操作;⽹络的话⽐较难,也是很抽象的,你做外⽹的渗透,⾄少要懂基础的http协议,知道端⼝是什么,知道⽹站是怎么架设起来的;操作系统的基础相对⽐较好学,主要是各种命令的作⽤,各种软件的安装和使⽤,使⽤kali-linux就得先学习Linux的操作。

六、渗透测试的思维是怎么样的?

我们所谓的猥琐的思维就是渗透要的思维,也就是⼤家常说的⿁点⼦多,⿁主意多。这意味着我们要从不同⾓度去思考同⼀件事情,但我们在渗透的时候要始终贯彻⼀个⽅针:换位思考。⽐如管理员会怎么设置⽹站,管理员会怎么设置密码,管理员会… …

渗透就跟泡妹纸⼀样样的,认识妹纸–了解妹纸(信息收集)–逗妹纸开⼼(扫描)-- 得到妹纸的肯定之后

就开始寻找时机表⽩(漏洞利⽤) – 表⽩失败(漏洞被修补或有WAF)要么死缠烂打要么就Next one,要么就⽤其他的⽅法来搞定妹纸(有WAF就是⼼存芥蒂,我们就要得到真⼼,就是要⽤真情感化),⽐如搞定她姐妹,帮她搞定她的难题,要浪漫~!

七、学习渗透的过程中遇到问题问谁?怎么问?

I:学会利⽤搜索引擎

渗透测试主定是⼀个⾮常有破坏性的技术,所以很多问题都没办法直接搜索到答案,这就考验各位的学习能⼒了。⽐如⽤Google、Baidu变换关键字来搜索。

II:到论坛提问

去问别⼈,⼀定要把问题描述清楚,最后是把出现问题的地⽅截图⼀起发出来,⽅便好⼼⼈回答,⽐如我们

论坛的提问和回答,请看下图:

III:加入一些培训
培训都是有答疑解惑的服务的。但是也不要揪着简单的问题问,简单的问题先百度,先养成一个独立解决问题的习惯,这样也会加深自己

八、 渗透工具的问题

我一开始就是用的Baidu找的工具来用的,当然,现在也差不多,只是多了朋友间的相互传递。你不要怕有后门,因为都是要放在虚拟机里面运行的,只要还原一下VM的快照就完事了。而且随着学习的深入,你就会发现,其实平常用的工具就几个:Burp suite、AWVS、App scan、SQLmap、浏览器。至于其他的扫描器的话,很多都是脚本语言来写的,比如Python,只要是个正常人都不会往Python脚本里面加入后门。亦或者是Java。这些东西在官网下载,或者一些可信度高的网站下载就可以了,就比如上面的网址提供的下载。

九、关于渗透测试实战的问题

网络安全法规愈发完善,我们不小心可能就做了违法乱纪的事情,所以请大家切勿瞎搞。我们可以去一些在线靶场去测试我们的所学,比如墨者靶场;还可以在本地搭建一些本地靶场,比如Dvwa;

十、关于学到什么程度才能去工作?

如果是在校生的话,人家企业是会放宽条件的。安全方面的也有很多个方向的,比如有渗透、安服、审计,这个就要看你往哪个方向走了,360行,行行出状元,不要问我哪一行吃香,没有产出,你连呼吸都是错的!至于学到什么程度,你可以去看人家招聘信息啊,然后去应聘啊,不要怕应聘,主要是测试自己是否达到人家的要求,如果达不到就继续学习呗,反正你还在读书。如果不是学生又要转行,最快的就是找培训机构培训

2021最新整理网络安全\\渗透测试/安全学习(全套视频、大厂面经、精品手册、必备工具包)一>戳我<一

比如甲方安服方向:

比如乙方的安服方向:

比如乙方的渗透方向:

以上是关于软件测试该如何学习的主要内容,如果未能解决你的问题,请参考以下文章

渗透测试入门指南之小白该如何学习渗透?

零基础该如何学软件测试,需要准备哪些东西?

阿里测试人员:8年经验分享自学软件测试学习路线

腾讯测试员:8年经验分享自学软件测试学习路线附带JAVA学习路线

小白该如何学习Linux操作系统

怎么学习自动化测试?