【刷题】面筋-测开-软件测试概述/对测试的理解
目录
=======================================================
概述
-
简单认识软件测试,可以从四个方面理解
- 软件测试概述
- 测试用例概述
- 测试分类概述
- 软件质量评估
=======================================================
1-软件测试概述
对软件测试的理解
- 软件测试是软件工程中的一个重要组成部分,基本与开发并行,开发写代码,测试测代码。
- 软件测试工程师通过多种测试方法,和代码管理工具、自动化工具等,对软件产品的多个模块,如功能和性能等进行测试,以检查软件产品是否有bug,来保证产品的质量。
软件测试的作用
- 确保软件产品质量:软件测试是软件产品质量保证的重要措施之一
- 术业有专攻:软件测试人员比其他人做软件测试测试工作,效率更高,效果更好;
软件测试的关键点
- 尽早发现缺陷:伴随软件开发的各个环节,及时发现问题解决问题,避免最后问题堆积导致无法解决或解决工程量巨大。
- 用尽量少的测试用例发现尽可能多的缺陷
- 提升发现缺陷的效率
软件测试的定义
-
测试定义
- 通过设计和运行测试用例,来校验被测系统的实际输出与预期输出是否一致,最终目标是保证系统应符合需求。
- 根本目的:确保被测系统符合用户需求
- 基本手段:设计测试用例
- 执行方式:手工/自动化
- 测试策略:动态运行/静态审阅
- 通用流程:计划、设计、实施、评估
- 软件测试以需求为中心。
- 需求:定义需求(委托方)--分析需求(双方)--实现需求(研发)--校验需求(测试)。
- 通过设计和运行测试用例,来校验被测系统的实际输出与预期输出是否一致,最终目标是保证系统应符合需求。
-
测试分类:
- 软件测试包括动态测试和静态检查两类方法;
- 测试的执行包括人工和自动化两类策略。
=======================================================
2-测试用例概述
定义
- 基于风险最低、效率最高、分而治之的测试设计原则;
- 能代表需求的小的测试单元,描述用户预期输出,反映系统实际执行结果。
测试用例组成
-
输入+输出+测试环境
- 输入:测试数据和操作步骤
- 输出:系统预期执行结果
- 测试环境:是系统环境设置,即进行软件测试所必需的工作平台和前提条件
-
具体:
- 分为9个方面:用例编号/测试项/测试标题/用例属性/重要级别/预置条件/测试输入/操作步骤/预期结果/实际输出
- 一般情况下分为以上几项可根据公司要求进行增删
- 分为9个方面:用例编号/测试项/测试标题/用例属性/重要级别/预置条件/测试输入/操作步骤/预期结果/实际输出
测试用例的基本属性
-
典型性:
- 能揭示最有可能存在缺陷的地方,能代表和覆盖合理与不合理、合法或不合法的情况。
-
可测试性:
- 一个测试用例的预期输出必须是可以检验的,可以根据相关开发文档得到明确的、可判定的结论。
-
可重现性:
- 对于相同的测试用例,系统的预期执行结果应该完全相同;
- 否则,如果系统预期输出存在不确定性,一旦实际运行该测试用例,也无法进行校验。
-
独立性:
- 测试用例应尽量独立
=======================================================
3-测试分类概述
不同角度的测试分类
-
从测试阶段或对象的角度:
- 单元测试、集成测试、系统测试和验收测试;
-
从测试技术的角度:
- 黑盒测试、白盒测试和灰盒测试;
-
从测试目标的角度:
- 回归测试、功能测试、性能测试、 Alpha测试、Beta测试、压力测试、负载测试、安全性测试、配置测试、安装测试、可用性测试、可恢复性测试等。
-
从测试执行方式的角度:
- 手动测试、自动化测试和半自动化测试。
从测试阶段或对象的角度
-
V模型:与软件开发阶段呼应
- 软件开发:需求分析-->概要设计-->详细设计-->编码阶段
- 软件测试:单元测试-->集成测试-->系统测试-->验收测试
-
单元测试
- 是针对每个单元的测试。
- 用于验证一个单元模块的功能是否正常。
- 一个单元模块可以包括几行或上百行代码。
- 单元测试与编码过程是紧密联系的,单元测试有时也认为是编码阶段的一个活动。
-
集成测试:
- 是将不同单元模块组合在一起,形成更大组件的过程。
- 用于查找单元或组件间的接口错误,其关注的重点是那些在单元测试中不能被发现的缺陷。
-
系统测试:
- 检验软件产品能否与系统的其他部分(比如,硬件、数据库及操作人员)协调工作。
- 用于评估整个系统的行为并确保系统行为符合用户需求,并评估系统与硬件设备、运行环境和应用程序等之间的接口。
-
验收测试:
- 部署软件之前的最后一个测试操作。
- 测试范围类似系统测试,通常由系统提供者和客户共同完成的。
- 验收测试使客户确信应用程序具有所需的特性并且能够正确的运行。
-
需求文档测试
- 主要测试需求 中是否存在 逻辑矛盾 以及需求在 技术上 是否可以实现;
-
设计文档测试
- 测试设计是否符合全部需求以及设计是否合理。
从测试技术的角度
-
黑盒测试:
- 关注的是与产品的外部行为相关的缺陷,此时并不考虑产品的内部结构或运行逻辑。
-
白盒测试:
- 关注的是与代码内部结构相关的缺陷,因此,需要测试人员掌握一定的编程技术。
-
灰盒测试:
- 是综合运用黑盒测试和白盒测试技术的一种混合测试方法。
从测试目标的角度
-
功能测试:
- 针对软件功能需求进行测试,目的是检查应用程序的行为是否符合预期。
-
性能测试:
- 用于验证系统是否满足规格说明的性能需求,例如容量和响应时间等。
-
Alpha测试(α测试):
- 在软件发布前,有时会让小规模、有代表性的潜在用户试用软件; 也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,
- Alpha测试不能由程序员或测试员完成。
- 目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色
-
Beta测试(β测试):
- 软件的早期版本被发布给具有代表性用户群来测试,称为β测试。
- β测试常被用于面向大众市场的系统、计算机游戏和类似的应用程序。
-
回归测试:
- 是软件版本修改后的重新测试,可应用于所有测试级别;
- 目的是确保被修改组件的行为没有改变,不会造成意外结果.
-
压力测试:
- 以设计的最大负载或超过最大负载来运行软件,用于确定系统运行的负载界限。
-
负载测试:
- 通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。
-
安全性测试:
- 是对产品进行检验,以验证产品符合安全需求定义和产品质量标准的过程。
- 用于测试系统在遭遇未授权访问、计算机犯罪和破坏时是否能保护自己
-
配置测试:
- 当开发的系统需要应用于多种环境配置时,需要对每种配置进行测试,以检测系统行为是否符合规格要求。
- 包含硬件配置和软件配置。
-
安装测试:
- 在目标环境中通过安装来验证软件及其安装过程。
- 目的是确保该软件在正常或异常情况的不同条件下都能进行安装,且安装后可立即正常运行。
-
可用性测试:
- 用于评估系统使用的简易程度,交互是否具有人机工程学设计以及用户文档使用的有效性。
-
可恢复性测试:
- 用于检验系统在灾难或意外宕机后的重启能力。
从测试执行方式的角度
-
手动测试:
- 人工执行测试。
- 即根据测试用例中描述的规程,不借助特殊的软件工具,人工来运行被测系统,观察系统实际输出是否符合测试用例的预期输出。
-
自动化测试:
- 软件测试的自动化,是一个将以人为驱动的测试行为转化为机器执行的过程。
- 目的是节省人力、时间或硬件资源,并提高测试效率。
=======================================================
4-软件质量评估
狭义和广义的软件质量
- 狭义的软件质量:软件的内部质量,即软件无“故障”;
- 广义的软件质量:产品质量、过程质量和客户满意度
软件测试和软件质量
- 软件测试是软件质量保证的关键步骤。
- 但提高软件质量的途径是改进软件开发过程的质量,而不是提高软件测试。