测试工程师技能图谱
2021-09-13 11:50:55 186 举报
AI智能生成
测试开发、测试运维、测试管理。
作者其他创作
大纲/内容
请看前言
这是一个努力在分享的测试er的总结,正在持续更新中,收藏绝对物超所值!
项目地址
https://gitee.com/iewiewiew/wei-notebook
https://gitee.com/iewiewiew/Learn-Java.git
https://gitee.com/iewiewiew/Learn-Python.git
https://gitee.com/iewiewiew/Learn-Go.git
测试核心
质量保证
效能提升
测试硬实力建设
基本概念
测试分类
阶段
单元测试
集成测试
系统测试
验收测试
类型
功能测试
接口测试
性能测试
安全测试
自动化测试
业务测试
测试流程
测试流程
产品需求评审 > 开发设计评审 > 测试用例评审 > 开发联调测试 > 冒烟测试 > 详细测试 > 测试报告
需求阶段
需求评审
开发阶段
编写测试用例
测试用例评审
测试阶段
冒烟测试
详细测试
提交缺陷
回归缺陷
每日测试报告
转交uat验收
编写测试报告
测试总结
生产阶段
生产跟踪
测试方法
等价类方法
等价列划分设计方法是把所有可能的输入数据划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例,
测试某等价类的代表值就等于对这一类其他值的测试。
测试某等价类的代表值就等于对这一类其他值的测试。
边界值方法
边界条件指的是输入和输入等价类中刚好处于边界、或超过边界或小于边界的状态。
与等价划分的区别:边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
场景法
通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果。场景法一般包含基本流和备选流,从一个流程开始,
通过描述经过的路径来确定的过程,经过遍历所有的基本流和备选流来完成整个场景。
通过描述经过的路径来确定的过程,经过遍历所有的基本流和备选流来完成整个场景。
因果图法
因果图法是一种适合于描述对于多种条件的组合、相应产生多个动作的形式的测试用例设计方法。如果程序的功能中含有输入条件的组合情况,
应在一开始就选用因果图法。
应在一开始就选用因果图法。
测试用例
测试用例设计
腾讯文档协作
缺陷管理
TAPD
JIRA
禅道
测试左移
思想
提前发现问题
工程化
精准测试
自动化测试
环境治理
持续集成
流程优化
需求、设计、测试方案评审
产品验收&研发自测规范
代码管理规范
版本管理规范
测试右移
思想
利用线上能力验证
工程化
线上引流回归
环境&流量隔离
线上监控
巡检工程
流程优化
线上验证能力开发规范
灰度(发布)方案
线上验证规范
回退流程
监控
线上问题定位流程
用户反馈
技术概念
幂等性
一个数据,或者一个请求,重复来多次,得确保对应的数据是不会改变的,不能出错。
分布式
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
微服务
集群
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
分布式锁
接口测试
如何做
入参/请求
必填校验
长度校验
参数类型
出参/响应
响应状态码
响应参数
JMeter
基本概念
HTTP接口
DUBBO接口
添加jmeter-dubbo插件
常用组件
HTTP请求默认值
协议
服务器名称或IP
路径
请求头
用户定义的变量
名称
值
BeanShell预处理程序
读取jar包
BeanShell后置处理程序
读取jar包
查看结果树
Mock
基本概念
什么是mock
模拟接口以提供正常的返回值
为什么要用mock
1、无法控制第三方系统某接口的返回,返回的数据不满足要求
2、某依赖系统还未开发完成,就需要对被测系统进行测试
3、有些系统不支持重复请求,或有访问访问频次限制。如不可重复支付,获取敏感信息的接口访问频次不可高于xx等
2、某依赖系统还未开发完成,就需要对被测系统进行测试
3、有些系统不支持重复请求,或有访问访问频次限制。如不可重复支付,获取敏感信息的接口访问频次不可高于xx等
easymock
easy-mock官网:https://www.easy-mock.com/
安装easy-mock教程:https://github.com/easy-mock/easy-mock/blob/dev/README.zh-CN.md
MeterSphere
MeterSphere官网:https://www.fit2cloud.com/metersphere/index.html
MeterSphere是什么
MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、性能测试、 团队协作等功能,
全面兼容 JMeter、Postman、Swagger 等开源、主流标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,
加速高质量的软件交付,推动中国测试行业整体效率的提升。
全面兼容 JMeter、Postman、Swagger 等开源、主流标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,
加速高质量的软件交付,推动中国测试行业整体效率的提升。
抓包
常用功能
修改请求
修改响应
延迟响应
常用工具
Fiddler
whistle
F12
性能测试
为什么要做性能测试
性能测试指标
QPS
Queries Per Second,每秒查询数,即是每秒能够响应的查询次数,注意这里的查询是指用户发出请求到服务器做出响应成功的次数,
简单理解可以认为查询=请求request。
简单理解可以认为查询=请求request。
TPS
Transactions Per Second 的缩写,每秒处理的事务数。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
RT
Response Time缩写,简单理解为系统从输入到输出的时间间隔,宽泛的来说,他代表从客户端发起请求到服务端接受到请求并响应所有数据的时间差。
一般取平均响应时间。
一般取平均响应时间。
并发数
简而言之,系统能同时处理的请求/事务数量。
安全测试
攻击方式
sql注入
参考资料
sqlmap基础使用指南:https://blog.csdn.net/a1176905843/article/details/118927247
sqlmap基础使用说明:https://www.cnblogs.com/php09/p/10404560.html
Sqlmap安装
Windows
sqlmap下载:https://github.com/sqlmapproject/sqlmap/zipball/master (添加sqlmap到环境变量,注:先安装好Python环境)
验证是否安装成功
sqlmap.py --version
是什么
SQL注入攻击指的是通过构建特殊的输入作为参数传入WEB后台应用程序,而这些输入大都是SQL语法里的一些组合,
通过执行SQL语句而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
通过执行SQL语句而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
防范
第一是正则过滤(安全狗、D盾等等)、第二是数据库预处理等
mybatis是如何防止SQL注入的
xss攻击
是什么
xss(Cross-site-scripting),跨站脚本攻击,WEB应用程序直接将来自用户的执行请求送回浏览器执行,使得攻击者可截取用户的Cookie或者Session数据而能假冒直接登入为合法使用者
防范
1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤
2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行
3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie
ddos攻击
是什么
分布式拒绝服务攻击(Distributed Denial of Service)可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用
防范
高防服务器
黑名单
DDoS 清洗
CDN 加速
越权攻击
是什么
越权访问是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户帐后,可以利用一些方式绕过权限检查,访问或者操作到原本无权访问的高权限功能
水平越权
也可以把其称作访问控制攻击漏洞,Web应用程序在接收到用户的请求时,我们在增删改查某条数据时候,没有判断数据所对应的用户,或者在判断数据的用户时是通过从用户表单参数中获取userid来实现的,这里的话我们可以修改userid来实现水平越权
垂直越权
垂直越权又叫做权限提升攻击,具体原因就是web应用没有做用户权限控制,或者只是在菜单上做了权限控制,导致恶意用户只要猜测到其他管理页面的URL,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的
防范
查询请求的SQL在最后加上限制条件归属人为当前登录者,如果不是那么查询结果行数就为0;
测试工具
AppScan
是什么
AppScan是用于web项目的安全测试工具,扫描网站所有url(自动+手动),自动测试是否存在各种类型的漏洞。
AppScan安装
网络安全
电子签名
加密算法
对称加密
非对称加密
其它
如何提高防御机制
加密、IP访问次数限制、用户锁定机制(用户登录3次后就锁定)
敏感数据保护
识别敏感数据:密码、秘钥、会话标识;个人信息、商业机密、客户信息等
保护:加密、存储位置、传输方式;获取数据脱敏、匿名化
测试开发
代码管理
GIT
相关资料
廖雪峰Git学习:https://www.liaoxuefeng.com/wiki/896043488029600
基本命令
git init
初始化本地仓库
git clone
clone项目
git pull
更新项目
git add .
将当前目录文件交给git管理
git commit
将文件提交到本地仓库
git push
将文件推送到远程仓库
代码托管平台
github
https://github.com/
gitlab
https://about.gitlab.com/
gitee
https://gitee.com/
分支管理
分支命名
版本管理
测试平台
yapi接口管理
测试报告平台
Java
Java菜鸟教程:https://www.runoob.com/java/java-tutorial.html
开发工具
IDEA
环境准备
JDK
JDK是什么
JDK(Java Development Kit) 又称 J2SDK(Java2 Software Development Kit),是 Java 开发工具包,
它提供了 Java 的开发环境(提供了编译器 javac 等工具,用于将 java 文件编译为 class 文件)和运行环境(提 供了 JVM 和 Runtime 辅助包,
用于解析 class 文件使其得到运行)。
它提供了 Java 的开发环境(提供了编译器 javac 等工具,用于将 java 文件编译为 class 文件)和运行环境(提 供了 JVM 和 Runtime 辅助包,
用于解析 class 文件使其得到运行)。
JDK安装
下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
变量值:JDK的安装路径
变量名:JAVA_HOME
Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
注:原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意这个变量值前面还有一个点,代表从当前路径
目前在官网下载低于jdk1.8的java jdk的时候需要登陆:
邮箱:2696671285@qq.com
密码:Oracle123
查看java是否能用:java、javac
查看是否安装jdk:java -version
查看jdk安装位置:java -verbose
Tomcat
Tomcat是什么
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
Tomcat目录
bin
bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。
conf
conf目录主要是用来存放tomcat的一些配置文件。
lib
lib目录主要用来存放tomcat运行需要加载的jar包。
logs
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。
tmp
temp目录用户存放tomcat在运行过程中产生的临时文件。
webapps
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。
work
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
Tomcat安装
下载:https://tomcat.apache.org/download-80.cgi
检查是否安装好Tomcat:点击tomcat的bin目录下的startup.bat即可启动Tomcat,在地址栏输入:http://localhost:8080/ (前提是按装好JDK)
Maven
Maven是什么
Maven是一个项目管理工具,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven仓库地址
阿里云Maven仓库地址
https://developer.aliyun.com/mvn/search
官方Maven仓库地址
https://mvnrepository.com/
Maven安装
下载:http://maven.apache.org/download.cgi
配置Maven环境变量
变量名:M2_HOME
变量值:D:\install\maven\apache-maven-3.5.0
Path变量: ;%M2_HOME%\bin; //前面注意分号
修改本地仓库地址
默认地址:maven在本机的仓库位于C:\我的文档中\.m2.\repository
修改:在安装Maven的目录下找到conf文件夹,在文件夹中找到settings.xml文件,复制settings.xml文件放于自己新建的目录下
<localRepository>D:\eclipse-jee-oxygen-R-win32-x86_64\apache-maven-3.5.4-bin\Repo</localRepository>
注:config里面和新建仓库里面的setting.xml文件都要修改
验证:mvn help:system
修改成阿里云镜像
<mirror>
<id>aliyun</id>
<name>aliyun Maven</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
查看是否按照Maven:mvn -v
MVC模式
模型层(Model)
业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。
视图层(View)
为用户提供UI,重点关注数据的呈现。
控制层(Controller)
调用业务逻辑产生合适的数据(Model),传递数据给视图层用于呈现。
Java基础
3大特性
封装
隐藏对象的属性和实现细节,用private进行修饰,仅对外提供访问方式。
继承
多个类具有共同的属性(成员变量)和行为(成员方法),将这些公共部分抽取出来定义一个新的类,然后这个抽取出来新的类叫做父类或者超类,
其他被抽取的类叫做子类,父类和子类之间具有继承关系,子类可以直接访问父类非私有化成员变量,重写父类非私有化方法,
通过super.get()访问父类私有化成员变量。
其他被抽取的类叫做子类,父类和子类之间具有继承关系,子类可以直接访问父类非私有化成员变量,重写父类非私有化方法,
通过super.get()访问父类私有化成员变量。
多态
不同类的对象对同一消息做出反应,即同一消息可以根据对象的不同发送不同的行为方式(根据不同对象发送不一样的内容,但是方法名是同一个,
比如一个按键在不同页面上有不同的功能)
比如一个按键在不同页面上有不同的功能)
8大数据类型
byte
short
int
long
float
double
char
boolean
流程控制语句
if
if(布尔表达式) { //如果布尔表达式为true将执行的语句 }
for
for(初始化; 布尔表达式; 更新) {
//代码语句
}
//代码语句
}
while
while( 布尔表达式 ) { //循环内容 }
switch
switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //你可以有任意数量的case语句 default : //可选 //语句 }
重载
要求方法名相同,参数类型,个数,返回类型不同。
重写
要求方法名,参数类型,个数,返回类型都相同;子类不能超过父类异常;子类访问级别不能低于父类访问级别。
集合
List
ArrayList
LinkedList
Set
HashSet
TreeSet
Map
HashMap
Set和List的区别
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,
因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
异常
Exception
Error
JDBC
文件读写
正则表达式
设计模式
单例模式
工厂模式
排序算法
冒泡排序
快速排序
归并排序
数据结构
栈
图
队列
数组
链表
框架
Spring
IOC
Spring IOC 解决的是对象管理和对象依赖的问题。
DI
AOP
Spring AOP 解决的是非业务代码抽取的问题。
SpringMVC
MyBatis
JVM
JVM分为哪几块
方法区
堆
虚拟机栈
本地方法栈
程序计数器
Python
Python基础
Python安装
数据类型
Django
selenium
8大元素定位方式
id
name
class name
tag name
link text
partial link text
xpath
css selector
PageObject设计模式
原理
将页面元素定位和对元素的操作行为封装成一个page类,实现对页面对象和测试用例的分离。
一条测试用例可能需要多个步骤操作元素,将每个步骤单独的封装成一个方法,在执行测试用例的时候调用封装好的操作
一条测试用例可能需要多个步骤操作元素,将每个步骤单独的封装成一个方法,在执行测试用例的时候调用封装好的操作
类的属性:元素定位
类的行为:元素的操作
测试用例:调用所需页面中对象的行为组成测试用例
vue
前端基础
HTML
CSS
JQuery
测试运维
CICD
持续集成(Continuous integration,简称CI)
频繁地(一天多次)将代码集成到主干
持续交付(Continuous delivery,简称CD)
频繁地将软件的新版本,交付给质量团队或者用户
持续部署(continuous deployment,简称CD)
是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境
DevOps
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合
Jenkins
Ansible
相关文章
【自动化运维】带你入门ansible
概念
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,
实现了批量系统配置、批量程序部署、批量运行命令等功能。
实现了批量系统配置、批量程序部署、批量运行命令等功能。
安装
安装ansible命令:yum install ansible -y
查看ansible是否安装成功:ansible -version
模块
file
shell
copy
synchronize
....
Docker
基本概念
Docker是什么
Docker 是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。
三个基本概念
镜像
相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库
仓库可看着一个代码控制中心,用来保存镜像。
Dockerfile
Dockerfile是Docker用来构建镜像的文本文件,包括自定义的指令和格式。可以通过docker build命令从Dockerfile中构建镜像。
DockerCompose
Docker Compose是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。
k8s
prometheus + Grafana
pipeline
相关资料
JenkinsPipeline语法概要:https://mp.weixin.qq.com/s/iaNlN01KLgljMSScx-Z4SA
Jenkins Pipeline 环境变量使用指南:https://mp.weixin.qq.com/s/359q18BOjVtlzHpTLqpTiQ
基本概念
pipeline的代码定义了整个构建过程,通常包括构建应用程序,测试然后交付应用程序的阶段
声明式pipeline语法
agent
post
steps
environment
options
parameters
triggers
stage
tools
input
when
parallel
sonar
安装sonar
sonar地址:http://ip:9000
使用sonar
clean compile -U $SONAR_MAVEN_GOAL
sonar配置邮件发送
环境管理
环境分类
开发环境
测试环境
联调环境
UAT环境
搭建测试环境
购买服务器
软件安装
JDK
Tomcat
MySql
Redis
zookeeper
dubbo
dubbo-admin
mq
同步测试环境
代码
数据库
系统配置
disconf
Apllo
业务配置
协调测试环境资源
发版控制
环境使用次序
环境监控
应用服务
中间件服务
cpu
内存
磁盘
环境问题定位
计算机基础
Linux
基本命令
操作文件
mkdir、cp、mv、rm
查看进程
ps、netstat、lsof
用户相关
chown、chmod、groupadd、useradd
其它命令
top、kill
shell
数据库
工具
Navicate
MySQL
安装MySQL
Linux
Windows
DDL
创建数据库
create database 数据库名称
删除数据库
drop database 数据库名称
创建数据表
create table Person ( Id_P int NOT NULL, LastName varchar(30), FirstName varchar(30), Address varchar(30), Age int(3), primary key(Id_P) )
删除数据表
drop table Person
DML
增删改查
insert into 表的名称(列1,列2,...) values (值,值2,...)
delete from 表的名称 where 条件
update 表的名称 set 列名称=新值 where 列名称=某值
select * from 表的名称 where 条件
进阶sql
where、order by、group by、union、like、inner join...on、left join...on、right join...on等语法使用
同步及备份
mysqldump
备份数据库
mysqldump -h00.00.00.00 -uroot -proot dbname > /tmp/dbname.sql;
备份数据库并压缩
mysqldump -h00.00.00.00 -uroot -proot dbname | gzip > /tmp/dbname.sql.gz;
还原数据库
mysql -h00.00.00.00 -uroot -proot dbname < /tmp/dbname.sql;
解压数据库并还原
gunzip < /tmp/dbname.sql.gz | mysql -h00.00.00.00 -uroot -proot dbname;
Navicat
导出:在数据表右键转储SQL文件(结构和数据/仅结构)
导入:在数据库或者表名上右键,运行SQL文件
工具--结构同步
工具--数据同步
mysqldiff
数据库事务
基本概念
事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。
四大特性
原子性(Atomicity)
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consistency)
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
隔离性(Isolation)
数据库应该保证:事务不应该读取其他事务产生的不一致的中间数据,因为这样会导致对数据库的错误更新。即,每个事务都感觉不到其它事务在并发的
持久性(Durability)
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
事务的隔离级别
读未提交
不会更新丢失,但是会造成脏读,不可重复读,幻读
读已提交
解决脏读,但是会造成不可重复读,幻读
可重复读
解决脏读,不可重复读,但是会造成幻读(读了就不允许update,但是可insert和delete)
序列化
解决脏读,不可重复读,幻读,但是效率很低
事务使用场景
A给B转账,A扣除100元但是未提交,此时C读取A账户发现扣了100元,此时A回滚(即100元未扣除),此时C读取到的就是脏数据。
根据用户ID=123查找用户名为AA,此时另一个事务修改了ID=123用户名未BB,此时再去读ID=123用户名为BB,两次读取值不一致,不可重复读
第一次查询某个房间有3个人,此时新增或者删除1个人,第二次读取就是4个或者2个人,数据条数不一致
并发控制
串行控制
并行控制
并发操作带来的数据不一致性
更新丢失
A和B同时给C转500元,但是C只收到了B的转账
解决方案 注:不是很理解
悲观锁
共享锁
排它锁
乐观锁
在数据表中添加一个字段,字段的类型是 timestamp 在插入和修改时 都会自动更新为当前时间 ,根据sql条件进行判断,如果时间不符合,那么更新失败
脏读
读取到未提交数据,导致获取到不准确数据。
select不守规矩
不可重复读
(同一个事务中)同一select语句,两次读取到已提交数据,数据内容(数据信息)不一致。
update不守规矩
幻读:
(可以不是同一事务)同一select语句, 两次读取到已提交数据,数据内容(数据条数)不一致。
insert和delete不守规矩
存储引擎
日志
bin log
undo log
redo log
索引
1、索引的创建、修改、删除、查看
普通索引
create index 索引的名字 on 表名(列名) eg. create index empnoIndex on emp_copy(empno)
show index from 表名 eg. show index from emp_copy
drop index 索引的名字 on 表名 eg. drop index empnoIndex on emp_copy
drop index 索引的名字 on 表名 eg. drop index empnoIndex on emp_copy
唯一索引
create unique index 索引名 on 表名(列名)
drop index 索引的名字 on 表名 eg. drop index empnoIndex on emp_copy
主键索引
alter table 表名 add primary key(列名); eg.alter table emp_copy add primary key(deptno)
alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key;
组合索引
create index 索引名 on 表名(列名1,列名2) eg. create index enameIndex on emp_copy(ename,mgr)
2、索引的分类和各自实现原理
普通索引
唯一索引
主键索引
组合索引
3、索引的使用策略
MongoDB
网络基础
相关资料
《网络是怎样连接》
HTTP和HTTPS
HTTP
端口80
明文传输
HTTPS
端口443
ssl加密传输
TCP和UDP
TCP
适用场景
网络会话
文件传输
远程登录
安全性
安全可靠
三次握手
为了防止已经失效的链接请求报文突然又到了服务器,因而发生错误
四次挥手
UDP
适用场景
语音
视频
直播
安全性
不安全不可靠
状态码
1XX:通知
2XX:成功
3XX:重定向
4XX:客户端错误
403:Forbidden
404:Not Found
5XX:服务端错误
500:Internal Server Error
通用的服务器错误响应
502:Bad Gateway
只有HTTP代理会发送这个响应代码。它表明代理方面出现问题
CDN
CDN服务器可以说是一种缓存服务器。当我们要访问某个网站的资源时,如果该网站的服务器离我们很远,这样的话响应速度就会很慢,
为了让响应速度快一些,我们可以把资源分布放在各个地方,然后响应客户端的时候,把离客户端较近的资源传送给他。
为了让响应速度快一些,我们可以把资源分布放在各个地方,然后响应客户端的时候,把离客户端较近的资源传送给他。
DNS
Hosts文件是存储本机网址域名与其对应的IP地址的一个文件,在网络请求阶段发挥作用
DNS是一个全球化的分布式数据库,它所提供的服务就是将域名转换为互联网IP地址。
get和post
网络七层协议
应用层
会话层
表示层
IP层
TCP层
物理层
网络四层模型
应用层
HTTP、SSH、FTP
网络层
TCP、UDP
传输层
IP
网络接口层
以太网
操作系统
CPU
内存
硬盘
缓存
IO
相关知识
进程和线程
进程
线程
死锁
死锁条件
如何预防死锁
中间件
zookeeper
简介
ZooKeeper来做:统一配置管理、统一命名服务、分布式锁、集群管理。
ZooKeeper的数据结构,跟Unix文件系统非常类似,可以看做是一颗树,每个节点叫做ZNode。
Linux安装zookeeper
dubbo
简介
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:
1、面向接口的远程方法调用
2、智能容错和负载均衡
3、以及服务自动注册和发现
1、面向接口的远程方法调用
2、智能容错和负载均衡
3、以及服务自动注册和发现
RPC
Remote Procedure Call / 远程过程调用
dubbo-admin
展示dubbo注册服务情况
MQ
RokectMQ
Kafka
redis
简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
安装
Linux
Windows
持久化
简介
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,
于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。
RDB
原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化
AOP
原理是将Reids的操作日志以追加的方式写入文件
nginx
简介
安装
基本命令
启动nginx:./nginx
重启nginx:./nginx -s reload
停止nginx:./nginx -s stop
其它
配置中心
Apollo
简介
https://github.com/ctripcorp/apollo/wiki/Quick-Start
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,
配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Disconf
简介
Disconf是一套完整的基于zookeeper的分布式配置统一解决方案。它支持配置(配置项+配置文件)的分布式化管理。
其它技能
造数规范
根据场景一键造数
数据命名规范
代码review
测试软实力建设
测试能力
意识
具有产品意识
具有owner意识
流程
流程控制
预先评估质量风险
人力转换成技术能力和流程化,测试设计体现一名测试工程师的产出
测试能力模型
项目经验
自动化测试能力
持续测试能力
开发能力
影响力
项目管理能力
软件测试注意点
沟通能力
沟通目的
沟通要围绕这个目的进行交流,在达成一致后,记得形成结论并记录下来
沟通方式
沟通是为了解决问题,而不是为了制造问题
责任心
做一个靠谱的人
测试管理
团队文化
质量保证
效率提升
管理意识
具有管理意识和对他人负责
推动各种角色进行高效合理的测试实践
把质量问题上升为整个研发团或产品团队责任
向上管理
确保自己理解上级分配的任务
及时汇报进度
向下管理
放权给组内成员,找到其最擅长的点并发挥优势,不能只让一个人一直做某个领域
赋能团队每一个人,从自身去学习根本解决问题的能力
平级管理
分享提高效率的工具或者方式给小伙伴,共同成长
团队会议
周会制度
技术分享
测试总结分享
1v1沟通
总结报告
新入职每天学习日报
月度总结
年终总结
务实
制定OKR考核方式
人员选择和招聘
人员梯度建设
人员BackUp
人员晋升
人员学习计划
人员分工与协作
务虚
如何鼓励员工
如何批评员工
如何评价员工
如何激励员工
文档管理
测试流程
测试用例、测试报告模板
测试计划
测试数据
测试用例
测试报告
文档结构
总-分-总
背景-方案-优缺点-总结
归纳整理
常用工具
有道云笔记
腾讯文档
processon
IDEA+Git+github
知识管理
wiki
学习方式
十步学习法
1、了解全局
2、确定范围
3、定义目标
4、寻找资源
5、创建学习计划
6、筛选资源
7、开始学习 浅尝辄止
8、动手操作 边学边玩
9、全面掌握 学以致用
10、乐为人师 融会贯通
1-6步主要目的是研究,不用反复,7-10步要反复
复盘四步论
5Y2H方法
结构化思维
测试面试
2021面试总结
https://mp.weixin.qq.com/s/MtnQ9qJoB_Okg1LSrHH79A
面试心态
be part of something bigger than itself -- 使它成为更大的事情的一部分
理解对方的提问,以及对方为什么要问这个问题
面试技巧
遇到不会的问题反问回去
把自己所做的工作系统化,高端化
将所有问题转化为自己经历过的
遇到自己没有做过的事情,一定如实回答,但是一定要加上自己的见解
不要抢话、插话、争辩
别太自满,态度举重若轻,自信、专业、谦虚三者之间需要一个很微妙的平衡
与其将自己描述为一个全能型人才,倒不如凸显自己在一两个领域的突出能力
逻辑题
编写测试用例题
如何考察求职者
如何反问面试官
贵司整个测试体系大概是怎样的?
贵司招聘的这个岗位主要负责的工作内容是怎样的?
学习资源
GitHub
https://github.com/
牛客网
https://www.nowcoder.com/
知乎
https://www.zhihu.com/topic/19554298
0 条评论
下一页