1、中国软件评测中心中国软件评测中心高炽扬高炽扬培训内容培训内容第一章第一章 测试概述测试概述第二章第二章 测试基本概念测试基本概念第三章第三章 基本测试技术基本测试技术第四章第四章 测试中的若干问题测试中的若干问题第一章第一章 测试概述测试概述 1.1 软件测试的发展软件测试的发展 1.2 广义的软件测试广义的软件测试 1.3 软件的错误、缺陷与故障软件的错误、缺陷与故障1.1 软件测试的发展软件测试的发展 60年代(软件工程建立前),为表明程序正确而进行测试。1972年,Bill Hetzel 在North Carolina大学举行第一次以软件测试为主题的正式会议。1979年,Glenford
2、 MyersThe Art of Software Testing提出测试的目的是证伪。1.1 软件测试的发展软件测试的发展 1981年,Bill Hetzel开设“Structured Software Testing”公共课;1988年David Gelperin&Bill Hetzel 在“Communications of the ACM”发表“The Growth of Software Testing”。70年代后期至80年代中期的QA部门。1996年提出的测试能力成熟度TCMM(Testing Capability Maturity Model)、测试支持度TSM(Testabi
3、lity Support Model)、测试成熟度TMM(Testing Maturity Model)。1.2 广义的软件测试广义的软件测试 广义的软件测试是由确认、验证、测试3个方面组成。确认(validation):评估将要开发的软件产品是否正确无误、可行和有价值的。确认意味着确保一个待开发软件是正确无误的,是对软件开发构想的检测。验证(verification):检测软件开发的每个阶段、每个步骤的结果是否正确无误,是否与软件开发各阶段的要求或期望的结果相一致。验证意味着确保软件会正确无误地实现软件的需求,开发过程是沿着正确的方向进行的。测试:与狭隘的测试概念统一。1.2 广义的软件测试
4、广义的软件测试 确认:目的是想证实在一个给定的外部环境中软件的逻辑正确性。包括需求规格说明的确认和程序的确认。程序确认包括静态确认与动态确认。验证:试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。1.2 广义的软件测试广义的软件测试 确认:保证所生产的软件可追溯到用户需求的一系列活动。(生产的软件是否正确)验证:保证软件正确地实现了特定功能的一系列活动。(生产软件的步骤是否正确)1.2 广义的软件测试广义的软件测试 确认主要体现在计划阶段、需求分析阶段,也会出现在测试阶段;验证主要体现在设计阶段、编码阶段;测试主要体现在编码阶段和测试阶段。确认、验证、测试是相辅相成的。确
5、认产生验证和测试的标准,验证和测试帮助完成确认(特别在系统测试阶段)。1.3 软件的错误、缺陷与故障软件的错误、缺陷与故障 错误:编码失误造成的问题 缺陷:需求与设计的不完善 故障:出现错误导致系统停止工作第二章第二章 测试基本概念测试基本概念 2.1 软件测试的定义软件测试的定义 2.2 软件开发的模型软件开发的模型 2.3 测试的目的和原则测试的目的和原则 2.4 测试的数据流测试的数据流 2.5 测试与软件开发的关系测试与软件开发的关系 2.6 测试方法测试方法 2.7 测试策略测试策略 2.8 验收测试验收测试 2.9 第三方测试第三方测试2.1 软件测试的定义软件测试的定义 软件生存
6、周期:需求定义和需求分析、软件设计、程序编码、软件测试、运行维护。2.1 软件测试的定义软件测试的定义 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。测试:为了发现软件中的错误而运行软件的过程。2.1 软件测试的定义软件测试的定义 软件生存期的各个阶段都可能产生错误。而软件需求分析、设计和实现阶段是软件的主要错误来源。软件测试在软件生存期中,跨越两个阶段:一个是编码与单元测试阶段,另一个是综合测试阶段,即测试阶段。2.1 软件测试的定义软件测试的定义 软件测试的对象 软件测试不等于程序测试。软件测试贯串于软件定义和开发的整个期间。需求规格
7、说明、概要设计规格说明、详细设计规格说明、源程序都是软件测试的对象。2.1 软件测试的定义软件测试的定义 软件测试的分类 按测试用例设计方法:白盒测试、黑盒测试。按测试策略和过程:单元测试、集成测试、确认测试、系统测试。2.2 软件开发的模型软件开发的模型 测试的活动应该与软件开发同步进行。测试的执行是在软件已编制完成后进行。及早发现软件的缺陷可以降低软件开发的成本。2.2 软件开发的模型软件开发的模型V模型模型用户用户需求获取需求获取需求定义需求定义需求分析需求分析需求分析书需求分析书概要设计概要设计概要设计书概要设计书详细设计详细设计详细设计书详细设计书编码编码程序程序单元测试单元测试已测
8、试模块已测试模块集成测试集成测试已集成软件已集成软件确认测试确认测试已确认软件已确认软件系统测试系统测试软件产品软件产品评审评审评审评审静态检查评审评审评审制定测试案例需求分析2.2 软件开发的模型软件开发的模型V模型模型 V模型:需求、功能、设计和编码的开发活动随时间而进行,而相应的测试活动(即针对需求、功能、设计和编码的测试)开展的次序正好相反。成功应用软件开发V模型的关键因素是设计测试案例的时机。2.2 软件开发的模型软件开发的模型V模型模型 V模型的问题:误解:“测试是开发之后的一个阶段”、“测试的对象就是程序本身”。实际应用中容易导致需求阶段的错误一直到最后验收阶段才被发现。2.2
9、软件开发的模型软件开发的模型W模型模型需求分析需求测试概要设计功能测试详细设计设计测试集成集成测试确认确认测试交付系统测试编码单元测试2.2 软件开发的模型软件开发的模型W模型模型 W模型:测试伴随整个开发周期。测试的对象不仅仅是程序,还包括需求和设计。W模型应用:相应开发活动完成,即可执行测试(例如:需求分析完成,即可对需求进行测试)。2.2 软件开发的模型软件开发的模型W模型模型 W模型未解决V模型中的部分问题:需求、设计、编码串行进行,无法并行工作。不同层次之间的测试除时间上的先后关系外,还存在触发、反复、迭代、增量等关系。未将测试流程的完整性表示出来。2.2 软件开发的模型软件开发的模
10、型H模型模型 测试流程:测试准备活动:需求分析、测试计划、测试分析、测试编码、测试验证。测试执行活动:测试运行、测试报告、测试分析。测试准备测试执行测试流程其他流程(如设计流程)测试就绪点2.2 软件开发的模型软件开发的模型H模型模型 H模型:测试不仅仅是测试执行,还包括其他活动。测试是一个独立流程,贯穿产品整个周期,于其他流程并发进行。测试要尽早准备,尽早执行。测试根据被测物的不同是分层次的。2.2 软件开发的模型软件开发的模型H模型模型 应用H模型的意义:测试准备和测试执行分离,有利于资源调配。降低成本,提高效率。充分体现测试过程(不是技术)的复杂性。有组织、结构化的独立流程,有助于跟踪测
11、试投入的流向。2.3 软件测试的目的和原则软件测试的目的和原则 测试的目的是寻找错误,并且是尽最大可能找出最多的错误。观点1:好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。观点2:成功的测试是发现了至今为止尚未发现的错误的测试。测试无法说明错误不存在,只能说明软件错误已出现。2.3 软件测试的目的和原则软件测试的目的和原则 尽早地和不断地进行软件测试 避免测试自己的程序 执行测试计划,排除随意性 增量测试,由小到大 周密的测试用例(输入条件(合理、不合理)、预期输出结果)回归测试 出错统计和分析2.3 软件测试的目的和原则软件测试的目的和原则2.4 测试的数据流测试的数据流测试测试
12、结果结果分析分析排错排错可靠性可靠性分析分析改正的软件改正的软件预测可靠性预测可靠性错误错误测试结果测试结果出错率数据出错率数据预期结果预期结果测试工具测试工具软件配置软件配置测试配置测试配置回归测试回归测试2.5 测试与软件开发的关系测试与软件开发的关系软件测试与开发过程的关系软件测试与开发过程的关系概要设计概要设计说明书说明书详细设计详细设计说明书说明书源程序源程序代码代码单元单元测试测试集成集成测试测试确认确认测试测试需求分析需求分析说明书说明书需求分析需求分析设计设计编程编程确认测试确认测试集成测试集成测试单元测试单元测试2.5 测试与软件开发的关系测试与软件开发的关系软件测试与开发的
13、并行性软件测试与开发的并行性需求分析概要设计需求评审概要设计评审详细设计设计走查编码编码走查单元测试各子模块测试计划测试过程测试评审集成测试系统测试项目阶段任务的里程碑2.5 测试与软件开发的关系测试与软件开发的关系完整的开发流程完整的开发流程项目规划项目详细分析代码编写测试需求分析系统测试计划集成测试计划单元测试计划产品发布系统测试集成测试单元测试测试代码编写项目需求分析项目概要分析2.5 测试与软件开发的关系测试与软件开发的关系开发各阶段的测试工作开发各阶段的测试工作 项目规划阶段:确定专人负责测试阶段监控。需求分析阶段:制定测试需求分析、系统测试计划,经评审后成为配置管理项。测试所需要的
14、资源、配置、每阶段评判通过标志进行规约。2.5 测试与软件开发的关系测试与软件开发的关系开发各阶段的测试工作开发各阶段的测试工作 详细设计和概要设计阶段:确保集成测试计划和单元测试计划完成。测试计划完成后,对参考的设计文档进行修改。编码阶段 编写测试代码。(测试人员、专人)测试阶段 测试人员执行测试。完成测试报告。2.6 测试方法测试方法2.6 测试方法测试方法 任何工程产品都可以使用以下的两种方法进行测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。(黑盒测试)。已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格的要求,所有内部成分是否已经过检查。
15、(白盒测试)。2.6 测试方法黑盒测试测试方法黑盒测试 黑盒测试法把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。黑盒测试又称功能测试。2.6 测试方法黑盒测试测试方法黑盒测试 黑盒主要是为了发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?2.6 测试方法黑盒测试测试方法黑盒测试2.6 测试方法白盒测试测试方法白盒测试 白盒测试的前提是可以把程序看成装在一
16、个透明的白盒子里,也就是完全了解程序结构盒处理过程,这种方法按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。白盒测试又称结构测试。2.6 测试方法白盒测试测试方法白盒测试 使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一次。对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测试一次。在循环的边界和运行界限内执行循环体。测试内部数据结构的有效性等。2.6 测试方法白盒测试测试方法白盒测试2.7 测试策略测试策略集成集成测试测试确认确认测试测试系统系统测试测试单元测试被测模块单元测试被测模块单元测试被测模块已集成的软件已确认的软件可
17、交付的软件测试通过的模块设计信息软件需求系统其它元素软件测试的过程2.7 测试策略测试策略单元测试单元测试 单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。软件单元测试的目的是检测程序模块对详细设计说明书的符合程度;软件单元测试依据是单元测试计划。2.7 测试策略测试策略单元测试单元测试 软件单元测试由测试工程师编制测试用例进行测试,及针对程序模块进行多次循环反复的单元测试,并将测试结果记录在针对单元测试的软件测试报告上。若程序模块通过单元测试,则按配置管理规范所规定的标识方法进行标识。2.7 测试策略单元测试的内容测试策略单元测试的内容 模块接口测试
18、局部数据结构测试 路径测试 错误处理测试 边界测试模块接口出错处理独立路径边界条件局部数据模块模块2.7 测试策略单元测试的步骤测试策略单元测试的步骤 通常单元测试是在编码阶段进行的。在源程序代码编制完成。经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。驱动模块:相当于所测模块的主程序。桩模块:也叫做存根模块。用以代替所测模块调用的子模块。2.7 测试策略单元测试的环境测试策略单元测试的环境测试用例测试用例驱动模块桩模块桩模块2被测模块被测模块测试结果测试结果桩模块桩模块1桩模块桩模块n2.7 测试策略单元测试测试策略单元测试2.7 测试策略测试策略集成测试集成测试 软
19、件集成测试又称组装测试,即对程序模块采用自顶向下或自底向上组装起来,对系统的接口进行正确性检验的测试工作。软件集成测试由项目经理组织软件测试工程师依据概要设计说明书和集成测试计划进行。2.7 测试策略测试策略集成测试集成测试 测试人员应提交针对软件集成测试的软件测试报告,项目经理负责对软件集成测试结果的进行确认。通过集成测试,则按配置管理规范所规定的标识方法进行标识。2.7 测试策略集成测试测试策略集成测试 集成测试,通常是在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失。一个模块的功能是否会对另一个模块
20、的功能产生不利的影响。各个子功能组合起来,能否达到预期要求的父功能。全局数据结构是否有问题。单个模块的误差累积起来,是否会放大,从而达到不能接受的程序。2.7 测试策略集成中的组装方法测试策略集成中的组装方法 一次性组装/整体拼装:使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。可以并行调试所有模块,因此充分利用人力,加快工作进度。接口错误发现晚。错误定位困难。2.7 测试策略集成中的组装方法测试策略集成中的组装方法 增殖式组装/渐增式组装:首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统,在组装的过程中边连接边测试,以
21、发现连接过程中产生的问题。自顶向下的增殖方式:是一种日益为人们广泛采纳的组装软件途径,原型法开发中应用广泛。自底向上的增殖方式:总能得到下层模块的处理功能支持,所以不需要存根程序。混合增殖式测试:对软件中、上层使用自顶向下,对软件的中下层采用自底向上。2.7 测试策略集成测试的组织和实施测试策略集成测试的组织和实施 集成测试是一种正规测试过程,必须精心计划,并与单元测试的完成时间协调起来。在制定测试计划时,应考虑如下因素:是采用何种系统组装方法来进行组装测试。组装测试过程中连接各个模块的顺序。模块代码编制和测试进度是否与组装测试的顺序一致。测试过程中是否需要专门的硬件设备。2.7 测试策略集成
22、测试完成的标志测试策略集成测试完成的标志 成功地执行了测试计划中规定的所有组装测试。修正了所发现的错误。测试结果通过了专门小组的评审。2.7 测试策略集成测试测试策略集成测试2.7 测试策略确认测试测试策略确认测试 确认测试又称有效性测试。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明中已经明确规定。2.7 测试策略确认测试的步骤测试策略确认测试的步骤选择测试人员选择测试人员设计测试用例设计测试用例软件计划软件计划实际运行测试实际运行测试用户文档用户文档开发文档开发文档源程序文本源程序文本支持环境支持环境有效有效性性测试测试软件软件配置配置审
23、查审查管理管理机构机构裁决裁决专家专家鉴定鉴定会会测试报告测试报告软件配置软件配置交用户运行维护2.7 测试策略测试策略确认测试中的有效性测试确认测试中的有效性测试 有效性测试是在模拟的环境(可能就是开发的环境)下,运用黑盒测试的方法,验证所测软件是否满足需求规格说明书列的需求。在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:测试结果与预期的结果相符。测试结果与预期的结果不符。2.7 测试策略测试策略确认测试中的软件配置复查确认测试中的软件配置复查 软件配置复查的目的是保证软件配置的所有成分都齐全。各方面的质量都符合要求。具有维护阶段所必需的细节。而且已经编排好分类的目录。2.7
24、 测试策略系统测试测试策略系统测试 系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起测试。在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。2.7 测试策略测试策略系统测试的系统测试的15种测试类型种测试类型 功能(机能)测试:目标中的功能是否真正实现了。批量测试:企图证明程序不能处理目标中指出的大批数据。强度测试:让程序在高负荷情况下运行。可用性测试:界面友好、错误信息简明易懂。安全性测试:设法破坏程
25、序的保密检查。性能测试:在一定工作负荷和配置条件下,系统响应时间及处理速度。存储量测试:测试程序所占用的内外存容量(静/动态)。配置测试:至少每一类和最大最小的设备配置情况都要测试。兼容/移植测试:对现有程序进行修改和补充后,要进行此类测试。可安装性测试:测试系统的安装过程。2.7 测试策略测试策略系统测试的系统测试的15种测试类型种测试类型 可靠性测试:如平均无故障时间(MTTF),需要模拟运行环境。恢复测试:测试系统出错后如何恢复正常工作的。可维护性测试:对维护过程和难易程度进行测试。文档测试:审查文档的正确性,对文档中的每个例子都要作为测试用例。工序测试:测试操作工序的次序正确性。2.7
26、 测试策略测试策略系统测试的系统测试的15种测试类型种测试类型2.7 测试策略系统测试测试策略系统测试2.7 测试策略回归测试测试策略回归测试2.7 测试策略测试策略 测试和测试和测试测试 测试是由一个用户在开发环境下进行的测试,也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。测试的目的是评价软件产品的功能、可使用性、可靠性、性能和支持。测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。与测试不同的是,开发者通常不在测试现场。2.8 验收测试验收测试 项目经理负责组织验收组进行最终验收测试。验收组应由项目组成员、用户代表、监理代表等组成。验收测试原则上在顾客所在地进行
27、,但如经顾客同意也可以在公司内模拟用户环境进行。2.8 验收测试验收测试 验收测试根据合同、需求规格说明书或验收测试计划对成品进行验收测试。对于通过验收测试的软件产品/参照配置管理规范中所规定的标识方法更改测试状态,同时项目经理负责编制验收报告。2.8 验收测试范围验收测试范围 软件验收测试应完成的工作包括:明确验收项目,给定验收测试通过的标准。确定测试方法。决定验收测试的组织机构和可利用的资源。选定测试结果分析方法。制定验收测试计划并进行评审。设计验收测试所用测试用例。审查验收测试准备工作。执行验收测试。分析测试结果。阐明验收测试结论,决定通过验收或是拒绝。2.8 验收测试计划验收测试计划
28、可能包括的检验方面有以下一些:功能测试(例如,完整的工资计算过程)。逆向测试(例如,检验不符合要求数据而引起出错的恢复能力)。特殊情况(例如,极限测试、不存在路径的测试)。文档检查。强度测试(例如,大批数据或多用户同时使用)。恢复测试(例如,硬件故障或用户不良数据引起的一些情况)。可维护性评价。用户操作测试(如启动、推出系统)。用户友好性检验。安全测试。2.8 验收测试结果验收测试结果 确认测试的结果,确认测试的结果有两种情况:功能和性能与用户的要求一致,软件可以接受。功能和性能与用户的要求的差距。验收测试 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为
29、主的测试。2.9 第三方测试第三方测试 信息系统工程承建单位内部进行的自测被称为第一方测试,业主单位对工程进行的测试被称为第二方测试。与此相对应,由中立的第三方测试机构对系统进行的权威技术测试被称为第三方测试。国内的第三方测试工作始创于九十年代初,经过了近十年的孕育,以“千年虫”问题的检验为契机,在二十世纪末开始快速发展。2.9 第三方测试必要性第三方测试必要性 国外开发商质量控制能力较强,但在比较专业的质量认证领域依然需要由第三方机构来完成。国内业主与开发商在信息技术与业务技术上的信息不对称性。国内还没有适应国情的、系列化协调配套的、工程化的信息系统生产过程管理、质量评测、控制技术的规范和法
30、律规程指导。2.9 第三方测试特点第三方测试特点 第三方测试具有明显的工程特性,主要包括需求分析审查、设计审查、功能测试、性能测试、安全性测试、可靠性测试、易用性测试、兼容性测试、可扩充性测试、文档测试等。2.9 第三方测试特点第三方测试特点 第三方测试以合同的形式制约了测试方,保证了测试工作在一开始就具有客观性。第三方能够从需求理解系统,从软件工程角度把握系统,公平的评价系统中出现的问题。第三方机构的权威性能够更好的协调用户与开发方之间的关系。2.9 第三方测试特点第三方测试特点 第三方测试不同于开发方的自测试。避免开发人员的定势思维。第三方测试的目的就是为尽量多地发现程序中的错误而运行程序
31、的过程,可以更多的发现问题。随着系统越做越大,开发方很难投入足够的人力与物力进行测试工作,同时也缺乏专业的测试工具及丰富的工具使用经验。2.9 第三方测试特点第三方测试特点 第三方测试不同于用户的自测试。用户熟悉业务但不熟悉计算机领域知识,很难对系统进行深入分析。用户缺乏专用的测试工具。第三方机构既往测试经验对测试的帮助。2.9 第三方测试原则第三方测试原则 委托原则 独立公正原则 依法原则 回避原则 保密原则2.9 第三方测试对象第三方测试对象 应用软件的确认测试、鉴定测试 工程项目的系统测试、验收测试 特殊项目/项目关键模块的单元测试 其他:工程监理 ISO9000认证、CMM认证2.9
32、第三方测试开展第三方测试开展 项目组成立 制定方案、规范、案例与计划 实施测试工作 问题报告 回归测试 测试总结、评估与测试报告第三章第三章 基本测试技术基本测试技术 3.1 测试生命周期测试生命周期 3.2 测试计划测试计划 3.3 测试设计测试设计 3.4 测试开发测试开发 3.5 测试执行测试执行 3.6 测试评估测试评估 3.7 测试跟踪测试跟踪3.1 测试生命周期测试生命周期3.2 测试计划概述测试计划概述 测试目的 完成的标准 时间安排 明确的责任 测试用例库 测试工具3.2 测试计划概述测试计划概述 所需机器时间 软/硬件配置 系统组装方式 记录手段 回归测试3.2 测试计划具体
33、内容测试计划具体内容 目的 测试项(对象)测试类型 测试范围 测试过程 资源需求(硬件、软件、人力)3.2 测试计划具体内容测试计划具体内容 文档的检验 进度安排 测试开始、结束准则 测试记录 回归测试的方法 测试的评估 缺陷跟踪应有规确保所有应有规确保所有的测试结果都得的测试结果都得到记录到记录3.2 测试计划测试需求测试计划测试需求 业务功能 业务流程 数据库事务 域值合法性 用户界面 对象状态 窗口模式 菜单 标准尺寸的控件/文字3.2 测试计划测试需求测试计划测试需求 性能 在少于3秒的情况下增加一个新顾客帐户 强度 当内存很低的情况下运行应用程序 为设计规定是 1,000,000 条
34、记录的系统增加 1,000,001条记录3.2 测试计划测试需求测试计划测试需求 配置 显示驱动的兼容性 网络连接 安装 新安装(典型安装、定制安装)升级安装 网络下载3.3 测试设计测试设计测试过程测试过程 包括详细的步骤以确定测试需求是否被满足。组成:测试的先决条件 输入条件 被执行的动作 期待的结果 证实期待结果的方法3.3 测试设计单元测试用例测试设计单元测试用例 模块接口 局部数据结构 独立的路径 边界条件 出错处理3.3 测试设计黑盒测试用例测试设计黑盒测试用例 功能不对或遗漏 界面错误 数据结构或外部数据库访问错误 性能错误 初始化和终止错误3.3 测试设计白盒测试用例测试设计白
35、盒测试用例 保证一个模块中的所有独立路径至少被使用一次 对所有逻辑值均需测试真和假 在上下边界及可操作范围内运行所有循环 检查内部数据结构以确保其有效性3.3 测试设计循环测试用例测试设计循环测试用例 简单循环 嵌套循环 串接循环 非结构循环3.3 测试设计测试设计GUI测试用例测试用例 窗口 下拉菜单与鼠标 数据项3.4 测试开发测试开发 功能的自动化测试工具 性能的自动化测试工具中的开发3.5 测试执行测试执行概述概述 目标目标 执行测试 查看测试结果 研究并组织对测试结果进行评估 记录缺陷 输入输入 测试过程和测试用例 输出输出 测试日志 缺陷报告3.5 测试执行测试执行记录结果记录结果
36、 测试日志信息 执行测试过程 评估意外的结果 记录缺陷3.5 测试执行测试执行错误等级错误等级 5级:灾难性的系统崩溃、数据被破坏 4级:很严重的数据被破坏 3级:严重的特性不能运行,无法替代 2级:中等的特性不能运行,可替代 1级:烦恼的提示不正确,报警不确切 0级:轻微的表面化的错误,拼写错等3.5 测试执行测试执行记录格式记录格式3.5 测试执行测试执行记录格式记录格式3.5 测试执行测试执行记录格式记录格式3.6 测试评估测试评估概述概述 目标目标 提交测试过程的衡量标准 产生缺陷报告和测试覆盖的总结报告 输入输入 测试日志 缺陷报告 输出输出 测试覆盖程度 缺陷分析报告3.6 测试评
37、估测试评估测试覆盖率测试覆盖率 基于覆盖策略的系统测试基于覆盖策略的系统测试 验证所有需求的完成情况 验证每行代码的执行情况 基于测试需求的基于测试需求的测试过程测试过程 覆盖功能和设计的需求 验证一个测试需求对应的测试过程3.6 测试评估测试评估缺陷分析缺陷分析 软件质量软件质量 缺陷分析是提供验证软件质量的手段之一 测试需求的覆盖程度决定了软件测试的质量如何 实例报告实例报告 缺陷分配 缺陷趋向 缺陷状态 遗留缺陷对软件的影响3.7 测试跟踪测试跟踪 记录测试事件或用户问题 分析原因,定位错误 进行软件修改 修改结果的跟踪第四章第四章 测试中的若干问题测试中的若干问题 4.1 对测试的误解
38、对测试的误解 4.2 测试的改进方法测试的改进方法 4.3 测试工程师的素质测试工程师的素质 4.4 测试格言测试格言4.1 对测试的误解对测试的误解 如果发布出去的软件有质量问题,那是软件测试人员的错。软件测试技术要求不高,至少比编程容易多了。软件测试随便找一个能力差的人就能做。有时间就多测试一些,来不及就少测试一些。软件测试是测试人员的事,与开发人员无关。设计实现测试,软件测试是开发后期的一个阶段。4.2 测试的改进方法测试的改进方法 外聘更多的测试人员。将原有的开发人员抽调做测试工作。加强对测试和开发人员在软件测试方面的专业培训。购买或者自主开发一些测试工具。将测试工作外包。4.3 测试
39、工程师应具备的素质测试工程师应具备的素质 人是测试工作中最有价值也是最重要的资源 让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作,是一种目光短浅的行为4.3 测试工程师应具备的素质测试工程师应具备的素质 沟通能力 移情能力 技术能力 自信心 外交能力 幽默感 4.3 测试工程师应具备的素质测试工程师应具备的素质 很强的记忆力 耐心 怀疑精神 自我督促 洞察力 分析与表达力4.4 测试格言测试格言 测试自己的程序是不可能的。派最好的人去做测试。保证在软件设计中可测性是一个重要的目标。在一个系统的设计中,每个模块应该只被集成到系统中一次。不要改变程序,使测试更容易(除非这个修改使永久的)。测试像大多数其他活动一样,必须在开始的时候有目标。4.4 测试格言测试格言 在测试中,一个最难的问题就是知道什么时候测试可以结束。每个测试用例的一个必需的部分使对预期输出的描述。避免不可重复的或无用的测试。既要写有效输入条件的测试用例,也要写无效输入条件的测试用例。当软件的某个部分所发现的缺陷数目上升时,那么存在更多的未发现的缺陷数的可能性也上升了。谢谢