课程目标理解软件缺陷的定义、原因与构成、缺陷管理流程掌握软件测试的定义和目标了解软件测试的现状与未来了解软件测试人员的素质要求掌握测试用例的概念、组成、设计原则了解测试用例的评价标准以及测试用例模板的构成课程内容●什么是软件测试●软件测试与 CMMI●测试用例●测试环境什么是软件测试软件测试与 CMMI测试用例什么是软件测试测试以检验产品是否满足需求为目标软件测试在规定条件下对程序进行操作以发现错误对软件质量进行评估。软件文档数据程序软件测试的对象对软件形成过程的文档、数据以及程序进行的测试而不仅仅是对程序进行的测试。软件测试与 CMMI●从保证软件质量的角度来说软件测试是软件质量保证工程的一个重要组成部分也是最重要的质量保证手段。●然而随着软件开发技术的不断发展以及软件系统的规模和复杂性的不断增加传统的软件测试理论和技术已经不能够很好地满足开发组织在产品质量、开发成本、研制周期等方面的需求。传统的软件测试技术和测试过程模型传统的软件测试只是作为软件开发过程中的一个特定阶段并且只针对软件成品进行测试。软件测试在软件开发过程的瀑布模型描述中所处的地位软件测试的发展扩充后的软件测试包括软件需求分析、软件概要设计、软件详细设计、编码、集成、验收等各个工程阶段CMMI 模型是从软件过程改进和评估的角度出发对软件开发中的测试技术给出了充分的支持和扩充CMMI 模型对软件测试的支持和扩充CMMI 模型主张在开发过程中注重对过程和产品的度量以量化的形式提供对管理过程的支持以及对过程进行相应的评估和改进。这实际上就是对软件测试技术的一种应用和扩充。测量和分析过程域的三个目标协调测量和分析活动提供度量结果将测量和分析活动制度化为可管理的过程第一个目标 协调测量和分析活动模型中给出 4 个方面的特定实践●确定测量对象建立测量目标●详细说明度量值以处理测量目标●规定数据收集和存储规程说明如何获得并存储测量数据●规定分析规程说明如何对度量数据进行分析和报告并且安排优先顺序测量对象●组织所开发出的软件产品、半成品以及过程产品●对开发过程本身的度量第二个目标 提供度量结果以便处理信息需要和目标模型中给出 4 个方面的特定实践●收集度量数据即获得制定的度量数据●分析并解释度量数据●管理并存储度量数据、度量规范和分析结果●通报分析结果向所有的干系人报告测量和分析活动的结果第三个目标 将测量和分析活动制度化为可管理的过程第三个目标是共性目标这一目标主要关注的是对软件测试和过程度量活动的管理以及制度化。针对这一共性目标CMMI 模型从四个不同方面给出了 10 个共性实践。首先要求组织建立方针为策划和执行“测量和分析”过程提供组织级的支持其次组织应该制定测量和分析过程计划提供必要的资源分配相应的责任并且对相关人员进行培训第三组织应该将测量和分析过程指定的工作产品置于配置管理的适当层次确定与过程相关的干系人并使之介入同时还要对测量和分析过程进行监督和控制最后组织应该客观评价测量和分析过程以及过程的工作产品和服务的遵循情况同时由高层管理者审查测量和分析过程的活动、状态和分析结果并解决相应的问题。CMMI 模型对传统软件测试技术的扩充从对软件产品的测试到软件产品的测试开发过程的度量从事后测试到全过程测试和分析软件测试与开发的其他阶段不再串行工作而是并行进行什么是测试用例测试用例的三种定义●测试用例Test CaseTC简单来讲是指执行条件和预期结果的集合完整来讲是针对要测试的内容所确定的一组输入信息是为达到最佳的测试效果或高效地揭露隐藏的错误而精心设计的少量测试数据。●RUPRational Unified Process统一软件开发过程中认为测试用例是我们用来验证系统实际做了什么的方式因此测试用例必须可以按照要求来跟踪和维护。●IEEE 标准 6101990给出的定义为测试用例是一组测试输入、执行条件和预期结果的集合目的是要满足一个特定的目标比如执行一条特定的程序路径或检验是否符合一个特定的需求。测试用例核心一、测试内容二、输入信息测试用例的公式表示测试用例的评价标准以满足某一个测试目标或测试任务来整体看测试用例衡量一组测试用例的结构、设计思路和覆盖率等指标从单个测试用例看衡量其描述的规范性、可理解性和可维护等指标七标准1测试用例的目标清楚并能满足软件质量的各个方面包括功能测试、性能测试、安全性测试、故障转移测试、负载测试等。2设计思路正确、清晰。例如通过序列图、状态图、工作流程图、数据流程图等来描述待测试的功能特性或非功能特性。3在组织和分类上测试用例层次清楚、结构合理。测试用例的层次与产品特性的结构/层次相一致或者与测试的目标/子目标的分类/层次相一致并具有合理的优先级或执行顺序。4测试用例覆盖所有测试点、覆盖所有已知的用户使用场景User scenario也就是说每个测试点都有相应数量的测试用例来覆盖而且将各种用户使用场景通过矩阵或因果图等方式列出来找到相对应的测试用例。5测试手段的区别对待。在设计测试用例时就要全面考量测试的手段哪些方面可以通过工具测试哪些方面不得不用手工测试对不同手段的测试用例区别对待。6有充分的负面测试。作为测试用例不仅要测试正确的输入和操作还要测试各种各样的例外情况如边界条件、不正确的操作、错误的数据输入等。7没有重复、冗余的测试用例满足相应的行业标准等。九标准1测试用例的出发点是发现缺陷即单个测试用例在“暴露缺陷”上具有较高的可能性。2测试用例的单一性。一个测试用例面向一个测试点不要将许多测试点揉在一起。例如通过一个测试用例发现 12 个缺陷而不能发现 510 个缺陷甚至更多的缺陷。3符合测试用例设计规范或测试用例模板。4描述清楚。包括特定的场合、特定的对象和特定的术语没有含糊的概念和一般性的描述。例如测试用例名称为“登录功能使用正常”就是一个描述不清楚的例子而这样的描述“登录功能中用户名大小写不敏感性验证”、“登录功能中用户名唯一性验证”和“用户账号被锁定后再进行登录操作”等就比较好。5操作步骤的准确性。按照步骤的操作得到唯一的测试结果。6操作步骤的简单性。操作步骤不应该太复杂过于复杂的操作步骤意味着测试用例需要被分解为多个测试用例或者分解为多个环节进行验证。7所期望的测试结果是可验证的即能迅速、明确地判断测试的实际结果是否与所期望的结果相同或相匹配。例如在测试用例中描述期望结果为“登录成功”这实际是不可验证的。要使这个期望结果具有可验证性我们就应该这样描述所期望的结果—“‘退出log out’按钮出现”。8测试环境的正确性、测试数据的充分性。9前提条件、依赖性被完全识别出来。测试用例设计的基本原则测试用例的代表性测试结果的可判定性测试结果的可再现性测试用例模板1软件或项目的名称。2软件或项目的版本内部版本号。3功能模块名。4测试用例的简单描述即该用例执行的目的或方法。5测试用例的参考信息便于跟踪和参考。6本测试用例与其他测试用例间的依赖关系。7本用例的前置条件即执行本用例必须要满足的条件如对数据库的访问权限。8用例的编号ID如可以是“软件名称简写—功能块简写—NO.”。9步骤号、操作步骤描述、测试数据描述。10预期结果这是最重要的和实际结果如果有缺陷管理工具这条可以省略。11开发人员必须有和测试人员可有可无。12测试执行日期。编辑测试环境什么是测试环境软件测试环境就是软件运行的平台即软件、硬件和网络的集合测试环境 软件 硬件 网络 历史数据测试环境的规划步骤规划测试环境的第一步——明确如下问题1执行测试所需的计算机数量和对每台计算机的硬件配置要求包括 CPU 速度、硬盘和内存容量、网卡支持的速度等。2部署服务器所需的操作系统、数据库管理系统DBMS、中间件、Web 服务器等以下统称支撑软件环境的名称、版本必要时还需明确相关补丁的版本。3用于保存文档和数据这里主要是指测试过程中生成的文档而非测试参考文档或存放测试结果的最终文档的服务器必需的支撑软件环境中各软件的名称、版本必要时也应明确相关补丁的版本。4测试机所需支撑软件环境中各软件的名称、版本必要时应明确相关补丁的版本。5用于对被测软件系统的服务器环境和测试管理服务器环境进行备份的专用计算机该环节是可选的。6测试所需的网络环境。7执行测试工作所需的一些辅助软件。 例如文档编写工具、测试管理系统、性能测试工具、缺陷管理系统等应明确这些软件的名称、版本、License授权证书数量和可能需要的相关补丁的版本。对于性能测试工具还需要重点留意是否支持被测软件系统所用的协议。8为执行测试用例所需初始化的各项数据。对性能测试而言还需重点留意执行测试用例之前应满足的历史数据量以及在测试过程中受到影响的数据的恢复问题。怎样搭建测试环境测试环境说明及备案的准备工作① 确保所使用的磁盘备份工具软件本身的质量可靠性。② 利用有效的正版杀毒软件检测要备份的磁盘保证测试环境中没有病毒并确保测试环境中所运行的系统软件、数据库、应用软件等已经安装调试好并全部正确无误。③ 为减少镜像文件的体积要删除 Temp 文件夹下的所有文件要删除 Win386.swp 文件或_RESTORE 文件夹选择采用压缩方式进行镜像文件的创建④ 最后再进行一次彻底的磁盘碎片整理将 C 盘调整到最优状态。