软件测试的目的:检验软件系统是否满足需求
软件测试的作用:检查由开发小组开发的软件,测试软件的质量状态
软件测试在软件开发过程中的具体作用:
- 确定软件产品存在哪些属性和缺乏哪些属性
- 验证需求是否正确,确认最终产品符合用户的真正需求
- 对专门的过程分类测试,评价产品的合理性
软件测试最理想的目标:以最少量的时间和人力,最大可能地发现最多的错误
软件质量的评价:
- 满足客户的软件需求
- 遵循软件开发过程所规定的各种标准
- 已经满足了那些明文规定的需求,同时也要满足隐含的需求
软件质量的评价指标:
- 软件的运行特性:
- 正确性:软件能满足需求规格说明,完成客户提出任务要求的程度
- 可靠性:软件精确地工作
- 有效性:是否能在一定内存和外设容量下有效地运行
- 完整性:控制各类不同用户使用软件或数据的能力
- 可用性:软件被用户容易掌握
2.软件的维护特性:
- 可维护性:找到错误发生的位置,加以修正的工作量
- 灵活性:是否可以修改,是否容易修改
- 可测性:是否可以测试,是否容易测试
- 软件的移植特性:
- 可移植性:软件可以在不同的机器或环境下运行
- 可复用性:软件的重复使用
软件缺陷(defect):
简单说:软件中不满足的问题称为软件缺陷
软件缺陷的详细定义:
- 软件没有达到产品说明书表明的功能
- 软件出现了产品说明书指明不会出现的问题
- 软件功能超出了产品说明书指明的范围
- 软件没有达到产品说明书虽未指明,但应该达到的功能
- 软件测试人员认为软件难以理解、不易使用、运行速度慢、或者用户认为不好
缺陷的类型:
- 错误的:未将规格说明书正确的实现
- 遗漏的:规定的或者预期的需求没有体现在产品中
- 额外的:规格说明书中未规定的需求被纳入产品难以实现
软件缺陷产生的原因:
- 产品规格说明书(SRS)
- 没有写
- 不够全面、准确、细致
- 经常变更
- 软件的设计(Architecture)
- 描述的不够清楚
- 框架的结合不够紧密和连贯
- 软件框架经常变动,不稳定
- 代码错误
- 编码人员造成的,人员素质和技术水平是其中原因之一
- 间接的看,来自上层的分析和设计问题
软件缺陷的积累和放大效应
什么是软件测试?
软件测试的生命周期:
测试计划->测试设计->测试开发->测试执行->测试评估
软件测试流程的不同阶段:
软件测试相关的人员:
- 软件客户
- 软件使用者
- 软件开发者
- 软件测试人员
- 公司高层管理机构
- 审计和质检人员
软件测试的目标:
- 尽可能早的发现软件缺陷
- 软件测试是一个寻找错误的过程
- 测试是为了证明程序有错,而不是为了证明程序没有错误
- 一个成功的测试是指揭示了迄今为止尚未发现的错误的测试
- 一个好的测试用例是指可能找到迄今为止尚未发现的错误的用例
- 测试环节要严格,力求完美,要与软件测试成本、测试策略综合考虑
CMMI
- CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成
- 是基于SW-CMM,SE-CMM,IPPD-CMM等集成一 体的成熟度模型框架
- 目的是帮助软件企业对软件工程过程进行管理和改进, 增强开发与改进能力,从而能按时地、不超预算地开发 出高质量的软件。
- CMMI 1.3是2010年11月SEI 发布的CMMI模型的最 新版本。
动态测试概念
1.通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能
2.动态测试由三部分组成:构造测试用例、执行程序、分析程序的输出结果
3.对于动态测试,可以从不同角度进行分类
-
从是否关心软件内部结构和具体实现的角度划分:
“白盒”测试、“黑盒”测试和“灰盒”测试 -
从软件开发的过程划分:
单元测试、集成测试、确认测试、系统测试、验收测试和回归测试 -
从测试执行时是否需要人工干预的角度划分:
自动测试和人工测试 -
从测试实施组织的角度划分:
开发方测试、用户测试(β测试)、第三方测试
白盒测试的概念
白盒测试是一种典型的测试方法
- 是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法
- 测试覆盖全部的代码、分支、路径和条件
- 它利用查看代码功能和实现方式得到的信息来确定哪些需要测试、哪些不需要、如何展开测试
- 又称为结构测试或逻辑驱动测试
白盒测试的特点:
- 可以构成测试数据使特定程序部分得到测试
- 有一定的充分性度量手段
- 可获得较多工具的支持
- 通常只用于单元测试和集成测试(主要是单元测试)
基本测试内容:
• 对程序模块的所有独立执行路径至少测试一次
• 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测 试一次
• 在循环的边界和运行的边界限内执行循环体
• 测试内部数据结构的有效性
ž
白盒测试所采用的测试方法是:
• 逻辑覆盖(包括语句覆盖、分支覆盖、条件覆盖、分支-条件覆 盖以及路径覆盖)