本章的主要内容是软件测试
验证与确认
软件的错误
1. 软件未达到产品说明书标明的功能;2. 软件出现了产品说明书指明不会出现的错误;3. 软件功能超出了产品说明书指明的范围;4. 软件未达到产品说明书虽未指出单应达到的目标;5. 软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户不满意。
验证与确认
验证和确认是两个相互独立但却相辅相成的活动,Boehm 对两者的关系作出如下的描述:验证:我们是否在正确地制造产品?;确认:我们是否在制造正确地产品?。EagLesone 和 Ridley 把这两个概念进行了集成,提出:我们是否在保持产品的正确性?。
V & V 的活动
验证和确认在各个阶段中制定和管理特定的任务,其活动跨越了软件的整个生命周期。IEEE Std 1012—1998 给出一个验证和确认过程。
软件测试基础
什么是软件测试
Glen Myers 对软件测试提出了以下观点:1. 测试时一个程序的执行过程,其目的在于发现错误;2. 一个好的测试用例很可能是发现至今尚未察觉的错误;3. 一个成功的测试用例是发现至今尚未察觉的错误的测试。
软件测试的基本原则
1. 应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭;2. 程序员应避免检查自己的程序;3. 在设计测试用例时,应当包括合理地输入条件和不合理的输入条件;4. 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成;5. 充分注意测试中的群集现象;6. 严格执行测试计划,排除测试的随意性;7. 应当对每一个测试结果做全面检查;8. 妥善保存一些测试过程文档,为维护提供方便。
软件测试的软件开发各阶段的关系
软件开发从获取需求、分析设计到编码实现,是一个自顶向下、逐步精化的过程。而软件测试过程却是自底向上,从局部到整体,逐步集成的过程。在开发的不同阶段,会出现不同类型的缺陷和错误,需要不同的测试技术和方法来发现这些缺陷。
测试文档
1. 测试计划;2. 测试规范;3. 测试用例;4. 缺陷报告。测试文档的重要性表现在以下几个方面:1. 验证需求的正确性;2. 检验测试资源;3. 明确任务的风险;4. 生成测试用例;5. 评价测试结果;6. 再测试;7. 决定测试的有效性。
软件测试信息流
软件测试时需要以下3类信息:1. 软件配置;2. 测试配置;3. 测试工具。
软件测试人员
人间测试人员需要具备以下能力:1. 沟通能力;2. 移情能力;3. 技术能力;4. 自信心;5. 外交能力;6. 幽默感;7. 很强的记忆力;8. 耐心;9. 怀疑精神;10. 自我督促;11. 洞察力。
软件测试策略
单元测试
1. 模块接口测试;2. 局部数据结构测试;3. 重要执行路经测试;4. 错误处理测试;5. 边界条件测试;6. 单元测试方法。
集成测试
1. 自顶向下集成;2. 自底向上集成。
确认测试
通过综合测试之后,软件已完全组装起来,接口方面额错误也以排除,这时就可以开始对软件进行最后的确认测试。确认测试主要检查软件能否按合同要求进行工作,及是否满足软件需求说明书中的确认标准。
系统测试
在系统测试之前,软件工程师应该完成下列工作:1. 为测试软件系统的输入信息设计出错处理通路;2. 设计测试用例,模拟错误数据和软件界面可能发生的错误,记录测试结果,为系统测试提供经验和帮助;3. 参与系统测试的规划和设计,保证软件测试的合理性。系统测试包括以下几个测试:1. 恢复测试;2. 安全测试;3. 强度测试;4. 性能测试。
软件调试
1. 简单的调试方法;2. 归纳法调试;3. 演绎法调试;4. 回溯法调试。
软件测试方法
静态测试与动态测试
静态测试是指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测,主要方法包括:1. 人工测试;2. 计算机辅助静态测试。
动态测试是指通过运行程序发现错误,一般意义上的测试主要是指动态测试。
黑盒测试与白盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有功能的情况下,通过测试来检测每个功能是否都能正常使用。
白盒测试也称结构测试或逻辑驱动测试,它知道产品内部工作过程,可通过测试来监测产品内部动作是否按照按照规格说明的规定正常运行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾他的功能。
黑盒测试方法
1. 等价类划分;2. 边界值分析;3. 状态测试;4. 失败条件测试;5. 错误推测法。
白盒测试方法
1. 逻辑覆盖;2. 路径测试。
程序的静态测试
1. 查找问题;2. 遵守规则;3. 审查准备;4. 编写报告。
面向对象软件测试
面向对象测试类型
1. 模型测试;2. 类测试;3. 交互测试;4. 系统(子系统)测试;5. 验收测试;6. 发布测试。
面向对象测试案例
1. 日期测试;2. 线性表问题。
GUI 测试案例
1. 第一组测试用例:用于测试状态图中的3个状态各自内部转换;2. 第二组测试用例:用于测试状态图中3个状态各自内部的转换;3. 第三组测试用例:用于测试加法算式正确性,
软件测试工具
Junit
基本使用非常简单,基本步骤如下:1. 创建,从 junit. framework. TestCase 派生 unit test 需要的 test unit;2. 编写测试方法,提供类似如下函数签名的测试方法:public void testXXXXX();3. 编译,书写完 test case 后,编译所写的 test case 类;4. 运行,启动 junit test runner,运行这个 test case。
LoadRunner
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。