一、软件测试
一、软件分类
单机版:不需要联网的软件
分布式:需要联网的软件
C/S:需要下载客户端
B/S:直接浏览器打开即可
二、软件测试原则
1. 穷尽测试不可能
2. 尽早介入测试
3. 测试显示软件存在缺陷
4. 杀虫剂悖论
5. 缺陷集群性(2/8原则)
6. 测试活动依赖于测试内容
7. 没有错误是好是谬论
三、开发模型
1. 瀑布模型
2. 快速原型模型
3. 增量模型
4. 敏捷开发
四、测试模型
1. V模型
2. w模型
3. H模型
4. X模型
五、测试流程
测试准备阶段 → 项目立项、需求分析、需求评审 → 需求文档、产品PRD
测试计划阶段 → 编写测试计划、计划评审 → 测试计划
测试设计阶段→ 提取测试点、编写测试用例、用例评审 → 测试用例
测试执行阶段 → 冒烟测试、执行测试用例、提bug、回归测试 → 缺陷报告
测试完成阶段→ 验收测试、编写测试报告、项目上线 → 测试报告
六、测试分类
1、技术:黑盒测试 白盒测试 灰盒测试
2、阶段: 单元测试 集成测试 系统测试 验收测试
3、内容: 界面测试(UI测试) 功能测试 兼容性测试 性能测试
4、其他: 冒烟测试 随机测试 安全性测试 探索性测试 α测试 β测试 回归测试
二、测试计划
测试计划模板
1. 测试目的(整体概述、详细描述:功能模块、bug情况、上线日期)
2. 测试资源
1. 人力资源(姓名、职务、岗位职责)
2. 软件资源:系统(Windows、MacOS、Linux)、浏览器、数据库、服务器
3. 硬件资源:电脑、手机
4. 网络资源:局域网、互联网
3. 测试范围
1. 测试对象
2. 测试特性
3. 非测试特性
4. 测试风险(人资法环时): 编号 描述 等级 负责人 对测试影响 规避方法
5. 人员分工:姓名、职务、工作内容
6. 测试策略:做什么样测试
1. 界面测试
2. 接口测试
3. 兼容性测试
4. 性能测试
7. 测试进度: 测试任务 负责人 预期开始时间 预期结束时间 时间进度 备注
8. 测试准则: 启动准则 暂停准则 再启动准则 结束准则
9. 测试输出: 测试计划 测试用例 缺陷报告 试报告 软件说明书
测试用例
一、测试用例模板
1. 用例编号
2. 所属模块
3. 用例标题:测试/验证在 什么情况 去做什么 结果是什么
4. 优先级
5. 前置条件
6. 操作步骤
7. 输入数据
8. 预期结果
9. 实际结果
10. 是否通过
11. BugId
12. 编写人
13. 编写时间
14. 测试人员
15. 测试时间
16. 备注
二、测试用例设计方法
1. 等价类划分法
2.边界值分析法
3. 因果图法
4. 错误推测法
5. 判定法
6. 场景法:
禅道
一、操作
1. 人员管理(admin):添加部门 → 添加用户
2. 创建产品(产品经理):产品 → 添加产品
3. 添加需求(产品经理):产品 → 需求 → 提需求
4. 创建项目(项目经理):项目 → 添加项目 → 自动跳转(选择设置团队)→ 团队管理 → 给团队配人
5. 关联需求(项目经理):项目 → 需求 → 关联需求 → 勾选任务
6. 批量分解(项目经理):在任务右侧 → 选择批量分解 → 批量分解
7. 查看任务(开发人员):我的地盘 → 首页查看任务 → 点击任务数量进入任务列表 → 选择完成任务
8. 创建版本(开发人员):项目 → 版本 → 创建版本
9. 测试Bug(测试人员):测试 → bug → 提bug
10. 解决bug(开发):测试 → bug → 确认 → 完成
11. 再次测试(测试人员):测试 → 再次测试 → 如果解决的,点击关闭,否则重新编辑
12. 创建版本(产品经理):产品 → 发布 → 创建发布 → 完成
缺陷报告
一、缺陷分类
1. 根据测试种类:界面、功能缺陷、性能、安全、兼容性
2. 根据严重程度:严重、一般、次要、轻微
3. 根据优先级:立即解决、高优先级、正常排队、低优先级。
4. 根据发生阶段:需求、架构、设计、编码、测试
二、核心要素
1. 缺陷编号
2. 缺陷状态:新建、指派、打开、修复、拒绝、延期、回归、关闭、重开
3. 缺陷标题
4. 优先级
5. 重现步骤:步骤、预期结果、实际结果
6. 严重程度
7. 缺陷类型
8. 测试环境
9. 指派人
10. 提交人
11. 提交时间
12. 测试用例
13. 附件
测试报告
模板
1. 概述
1. 编写目的:测试报告的描述、项目简介、测试内容描述。
2. 人员分工:姓名、职务、任务
3. 测试环境:软件、硬件环境
2. 测试过程
1. 测试进度:测试任务、测试负责人、启动时间、计划完成时间、实际完成时间、备注
2. 用例执行情况:模块、用例总数、执行用例数、通过用例数、未通过用例数、阻塞用例数
3. 缺陷统计:模块、bug总数、新增bug总数、修复bug总数、遗留bug总数
3. 缺陷分析
1. 按照级别分:
2. 按照缺陷模块分:
3. 按照缺陷类型分:版本、趋势
4. 测试总结
1. 测试结论:是否通过。各种率、按级别描述缺陷
2. 风险分析:编号、风险描述、规避方法和建议
3. 遗留问题:编号、缺陷描述、缺陷等级、处理方法
接口测试
1. HTTP和HTTPS区别
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
2. 请求组成:4部分组成,请求行、请求头、空行、请求体
3. 响应组成:4部分组成,响应行、响应头、空行、响应体
4. Http版本:1.1
5. 常见状态码:200、301、404、500
6. 接口:
7. 接口文档:能看懂,word、showdoc、swagger
8. 接口测试:逻辑功能、路径测试、异常测试、其他异常情况
9. 测试案例:使用postman进行get和post测试
Charles
1. 常用抓包工具:
Fiddler免费的HTTP查看工具,系统代理,工作在应用层
Charles HTTP代理、HTTP监控、HTTP反代理、查看HTTP通讯、查看工作信息工具
Wireshark 半免费,网络抓包、监听网卡,工作在网络接口层
HttpWatch 集成到IE、Chrome中的网页数据分析工具
BurpSuite Http代理。是用于攻击web应用程序的集成平台,包含了许多工具:抓包、扫漏、爆破等。黑客必备工具之一
2. Charles安装、代理配置(端口、可接受的IP)
3. 客户配置:电脑和手机,web和移动抓包
4. 安装证书:
1. 安装证书:Charles → help → SSL Proxy → 安装web证书(第二个选项) →
2. 导出证书:Charles → help → SSL Proxy → save
3. 导入证书:
4. HTTPS代理设置:Charles → Proxy → SSL Proxy settings → 端口=443,IP=*
5. 断点
1. 右击地址 → breakpoints
2. Proxy → breakpoint settings → 添加接口
6. 过滤
1. Proxy → Recording settings → include、exclude
2. 在请求导航栏最下边输入我们要看到域名
7. 模拟慢网速
Proxy → throttle settings
设置主机域名 、设定慢网速
8. 模拟404/403
tools → blocklist :指定域名
9. 压力测试:
repeat advanced:次数、并发数
抓取移动设备
1.获取本地ip地址:win+r在运行中输入cmd,在打开的命令行中输入ipconfig回车
2.在打开的charles中点击proxy->proxysettings...在打开的proxysettings对话框勾选enabletransparenthttpproxying并设置端口号为:8888
3.使手机连接到与代理服务器pc在同一网络下,组成局域网
4.设置手机代理为手动,代理服务器信息为pc端ip地址以及相应的8888端口
5.用手机访问项目地址进行抓包,查看charles抓到的内容
Fiddler
电脑浏览安装、导入证书
移动端:
前提:手机和电脑必须在同一个无线网
fiddler配置端口号(8888)、配置8888
主机地址:fiddler右上角、cmd
数据库
什么是数据库
是一个存储、管理、组织数据的仓储。
数据库 = 多张表 + 各表之间的关系
常见数据库
MySQL、SQLite、Oracle、Radis、SQL Server、MongoDB
数据库和SQL关系
数据库用来存放数据的,SQL是用来操作数据库中的数据的语言。
SQL语句分类
DDL:数据定义语言
库:5
表:7 + 4
//创建表
createtablestudent(idint,namevarchar(20),sexvarchar(20),ageint,saleryfloat(6,2),birthdaydate)
//删除表
droptablestudent;
//查看所有表
showtables
//查看表的创建细节
showcreatetablestudent;
//展示表结构
descstudent
// 在原有的学生基础上添加address列
altertablestudentaddaddressvarchar(20)
//在原有的学生基础上删除address列
altertablestudentdropaddress
unique、notnull、primarykey、auto_increment
DML:数据操作语言
插入数据:(2)
insertinto表名values()
insertinto表名()values()
注意事项:字符集修改(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:数据查询语言
insertintosutvalues(1,'张三',90,80,80);
insertintosutvalues(2,'李四',90,87,60);
insertintosutvalues(3,'王五',70,60,69);
insertintosutvalues(4,'赵六',99,90,87);
DCL:数据控制语言
多表设计
一对一:
一对多:
多对多:子查询
selectidfromteacherwherename=’李老师’
selectstudent_idfromteacher_studentwhereteacher_id=id
select*fromstudentwhereidin(s_id1,s_id2)
select * from student where id in(select student_id from teacher_student where teacher_id =(select id from teacher where name='李老师'));
多表联查
交叉查询:
select*from左表 , 右表
内连接查询:
select*from左表innerjoin右表on条件
左外连接
select*from左表leftjoin右表on条件
右外连接
select*from左表rightjoin右表on条件