1 软件开发过程模型
1.1.1 瀑布模型
1.1.1.1定义
- 定义:
线性模型得一种,在所有模型中占有重要地位,是其他模型的一个基础
每个阶段执行一次,按照线性模型的顺序进行软件开发
- 测试切入点:
测试阶段处于软件实现后,必须在代码完成后留出足够多的时间给测试活动,否则导致测试不充分,很多问题在项目后期才暴露出来
1.1.1.2 优缺点
瀑布模型
地位:这是一种经典模型,提供了软件开发得基本框架
优点:
1)各阶段划分清楚
2)强调计划与需求分析
3)适合需求稳定得产品开发
缺点:
1)单一流程,不可逆
2)风险显露得晚,纠正机会少
3)测试只是其中一个阶段,缺乏全过程测试的思想
4)各个阶段得划分完全固定,阶段之间产生大量文档,极大地增加了工作量
5)由于开发模型是线性得,用户只有等到整个过程得末期才能见到开发成果,从而能增加了开发的风险
6)早期的错误可能要等到开发后期得测试阶段才能发现,进而带来严重得后果
1.1.1.3改良
沿用瀑布模型得线性思想,细化了各个阶段,在某写重要关注得阶段之间掺入迭代思想
1.1.1.4应用场景
- 银行
- 保险
- 建筑
- 传统行业
1.1.2 快速原型模型
1.1.2.1 原型阶段
- 快速分析
- 需求说明
- 构造原型
- 原型
- 运行原型
- 评价原型
- 修改意见
1.1.2.2 步骤
step1
建造一个快速原型,实现用户和系统的交互,用户对原型进行评价,进一步细化待开发软件的需求,通过逐步调整原型使其满足用户的要求,开发人员可以确定用户真正的需求
step 2
在第一步的基础上开发出用户满意的软件产品
1.1.2.3 优缺点
- 优点
克服瀑布模型缺点,更好得满足用户需求并减少由于软件需求不明确带来的项目开发风险,适合预先不能确切定义需求得软件系统的开发 - 缺点
不适合大型系统得开发(适合开发小型得、灵活性高的系统)前提要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员得创新
1.1.2.4 应用场景
-
微信
-
抖音
-
互联网行业
1.1.3螺旋模型
1.1.3.1模型
本质上,将线性模型实现多遍
比较浪费时间,在实际得开发中,使用比较少
1.1.3.2优缺点
- 优点:
螺旋模型很大程度上是一-种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。 - 缺点:
采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
1.1.3.3应用场景
大型复杂项目
1.1.4三种开发模型得区别
| 需求 | 项目规模 |模型|
| — | — |
| 清晰 | 大型项目 |瀑布模型|
|不清晰|中小型规模|快速原型|
|不清晰|大型项目|螺旋模型|
1.2V模型
1.2.1优缺点
- 优点:
- 包含了底层测试(单元测试)和高层测试(系统测试);
清楚的标识了开发和测试的各个阶段;
自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。
- 缺点:
- 自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;
实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。
1. 3W模型
1.3.1优缺点
- 优点:
- 开发伴随着整个开发周期,需求和设计同样要测试;
– 更早的介入测试,可以发现初期的缺陷,修复成本低;
– 分阶段工作,方便项目整体管理。
- 缺点:
- 开发和测试依然是线性的关系,需求的变更和调整,依然不方便;
– 如果没有文档,根本无法执行w模型;对于项目组成员的技术要求更高!
– 管理成本很高
– 沟通成本很高
1.4对比总结
-
v模型适用于中小企业,
-
w模型适用于中大型企业(因为人员要求高)
2.软件测试分类
2.1功能测试
- 写测试用例
2.2自动化测试
- python
- java
2.3接口测试
- postman
2.4性能测试
- 例如一亿人同时访问
3.计算机基础
3.1dos命令
linux | ||
---|---|---|
dir | 将当前目录内容展示 | ls |
ipconfig | 查看网卡 | ifconfig |
cd | 打开当前路径 | cd |
md | 创建新目录 | |
echo | echo data>文件 | |
del | 删除文件 | |
copy | copy文件得原路径 文件的新路径 | |
move | 移动文件内容到另一个文件中 |
4.前端知识
4.1web3大核心
- html 标签–堆盒子
- css 将页面美化
- js 行为动作
5.后端知识
5.1cs/bs
5.1.1cs
5.1.1.1定义
client-server 客户端-服务端
5.1.1.2优缺点
- 优点
客户端pc能够处理一部分功能,可以让客户端处理完成之后,再交给后端,响应速度快
操作页面美观
安全性
- 缺点
1.不方便安装
2.兼容性比较差,不同的系统需要不同的版本
3.开发和维护成本比较高
5.2bs架构
5.2.1定义
browser-server 浏览器–服务器
5.2.2优缺点
-
优点
1.客户端0维护,只需要浏览器和网络,就可以进行访问
2.增加功能简单,只需要增加网页就可以完成
3.不需要用户进行同步更新
4.开发简单 -
缺点
1.跨浏览器兼容
2.响应速度会慢一些
3.速度和安全性花费巨大得设计成本
4.功能弱化
5.3cs与bs得区别
cs | bs | |
---|---|---|
效率 | cs效率比较高,一部分数据已经加载到系统 | bs每次都需要加载最新数据 |
版本升级 | 删除旧版本,更新新版本 | 无缝升级 |
安全 | cs更安全,下载,安装,注册,登录 | 浏览器 |
开发成本 | 不同系统需要不同的开发人员,成本高 | 相对成本低 |
5.4文件格式
5.4.1 xml
传输数据
案例
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
复制代码
5.4.2 json
如:豆瓣
6.软件测试分类
6.1 按照测试阶段来细分
- 单元测试:模块测试,是最小程序块
- 集成测试:在单元测试的基础上,将各个模块合在一起测试
- 系统测试:将整个软件系统,看作一个整体,进行测试
- 验收测试:
- α测试:内测版本,在软件开发者内部交流,或者忠实粉丝之间发布,一般情况下,都是Bug比较多得,普通用户不建议安装
- β测试:对所有得用户开发得测试版本,Bug会相对少一些,免费发布
- γ测试:正式版本得候选版本
6.2按照是否覆盖源码
6.2.1 黑盒测试
只关注业务逻辑,输入内容与输出内容
6.2.2 白盒测试
例:
a = 1
b = 1
sum = a+b
print(sum)
复制代码
研究得是源码,观察程序结构
6.2.3 灰盒测试
介于二者之间,灰盒测试用在集成测试阶段,不仅关注输入和输出,也关注源码
- 测试关注点:
1.测试输入
2.测试输出
3.代码逻辑
6.3 按照是否运行来划分
6.3.1 静态测试
-
定义:
不运行被测程序,仅仅通过分析和检查源码中的语法,结构,过程和接口,来检查程序的正确性 -
测试对象
源码===>白盒测试
sql脚本
文档:
需求文档
各种设计文档,比如数据库设计文档
6.3.2 动态测试
- 定义:
运行被测程序,检查运行得结果是否和预期结果保持一致,分析运行效率,正确性和健壮性(容错性) - 测试对象
源码===>运行
系统
6.4 按照是否自动化进行划分
6.4.1 手工测试
-
定义:
手动执行测试用例过程 -
缺点:
效率低
重复工作高
6.4.2 自动化测试
- 定义:
利用工具或者代码去帮助执行相关测试用例 - web自动化
- app自动化
6.5 其他
6.5.1 冒烟测试(重点)
- 定义:
针对当前得系统进行最基本得功能测试,保证基本得功能和流程能够走通
先验证软件基本功能是否实现 是否具备可测性
6.5.2 回归测试(重点)
-
定义:
开发修改了旧代码之后,测试重新进行测试确定本次代码修改有没有引入新得错误或者导致其他代码出现错误
Bug回归
旧功能回归 -
回归原则
- 需要轮次:
取决与项目得复杂度和规模
N版本,需要进行N-1次回归测试
- 需要轮次:
-
缺点
重复性工作大
效率低 -
解决方法
自动化测试:自动回归测试
6.5.3 随机测试
- 定义:
根据测试者得经验对软件进行性能和功能得检查 - 注重点:
对重要功能进行复测
对没有覆盖到得模块进行测试
6.5.4探索性测试
-
定义:
同时设计测试和执行测试,是一种测试思维技术