一、测试理论
1. 软件分类
单机版:不需要联网的软件
分布式:需要联网
C/S:需要下载客户端
B/S:直接浏览器打开即可
2. 软件测试原则(7大原则)
穷尽测试不可能
尽早介入测试
测试显示软件存在缺陷
杀虫剂悖论
缺陷集群性(2/8原则)
测试活动依赖于测试内容
没有错误是好是谬论
3. 开发模型有哪些
瀑布模型
快速原型模型
增量模型
敏捷开发
4. 测试模型有哪些,并画图
V模型:
w模型:
H模型
X模型
5. 测试流程
阶段名 工作内容 产出物
测试准备阶段 项目立项、需求分析、需求评审 需求文档、产品PRD
测试计划阶段 编写测试计划、计划评审 测试计划
测试设计阶段 提取测试点、编写测试用例、用例评审 测试用例
测试执行阶段 冒烟测试、执行测试用例、提bug、回归测试 缺陷报告
测试完成阶段 验收测试、编写测试报告、项目上线 测试报告
6. 测试分类
滚瓜烂熟,懒得写
二、测试计划
1. 模板
封面:
测试目的(整体概述、详细描述:功能模块、bug情况、上线日期)
测试资源
人力资源(姓名、职务、岗位职责)
软件资源:系统(Windows、MacOS、Linux)、浏览器、数据库、服务器
硬件资源:电脑、手机
网络资源:局域网、互联网
测试范围
测试对象
测试特性
非测试特性
测试风险(人资法环时)
编号描述等级负责人对测试影响规避方法
人员分工:姓名、职务、工作内容
测试策略:做什么样测试
界面测试
接口测试
兼容性测试
性能测试
测试进度
测试任务 负责人 预期开始时间 预期结束时间 时间进度 备注
测试准则
启动准则 暂停准则 再启动准则 结束准则
测试输出
名称 存放位置 备注
测试计划 git/svn
测试用例
缺陷报告
测试报告
软件说明书
三、测试用例
3.1 测试用例模板
用例编号
所属模块
用例标题:测试/验证在 什么情况 去做什么 结果是什么
优先级
前置条件
操作步骤
输入数据
预期结果
实际结果
是否通过
BugId
编写人
编写时间
测试人员
测试时间
备注
3.2 测试用例设计方法
等价类划分法
定义:所有数据分成若干区域,然后在每一个区域取最少具有代表性的数据测试
分类
有效等价类:合理的数据
无效等价类:不合理的数据
边界值分析法
定义:取稍高于或稍低边界值的数据进行测试
概念:开区间、闭区间,空心圆和实心圆
获取测试点:内点、上点、离点(开内闭外)
因果图法
定义:比较适合输入条件比较多的情况,测试所有的输入条件的排列组合
使用:
错误推测法
定义:
判定法
定义:
场景法:
定义:根据具体业务场景
概念:
标准流:正确完成的流程
备选流:存在异常的流程,对于基本流每一步都取反
正交实验法
定义:利用排列整齐的表 -正交表来对试验进行整体设计、综合比较、统计分析,实现通过少数的实验次数找到较好的生产条件,以达到最高生产工艺效果。
正交小助手:会用
四、禅道
1. 操作
人员管理(admin):添加部门 → 添加用户
创建产品(产品经理):产品 → 添加产品
添加需求(产品经理):产品 → 需求 → 提需求
创建项目(项目经理):项目 → 添加项目 → 自动跳转(选择设置团队)→ 团队管理 → 给团队配人
关联需求(项目经理):项目 → 需求 → 关联需求 → 勾选任务
批量分解(项目经理):在任务右侧 → 选择批量分解 → 批量分解
查看任务(开发人员):我的地盘 → 首页查看任务 → 点击任务数量进入任务列表 → 选择完成任务
创建版本(开发人员):项目 → 版本 → 创建版本
测试Bug(测试人员):测试 → bug → 提bug
解决bug(开发):测试 → bug → 确认 → 完成
再次测试(测试人员):测试 → 再次测试 → 如果解决的,点击关闭,否则重新编辑
创建版本(产品经理):产品 → 发布 → 创建发布 → 完成
3. bug流转
五、缺陷报告
什么是缺陷?引起原因?
影响软件正常运行的问题,也叫Bug,包含软件和文档。
原因
软件结构复杂
编码问题
使用新技术
需求不明确或者更改需求
项目周期短,时间紧迫
缺陷分类
根据测试种类:界面、功能缺陷、性能、安全、兼容性
根据严重程度:严重、一般、次要、轻微
根据优先级:立即解决、高优先级、正常排队、低优先级。
根据发生阶段:需求、架构、设计、编码、测试
画出Bug跟踪流程图
核心要素(8项)
缺陷编号
缺陷状态:新建、指派、打开、修复、拒绝、延期、回归、关闭、重开
缺陷标题
优先级
重现步骤:步骤、预期结果、实际结果
严重程度
缺陷类型
测试环境
指派人
提交人
提交时间
对应的测试用例
附件
模板
六、测试报告
定义、分类
模板
概述
编写目的:测试报告的描述、项目简介、测试内容描述。
人员分工:姓名、职务、任务
测试环境:软件、硬件环境
测试过程
测试进度:测试任务、测试负责人、启动时间、计划完成时间、实际完成时间、备注
用例执行情况:模块、用例总数、执行用例数、通过用例数、未通过用例数、阻塞用例数
缺陷统计:模块、bug总数、新增bug总数、修复bug总数、遗留bug总数
缺陷分析
按照级别分:
按照缺陷模块分:
按照缺陷类型分:版本、趋势
测试总结
测试结论:是否通过。各种率、按级别描述缺陷
风险分析:编号、风险描述、规避方法和建议
遗留问题:编号、缺陷描述、缺陷等级、处理方法
七、接口测试
HTTP和HTTPS区别
1、https协议需要申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式
请求组成:4部分组成,请求行、请求头、空行、请求体
响应组成:4部分组成,响应行、响应头、空行、响应体
Http版本:1.1
常见状态码:200、301、404、500
200请求成功
301资源(网页等)被永久转移到其它URL
404请求的资源(网页等)不存在
500内部服务器错误
接口:
接口文档:能看懂,word、showdoc、swagger
接口测试:逻辑功能、路径测试、异常测试、其他异常情况
测试案例:使用postman进行get和post测试
接口测试用例
八、Charles
常用抓包工具:Charles、fiddler、wireshairk
Charles安装、代理配置
客户配置:电脑和手机,web和移动抓包
安装证书:
安装证书:Charles → help → SSL Proxy → 安装web证书(第二个选项) →
导出证书:
导入证书:
HTTPS代理设置:
断点
右击地址 → breakpoints
Proxy → breakpoint settings → 添加接口
过滤
Proxy → Recording settings → include、exclude
在请求导航栏最下边输入我们要看到域名
模拟慢网速
Proxy → throttle settings
设置主机域名 、设定慢网速
模拟404/403
tools → blocklist :指定域名
压力测试:
repeat advanced:次数、并发数
10.抓包流程:客户端向服务端发送请求,Charles拦截并修改请求,服务端响应,Charles拦截,并伪装代理服务器向客户端发送响应
九、Fiddler
简介
配置:
电脑浏览安装、导入证书
移动端:
前提:手机和电脑必须在同一个无线网
fiddler配置端口号(8888)、配置8888
主机地址:fiddler右上角、cmd
十、 数据库
什么是数据库
是一个存储、管理、组织数据的仓储。
数据库 = 多张表 + 各表之间的关系
常见数据库
MySQL、SQLite、Oracle、Radis、SQL Server、MongoDB
数据库和SQL关系
数据库用来存放数据的,SQL是用来操作数据库中的数据的语言。
SQL语句分类
DDL:数据定义语言
库:5
表:7 + 4
//创建表
create tables tudent(id int,name varchar(20),sex varchar(20),age int,salery float(6,2),birthday date)
//删除表
drop tables tudent;
//查看所有表
show tables
//查看表的创建细节
show create tablestudent;
//展示表结构
desc student
// 在原有的学生基础上添加address列
alter tablestudent add address varchar(20)
//在原有的学生基础上删除address列
alter tablestudent drop address
unique、notnull、primarykey、auto_increment
DML:数据操作语言
插入数据:(2)
注意事项:字符集修改(2)
setcharacter_set_client=gbk;
setcharacter_set_results=gbk;
删除数据(3)
deletefrom表名
deletefrom表名where条件
truncatetable表名
注意:delete from 表名 和 truncate table 表名区别
修改数据(3
update表名setfiled=数据where条件
update表名setfiled=filed+数据
update表名 修改多个字段使用 ,隔开
DQL:数据查询语言
insert into sut values(1,'张三',90,80,80);
DCL:数据控制语言
select id from teacher where name=’李老师’
select student_id from teacher_student where teacher_id=id
select*from student where id in(select student_id from teacher_student where teacher_id =(select id from teacher where name='李老师'));
多表设计
一对一:
一对多:
多对多:子查询
多表联查
交叉查询:,
内连接查询:
select*from坐表innerjoin右表on条件
左外连接
select*from坐表leftjoin右表on条件
右外连接
select*from坐表rightjoin右表on条件
MySQL图形化工具