目录
一、按照测试阶段分类
1. 单元测试
2. 集成测试
3. 系统测试
3.1 冒烟测试
3.2 回归测试
4. 验收测试
二、按照是否手工测试分类
1. 手工测试
2. 自动化测试
3. 手工测试和自动化测试的优缺点
三、按照实施组织分类
1. α测试(Alpha Testing)
2. β测试(Beta Testing)
3. 第三方测试
四、按照测试地域分类
1. 国际化测试
2. 本地测试
一、按照测试阶段分类
1. 单元测试
- 目的:测试单个模块或函数的功能。
- 方法:针对每个单元编写测试用例。
与编码同步进行,针对软件最小组成单元进行测试,主要采用白盒测试方法,从被测对象的内部结构出发设计测试用例,到底怎么才算“最小单元”呢,最小单元实际是认为定义的,⼀个方法,一个类都可以理解为“最小单元”。
- 测试阶段:编码后或者编码前(TDD)
- 测试对象:最小模块
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:代码和注释+详细设计文档
- 测试方法:白盒测试
- 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
2. 集成测试
- 目的:测试多个模块或组件的集成效果。
- 方法:检查接口和数据流的正确性。
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
- 测试阶段:一般单元测试之后进行
- 测试对象:模块间的接口
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:单元测试的模块+概要设计文档
- 测试方法:黑盒测试与白盒测试相结合
- 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响
3. 系统测试
- 目的:测试整个系统的运行效果。
- 方法:模拟实际运行环境,进行全面测试。
对通过集成测试的系统进行整体测试,验证系统功能性和非功能性需求的实现。
- 测试阶段:集成测试通过之后
- 测试对象:整个系统(软、硬件)
- 测试人员:黑盒测试工程师
- 测试依据:需求规格说明文档
- 测试方法:黑盒测试
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
3.1 冒烟测试
这一术语源自硬件行业。对⼀个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。
冒烟测试的对象是每⼀个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
如果冒烟测试通过,则测试人员开始进行正式的系统测试,如果不通过,则测试人员可以让开发人员重新修复代码直到冒烟测试通过,再开始进行系统测试。
在生活中,购买⼀个电视,首先会通电,查看电视是否能够运行。购买⼀个水杯,首先会灌水,查看水杯是否漏水。
在工作中,假如有⼀个博客系统项目提测了,冒烟测试即只需要测试系统是否能够成功打开,主流程是否可以走通即可。
3.2 回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
回归测试主要由人工测试和自动化测试进行。
在实际工作中,回归测试需要反复进行,当测试者⼀次又⼀次地完成相同的测试时,这些回归测试将变得非常令人厌烦,而在大多数回归测试需要手工完成的时候尤其如此,因此,需要通过自动测试来实现重复的和⼀致的回归测试。通过测试自动化可以提高回归测试效率。为了支持多种回归测试策略,自动测试工具应该是通用的和灵活的,以便满足达到不同回归测试目标的要求。
4. 验收测试
- 目的:确保软件满足用户需求。
- 方法:用户参与测试,验证功能和性能。
针对用户需求,对通过系统测试的软件进行交付性测试,以确定系统是否满足验收标准,由用户或其他授权机构决定是否接受系统。验收测试是部署软件之前的最后⼀个测试操作。它是技术测试的最后⼀个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买者展示该软件系统满足原始需求。
- 测试阶段:系统测试通过之后
- 测试对象:整个系统(包括软硬件)。
- 测试人员:主要是最终用户或者需求方。
- 测试依据:用户需求、验收标准
- 测试方法:黑盒测试
- 测试内容:同系统测试(功能...各类文档等)
🌴单元测试,集成测试,系统测试,回归测试之间的关系
关于车企生产车到客户开上小汽车的全过程:
造车需要原材料,如车轮、发动机等零部件不是车企自己制造出来的,而是通过购买零部件来造车。对买来的零部件进行检查,零部件是否符合造车标准(单元测试)
零件确认完毕,接下来就是复杂的造车工艺,将零部件集成起来构成了⼀辆车,并初步检查拼成的车是否能正常运作(集成测试)
一辆车成型之后并不意味着就可以直接销售给客户了,需要车企专业的测试人员进行详细而完整的测试。(系统测试)
专业的测试人员对企业测试完毕,通过测试的汽车将会在车展或者4S店进行展示,供用户进行选择和购买。用户在选择汽车的过程中也会对车外观以及性能等方面进行校验(验收测试)
二、按照是否手工测试分类
1. 手工测试
- 定义:由测试人员手动执行测试用例。
- 优点:灵活性高,适用于复杂的测试场景。
- 缺点:效率低,容易出错。
手工测试就是由人去⼀个⼀个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的⼀个步骤。
2. 自动化测试
- 定义:使用自动化工具执行测试用例。
- 优点:效率高,可重复性强。
- 缺点:需要额外的开发和维护成本。
就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说自动化测试是把以人为驱动的测试行为转化为机器执行的⼀种过程。 自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化。 自动化测试按照测试对象来分,还可以分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高。
3. 手工测试和自动化测试的优缺点
- 手工测试:适合探索性测试和复杂场景。
- 自动化测试:适合回归测试和重复性高的场景。
自动化测试 | 手工测试 | |
优点 |
|
|
缺点 |
|
|
三、按照实施组织分类
大型通用软件,在正式发布前,通常需要执行Alpha和Beta测试
1. α测试(Alpha Testing)
- 定义:在开发环境中由开发者或测试人员进行的测试。
- 目的:发现和修复初步的错误。
α测试又叫内测或者叫a测,其实都是一个涵义。
α测试通常是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、可使用性、可靠性、性能和支持)。 α测试不能由程序员或测试员完成。
2. β测试(Beta Testing)
- 定义:在用户环境中由实际用户进行的测试。
- 目的:收集用户反馈,优化产品。
β测试又叫公测或者叫b测。
β测试由软件的最终用户们在⼀个或多个场所进行,这里就可以理解为,β测试是正式用户中的⼀部分,他们在任意的场合来使用软件,目的是为了发现软件是否存在⼀系列的问题。
通常会发送一些邀请码,来邀请用户参与项目测试。
α测试与β测试的区别
测试的场所不同 | α测试是在公司内部进行测试的,但是β测试是在用户环境下进行测试的 α测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中 β测试的环境是不受开发方控制的,用户数量相对比较多,时间不集中。 |
测试执行时机不同 | 通常是α测试通过后,在进行β测试 |
测试持续时间长短不同 | α测试时间没有β测试持续时间⻓ |
3. 第三方测试
- 定义:由独立的第三方测试机构进行的测试。
- 目的:提供客观的测试结果和建议。
第三方软件测试是指由独立的第三方公司或组织进行的软件测试活动,通过第三方测试,可以确保软件的质量,节省成本,确保软件尽快上线。
四、按照测试地域分类
1. 国际化测试
- 定义:确保软件在不同国家和地区的本地化版本都能正常工作。
- 方法:语言、日期、货币格式等本地化测试。
国际化测试需要关注的软件特性:
- 布局
- 时间
- 日期
- 数字格式
- 货币
- 机器型号
- .....
2. 本地测试
- 定义:针对特定地区或市场的测试。
- 方法:符合当地法规和用户习惯的测试。