软件测试教程!自费2万多买的测试基础/自动化测试/接口测试/功能测试/性能测试全

- 什么是软件测试
- 软件测试是验证软件的功能是否满足用户的需求。
- 定义:使用人工和自动手段来运行或测试某个系统的过程;
- 目的:在于验证系统是否满足规定的需求,保证软件质量,提高用户体验。
- 软件分为两大类:系统软件和应用软件。
- 系统软件:windows all,Linux,Unix等都是系统软件;
- 应用软件:App、QQ、微信等。
- 软件测试的目的
- 软件测试为了检验产品是否满足用户需求;
- 为了提高用户的体验;
- 为了发现程序中存在代码或业务逻辑的错误。
- 软件测试分类
- 按测试阶段划分:单元测试、集成测试、系统测试;
- 按是否覆盖源代码划分:白盒测试、黑盒测试;
- 白盒测试:针对代码去测试
- 黑盒测试:针对功能去测试
- 按是否运行划分:静态测试、动态测试
- 静态测试:测需求文档、界面等不运行测试
- 动态测试:程序运行中测试
- 其他分类:回归测试、冒烟测试、随机测试、验收测试
- 冒烟测试:开发完成程序之后对程序的主流程进行测试,不测程序的细节;
- 随机测试:又叫探索性测试,选取重要的功能模块进行测试;
- 验收测试:α测试,β测试,γ测试;
- α测试:Alpha是内测版本,公司内部测试;
- β测试:Beta是公测版本,客户测试;
- γ测试:Gamma版本,指的是软件版本正式发行的候选版。
- 按是否自动化划分:人工测试,自动化测试。
- 软件测试的工作流程
- 需求分析→需求评审→编写测试计划→测试计划评审→提取测试点→设计测试用例→测试用例评审→搭建测试环境→冒烟测试→执行测试用例→bug跟踪处理→测试报告
- 软件质量模型
- 软件产品质量六属性
- 功能性
- 功能完备性
- 功能正确性
- 功能适合性
- 功能性的依从性
- 可靠性
- 成熟性
- 可用性
- 容错性
- 易恢复性
- 可靠性的依从性
- 易用性
- 可辨识性
- 易学性
- 易操作性
- 用户差错防御性
- 用户界面舒适性
- 易用性的依从性
- 性能效率
- 时间特性
- 资源利用性
- 容量
- 性能效率的依从性
- 可维护性
- 模块化
- 可重用性
- 易分析性
- 易修改性
- 易测试性
- 可维护性的依从性
- 可移植性
- 适应性
- 易安装性
- 易替换性
- 可移植性的依从性
- 其实还有四大属性
- 信息安全性
- 保密性
- 完整性
- 抗抵赖性
- 可核查性
- 真实性
- 信息安全性的依从性
- 兼容性
- 共存性
- 互操作性
- 兼容性的依从性
- 用户文档集
- 可用性
- 规范性
- 完备性
- 正确性
- 易学性
- 易理解性
- 用户文档集的依从性
- 产品说明
- 可用性
- 内容
- 标识和标示
- 产品说明的依从性
- 软件开发过程模型
- 瀑布模型
- 流程:需求分析→设计→编码→实现→软件测试→完成→维护
- 测试的切入点:测试阶段处于软件实现后,必须在代码完成后流出足够的测试时间,否则将导致测试不充分,很多问题到项目后期才会暴露。
- 优缺点
- 优点:开发的各个阶段比较清晰;强调早期计划和需求调查;适合需求稳定的产品开发。
- 缺点:依赖早期的需求调查,不适应需求的变化;单一流程不可逆;风险往往在后期才会显露,失去及早纠正的机会,影响后面的阶段,可能导致项目失败。
- V模型
- 流程:需求分析(验收测试)→概要设计(系统测试)→详细设计(集成测试)→编码(单元测试)
- W模型
- 测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试。
- 流程:需求分析(验收/系统测试设计)→概要设计(集成测试设计)→详细设计(单元测试设计)→编码(单元测试)→集成(集成测试)→实施(系统测试)→交付(验收测试)
- 优缺点:
- 优点:开发强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试;更早地介入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复;同样是分阶段的工作,便于控制项目过程。
- 缺点:依赖于软件开发和软件测试依然保持一前一后的线性关系,无法支持迭代、自发性和需求等变更调整;对于当前很多项目,在执行的过程中根本不产生文档,那么W模型基本无法适用;使用起来技术复杂度很高,对于需求和设计的测试要求很高,实践起来困难。
- 测试用例
- 定义:测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是知道测试工作进行的依据。
- 测试用例编写:八大要素
- 用例编号
- 用例标题
- 测试项目
- 用例级别
- 预置条件
- 测试输入
- 测试步骤
- 预期结果
- 测试用例设计方法:
- 等价类
- 有效等价类
- 无效等价类
- 边界值
- 概念:边界值分析法是作为对等价类划分法的补充
- 与等价类的区别:
- 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件;
- 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
- 场景法
- 场景法是模拟用户操作软件时的场景,主要用于测试系统的业务流程;
- 当拿到一个测试任务后,先关注它的主要功能和业务流程是否正确实现,这就需要用到场景法来完成测试。当业务流程或者说该软件的主要功能没有问题时,我们在重点从边界值、等价类等方面对控件进行更加细致。完整的测试。
- 冒烟测试主要采用场景法进行测试。
- 错误推断法
- 错误推断法是指利用直觉和经验猜测出会出错的可能类型,有针对性的列举出程序中所有可能的错误和容易发生错误的情况。
- 不单独使用,可以作为其他方法的补充。
- 软件缺陷信息(bug)
- bug的定义
- 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误等各种问题
- 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
- 因此软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,没有满足用户的需求。
- bug产生的原因
- 软件缺陷产生是不可避免的,造成软件缺陷产生的原因主要归纳为:
- 用户需求定义错误
- 设计说明存在错误
- 编码说明、程序代码有误
- 硬件或者软件系统上存在错误等
- bug产生的根源
- 交流不充分,
- 软件的复杂性
- 开发人员的错误
- 需求的变化
- 进度的压力