什么是软件测试
1.为了发现错误而执行程序的过程
2.评价程序或系统属性为目的的活动。是对软件质量的度量,发现软件中存在的缺陷,对缺陷进行总结分析,
对开发给出一些合理化的建议,进行改进,并最终提高产品质量。
什么是软件缺陷?
软件未实现规格说明书中的功能(有些功能未实现)
软件功能出现了不应有的错误
软件功能超出规格说明书范围(画蛇添足,实现了需求中没有提及的功能 )
软件未达到应达到的目标(例如应该达到多少人的并发量但为成功)
软件难以理解,不易使用、运行速度缓慢
软件缺陷的来源
| 来源 | 原因 |
|---|---|
| 软件需求 | 即需求人员所理解的需求与客户真正的需求有较大差异或需求人员了解的需求后,编写的需求文档可能有歧义或表属性的 错误,导致设计人员理解错误。 |
| 软件需求 | |
| 软件设计 | 设计人员根据需求设计时,是一个信息传递的过程,必然存在信息的损失和扭曲,也会产生缺陷 |
| 编码 | 由于编码人员技能的原因,也会引入一部分缺陷。 |
| 其他 | 一些环境配置所引起的缺陷 |
软件测试的对象
| 对象 | 具体内容 |
|---|---|
| 程序 | 保证程序的功能正确,性能良好 |
| 文件 | 用户手册,入门手册排版清晰可读,内容完成准确的,用户可以根据这些文件快速熟悉软件的操作 |
| 数据 | 配置文件配置的值,配置的值不正确会导致程序程序的错误 |
软件测试的过程模型
对一个问题进行抽象简化,能够很清晰的了解到各个元素之间的相互关系。
V模型:
1. 需求人员和用户了解用户需求得到
2.根据需求分析了解需要实现的功能
3、开发人根据需求分析编写概要设计文档,系统中个各个模块,各个模块间的关系
4、对每个模块进行细化
5、编码实现
6、单元测试主要对详细设计文档中描述的公董是否都正确的实现了
7、集成测试是验证概要设计文档是否被正确实现了
8、系统测试验证需求文档是否正确实现
9、由用户进行验收测试
缺点:开发和测试的阶段是顺序执行的,导致时间比较长。有些缺陷在最后才被发现,再去改需求文档。(问题发现的晚,周期长)
W模型
1、需求文档完成后,就根据需求测试文档来设计系统测试用例
2、概要设计完成后,就进行概要测试用例的设计
3、详细设计完成后就进行单元测试用例的设计
4、集成后根据测试用例进行测试
X模型
H模型
软件测试的生命周期
1、测试计划(明确测试范围采用什么样的测试策略,采用什么样的测试方法进行测试,怎样算通过,人员计划的安排)->产生测试设计文档
2、测试分析(相应的测试人员就根据相关的文档了解系统如系统测试就了解系统测试文档)
3、测试设计(进行测试用例的设计)->产生测试用例文档
4、测试执行(执行准备好的测试用例,若结果和预期不同,就提交一个软件缺陷到软件管理系统中去,返回给开发者进行修改)->产生测试缺陷报告文档
5、测试评估(对测试活动进行总结,对软件质量进行评估)->产生测试报告文档
测试方法
根据是否执行软件:
| 名称 | 解释 |
|---|---|
| 静态分析(不需要运行程序就能进行测试) | 观察代码的逻辑结构,编码,定义的变量 |
| 动态测试(需要运行才能完成测试才能进行测试) | 如测试登录功能需要打开网页进行登录。 |
根据是否了解程序内部结构:
| 名称 | 解释 |
|---|---|
| 黑盒测试(又称功能测试,数据驱动测试) | 操作过程接近客户,所以可以比较熬好的模拟用户黑盒测试,顾名思义把程序比作一个黑色的盒子,不需要了解程序的内部结构,只需要关心输入的值,以及输出的值是否达到预期结果 |
| 白盒测试(又称结构测试,逻辑测试) | 需要有一定的代码基础需要知道程序内部的逻辑结构,能发现一些比较深入的问题 |
| 灰盒测试 | :结合了黑盒测试和白盒测试即需要了解一部分程序的结构,再结合设计一些数据进行测试 |
根据测试的阶段和作用:
| 名称 | 解释 |
|---|---|
| 单元测试 | 主要的是函数的功能是否正确实现 |
| 集成测试 | 各个模块集成进行测试,各个模块的调用,参数的传递是否正确 |
| 系统测试 | 主要测试的是需求规格是否正确的被实现了 |
| 验收测试 | 让用户能否接收 |
根据目的:
| 名称 | 解释 |
|---|---|
| 功能测试 | 对功能进行测试,例如测试登录,能否正常的登录系统,输入错误的数据是否提示错误 |
| 性能测试 | 对性能进行测试,例如当很多用户同时登录是,系统响应时间是否正常 |
| 安全测试 | 测试系统能够提供正常的服务,是否能够抵御恶意的攻击,防止数据窃取篡改 |
| 兼容性测试 | 不同操作系统的兼容性,浏览器的兼容性 |
常被面试的概念:
| 名称 | 解释 |
|---|---|
| 回归测试 | 当开发人员进行代码修改缺陷之后,提交给测试人员测试,检查缺陷是否更正,与其关联的其他模块是否出现新的 错误。 |
| 冒烟测试 | 名称来自硬件测试,例如测试一块电路板,通电之后发生短路或其他原因,电路板开始冒烟,故名冒烟测试,表示基本功能都无法完成。软件测试也是如此,测试程序的基本功能否正常运行,若基本功能都有问题则需将测试申请驳回。 |
| α测试 | 用户在开发环境进行的测试 |
| β测试 | 在用户环境下运行程序进行测试(如内测版) |
测试基本原则(在测试工作中遵循的原则)
1、尽早的和不断地进行软件测试(越早发现缺陷,修改的代价越小,如W模型)
2、应避免测试自己的程序
3、pareto原则(28原则)80%的缺陷存在20%的模块中
4、测试用例由输入和预期的输出结果组成
5、程序修改后要回归测试
6、穷尽测试是不可能的