1.测试基础 671
1.软件测试模型
1.V模型 开发完成后才进行测试工作。
最广为人知的模型,软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系。
优点:将复杂的测试工作按阶段划分为各个小阶段来实现,从多角度测试系统找出更多的缺陷
缺点:软件测试容易误导为软件开发的最后一个阶段
需求、设计阶段产生的问题不能很早的发现
质量控制和测试效率无高效发挥
2.W模型
增加了软件各开发阶段中同步进行的验证和确认测试活动。
测试与开发两个V 测试与开发并行关系
优点:测试和开发同步进行,有利尽早发现问题
增加非程序角度测试系统的思想
测试准备及设计工作提前,提高测试质量及效率
缺点:把软件开发视为需求、设计、编码等一系列串行的活动
开发和测试保持一种线性的前后关系
无法支持迭代、自发性以及变更调整
3.H模型
将测试活动完全独立出来,形成一个完全独立的流程。
优点:将测试从开发中独立出来,利于研究更深的测试技术
同时测试多个项目时,可对测试技术重复利用
高效调整测试人员
缺陷修复时不受项目组内部人员限制
缺点:独立的测试组对系统认识不够深入
影响测试质量及测试效率
4.X模型
对V模型的改进,提出针对单独的程序片段进行互相分离得编码和测试,以后通过频繁得交接和集成最终合成可执行得程序。
将程序片段进行相互分离的编码和测试。
优点:强调单元测试及集成测试的重要性
引入探索性测试使测试模型与现实更接近
缺陷修复时不受项目组内部人员限制
缺点:只强调测试过程中的部分内容
没有对需求测试、验收测试等内容进行说明
5.前置测试模型
开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。
用较低的成本来及早发现错误,并且充分强调了测试对确保系统的高质量的重要意义。
2.软件测试类型
1.按照开发阶段划分
- 单元测试
软件设计的最小单元即程序模块 - 集成测试
组装测试、联合测试、子系统测试或部件测试。最好不要软件开发软件设计人员承担,提高集成测试的效果。 - 系统测试
对集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。 - 验收测试
完成了功能测试和系统测试之后、产品发布之前所进行的系统软件活动,它时技术测试的最后一个阶段。交付测试 发布测试 确认测试。
2.按照测试实施组织划分
- 开发方测试
Alpha测试 - 用户测试
Beta测试 - 第三方测试
3.按照测试技术划分
- 黑盒测试 功能测试,通过测试来检测每个功能是否都能正常使用。着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
以用户的角度,从输入数据于输出数据的对应关系出发进行测试的。 - 白盒测试
结构测试,把程序看成装一个透明的白盒子里,也就是清楚了解程序结构和处理过程.检验软件内部的逻辑结构。 - 灰盒测试
介于白盒测试于黑盒测试之间的测试.关注输出对于输入的正确性,同时也关注内部表现,
4.按照测试执行方式划分
- 静态测试 不允许程序,通过人工对程序进行分析于检查
代码检查
静态结构分析
代码质量度量 - 动态测试 人工或者使用工具运行程序进行检查、分析
编写测试用例
执行程序
分析程序的输出结果
5.按照测试对象类型划分
- 功能测试 检查软件功能是否实现了软件功能说明书上的功能要求。
- 界面测试 用户界面进行测试,检查用户界面的美观度、统一性。
- 流程测试 业务流程、数据流程、逻辑流程,目的是检查软件在按照流程操作时是否能够正确处理。
- 接口测试 测试系统组件间接接口的一种测试。
- 安装测试 确保该软件在正常情况和异常情况的不同条件下。测试安装代码以及安装手册。
- 文档测试 非交付用户的文档测试 需求文档测试和测试相关文档测试
交付用户的文档测试 需求文档 用户手册 安装手册 - 源代码测试 对源代码进行测试,识别、定位代码存在的安全漏洞
- 数据库测试 数据完整性 数据有效性 数据操作和更新
- 网络测试 链路测试 错包率测试 连通性测试 质量测试 备份路由测试
- 性能测试 负载测试 压力测试 稳定性测试
6.按照质量属性划分
- 容错性测试 系统容错能力,异常情况瞎自身是否具有防护性的措施或者某种灾难性恢复的手段。
- 兼容性测试 不同的应用程序之间,不同的操纵系统平台上,不同的网络等环境中能否很友好的运行的测试。
- 安全性测试 应用程序级别的安全 系统级别的安全性
- 可靠性测试
- 可用性测试
- 维护性测试
- 可移植性测试
- 易用性测试 软件的易学易用性、各个功能是否易于完成、软件界面是否友好等。
7.按照测试地域划分
- 本地化测试
软件界面测试
基本功能测试
安装/卸载测试
文档测试 - 国际化测试
设计评审
代码审查
对源语言的功能测试
对伪翻译版本的测试
2.软件测试技术
1.黑盒测试法
两种基本方法 通过测试和失败测试
优点:
- 比较简单,不需要了解程序内部的代码及实现
- 与软件的内部实现无关
- 从用户角度出发,能很容易的知道用户用到那些功能,会遇到那些问题
- 基于软件开发文档,所以也能知道软件实现了文档中的那些功能。
- 在做软件自动化测试时较为方便。
1.测试区域确定法
- 等价类划分法
- 边界值分析法
2.组合覆盖法
- 全组合覆盖法
- 成对组合覆盖法
- 正交实验设计法
- 数据覆盖法
3.逻辑推断法
- 因果图法
- 判定表法
- 大纲法
4.业务路径覆盖法
- 场景分析法
- 功能图法
2.白盒测试法
按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能。
对程序所有逻辑路径进行测试,是一种穷举路径的测试方法。仍然可能存在错误。
1.基本概念
- 控制流图
- 图矩阵
- 环形复杂度
2.测试方法
- 静态白盒测试
代码检查法 桌面检查 代码走查 代码审查
静态结构分析法 程序的结构形式是主要依据。
静态质量度量法 - 动态白盒测试 结构测试
覆盖测试 逻辑覆盖 面向对象的覆盖
控制结构测试 基于路径测试 循环测试
其他白盒测试方法 程序插桩 程序变异测试
3.信息系统测试管理
1.测试管理概述
软件测试越来越受人重视,随着软件开发规模增大、复杂程度增加,已寻找软件中的错误为目的的测试工作就显得更加困难。为了尽可能得找出错误,产出高质量得软件产品,加强对测试工作得组织和管理就显得尤为重要。
2.测试管理内容
测试部门管理和测试项目管理两种
测试部门管理:日常事务、部门人员、部门下属项目、部门资产等得跟踪及管理工作
测试项目管理:测试人员管理、测试计划、测试策略得编写、测试评审得组织、测试过程得跟进、测试内部和外部得沟通协调、缺陷跟踪。
3.测试监控管理
为了测试活动提供反馈信息和可视性。
测试用例执行得进度=已执行得数目/总数目
缺陷的存活时间=缺陷从open到closed的时间
缺陷分布密度=对应于一项需求的总缺陷数/对应于项目需求的测试用例总数。
缺陷修改质量=每次修改后发现的缺陷数量。
4.配置管理
- 选取合适的配置管理工具
- 整理配置项,明确相应管理流程
- 将配置项作为一个整体进行配置管理
- 增加发布前验收测试环节
- 采用并行开发方式区别不同的开发活动
- 明确角色与职责
5.测试风险管理
- 需求风险
- 测试用例风险
- 缺陷风险
- 代码质量风险
- 测试环节风险
- 回归测试风险
- 沟通协调风险
- 其他不可预计风险
6.测试人员绩效考核
1.工作内容考核
2.工作效率与工作质量考核
- 文档产出率 测试用例文档页数/编写测试用例文档有效时间 小时 1.14页 高于此值为优
- 用例产出率 测试用例数/编写测试用例文档有效时间 小时 平均 4.21个用例/小时
3.对自动化测试人员效率的度量
4.对测试项目负责人效率的度量
5.测试管理的度量
6.考核注意事项