一、什么是软件
软件的定义
软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它是包括程序(program)、数据、文档(document)的完整集合。
软件与程序的区别
软件 = 程序 + 数据 + 文档
二、软件测试的定义
- 为了发现错误而执行程序的过程
- 在规定条件下对程序进行操作,已发现错误,对软件质量进行评估
- 使用人工或自动手段,来运行或测定某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别
三、软件测试的目的
- 观点一:
- 测试是程序的执行过程,目的在于发现错误
- 一个成功的测试用例在于发现至今未发现的错误
- 一个成功的测试是发现了至今未发现的错误的测试
这种观点指出测试是以查找错误为中心,而不是为了证明软件的正确功能
- 观点二:
- 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明
- 确保产品满足性能和效率的要求
- 确保产品是健壮的和适应用户环境的
- 确保最终交给用户的产品符合用户的需求,在产品交给用户之前尽早、尽可能多的发现问题,并协助开发改正问题,共同保证产品的质量
四、软件测试流程
软件测试与开发的对应
- 开发
- 需求阶段
- 开发计划阶段
- 开发设计和编码阶段
- 编码后的调试阶段、缺陷修复
- 测试
- 需求阶段
- 测试计划阶段
- 测试设计和开发阶段
- 测试执行阶段
- 测试评估阶段
五、软件测试执行

六、按照测试阶段分类/软件测试执行
- 单元测试
- 集成测试
- 系统测试(包括确认测试)
- 验收测试
单元测试
- 单元测试又称为模块测试,是最小单位测试
- 单元测试是在软件开发过程中要进行的最低级别的测试活动
- 类、文件、窗口、函数、菜单、报表或一个存储过程都可以作为一个单元进行测试
- 其依据是详细设计文档
集成测试
在单元测试的基础上将已经通过测试的单元模块按照设计要求组装成系统或子系统,再进行测试。目的是找出被测试系统组件之间关系和接口中的错误。
- 非增式集成
- 增式集成
- 自顶向下增式测试
- 自底向上增式测试(最常使用的方法)
自底向上集成测试

确认测试
由集成测试进入系统测试之前,需要对软件是否可以进入系统测试进行评价,这个过程成为确认测试
确认测试需要做的工作包括:有效性测试、软件配置审查。
系统测试
系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。
验收测试
- Alpha testing (α测试),是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,可由程序员或测试员指导或辅助。
- Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
软件测试分类
按阶段分类
| 测试类型 | 对象 | 目的 | 测试依据 | 测试方法 |
| 单元测试 | 模块内部的程序错误 | 消除局部模块的逻辑和功能上的错误和缺陷 | 模块逻辑设计,模块外部说明 | 大量采用白盒测试方法 |
| 集成测试 | 模块间的集成和调用关系 | 找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题 | 程序结构设计 | 结合使用白盒与黑盒测试方法,较多采用黑盒方法和构造测试用例 |
| 系统测试 | 整个系统,包括系统中的软硬件 | 对整个系统进行一系列的整体、有效性测试 | 系统结构设计,目标说明书,需求说明书 | 黑盒测试 |
按照测试方法分类
- 静态测试
静态测试是不运行被测试本身而寻找程序代码中可能存在的错误或评估程序代码的过程。静态测试通过分析或者监察源程序的语法、结构、过程、接口等来检查程序的正确性,找出问题
- 动态测试
动态是运行被测试程序,输入相应的测试数据,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
软件测试基本概念和软件测试分类
原文:https://www.cnblogs.com/TD1900/p/11847476.html