文章目录
前言
本文内容相当于测试从入门开始的学习顺序,介绍了关于软件测试具体需要学习的技能、工具及发展。具体知识点和相关内容可自行百度(百度还是相当强大的),本文只对测试工作做一个提纲。
提示:以下是本篇文章正文内容,后述内容供参考
一、测试需要学习目标及任务?
1.前置基础知识
计算机基础
测试理论
B/S框架和C/S框架
常用DOS命令
服务器、域名
测试理论
软件测试的目的
软件测试的定义
软件测试的原则
产品质量模型
测试基本流程
HTML基础
HTML基础语法
标签属性
图片标签
超链接
锚点
表单
CSS基础
CSS基础语法
CSS四类选择器
常用文字属性
行高属性
边框
盒子模型
内外边距
JS基础
JS基础语法
JS引入方式
计算机组成原理
2.linux和数据库
LINUX
操作系统介绍
操作系统的发展史
CentOs图形界面
文件和目录
常用linux命令使用
基本操作命令
https://www.cnblogs.com/UncleYong/p/10637238.html
vim文本编辑器的使用
数据库介绍
数据库的基本概念
关系型数据库的介绍
MySQL的安装及使用
Navicat的使用
SQL语言(重点)
数据表操作
数据基本操作-增删改查
条件查询
排序
聚合函数
分组
分页
连接查询
子关联
子查询
子查询演练
数据库高级功能
数据库设计
命令行操作数据库
视图
事务
索引
外键
用户名密码
mysql日志
3.测试基础
软件测试理论
软件测试的分类
按测试方法分类
黑盒测试
黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
等价类划分法
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据划分为若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例。测试用例由有效等价类和无效等价类的代表数据组成,从而保证测试用例具有完整性和代表性。使用该方法设计测试用例主要有两个步骤:(1)确定等价类;(2)生成测试用例。
边界值分析法
边界值分析法是对程序输入或输出的边界值进行测试的一种黑盒测试方法。实际的测试工作证明,考虑了边界条件的测试用例比那些没有考虑边界条件的测试用例具有更高的测试回报率。这里所说的边界条件,是指输入和输入等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
因果图法
因果图法也是较常用的一种黑盒测试方法,是一种简化了的逻辑图。因果图能直观地表明输入条件和输出动作之间的因果关系,能帮助测试人员把注意力集中到与程序功能有关的输入组合上。因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
错误推测法
错误推测法是基于以往的经验和直觉,参照以往的软件系统出现的错误,推测当前被测程序中可能存在的缺陷和错误,有针对性地设计测试用例。
白盒测试
白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
程序结构分析
逻辑覆盖方测试
执行测试用例
撰写测试总结
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
灰盒测试由方法和工具组成,这些方法和工具取材于应用程序的内部知识和与之交互的环境,能够用于黑盒测试以增强测试效率、错误发现和错误分析的效率。
按测试方向分类
功能测试
性能测试
安全测试
兼容性测试
UI测试
易用性测试
稳定性测试
APP专项测试
弱网测试
权限测试
安装、卸载、更新测试
场景交互测试
资源争用测试
消息推送测试
资源监控
阶段分类
单元测试
对软件中的最小可测试单元进行检查和验证
集成测试
组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试
系统测试
是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方
验收测试
在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试
对象分类
APP测试
WEB测试
物联网测试
车联网测试
大数据测试
AI测试
小程序测试
状态分类
动态测试
动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能
静态测试
静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错
其他分类
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本
冒烟测试
在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程
埋点测试
数据采集是提供给运营工作人员去了解手机app对于某些模块、场景的用户使用情况,进行的一个触发埋点,将埋点采集到的数据到的数据进行上报的过程
MOCK测试(打桩测试)
在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法
软件开发模型和测试模型
边做边改型
瀑布模型
将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动
线性模型
快速原型模型
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求
螺旋模型
将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统
增量模型(演化模型)
整个产品被分解成若干个构件,开发人员逐个构件地交付产品
智能模型
拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码
喷泉模型
喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期
迭代式模型
统一软件开发过程,统一软件过程)推荐的周期模型
软件的质量模型
功能性(Functionality)
适应性(Suitability)——对规定任务能否提供一组适应任务的功能的能力。
准确性(Accurateness)——是否能够得到正确或相符的结果的能力。
互用性(Interoperability)——与其他规定的系统进行交互的能力。
依从性(Compliance)——软件是否符合相关标准、法律法规等的能力。
安全性(Security)——是否能避免对程序及数据非法访问或意外访问的能力。
可靠性(Reliability)
成熟性(Maturity)——由故障引起软件失效的频率。
容错性(Fault tolerance)——在出现错误后维持规定的运行的能力。
易恢复性(Recoverability)——在故障发生后恢复至正常状态的能力。
易使用性(Usability)
易理解性(Understandability)——用户为理解软件逻辑及应用所要付出的努力。
易学性(Learnability)——用户为了学习软件使用所要付出的努力。
易操作性(Operability)——用户对软件进行操作和控制所要付出的努力。
效率(Efficiency)
时间特性(Time behavior)——响应和处理及软件执行功能时的所需耗费的时间(吞吐量)。
资源特性(Resource behavior)——响应和处理及软件执行功能时所需耗费的资源及持续时间。
可维护性(Maintainability)
易分析性(Analyzability)——为诊断缺陷或失效时所需付出的努力。
易改变性(Changeability)——为对软件进行修改、排错等所需付出的努力。
稳定性(Stability)——对软件进行修改后造成风险或无法预期结果的频率。
易测试性(Testability)——为确认软件修改是否有效所需付出的努力。
可移植性(Portability)
适应性(Adaptability)——软件转移到不同环境时所需付出的努力。
易安装性(Installability)——在指定环境下安装软件所需付出的努力。
一致性(Conformance)——软件是否符合可移植性的约定。
易替换性(Replaceability)——软件在该环境中替代指定软件的能力。
测试用例的设计和要素
软件生命周期
需求分析阶段
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,也是在整个软件开发过程中不断变化和深入的阶段,能够为整个软件开发项目的成功打下良好的基础。
软件设计阶段(概要设计和详细设计)
主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件编码阶段:是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
软件测试阶段
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。
软件运行和维护阶段
是软件生命周期中持续时间最长的阶段,包括纠错性维护和改进性维护两个方面。
测试方法
等价类划分方法
等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据划分为若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例。测试用例由有效等价类和无效等价类的代表数据组成,从而保证测试用例具有完整性和代表性。使用该方法设计测试用例主要有两个步骤:(1)确定等价类;(2)生成测试用例。
边界值方法
边界值分析法是对程序输入或输出的边界值进行测试的一种黑盒测试方法。实际的测试工作证明,考虑了边界条件的测试用例比那些没有考虑边界条件的测试用例具有更高的测试回报率。这里所说的边界条件,是指输入和输入等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
因果图
因果图法也是较常用的一种黑盒测试方法,是一种简化了的逻辑图。因果图能直观地表明输入条件和输出动作之间的因果关系,能帮助测试人员把注意力集中到与程序功能有关的输入组合上。因果图法是一种适合于描述对于多种输入条件组合的测试方法,根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
判定表
也称决策表,能表示输入条件的组合,以及与每一输入组合对应的动作组合
状态迁移法
很多需求可以用状态机的方式来描述,状态机的测试主要关注状态转移的正确性。
给定条件是否产生正确的状态变化;
是否会产生非法的状态变化;
有无不可达的状态和非法的状态;
正交
正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验
场景
测试场景是可以测试的任何功能。它也称为测试条件或测试可能性。作为一名测试人员,您可以将自己置身于最终用户的角色,并找出真实世界的场景和使用中的应用程序案例。
1、创建测试场景可确保完整的测试覆盖率。
2、测试场景可以得到业务分析师,开发人员,客户等各种利益相关方的批准,以确保对测试中的应用程序进行全面测试。它确保软件适用于最常见的用例。
3、测试场景可以作为确定测试工作量的快速工具,从而为客户创建提案或组织员工。
4、测试场景有助于确定最重要的端到端事务或软件应用程序的实际使用。
5、为了研究程序的端到端功能,测试场景至关重要。
测试用例设计
黑盒测试用例设计方法
白盒测试用例设计方法
缺陷管理
缺陷的定义
软件缺陷(Defect),常常又被叫做Bug。所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。
缺陷的判定标准
1.软件未达到产品说明书中已经表明的功能;
2.软件出现了产品说明书中指明不会出现的错误;
3.软件未达到产品说明书中虽未指出但应当达到的目标;
4.软件功能超出了产品说明书中指出的范围;
5.软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。
缺陷报告
①缺陷编号(Defect ID):提交缺陷的顺序
②缺陷标题(summary):简明扼要的描述缺陷
③缺陷的发现者(Defected By):测试人员
④缺陷发现日期(date):一般为当天
⑤缺陷所属的模块(subject):在测试哪个功能模块时发现的bug.
开发组可以据此决定由谁负责修改该bug
⑥发现缺陷的版本(Defected in release):
⑦指派给谁处理(Assigned to):测试人员指派给开发经理,开发经理根据缺陷所在的模块,需要再次指派具体的开发人员。
⑧缺陷的状态(status):缺陷此时所处的处理阶段或处理情况
缺陷跟踪流程
1、测试人员提交缺陷
2、开发人员确认并修复缺陷
3、测试人员回归缺陷
4、回归通过,测试人员关闭缺陷
5、回归不通过,测试人员重新打开缺陷
6、开发可以提出在后期版本修复缺陷或者拒绝缺陷,根据具体情况处理。
测试环境搭建及部署
pm2
项目部署与基本操作使用
docker
项目部署与基本操作使用
docker基本操作
k8s/k3s(kubernetes)
项目迭代更新与管理
git
Git的奇技淫巧.pdf
jenkins(ci/cd)
web项目实战
搭建项目测试环境
项目的测试流程
开发阶段测试
模块功能测试
集成测试
文档检查
完工验收测试
安装测试
功能验证
性能测试
需求验证
文档测试
功能测试分析
状态迁移法的使用
是一种基于产品规格分析,对系统的每个状态及与状态相关的函数进行测试,通过不同的状态验证程序的逻辑流程
流程测试分析
基本流
备选流
异常流
非功能测试分析
测试报告编写
fiddler抓包
测试管理工具
禅道的使用
jira的使用
4.编程+数据结构
python基础
pyrhon开发环境搭建
python变量
流程控制语句
高级变量类型
函数应用
文件操作
面向对象
魔术方法
异常处理
模块和包
Java基础
面向对象
类和对象的概念
对象成员
多层继承
多态
类属性和实例属性
实例方法
类方法
静态方法
异常处理
异常的作用
捕获异常
自定义异常
异常的传递规则
快速排序
归并排序
模块和包
模块和包
_all__的用法
import语句
from......import...的用法
5.接口测试
接口基础
接口及接口测试概念
接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
HTTP
HTTP协议
HTTP请求过程
TCP/IP协议
HTTP状态码及基本解决
接口规范
项目环境说明
接口测试流程
1、需求分析
2、Api文档分析与评审
3、测试计划编写
4、用例设计与评审
5、环境搭建(工具)
6、执行用例
7、缺陷管理
8、测试报告
Postman实现接口测试
postman的介绍和安装
postman的基本用法
postman测试报告
数据库操作
数据库介绍
数据库的基本操作
数据库的事务操作
数据库管理工具-navicat
代码实现接口测试
request库
集成UnitTest
接口测试框架开发
项目实战
持续集成
request库的使用及脚本封装
unittest框架
mock实现
接口测试扩展
mock测试
接口测试总结
6.web自动化
WEB自动化入门
自动化测试的理论知识
主流的web自动化测试框架介绍
Selenium的发展历史和工作原理
元素查看工具使用
环境搭建
WEB自动化基础
元素基础定位方法
Xpath和CSS元素定位方法
元素常见操作
浏览器操作方法
鼠标键盘操作
显式等待和隐式等待
HTML特殊元素处理
窗口截图
验证码处理
WEB自动化中级
UnitTest框架
Flxture
UnitTest断言
参数化
测试报告
WEB自动化高级
PO模式
数据驱动
日志处理
项目实战
UnitTest与HTMLreport的结合使用
UnitTest与DDT结合,实现数据驱动
UnitTest与logging结合使用
7.移动自动化
APP测试基础
APP应用系统架构
APP敏捷开发模式
APP应用测试要点
业务功能测试
兼容性测试
交叉事件测试
性能测试
用户体验测试
移动自动化基础
移动端测试分类及特点
ADB命令及Monkey使用
appium环境搭建
appium工作原理
移动自动化中级
APP和手机系统操作
元素定位
元素操作
高级手势操作
混合APP测试
PyTest测试框架
定制测试报告
YAML数据读写
移动自动化高级
PO模式
数据驱动
Git
Jenkins项目持续集成
8.性能测试
性能测试基础
性能测试理论
性能测试分类
性能测试常用指标
性能测试流程
性能测试步骤
LoadRunner的安装与注册
LoadRunner的原理
性能测试工具
Jmeter环境搭建
Jmeter功能概要
元件作用及执行顺序
线程组
参数化
断言
连接数据库
定时器
分布式
测试报告
项目-接口性能测试
项目API文档分析
接口清单梳理
接口脚本设计
并发数据计算
逻辑控制项目应用
单一场景搭建
常用响应图表搭建及应用
项目-web性能测试
脚本录制
正则过滤
cookie管理器
事务控制器
思考时间
web性能脚本执行与分析
性能测试调优
windows服务器性能监控
linux服务器性能监控
性能测试报告
9.安全测试
题主对安全测试了解不多,暂时搁置等待后续更新
10.项目综合实战
功能测试
功能测试用例设计思路
自媒体端测试
后台管理端测试
用户APP端测试
UI自动化测试
Selenium Grid
编写自动化测试脚本
接口测试
windows服务器性能监控
linux服务器性能监控
性能测试报告
性能测试
Locus框架
APP性能测试
安全测试
二、测试过程中所用到的工具
1.通用技能
业务相关
业务需求知识
业务管理流程
2.抓包工具
fiddler
charles
wireshark
3.缺陷管理工具
jira
禅道
4.文档协作工具
wiki-协同创作超文本系统
Xmind-思维导图软件
5.接口测试工具
Postman
HttpRequester
6.压力测试工具
Jmeter
LoadRunner
Gatling
7.安全测试工具
AWVS--网站及服务器漏洞扫描软件
sqlmap--检测与利用SQL注入漏洞的免费开源软软件
Nmap--网络扫描和嗅探工具
8.客户端测试工具
adb命令
兼容性测试
系统兼容性
屏幕分辨率
屏幕类型
导航栏类型
厂商兼容
9.服务端测试
后续更新
10.性能压力测试
Jmeter
LoadRunner
Gatling
11.H5性能测试
Chrome Dectool
W3C Performance API
12.自动化测试工具
UI自动化测试
安卓自动化测试
UIAtumator
appium
UIAtumator2
AirTest
IOS自动化测试
WebDriverAgent
appium
AirTest
Web自动化测试
Selenium
微信小程序自动化测试
ChromeDriver
接口自动化测试
Python+request
Java+rest-assured
Robot Framework
HttpRunner
Postman+Newman
Jmeter+Ant
Vue+Flask&Django
13.弱网测试
Charles
AppCrawler
14.专项APP性能测试
PerfDog
adb(安卓)
FFmpeg(音视频)
15.客户端性能测试
内存
Android Studio Profile
PerfDog
eakCanary
CPU
Android Studio Profile
Android Monitor
PerfDog
IOS instruments
16.稳定性测试
Monkey
MonkeyRunner
MonkeyScript
AppCrawler
17.耗电量分析
dumpsys batterystatus
Battery-Historian
BugReport
18.编程相关
java
Testng
Junit
shell
linux基本命令( find、netstat、ps等)
linux三剑客
awk
grep
sed
DataBase
MySQL
Redis
MongoDB
代码版本控制
git
svn
IDE
PyCharm -- Python
Intellij -- Java
Sublime -- shell
Python
unittest
pytest
request
正则
Python正则表达式
Java正则表达式
shell编程之正则表达式
19.卡顿分析
CharlesAppCrawlerSystraceOverdrawJenkins
20.持续集成
Jenkins
Jenkins Pipeline
Git SCM
Docker
K8S--基于容器的集群管理平台,用于管理容器
21.流量分析
Proxy
TCPDUMP
22.平台开发
Vue.js
Nodejs
Python Django/Flask
总结
以上就是今天要讲的内容,本文仅仅对测试工作方向及相关工具进行简单总结,在测试学习时没有方向可进行简单参考,在有些方向及细节会有缺失,内容由题主整理部分参考百度(有内容侵权即删)。