测试基础
1 测试分类
- 功能测试:手动测试,写写测试用例等
- 自动化测试:用代码、程序来运作的,一般常用Python来做
- 接口测试:一般用测试工具Postman来运作
- 性能测试:一般用jmeter
2 软件测试分类
1按测试阶段划分
1.1单元测试:针对软件设计中的最小单位——程序模块,又称模块测试
1.2集成测试:在单元测试的基础上,将所有程序模块集合在一起进行有序的、递增的测试
1.3系统测试:把整个系统的软件看做一个整体,包括对功能、性能、以及软件所运行的软硬件环境进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。
1.4验收测试:
1.4.1 α测试:α测试是内测版本,表示该软件仅仅是一个初步完成品,一般在软件开发者内部交流,也有很少一部分发布给忠实粉丝及专业测试人员。该版本软件bug较多,普通用户最好不要安装。
1.4.2 β测试:Beta是公测版本。相较于α版本有了较大的改进,这一版本通常由软件公司免费发布,用户可从一些向相关站点免费下载,通过一些专业爱好者的测试,在进行针对性的修改。
1.4.3 γ测试:Camma版本,指的是软件版本正式发行的候选版本。
2 按是否覆盖源码划分
2.1黑盒测试:只关注它的业务逻辑,输入内容和输出内容
2.2白盒测试:把盒子打开,研究的是它的源码,观察程序结构
2.3灰盒测试:介于黑盒和白盒二者之间的,一般用在集成测试阶段。也就是说它不仅仅关注输入和输出内容也关注源码
测试关注点:输入、输出、代码逻辑
3按是否运行来划分
3.1 静态测试
3.1.1 定义: 被测程序不运行,仅通过分析和检查源码中的语法结构、过程和接口来检查程序的正确性。
3.1.2 测试对象
- 源码======>白盒测试
- sql脚本
- 文档
- 需求文档、各种设计文档
3.2 动态测试
3.2.1定义:被测程序运行,检查运行的结果是否和预期结果保持一致,分析运行效率、正确性和健壮性
3.2.2 测试对象
- 源码=====>运行
4 按是否自动化划分
4.1 手工测试
4.1.1 定义:手动执行测试用例的过程
4.1.2 缺点:效率低、重复工作高
4.2 自动化测试
4.2.1 定义:利用工具或代码去帮助执行相关测试用例
- web自动化
- app自动化
5 其他
5.1 冒烟测试:针对当前系统进行的最基本功能的测试,保证基本功能和流程能够走通。
5.2 回归测试
5.2.1 定义:开发修改了旧代码后,测试重新进行测试确认本次代码修改有没有错误或者导致其他代码出现错误。
- bug回归
- 旧功能回归
5.2.3 缺点
- 重复工作大、效率低
解决办法:自动回归测试
5.3 随机测试
5.3.1 定义:根据测试者的经验对软件进行性能和功能的检查
5.3.2 注重点:
- 对重要功能进行复测
- 对没有覆盖的模块进行测试
5.4 探索性测试:同事设计测试和执行测试,是一种测试思维技术。
3 软件开发模型
1 瀑布模型
1.1 定义:线性模型的一种,是其他模型的基础,每个阶段执行一次,按线性模型顺序进行软件开发
graph LR
A((计划)) -->B((需求分析))
B--> C((系统设计))
C-..->|1| H[1概要设计]
C-..-> |2| J[2详细设计]
C--> D((软件实现))
D--> E((测试))
E--> F((运行维护))
1.2优缺点
1.2.1优点:
1)各阶段划分清晰
2)强调计划与需求分析
3)适合需求稳定的产品开发
1.2.2缺点:
1)单一流程,不可逆
2)风险显露得晚,纠正机会少
3)测试只是其中一个阶段,缺乏全过程测试思想
4)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
5)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险。
6)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
1.3 改良: 沿用瀑布模型的线性思想,细化了各个阶段,在某些重要关注的阶段之间掺入迭代思想
1.4 应用场景: 银行 保险 建筑 传统行业
注释:系统设计
-
1 概要设计——>架构师——>概要设计说明书
-
2 开发——>详细设计说明书
注释:测试
- 测试计划
- 测试方案
- 测试用例
- bug清单
- 缺陷报告
- 测试报告
2 快速模型
2.1 步骤:Step1先建立一个快速模型,根据用户实际需求逐步调整原型使其满足需求,实现用户和系统的交互.Step2在第一部的基础上开发出用户满意的软件产品
2.2 应用场景:微信、抖音等互联网行业居多
2.3 优缺点
优点
克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。适合预先不能确切定义需求的软件系统的开发。
缺点:
不适合大型系统的开发(适合开发小型的、灵活性高的系统)前提要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
3 螺旋模型
- 本质上,将线性模型实现多遍比较浪费时间,在实际的开发中,使用比较少
3.1 优缺点
优点
螺旋模型很大程度上是一-种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评
估。
缺点
采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必
造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
3.2 应用场景:大型复杂项目
3.4 三种开发模型的区别
| 需求 | 项目规模 | 模型 |
|---|---|---|
| 清晰 | 大 | 瀑布模型 |
| 不清晰 | 中小型 | 快速原型 |
| 不清晰 | 大 | 螺旋模型 |
测试模型
V模型
单元测试 集成测试 系统测试 验收测试 1.1 优缺点
优点:相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。
缺点:虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析,系统设计的验证,时间效率上也大打折扣。
明确标注了测试过程中存在不同的测试类型,明确表示出了开发阶段与测试各阶段的对应关系。
单元测试:是否满足详细设计的要求
集成测试:验证已测试过的部分是否可以很好地结合在一起
系统测试:检验系统功能、性能是否达到系统的要求。
验收测试:确定软件的时限是否满足用户需求或合同需求
1、优点:包含了底层测试(单元测试)和高层测试(系统测试);
清楚的标识了开发和测试的各个阶段;
自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。
2、缺点:自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;
实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。
改良:每个步骤都可以进行小的迭代工作。
2 w模型
2.1
2.2 优缺点
优点:
开发伴随着整个开发周期,需求和设计同样要测试;
更早的介入测试,可以发现初期的缺陷,修复成本低;
分阶段工作,方便项目整体管理。
缺点:
开发和测试依然是线性的关系,需求的变更和调整,依然不方便;
如果没有文档,根本无法执行w模型;对于项目组成员的技术要求更高!
管理成本很高
沟通成本很高