《第二章测试计划》由会员分享,可在线阅读,更多相关《第二章测试计划(104页珍藏版)》请在金锄头文库上搜索。
1、软软 件件 测测 试试 技技 术术1第二章第二章 测试计划测试计划2.1 测试计划要点和制订过程测试计划要点和制订过程2.2 测试软件需求测试软件需求2.3 测试策略测试策略 2.4 测试环境测试环境 2.5 测试管理测试管理 2.6 测试计划编写测试计划编写 2通过本章的学习,可以:通过本章的学习,可以:了解软件测试计划的重要性。了解软件测试计划的重要性。了解软件测试计划的编写过程和主要内容。了解软件测试计划的编写过程和主要内容。了解软件需求应该具有的特征。了解软件需求应该具有的特征。了解如何对软件需求进行静态测试。了解如何对软件需求进行静态测试。学会确定测试策略。学会确定测试策略。学会定义
2、测试环境。学会定义测试环境。对软件测试管理工作有所了解对软件测试管理工作有所了解 3在一个工程活动中,了解需求和制定计划是所有工作的起点。在软件测试工作中,也首先需要分析需求和制定测试计划。 4软件测试阶段组成软件测试阶段组成测试计划测试计划测试计划测试计划测试设计测试设计测试设计测试设计测试开发测试开发测试开发测试开发测试执行测试执行测试执行测试执行测试评估测试评估测试评估测试评估5 2.1.1 2.1.1 为什么要写测试计划为什么要写测试计划 软件测试计划软件测试计划是指导测试过程的纲领性文是指导测试过程的纲领性文件。借助软件测试计划,件。借助软件测试计划, 1 1)领导能够根据测试计划做
3、宏观调控,进)领导能够根据测试计划做宏观调控,进行相应资源配置等;行相应资源配置等; 2 2)测试人员能够了解整个项目测试情况以)测试人员能够了解整个项目测试情况以及项目测试不同阶段的所要进行的及项目测试不同阶段的所要进行的工作工作等;等; 3 3)便于)便于其他其他人员了解测试人员的工作内容,人员了解测试人员的工作内容,进行有关配合工作进行有关配合工作 2.1 测试计划要点和制订过程测试计划要点和制订过程62.1.2 测试计划内容和要点测试计划内容和要点一个软件项目的测试计划是一份描述软件测试工作的目标、范围、策略、方法和重点的文档。 7测试计划编写包括测试计划编写包括6 6要素(要素(5W
4、 1H5W 1H) 1 1)whywhy为什么要进行这些测试;为什么要进行这些测试; 2) 2) whatwhat测试哪些方面,不同阶段的工作内容;测试哪些方面,不同阶段的工作内容; 3) 3) whenwhen测试不同阶段的起止时间;测试不同阶段的起止时间; 4) 4) wherewhere相应文档,缺陷的存放位置,测试环境相应文档,缺陷的存放位置,测试环境等;等; 5) 5) whowho项目有关人员组成,安排哪些测试人员进项目有关人员组成,安排哪些测试人员进行测试行测试 6) 6) howhow如何去做,使用哪些测试工具以及测试方如何去做,使用哪些测试工具以及测试方法进行测试。法进行测试
5、。8 测试活动进度综述,可供相关人员参考测试活动进度综述,可供相关人员参考 测试方法;测试方法;测试工具,包括如何和何时获取工具;测试工具,包括如何和何时获取工具;实施测试和报告结果的过程;实施测试和报告结果的过程;系统测试进入和结束准则;系统测试进入和结束准则;设计、开发和执行测试所需的人员;设计、开发和执行测试所需的人员;测试计划要点测试计划要点9 设备资源:需要什么样的机器和测试基准;设备资源:需要什么样的机器和测试基准;恰当的测试覆盖率目标;恰当的测试覆盖率目标;测试所需的特殊软件和硬件配置;测试所需的特殊软件和硬件配置;测试哪些特性,不测试哪些特性;测试哪些特性,不测试哪些特性;风险
6、和意外情况计划。风险和意外情况计划。 测试计划要点测试计划要点102.1.3 测试计划制订过程测试计划制订过程分析和测试软件分析和测试软件需求需求定义测试定义测试策略策略定义测试定义测试环境环境定义测试定义测试管理管理编写和审核测试编写和审核测试计划计划11 在编写测试计划时,经过五个步骤:在编写测试计划时,经过五个步骤: (1)(1)分析和测试软件需求分析和测试软件需求 在需求分析阶段,软件测试人员就需要在需求分析阶段,软件测试人员就需要进进入入。在这个阶段,测试人员需要对需求有完整。在这个阶段,测试人员需要对需求有完整的的理解理解,还需要对需求文档进行,还需要对需求文档进行测试测试。 (2
7、)(2)定义测试策略定义测试策略 测试策略,指的是确定总的测试策略,指的是确定总的测试范围测试范围、测、测试的方法、测试活动的进入试的方法、测试活动的进入/ /退出标准、自动退出标准、自动化测试工具的选择、测试软件的编写等。化测试工具的选择、测试软件的编写等。 12 (3)(3)定义测试环境定义测试环境 测试环境包括软件运行的测试环境包括软件运行的硬件平台硬件平台、软件软件平台平台,还包括一些特殊的外围设备。在制定测试,还包括一些特殊的外围设备。在制定测试计划时,需要定义测试工作将在什么样的测试环计划时,需要定义测试工作将在什么样的测试环境中进行。境中进行。 (4)(4)定义测试管理定义测试管
8、理 测试过程中所涉及到的人、活动和工具都是测试过程中所涉及到的人、活动和工具都是很多的很多的( (特别是在大型软件的测试中特别是在大型软件的测试中) ),在制定测,在制定测试计划时,要对这些因素加以管理。试计划时,要对这些因素加以管理。13 (5)(5)编写计划文档编写计划文档 在上述几项工作完成后,需要编写测试计在上述几项工作完成后,需要编写测试计划文档,并需要被相关人员审核。划文档,并需要被相关人员审核。测试计划阶段的测试计划阶段的原始依据原始依据是软件需求文档。是软件需求文档。测试计划阶段的测试计划阶段的输出输出是测试计划文档是测试计划文档142.2 分析和测试软件需求分析和测试软件需求
9、 为了编写测试计划和进行测试设计,测试为了编写测试计划和进行测试设计,测试人员需要软件需求说明书,人员需要软件需求说明书,软件需求软件需求是设计、是设计、编码和测试人员共同的工作编码和测试人员共同的工作起点。起点。 15 需求分析就是完整、准确地定义系统的目需求分析就是完整、准确地定义系统的目标,确定系统必须标,确定系统必须做什么做什么。 在失败的项目中与需求分析相关的原因:在失败的项目中与需求分析相关的原因:u不完善的需求分析不完善的需求分析( (13.113.1) )。u缺乏用户的参与缺乏用户的参与( (12.412.4) )。u不切实际的期望值不切实际的期望值( (9.99.9) )。u
10、不断变更的需求和说明不断变更的需求和说明( (8.78.7) )。u系统不再被需要系统不再被需要( (7.57.5) )。 51.6%51.6%2.2.1 需求分析过程需求分析过程16经统计,一般的,如果在需求分析阶段发现并解经统计,一般的,如果在需求分析阶段发现并解决问题花费决问题花费$1$1,则在设计阶段解决同样的问题要,则在设计阶段解决同样的问题要花费花费$5$5,在编码阶段要花费,在编码阶段要花费$10$10,在交付使用后要,在交付使用后要解决同样的问题需花费解决同样的问题需花费$200$200。测试团队需要清晰、明确、可测试的需求说明书测试团队需要清晰、明确、可测试的需求说明书以便开
11、始测试计划和测试设计工作。以便开始测试计划和测试设计工作。另一方面,测试团队通过对需求的分析实现对需另一方面,测试团队通过对需求的分析实现对需求的静态测试,尽量在早期发现问题,减小后期求的静态测试,尽量在早期发现问题,减小后期修改的代价。因此,测试人员需要在需求分析阶修改的代价。因此,测试人员需要在需求分析阶段开始介入测试工作。段开始介入测试工作。 17 需求分析需经历五个主要步骤:需求分析需经历五个主要步骤: (1)(1)收集用户需求收集用户需求 通过客户访谈等途径收集客户需求。通过客户访谈等途径收集客户需求。 (2) (2)编写需求定义文档编写需求定义文档 将客户需求整理并写成需求定义,需
12、求定将客户需求整理并写成需求定义,需求定义文档用自然语言记录所有系统需求,这样用义文档用自然语言记录所有系统需求,这样用户和系统开发人员比较容易理解沟通。户和系统开发人员比较容易理解沟通。 (3) (3)编写软件功能说明编写软件功能说明 软件功能说明软件功能说明用精确性和技术性语言描述用精确性和技术性语言描述所有系统需求,该文档主要被开发组织使用。所有系统需求,该文档主要被开发组织使用。 18 (4)(4)编写软件需求跟踪矩阵编写软件需求跟踪矩阵 其目的是跟踪每一个需求以确保其被实其目的是跟踪每一个需求以确保其被实现和测试。现和测试。 (5) (5)审核软件需求文档审核软件需求文档 在需求文档
13、编写完成后,要进行相应的审在需求文档编写完成后,要进行相应的审核工作。核工作。19 各步骤工作重点:各步骤工作重点: (1)(1)收集用户需求收集用户需求 客户与开发人员的沟通对项目的成功是非常重要客户与开发人员的沟通对项目的成功是非常重要的,在沟通过程中客户与开发人员对相互背景知识的的,在沟通过程中客户与开发人员对相互背景知识的欠缺将会限制沟通效果,客户缺乏对软件开发过程的欠缺将会限制沟通效果,客户缺乏对软件开发过程的了解,不能用系统开发人员易理解的方式陈述他们的了解,不能用系统开发人员易理解的方式陈述他们的需求。需求。 正如设计一个客户的房子,客户没有足够的建筑正如设计一个客户的房子,客户
14、没有足够的建筑方面的知识去精确地告诉建筑师自己的需要,因此客方面的知识去精确地告诉建筑师自己的需要,因此客户与建筑师之间的沟通可能包括看样板房、图片、演户与建筑师之间的沟通可能包括看样板房、图片、演示存在的软件是非常有用的。测试人员通过客户与开示存在的软件是非常有用的。测试人员通过客户与开发人员沟通后的结果来了解客户准备如何使用软件,发人员沟通后的结果来了解客户准备如何使用软件,并进行验收测试设计。并进行验收测试设计。20 (2)(2)编写需求定义编写需求定义 从测试人员看,需求定义应有如下特点:从测试人员看,需求定义应有如下特点:每个需求应被每个需求应被惟一地标识惟一地标识。当测试人员计划测
15、。当测试人员计划测试覆盖、设计测试用例、报告测试结果时能够试覆盖、设计测试用例、报告测试结果时能够清楚地识别需求:清楚地识别需求:需求定义要从需求定义要从用户的角度用户的角度描述。描述。定义必须包括定义必须包括功能需求功能需求和和非功能需求非功能需求。功能需。功能需求描述系统要完成的功能,非功能需求描述系求描述系统要完成的功能,非功能需求描述系统操作中的约束,如系统能够支持的用户数。统操作中的约束,如系统能够支持的用户数。21 (3) (3)编写功能说明编写功能说明 功能说明描述的内容与需求定义文档相同,功能说明描述的内容与需求定义文档相同,但文档是从系统设计者的角度来书写,由开发但文档是从系
16、统设计者的角度来书写,由开发团队使用。团队使用。 22(4)(4)编写需求跟踪矩阵编写需求跟踪矩阵 必须确定哪些测试用例对应目标功能。必须确定哪些测试用例对应目标功能。 需求跟踪矩阵提供下列信息:需求跟踪矩阵提供下列信息:哪些测试用例检查一个特定的功能。哪些测试用例检查一个特定的功能。哪些需求没有对应的测试用例。哪些需求没有对应的测试用例。哪些功能仍然需要测试。哪些功能仍然需要测试。232.2.2 2.2.2 需求分析中测试人员工作需求分析中测试人员工作 测试人员必须在需求阶段就进入原因:测试人员必须在需求阶段就进入原因: (1)(1) 测试人员需要在了解需求的情况下编写测测试人员需要在了解需
17、求的情况下编写测试计划、测试用例、准备测试环境。试计划、测试用例、准备测试环境。 (2) (2) 需求文档本身也需要被测试人员进行测试。需求文档本身也需要被测试人员进行测试。 (3) (3) 估算工作量,估算项目成本,编写开发计估算工作量,估算项目成本,编写开发计划。如果在此阶段不考虑测试本身的工作量和划。如果在此阶段不考虑测试本身的工作量和成本、测试工作需要持续的时间,那么对于整成本、测试工作需要持续的时间,那么对于整个项目的工作量、成本和时间的估算就会产生个项目的工作量、成本和时间的估算就会产生很大的偏差。很大的偏差。24 需求分析中测试人员工作需求分析中测试人员工作理解需求,参与审核需求
18、文档理解需求,参与审核需求文档理解项目的目标、限制,了解用户应用背景理解项目的目标、限制,了解用户应用背景编写测试计划编写测试计划准备资源准备资源包括了包括了人员、资金、设备、工具软件人员、资金、设备、工具软件。如。如果测试人员对所测试的软件应用领域不熟果测试人员对所测试的软件应用领域不熟悉,要进行相应的培训。在很多时候,需悉,要进行相应的培训。在很多时候,需要购买设备来建立测试环境;要购买设备来建立测试环境;252.2.3 2.2.3 软件需求文档软件需求文档 需求文档是进行需求文档是进行设计、编码、测试的基础设计、编码、测试的基础文件文件,软件需求文档中,需要描述下列内容:,软件需求文档中
19、,需要描述下列内容:说明说明一般描述一般描述各种限制条件、假定和依赖各种限制条件、假定和依赖功能需求功能需求非功能需求非功能需求参考参考 P244P244261 1、需求跟踪矩阵、需求跟踪矩阵 在整个开发过程中,在整个开发过程中,对于需求文档中的每对于需求文档中的每项需求,要确保以下问题:项需求,要确保以下问题:是否完成了相应的设计?是否完成了相应的设计?是否编写完成了相应的代码?在哪里可以找是否编写完成了相应的代码?在哪里可以找到这些代码?到这些代码?是否编写完成了相应的单元测试用例?是否是否编写完成了相应的单元测试用例?是否进行了单元测试?进行了单元测试?是否完成了相应的集成测试用例?是否
20、进行是否完成了相应的集成测试用例?是否进行了集成测试?了集成测试? 需求跟踪矩阵即描述上述问题。需求跟踪矩阵即描述上述问题。27 对于需求规格对于需求规格RS2.2.4.1,其单元测试、集成测试、,其单元测试、集成测试、系统测试用例分别对应到系统测试用例分别对应到D2.2.4.1、CC2.2.4.1、UT2.2.4.1、IT2.2.4.1.x、ST2.2.4。 在编写测试用例时,就需要根据需求跟踪矩阵里在编写测试用例时,就需要根据需求跟踪矩阵里面的编号规则进行标号。面的编号规则进行标号。N/A所代表的含义是:对应于此需求,没有对应的单元测试所代表的含义是:对应于此需求,没有对应的单元测试用例用
21、例(也许是不需要也许是不需要,也许是不打算针对此需求进行单元测试也许是不打算针对此需求进行单元测试)。282 2、良好需求文档的特征、良好需求文档的特征具有清晰的格式和文档结构具有清晰的格式和文档结构需求的内容正确需求的内容正确 每个需求必须精确描述要交付的功能每个需求必须精确描述要交付的功能 需求的内容完整需求的内容完整 不应该遗漏要求和必需的信息,认为有些内不应该遗漏要求和必需的信息,认为有些内容理所当然而未明确写出来。容理所当然而未明确写出来。需求具有可行性需求具有可行性 如果需求文档中所描述的软件需求在已如果需求文档中所描述的软件需求在已知的能力、有限的系统及其环境中是不可能知的能力、
22、有限的系统及其环境中是不可能实现的,那么相关的需求就没有意义实现的,那么相关的需求就没有意义 29必要性必要性 需求中的每项内容都应该是必要的需求中的每项内容都应该是必要的 对不同的需求的优先等级进行定义对不同的需求的优先等级进行定义 当时间、人力、经费不足时,应该优先完成当时间、人力、经费不足时,应该优先完成哪些功能,可以暂时放弃哪些功能哪些功能,可以暂时放弃哪些功能? 描述明确,无歧义、二义,上下文一致描述明确,无歧义、二义,上下文一致 避免使用一些对于作者很清楚但对于读者不避免使用一些对于作者很清楚但对于读者不清楚的主观词汇,例如:容易、简单、快速、清楚的主观词汇,例如:容易、简单、快速
23、、有效、几个、艺术级、改善的、最大、最小有效、几个、艺术级、改善的、最大、最小等等。要注意在文档中表达同一个意思时所等等。要注意在文档中表达同一个意思时所用的词是同一个。用的词是同一个。30可证实和可测试性可证实和可测试性 每个需求是否正确的实现每个需求是否正确的实现 可修改性可修改性 通过良好的组织可以使需求易于修改通过良好的组织可以使需求易于修改 可追踪可追踪 软件需求应该能够与其原始材料相对应。另外,软件需求应该能够与其原始材料相对应。另外,软件需求与设计元素、源代码、用于构造实现软件需求与设计元素、源代码、用于构造实现和验证需求的测试也应该对应起来。和验证需求的测试也应该对应起来。 需
24、求文档被及时更新需求文档被及时更新 如果程序员很高兴地宣布某个功能终于完成了,如果程序员很高兴地宣布某个功能终于完成了,但接下去发现这个功能其实已经被取消了。但接下去发现这个功能其实已经被取消了。31 需求测试是软件测试的一个重要部分。软需求测试是软件测试的一个重要部分。软件本身是由代码、各种文档、数据来组成的,件本身是由代码、各种文档、数据来组成的,因此,软件测试的对象也不应该仅仅局限在代因此,软件测试的对象也不应该仅仅局限在代码和可执行程序,需求文档就是一个重要的被码和可执行程序,需求文档就是一个重要的被测试对象。测试对象。 在评审软件需求说明书时,软件测试主管在评审软件需求说明书时,软件
25、测试主管和部分测试工程师一般会加入到评审小组中,和部分测试工程师一般会加入到评审小组中,他们会在会议前阅读软件需求,并在评审会议他们会在会议前阅读软件需求,并在评审会议上发表自己的意见。上发表自己的意见。2.2.4 需求测试需求测试321. 1. 需求测试内容需求测试内容 软件需求文档软件需求文档从以下几个方面来评价需求文档:从以下几个方面来评价需求文档:需求文档是否符合公司的格式要求?需求文档是否符合公司的格式要求?需求是否正确?需求是否正确?要保证需求文档中所描述的内容是真实可靠的要保证需求文档中所描述的内容是真实可靠的这是这是“真正的真正的”需求吗?描述的产品是否就是要开需求吗?描述的产
26、品是否就是要开发的产品?发的产品?需求是否完备?第一个发布版本是否需要更多的功需求是否完备?第一个发布版本是否需要更多的功能能? ? 需求是否兼容?需求有可能是矛盾的。需求是否兼容?需求有可能是矛盾的。需求是否可实现?需求是否可实现?需求是否合理?需求是否合理?在开发进度、开发费用、产品性能、在开发进度、开发费用、产品性能、可靠性之间存在着平衡关系。可靠性之间存在着平衡关系。需求是否可测?需求是否可测?33 如果测试人员面对的是不可测试的需求,如果测试人员面对的是不可测试的需求,那么后续的所有工作将无法进行。那么后续的所有工作将无法进行。 假如在需求文档中出现了这样一段话假如在需求文档中出现了
27、这样一段话“要要求打印文档的速度足够快求打印文档的速度足够快”,那么这段话就是,那么这段话就是不可测试的需求。在这种情况下,需要测试人不可测试的需求。在这种情况下,需要测试人员提出质疑。如果把它改为员提出质疑。如果把它改为“要求打印文档的要求打印文档的速度为不低于速度为不低于5 5张张/min/min”,那么这段话就是可,那么这段话就是可以被测试的。以被测试的。34 2 2、需求测试的方法、需求测试的方法 需求测试是一种需求测试是一种静态的测试静态的测试。在这个阶段,。在这个阶段,没有一个可以在计算机上运行的软件供测试人没有一个可以在计算机上运行的软件供测试人员进行测试。三种常用的静态测试方法
28、:员进行测试。三种常用的静态测试方法:复查复查 复查一般是让工作中合作者检查产品并提出复查一般是让工作中合作者检查产品并提出意见。发现文档缺陷同级互查的能力是三种意见。发现文档缺陷同级互查的能力是三种方法中最弱的。方法中最弱的。走查走查 系统分析员做好需求分析,然后给相关人员系统分析员做好需求分析,然后给相关人员讲解他的需求说明书讲解他的需求说明书, ,在开发人员讲解的过在开发人员讲解的过程中程中, ,其他人员如果有问题其他人员如果有问题, ,可以提问。可以提问。35 审查审查 关键组件的审查通过会议进行,会前每个与关键组件的审查通过会议进行,会前每个与会者需要进行准备,会议必须按规定的程序会
29、者需要进行准备,会议必须按规定的程序进行,缺陷被记录并形成会议报告。审查是进行,缺陷被记录并形成会议报告。审查是非常有效的发现缺陷的方法。非常有效的发现缺陷的方法。 362.3 2.3 测试策略测试策略制订测试策略考虑的问题:制订测试策略考虑的问题:(1 1)测试范围)测试范围 由于软件是无法被完全测试的,对于被测试软件,由于软件是无法被完全测试的,对于被测试软件,要判断哪些功能、特性需要被测试。要判断哪些功能、特性需要被测试。(2 2)测试方法)测试方法 对于不同的系统,需要采用不同的测试方法对于不同的系统,需要采用不同的测试方法 (3 3)测试标准)测试标准 只有完成了一个阶段的测试只有完
30、成了一个阶段的测试( (如集成测试如集成测试) ),才能,才能开始下一个阶段的测试开始下一个阶段的测试( (系统测试系统测试) )。所以就需要。所以就需要为每个阶段测试在什么情况下可以开始、什么情为每个阶段测试在什么情况下可以开始、什么情况下可以结束定义标准。况下可以结束定义标准。37(4 4)自动化测试工具的选择)自动化测试工具的选择 需要判断是否使用自动化测试工具、使需要判断是否使用自动化测试工具、使用什么自动化测试工具用什么自动化测试工具(5 5)测试软件的编写)测试软件的编写 (6 6)与项目相关的一些特殊考虑)与项目相关的一些特殊考虑 在测试策略中,需要考虑、回答上面问在测试策略中,
31、需要考虑、回答上面问题,然后编写相应文档。题,然后编写相应文档。38 测试策略中需要完成的主要步骤:测试策略中需要完成的主要步骤: 确定测试范围确定测试范围 确定测试方法确定测试方法 定义测试标准定义测试标准 选择测试工具选择测试工具39 对于一个将被实际使用的软件来说,完全对于一个将被实际使用的软件来说,完全测试是不可能实现的。测试是不可能实现的。 例如:一个计算器软件。如果要完全测试例如:一个计算器软件。如果要完全测试其中的两个整数相加的功能,将把所有可能的其中的两个整数相加的功能,将把所有可能的组合都进行一次测试,而这个组合有组合都进行一次测试,而这个组合有2*102*103232*2*
32、10*2*103232个,可以很容易地判断出进行这个,可以很容易地判断出进行这个完全测试是不可能的。而两个整数相加还只个完全测试是不可能的。而两个整数相加还只是计算器中的一个小小的功能。那么简单的计是计算器中的一个小小的功能。那么简单的计算器软件尚且如此,在实际被使用的一些软件算器软件尚且如此,在实际被使用的一些软件系统,要想对其进行完全测试,是根本不可能系统,要想对其进行完全测试,是根本不可能实现的。实现的。2.3.1 2.3.1 确定测试范围确定测试范围40 有一些比较典型的情况可以事先要确定一有一些比较典型的情况可以事先要确定一个必须的测试范围而不是测试所有内容:个必须的测试范围而不是测
33、试所有内容: (1) (1)某些阶段的测试或者某些内容的测试某些阶段的测试或者某些内容的测试可以简化可以简化 如果是在旧的软件版本的基础上进行新版如果是在旧的软件版本的基础上进行新版本的开发。在旧版本中,有些软件模块已经被本的开发。在旧版本中,有些软件模块已经被进行过多次单元测试,证明这个模块是足够坚进行过多次单元测试,证明这个模块是足够坚固的,在这种时候,一般就不对这个模块进行固的,在这种时候,一般就不对这个模块进行单元测试。单元测试。 但也不是可以完全地省略某个阶段的测试。但也不是可以完全地省略某个阶段的测试。41 (2)(2)当对原有系统进行修改升级时,某些测试当对原有系统进行修改升级时
34、,某些测试不需要不需要 例如,为某个软件添加例如,为某个软件添加打印功能打印功能,这个时,这个时候候文件打开和保存功能文件打开和保存功能就不需要进行很多测试。就不需要进行很多测试。 但是要慎重选择。有时候,程序员很自信但是要慎重选择。有时候,程序员很自信地认为某个原有的功能绝对没有修改,绝对不地认为某个原有的功能绝对没有修改,绝对不会受到新加功能的影响,但事实上,可能会存会受到新加功能的影响,但事实上,可能会存在他们完全没有意料到的因素而导致原有的功在他们完全没有意料到的因素而导致原有的功能被破坏。能被破坏。42 (3) (3) 某些测试根本不可能进行某些测试根本不可能进行 例如,银行发行了新
35、的取款机软件,根本例如,银行发行了新的取款机软件,根本不可能让所有信用卡的持有者在某个时间段去不可能让所有信用卡的持有者在某个时间段去试用一下,而只能采取一些模拟的手段来进行试用一下,而只能采取一些模拟的手段来进行测试。测试。n测试过度,则在测试覆盖中存在大量冗余;测试过度,则在测试覆盖中存在大量冗余;测试范围过小,则存在遗漏错误的风险。测试范围过小,则存在遗漏错误的风险。n定义测试范围是一个在测试时间、费用和质定义测试范围是一个在测试时间、费用和质量风险之间寻找平衡的过程。期望花费更少量风险之间寻找平衡的过程。期望花费更少的时间和费用,就必须承担更大的质量风险。的时间和费用,就必须承担更大的
36、质量风险。 43定义测试范围需要考虑下列一些因素:定义测试范围需要考虑下列一些因素:首先测试最高优先级的需求。首先测试最高优先级的需求。( (在时间和资源在时间和资源的限制下)的限制下) 测试新的功能和代码或者改进的旧功能。(如测试新的功能和代码或者改进的旧功能。(如果代码改动过,就需要回归测试)果代码改动过,就需要回归测试) 使用等价类划分来减小测试范围使用等价类划分来减小测试范围 重点测试经常出问题的地方重点测试经常出问题的地方44确定测试范围方法确定测试范围方法 可采用提问单的方式来确定测试范围可采用提问单的方式来确定测试范围哪些功能是软件的特色?哪些功能是软件的特色? 哪些功能是用户最
37、常用的?哪些功能是用户最常用的? 如果系统可以分块卖的话,哪些功能块在销售时最如果系统可以分块卖的话,哪些功能块在销售时最昂贵?昂贵? 哪些功能出错将导致用户不满或索赔?哪些功能出错将导致用户不满或索赔? 哪些程序是最复杂、最容易出错的?哪些程序是最复杂、最容易出错的? 哪些程序是相对独立,应当提前测试的?哪些程序是相对独立,应当提前测试的? 哪些程序最容易扩散错误?哪些程序最容易扩散错误? 哪些程序是全系统的性能瓶颈所在?哪些程序是全系统的性能瓶颈所在? 哪些程序是开发者最没有信心的?哪些程序是开发者最没有信心的? 需求分析人员、设计人员、程序员,市场、需求分析人员、设计人员、程序员,市场、
38、销售人员,公司工程管理人员、客户都有可能销售人员,公司工程管理人员、客户都有可能加入到这个过程中。加入到这个过程中。 452.3.2 2.3.2 选择测试方法选择测试方法在不同的开发阶段,需要选择不同的测试方法在不同的开发阶段,需要选择不同的测试方法。在软件开发的不同的阶段可以选择的不同的测试方法。在软件开发的不同的阶段可以选择的不同的测试方法。(1 1)需求分析阶段)需求分析阶段 静态测试静态测试(2 2)概要设计与详细设计阶段)概要设计与详细设计阶段 静态测试静态测试 (3) (3) 编码和单元测试阶段:编码和单元测试阶段:静态测试和动态测试、白静态测试和动态测试、白盒测试盒测试 (4)
39、(4) 集成测试阶段:集成测试阶段:动态测试、白盒测试、黑盒测试动态测试、白盒测试、黑盒测试 (5) (5) 系统测试阶段:系统测试阶段:动态测试、黑盒测试动态测试、黑盒测试 (6) (6) 验收测试阶段:验收测试阶段:动态测试、黑盒测试动态测试、黑盒测试462.3.3 2.3.3 定义测试标准定义测试标准定义测试标准的定义测试标准的目的目的是设置测试中遵循的规则。是设置测试中遵循的规则。需要制订以下几种标准:需要制订以下几种标准:测试入口标准测试入口标准测试暂停与继续标准测试暂停与继续标准测试出口标准测试出口标准47 (1) (1) 测试的入口标准测试的入口标准 在什么情况下可以开始某个阶段
40、的测试在什么情况下可以开始某个阶段的测试? ? 测试的测试的入口标准入口标准,指的是在开始某个阶段,指的是在开始某个阶段测试之前,需要完成的工作。测试之前,需要完成的工作。 不同的公司、不同的项目、不同的测试阶段不同的公司、不同的项目、不同的测试阶段所需要的入口标准是有所差异的,需要测试人员所需要的入口标准是有所差异的,需要测试人员根据实际情况,会同项目组其他成员制定入口标根据实际情况,会同项目组其他成员制定入口标准。准。 48 如在开始系统测试之前,需要完成的工作:如在开始系统测试之前,需要完成的工作:u完整的软件包完整的软件包( (指软件安装光盘和相应的指软件安装光盘和相应的手册手册) )
41、;u系统测试计划;系统测试计划;u测试数据;测试数据;u所需要的测试环境;所需要的测试环境;u软件已经通过了集成测试。软件已经通过了集成测试。49 (2)(2)测试暂停与继续标准测试暂停与继续标准 测试暂停标准测试暂停标准就是定义在什么情况下,测就是定义在什么情况下,测试工作需要暂时停止。试工作需要暂时停止。 例如,当测试人员在第一个测试工作日发例如,当测试人员在第一个测试工作日发现的缺陷数量大于现的缺陷数量大于5050个时,集成测试工作暂停。个时,集成测试工作暂停。另外还有其他原因会导致测试工作暂停,例如,另外还有其他原因会导致测试工作暂停,例如,测试环境未能准备好;测试工具未能准备好或测试
42、环境未能准备好;测试工具未能准备好或者未完成人员培训。者未完成人员培训。 测试继续标准测试继续标准说明的是,当问题被解决,说明的是,当问题被解决,而且能够有方法确认被解决了之后,测试可以而且能够有方法确认被解决了之后,测试可以继续进行。继续进行。50 (3) (3) 测试出口标准测试出口标准 定义在什么情况下可以结束某个阶段的测试。定义在什么情况下可以结束某个阶段的测试。 以系统测试阶段为例,在测试出口标准中,就会以系统测试阶段为例,在测试出口标准中,就会要求所有的测试案例都已经被执行,并且未能通过的要求所有的测试案例都已经被执行,并且未能通过的测试案例小于某个数值。测试案例小于某个数值。 注
43、意:一个阶段的出口标准和下个阶段的入口标注意:一个阶段的出口标准和下个阶段的入口标准是不一样的。要想进行下个阶段的测试,首先要达准是不一样的。要想进行下个阶段的测试,首先要达到上个阶段的测试出口标准,还要为下个阶段的测试到上个阶段的测试出口标准,还要为下个阶段的测试准备额外的内容。准备额外的内容。 例如,在进行系统测试时,并不是说完成了集成例如,在进行系统测试时,并不是说完成了集成测试就可以做系统测试了,至少还要准备、审查系统测试就可以做系统测试了,至少还要准备、审查系统测试的测试计划、测试案例,然后才可以启动系统测测试的测试计划、测试案例,然后才可以启动系统测试。试。51制订测试标准常用规则
44、制订测试标准常用规则 (1 1)基于测试用例的规则)基于测试用例的规则 当测试用例的不通过率达到某一百分比时,当测试用例的不通过率达到某一百分比时,则拒绝继续测试。当功能性测试用例通过率达则拒绝继续测试。当功能性测试用例通过率达到到100100,非功能性测试用例通过率达到非功能性测试用例通过率达到9090时,时,允许正常结束测试。允许正常结束测试。 (2 2)基于)基于“测试期缺陷密度测试期缺陷密度”的规则的规则 “测试期缺陷密度测试期缺陷密度”:测试一个:测试一个CPUCPU小时发小时发现的缺陷数。如果在相邻现的缺陷数。如果在相邻n n个个CPUCPU小时内小时内“测试测试期缺陷密度期缺陷密
45、度”全部低于某个值全部低于某个值m m时,则允许正常时,则允许正常结束测试。结束测试。 52(3 3)基于)基于“运行期缺陷密度运行期缺陷密度”的规则的规则 “运行期缺陷密度运行期缺陷密度”:软件运行一个:软件运行一个CPUCPU小时小时发现的缺陷数。如果在相邻发现的缺陷数。如果在相邻n n个个CPUCPU小时内小时内“运行运行期缺陷密度期缺陷密度”全部低于某个值全部低于某个值m m时,则允许正常结时,则允许正常结束测试。束测试。 53 一般来说,软件产品的质量标准,往往不一般来说,软件产品的质量标准,往往不是是“无错误无错误”,例如:严重,例如:严重BugBug不允许存在;不允许存在;次要次
46、要BugBug数量小于数量小于5 5个。个。 在开发合约中,也往往对递交时的缺陷在开发合约中,也往往对递交时的缺陷数量进行约束。例如,开发合约描述向用户最数量进行约束。例如,开发合约描述向用户最终递交软件时的质量标准:终递交软件时的质量标准: 灾难级灾难级Bug=0Bug=0; 严重级严重级Bug=0Bug=0; 重要级重要级Bug=OBug=O; 一般级一般级Bug6Bug6; 次要级次要级Bug15Bug15。542.3.4 自动化测试工具的选择自动化测试工具的选择在制定测试计划时,需要确定:在本项目的测试在制定测试计划时,需要确定:在本项目的测试过程中,是否使用自动化测试工具;如果使用,
47、过程中,是否使用自动化测试工具;如果使用,在什么阶段,使用哪种测试工具在什么阶段,使用哪种测试工具。 使用测试工具可以带来下面一些主要的好处:使用测试工具可以带来下面一些主要的好处:能够很好地进行性能测试和压力测试能够很好地进行性能测试和压力测试能够缩短测试周期能够缩短测试周期能够提高测试工作的可重复性能够提高测试工作的可重复性测试人员在进行人工测试时,无法保证每次都是用测试人员在进行人工测试时,无法保证每次都是用同样的方式同样的步骤来操作。但自动化测试工具同样的方式同样的步骤来操作。但自动化测试工具能够保证在每次测试的时候都是完全按照同样的方能够保证在每次测试的时候都是完全按照同样的方式来进
48、行的式来进行的 。55选择自动化测试工具需要注意以下几方面:选择自动化测试工具需要注意以下几方面:并不是所有的测试工作都可以由测试工具来完成并不是所有的测试工作都可以由测试工具来完成并不是一个自动化工具就可以完成所有的测试并不是一个自动化工具就可以完成所有的测试使用自动化工具本身也是需要时间的,这个时间有使用自动化工具本身也是需要时间的,这个时间有可能超过手工测试的时间可能超过手工测试的时间如果测试人员不熟悉测试工具的使用,有可能不能如果测试人员不熟悉测试工具的使用,有可能不能更多发现软件错误,从而影响测试工作质量更多发现软件错误,从而影响测试工作质量自动化测试工具并不能对一个软件进行完全的测
49、试自动化测试工具并不能对一个软件进行完全的测试购买自动化测试工具,有可能使本项目的测试费用购买自动化测试工具,有可能使本项目的测试费用超出预算超出预算56 2.3.5 2.3.5 测试软件的编写测试软件的编写在有些情况下,完全的人工测试并不可行,也在有些情况下,完全的人工测试并不可行,也没有合适的自动化测试工具,就需要编写相应没有合适的自动化测试工具,就需要编写相应的测试软件。的测试软件。 如果涉及到软件中某个部分需要自行编写测如果涉及到软件中某个部分需要自行编写测试软件来完成测试,就需要在测试计划阶段,试软件来完成测试,就需要在测试计划阶段,对此进行规划。对此进行规划。 57 2.3.6 2
50、.3.6 合理减少测试工作量合理减少测试工作量 航空航天、武器、金融等领域的软件系统,要严航空航天、武器、金融等领域的软件系统,要严格测试。而对于一般性软件,开发商对测试的投入是格测试。而对于一般性软件,开发商对测试的投入是有限度的。有限度的。 降低软件测试代价有两种方法:降低软件测试代价有两种方法: (1) (1) 减少冗余和无价值测试减少冗余和无价值测试 白盒测试与黑盒测试的方式虽然不同,但在很多白盒测试与黑盒测试的方式虽然不同,但在很多地方,会产生一模一样的效果,这样的测试是冗余的。地方,会产生一模一样的效果,这样的测试是冗余的。一般白盒测试比黑盒测试麻烦。所以在执行白盒测试一般白盒测试
51、比黑盒测试麻烦。所以在执行白盒测试时,应当将精力集中在黑盒测试无能为力的方面,如时,应当将精力集中在黑盒测试无能为力的方面,如内存泄漏、误差累积、数据溢出等等。内存泄漏、误差累积、数据溢出等等。 在集成测试、系统测试阶段,可能要执行多次在集成测试、系统测试阶段,可能要执行多次“回归测试回归测试”。每一次。每一次“回归测试回归测试”都会存在不少的冗都会存在不少的冗余,应当设法剔除不必要的重复测试工作。余,应当设法剔除不必要的重复测试工作。 58 (2)(2)减少测试阶段减少测试阶段 如不作单元测试和集成测试,只做系统测如不作单元测试和集成测试,只做系统测试。这种方法将危害软件的质量,导致维护的试
52、。这种方法将危害软件的质量,导致维护的代价增加。代价增加。 上述第上述第(1)(1)种方法是我们追求的,第种方法是我们追求的,第(2)(2)种种方法只能在万般无奈的情况下采用方法只能在万般无奈的情况下采用 592 2.4 .4 测试环境测试环境 从软件的编码、测试到用户实际使用,存在着三从软件的编码、测试到用户实际使用,存在着三种环境:种环境: 开发环境开发环境、测试环境测试环境、用户环境用户环境。开发环境开发环境是供程序员进行代码开发时使用的环境;是供程序员进行代码开发时使用的环境;测试环境测试环境是测试人员为进行软件测试而搭建的环境;是测试人员为进行软件测试而搭建的环境;一般情况下,将包括
53、多种典型的用户环境;一般情况下,将包括多种典型的用户环境;用户环境用户环境是用户实际使用软件的环境;不同的用户可是用户实际使用软件的环境;不同的用户可能在不同的环境下使用这个软件。能在不同的环境下使用这个软件。 在很多情况下,这三个环境并不相同,但一个规在很多情况下,这三个环境并不相同,但一个规划良好的测试环境,总是很接近于用户环境。划良好的测试环境,总是很接近于用户环境。60 “环境环境”指的是被测试软件所运行的指的是被测试软件所运行的软件环境软件环境和和硬件环境硬件环境。包括产品运行的。包括产品运行的操作系统操作系统(Windows (Windows XPXP、Linux)Linux),其
54、他,其他支持软件支持软件( (如如JavaJava虚拟机、数据虚拟机、数据库软件库软件) ),计算机平台计算机平台( (例如例如PCPC、小型机、小型机) ),外围设外围设备备( (如打印机如打印机) ),专用的硬件设备专用的硬件设备( (如一系列输入、如一系列输入、输出设备输出设备) )。 在开始进行测试前,要建立测试环境。建立在开始进行测试前,要建立测试环境。建立测试环境,需要花费人力、时间和经费才能建立测试环境,需要花费人力、时间和经费才能建立起满足测试要求的环境。因此,在测试计划阶段,起满足测试要求的环境。因此,在测试计划阶段,就需要对建立什么样的测试环境进行规划。就需要对建立什么样的
55、测试环境进行规划。 612.4.1 测试环境的环境项测试环境的环境项测试一个商业软件。测试一个商业软件。u该软件是一个运行在该软件是一个运行在WindowsWindows下的应用软件,可下的应用软件,可以完成数据文件备份与恢复功能。以完成数据文件备份与恢复功能。 u该软件支持该软件支持Windows 98Windows 98及以上的各个及以上的各个WindowsWindows版版本,可以将文件备份到本,可以将文件备份到CDCD刻录机、刻录机、DVDDVD刻录机、刻录机、USBUSB移动硬盘。移动硬盘。测试小组需准备测试环境:测试小组需准备测试环境:622.4.1 测试环境的环境项测试环境的环境
56、项九个版本的九个版本的WindowsWindows系统系统Windows 98Windows 98Windows 98 SEWindows 98 SEWindows MEWindows MEWindows 2000 Professional(Windows 2000 Professional(中中/ /英)英)Windows 2000 ServerWindows 2000 ServerWindows XP Home EditionWindows XP Home Edition(中(中/ /英)英)Windows XP ProfessionalWindows XP Professional。 在
57、每个版本的在每个版本的Windows上,都上,都进行了完整的测进行了完整的测试。另外,在试。另外,在Windows XP Home Edition下下面,还进行了面,还进行了256MB内存、内存、512MB内存两种内存两种配置的测试配置的测试632.4.1 测试环境的环境项测试环境的环境项多种多种CDCD、DVDDVD刻录机刻录机。包括七种。包括七种CDCD刻录机刻录机( (三种三种IDEIDE接口内置式,一种接口内置式,一种SCSISCSI接口内置式,一种接口内置式,一种USBUSB接口外置式,两种带有接口外置式,两种带有CDCD刻录功能的刻录功能的DVD-DVD-Combo)Combo),
58、两种,两种DVDDVD刻录机。刻录机。五种五种USBUSB移动硬盘移动硬盘 一个规模很小的软件,测试人员也必须要一个规模很小的软件,测试人员也必须要准备多种操作系统环境和外围设备环境。准备多种操作系统环境和外围设备环境。 建立测试环境,需要对软件的需求建立测试环境,需要对软件的需求( (包括功包括功能需求和非功能需求能需求和非功能需求) )、用户的使用环境有很深、用户的使用环境有很深入的了解。入的了解。 64 在建立测试环境时需要考虑的因素有以下环在建立测试环境时需要考虑的因素有以下环境项:境项: (1 1)计算机平台)计算机平台 在在PCPC上运行的软件需要考虑:上运行的软件需要考虑: CP
59、UCPU速度速度、内内存容量存容量、硬盘硬盘、显示卡显示卡和和显示器的显示能力显示器的显示能力及及多多媒体能力媒体能力。 在搭建测试环境时,一般要考虑三种情况:在搭建测试环境时,一般要考虑三种情况:最低配置最低配置,常见配置常见配置,理想配置理想配置。常见配置是测。常见配置是测试的重点,最低配置是必须测试的。试的重点,最低配置是必须测试的。 65 例如,要求例如,要求CPUCPU为为1GHz1GHz或以上,要求至少或以上,要求至少256MB256MB内存内存。软件的最低配置需求情况需要被。软件的最低配置需求情况需要被测试,如果软件在最低配置情况下能够正常工测试,如果软件在最低配置情况下能够正常
60、工作,一般可以肯定在高配置的情况下能够更好作,一般可以肯定在高配置的情况下能够更好地工作。实际上更多的用户不是在最低配置环地工作。实际上更多的用户不是在最低配置环境下工作,因此,更多的测试也应该是在最通境下工作,因此,更多的测试也应该是在最通常的配置情况下进行。常的配置情况下进行。 例如,某软件要求最低配置例如,某软件要求最低配置1GHz1GHz以上以上CPUCPU,256MB256MB内存内存,那么在测试的时候,需要验证,那么在测试的时候,需要验证在在1GHz CPU1GHz CPU,256MB256MB内存情况下是否可以正常内存情况下是否可以正常工作,但由于使用工作,但由于使用1GHz C
61、PU1GHz CPU的用户并不是多数,的用户并不是多数,所以更多的测试可以在所以更多的测试可以在P4 2.0 GHzP4 2.0 GHz下进行。下进行。 66 (2 2)操作系统)操作系统 需要声明支持的操作系统,例如需要声明支持的操作系统,例如 要求要求Windows 98Windows 98或以上,则要测试或以上,则要测试WindowsWindows的多个版本。的多个版本。每个版本还包括了不同的语言,如果是在国内发每个版本还包括了不同的语言,如果是在国内发行的软件,就要考虑英文版本和中文版本,如果行的软件,就要考虑英文版本和中文版本,如果是在其他国家发行的,就要有当地语言版本。是在其他国家
62、发行的,就要有当地语言版本。67(3 3)浏览器)浏览器 如果是基于如果是基于WebWeb的应用系统,就需要对各种的应用系统,就需要对各种流行的浏览器环境进行测试。有两种浏览器环流行的浏览器环境进行测试。有两种浏览器环境必须要被测试:境必须要被测试:Microsoft Internet Microsoft Internet ExplorerExplorer和和FireFoxFireFox。 在某段时间哪些浏览器拥有最多的用户,在某段时间哪些浏览器拥有最多的用户,是测试人员必须要了解的信息。是测试人员必须要了解的信息。 68(4 4)软件支持平台)软件支持平台 在一个软件系统发布的时候,往往需要
63、第在一个软件系统发布的时候,往往需要第三方软件的支持,三方软件的支持,JavaJava应用程序就需要应用程序就需要JavaJava虚虚拟机的支持拟机的支持, ,很多企业应用软件需要数据库软件很多企业应用软件需要数据库软件的支持。要考虑版本和兼容性等。的支持。要考虑版本和兼容性等。 在软件支持平台方面,还有一个要注意的在软件支持平台方面,还有一个要注意的问题是:用户环境中存在某个软件,与待测试问题是:用户环境中存在某个软件,与待测试 软件不兼容。软件不兼容。 待测试软件与市场占有率很高的软件不兼待测试软件与市场占有率很高的软件不兼容,这种情况就比较糟糕。容,这种情况就比较糟糕。69(5 5)外部
64、设备)外部设备 不同的软件系统会需要不同的外围设备支持,不同的软件系统会需要不同的外围设备支持,键键盘、鼠标、显示器盘、鼠标、显示器是基本的外围设备。另外还有打印是基本的外围设备。另外还有打印机、扫描仪、磁带机、刻录机、数码相机、数字摄像机、扫描仪、磁带机、刻录机、数码相机、数字摄像机等有一些常用的外围设备机等有一些常用的外围设备 。 当软件系统支持某个外围设备时,就需要测试人当软件系统支持某个外围设备时,就需要测试人员在尽可能多的员在尽可能多的设备型号设备型号上进行测试。上进行测试。 例如在某家开发图像处理软件的公司,该公司的例如在某家开发图像处理软件的公司,该公司的多数产品均具有图像打印功
65、能,在该公司的测试实验多数产品均具有图像打印功能,在该公司的测试实验室,准备了数十台各种各样的喷墨、激光、针式打印室,准备了数十台各种各样的喷墨、激光、针式打印机,当某个新的软件发布前,该软件将在所有这些打机,当某个新的软件发布前,该软件将在所有这些打印机上被测试。印机上被测试。70在多种外围设备上进行测试,所消耗的时间和在多种外围设备上进行测试,所消耗的时间和费用是很大的。费用是很大的。一般来说,在组建测试环境的时候,选择该设一般来说,在组建测试环境的时候,选择该设备的几款主流型号进行测试,就可以覆盖大多备的几款主流型号进行测试,就可以覆盖大多数用户的使用环境。数用户的使用环境。 71(6
66、6) 网络环境网络环境 在网络环境方面,需要考虑的有:网络访在网络环境方面,需要考虑的有:网络访问方式问方式( (如通过局域网连接、通过代理服务器如通过局域网连接、通过代理服务器连接连接) )、网络速度、防火墙等。另外,还要考、网络速度、防火墙等。另外,还要考虑不稳定的网络连接情况,如网络时常中断。虑不稳定的网络连接情况,如网络时常中断。 (7 7)其它专用设备)其它专用设备72 在配置测试环境方面,同样面临着在测试范在配置测试环境方面,同样面临着在测试范围中的平衡问题。测试的配置环境越多,所花费围中的平衡问题。测试的配置环境越多,所花费的时间和费用越高,面临的未来的质量风险也越的时间和费用越
67、高,面临的未来的质量风险也越小。但过于复杂的测试环境,也会导致测试周期小。但过于复杂的测试环境,也会导致测试周期过长、测试成本过高,在项目开发中也难以接受过长、测试成本过高,在项目开发中也难以接受 。2.4.2 2.4.2 如何配置测试环境如何配置测试环境73假设某个软件需要测试假设某个软件需要测试两种浏览器两种浏览器( (IEIE和和FireFoxFireFox) )四种操作系统四种操作系统( (Windows 98Windows 98、Windows MEWindows ME、Windows 2000Windows 2000、Windows XPWindows XP) )三种三种CPUCP
68、U ( (Intel PIII 1GHzIntel PIII 1GHz、Intel P4 2.8GHzIntel P4 2.8GHz、AMD A1thon XP 2600+)AMD A1thon XP 2600+)两种内存配置两种内存配置( (256MB256MB、512MB512MB) )两种网络连接方式两种网络连接方式( (拨号网络、拨号网络、ADSLADSL宽带接入宽带接入) )。在测试这个软件的时候,即使只考虑五种环境项,在测试这个软件的时候,即使只考虑五种环境项,那么可能的组合数目是那么可能的组合数目是2*4*3*2*2=962*4*3*2*2=96。需要搭建。需要搭建9696种测试
69、环境进行测试,做不到也没必要。种测试环境进行测试,做不到也没必要。74 在搭建测试环境的时候,要排列配置的优先级,决定在搭建测试环境的时候,要排列配置的优先级,决定哪些配置需要全面测试,哪些配置需要部分测试。哪些配置需要全面测试,哪些配置需要部分测试。 哪些配置需要优先被测试,主要考虑因素:哪些配置需要优先被测试,主要考虑因素:使用的频度或者范围使用的频度或者范围 某些配置使用的概率远远大于其他配置,可以增加这种某些配置使用的概率远远大于其他配置,可以增加这种配置环境的测试量。反过来,某些配置使用的概率远配置环境的测试量。反过来,某些配置使用的概率远远小于其他配置,那么就可以减少这种配置的测试
70、量远小于其他配置,那么就可以减少这种配置的测试量 失效的可能性失效的可能性 如果某种配置下很容易发现软件错误,那么就应该加强如果某种配置下很容易发现软件错误,那么就应该加强在这种配置下的测试在这种配置下的测试 能最大限度模拟真实环境能最大限度模拟真实环境 面向大众的商品化软件,在测试时常需要考察在真实环面向大众的商品化软件,在测试时常需要考察在真实环境中的表现。境中的表现。 752.5 2.5 测试管理测试管理 测试过程中所涉及到的测试过程中所涉及到的人、活动和工具人、活动和工具都是都是很多的很多的( (特别是在大型软件的测试中特别是在大型软件的测试中) ),在制定测,在制定测试计划时,要对这
71、些因素加以管理。在测试管理试计划时,要对这些因素加以管理。在测试管理方面,需要考虑的主要问题包括:方面,需要考虑的主要问题包括:选择缺陷管理工具和测试管理工具选择缺陷管理工具和测试管理工具定义工作进度定义工作进度 建立风险管理计划建立风险管理计划76l测试过程中,需要不断地测试过程中,需要不断地发现缺陷、报告缺陷、跟发现缺陷、报告缺陷、跟踪缺陷踪缺陷直到其被解决,用什么工具来报告和管理缺直到其被解决,用什么工具来报告和管理缺陷陷? ?l缺陷管理的过程,需要编码、测试人员的紧密配合,缺陷管理的过程,需要编码、测试人员的紧密配合,需要不停地交换、更新当前的工作状态,为了高效需要不停地交换、更新当前
72、的工作状态,为了高效率地完成这些工作,一般需要有软件工具来进行辅率地完成这些工作,一般需要有软件工具来进行辅助。目前,已经有很多的缺陷管理工具可供使用,助。目前,已经有很多的缺陷管理工具可供使用,可以用可以用BugzillaBugzilla缺陷管理工具进行缺陷管理。缺陷管理工具进行缺陷管理。 2.5.1 缺陷管理工具和测试管理工具缺陷管理工具和测试管理工具77l软件测试过程包括了一系列的工作步骤,这些步骤需软件测试过程包括了一系列的工作步骤,这些步骤需要被进行良好地管理和组织。可以依靠测试管理人员要被进行良好地管理和组织。可以依靠测试管理人员和一系列的文档来进行管理,也可以使用测试管理工和一系
73、列的文档来进行管理,也可以使用测试管理工具具TestDirectorTestDirector来进行辅助管理。来进行辅助管理。 l在执行测试的过程中,缺陷管理工具和测试管理工具在执行测试的过程中,缺陷管理工具和测试管理工具并不是必须的。但多数公司都会使用缺陷管理工具。并不是必须的。但多数公司都会使用缺陷管理工具。78定义工作进度的过程定义工作进度的过程确认工作任确认工作任务务估算工作量估算工作量编写进度计划编写进度计划2.5.2 定义工作进度定义工作进度791. 1. 确认工作任务确认工作任务 工工作作任任务务可可以以分分为为两两类类,一一类类是是可可以以直直接接和和需需求求文文档档对对应应起起
74、来来的的,比比如如在在需需求求文文档档中中列列出出的的某某个个软软件件功功能能,在在测测试试过过程程中中。另另一一类类和和需需求求文文档档没没有有直直接的关联,如不同小组之间的交流。接的关联,如不同小组之间的交流。在在需需求求文文档档中中,描描述述了了软软件件的的功功能能性性需需求求和和非非功功能能性性需需求求,对对需需求求中中的的每每一一个个条条目目,都都应应该该有有相相应应的的测测试试工作与之对应起来。工作与之对应起来。 确认好测试任务后,还应该排列这些任务的优先级。确认好测试任务后,还应该排列这些任务的优先级。 80考虑与需求文档没有直接关联的任务:考虑与需求文档没有直接关联的任务: 执
75、行测试时设置和配置系统执行测试时设置和配置系统开发和安装专用测试工具开发和安装专用测试工具学习使用测试工具学习使用测试工具定制测试工具定制测试工具将测试用例编写为脚本或数据文件将测试用例编写为脚本或数据文件重新运行以前没通过的测试用例重新运行以前没通过的测试用例产生测试报告和测试总结文档产生测试报告和测试总结文档编写测试计划编写测试计划编写质量报告、缺陷报告编写质量报告、缺陷报告人员培训人员培训与程序员之间的交流与程序员之间的交流与客户之间的交流与客户之间的交流81上面列举的任务,在确认工作任务和估算工作上面列举的任务,在确认工作任务和估算工作量的过程中,很容易量的过程中,很容易被遗漏掉被遗漏
76、掉,而在实际的测,而在实际的测试过程中,又必须执行上述任务。如果遗漏掉试过程中,又必须执行上述任务。如果遗漏掉了上述任务,就很容易发现这样的情况:在实了上述任务,就很容易发现这样的情况:在实际进行测试时,发现实际所需要的工作量远远际进行测试时,发现实际所需要的工作量远远超过了超过了“以为以为”的工作量。的工作量。在工作任务完成后,要进行在工作任务完成后,要进行审查和确认审查和确认。可以。可以根据所列出的测试任务,根据所列出的测试任务,“静态地静态地”把测试的把测试的全部过程走一遍,以判断有无遗漏。全部过程走一遍,以判断有无遗漏。822.2.估算工作量估算工作量 工工作作量量可可以以使使用用“人
77、人* *日日”、“人人* *月月”、“人人* *年年” 单位。单位。 一般认为:一般认为: 1 1人人* *年年=12=12人人* *月;月;1 1人人* *月月=21=21人人* *日;日;1 1人人* *日日=8=8工作小时工作小时 测试工作量的估算可以采用以下方法:测试工作量的估算可以采用以下方法: (1)(1)建立详细的工作分解结构建立详细的工作分解结构 如装修、写书如装修、写书 软软件件测测试试也也需需要要建建立立详详细细的的工工作作分分解解结结构构,将将任任务务细细分分为为众众多多的的子子任任务务,直直到到可可以以比比较较有有把把握握地地确确定定每每个个子子任任务的工作量为止。务的
78、工作量为止。83例如:测试员与程序员交流的工作量:例如:测试员与程序员交流的工作量: 与编码小组的每周例行质量会议,预计每周与编码小组的每周例行质量会议,预计每周2 2小时小时。向程序员现场演示发现软件错误的过程,预计每天向程序员现场演示发现软件错误的过程,预计每天0.50.5小时小时。在收到新的版本后,听程序员描述新版本改动的内容在收到新的版本后,听程序员描述新版本改动的内容和期望进行重点测试的地方,预计每周和期望进行重点测试的地方,预计每周1.51.5小时小时。 每个测试人员每周需要与程序员进行每个测试人员每周需要与程序员进行6 6小时小时的交流。的交流。如果测试工作预计持续如果测试工作预
79、计持续1 1个月个月,有,有3 3名名测试人员参与工测试人员参与工作,那么每个测试人员需要在此任务中投入作,那么每个测试人员需要在此任务中投入2424小时小时的的工作量,以人工作量,以人* *日来度量,那么该测试小组与程序员的日来度量,那么该测试小组与程序员的交流的总工作量就是交流的总工作量就是24*3/8=924*3/8=9人人* *日日。 84(2)(2)分析以往项目,寻找历史数据分析以往项目,寻找历史数据 如果即将进行测试的软件和以往某个已经完成的如果即将进行测试的软件和以往某个已经完成的软件类似,那么就可以使用以往的数据来估计工作量。软件类似,那么就可以使用以往的数据来估计工作量。u如
80、开发软件其功能、难度、复杂度、编码和设计的工如开发软件其功能、难度、复杂度、编码和设计的工作量与以往某个软件类似。在估算该功能测试所需要作量与以往某个软件类似。在估算该功能测试所需要时间时,可以参考以往的数据。时间时,可以参考以往的数据。u人员结构类似,可以参考以往关于交流时间的数据。人员结构类似,可以参考以往关于交流时间的数据。 (3) (3) 使用评估模型使用评估模型 现在有一些评估模型,可以预测工作量。这些评估现在有一些评估模型,可以预测工作量。这些评估模型通常是基于估计的代码行数、功能点数来进行的。模型通常是基于估计的代码行数、功能点数来进行的。85在在估估算算工工作作量量时时,还还要
81、要注注意意一一些些“返返工工”的的问问题题。在在估估算算工工作作量量时时,要要记记住住的的是是:某某些些工工作作任任务务有有可能被重复做上多遍可能被重复做上多遍 。863. 编写进度计划编写进度计划进度计划可以用甘特图的形式来表示,更直观。 87在进度计划中,要确保:在进度计划中,要确保:所有任务都已经被列出所有任务都已经被列出 计划中包含了任务编号、任务名称、开始时间、计划中包含了任务编号、任务名称、开始时间、完成时间、持续时间等信息完成时间、持续时间等信息计划是可行的,资源要求能够被满足计划是可行的,资源要求能够被满足按照此计划开展实际工作按照此计划开展实际工作如果有变化,该计划将被及时更
82、新如果有变化,该计划将被及时更新882.5.3 建立风险管理计划建立风险管理计划 在测试中也要不断地预计风险、跟踪风险和规避风险在测试中也要不断地预计风险、跟踪风险和规避风险 。在测试中面临的问题:在测试中面临的问题:由于设计、编码出现了大的质量问题,导致测试工作由于设计、编码出现了大的质量问题,导致测试工作量、测试时间增加;量、测试时间增加;在开始测试时,所需要的硬件、软件没有准备好在开始测试时,所需要的硬件、软件没有准备好 未能完成对测试人员的技术培训未能完成对测试人员的技术培训 例如,在测试工作中选用了某个新的测试工具,例如,在测试工作中选用了某个新的测试工具, 但未能及时对测试人员进行
83、工具使用的培训;但未能及时对测试人员进行工具使用的培训;测试时的人力资源安排不足测试时的人力资源安排不足 89在测试过程中,发生了大量的需求变更在测试过程中,发生了大量的需求变更在测试过程中,项目的开发计划被进行大幅度调在测试过程中,项目的开发计划被进行大幅度调整整 不能及时准备好所需要的测试环境不能及时准备好所需要的测试环境 某公司遇到过这样的例子:某个软件系统的集某公司遇到过这样的例子:某个软件系统的集 成测试需要在数台小型机上进行,由于该公司成测试需要在数台小型机上进行,由于该公司不可能为此购买小型机进行测试,所以集成测不可能为此购买小型机进行测试,所以集成测试和系统测试需要在用户购买了
84、小型机后再进试和系统测试需要在用户购买了小型机后再进行。但用户的实际购买日期比原计划推迟了。行。但用户的实际购买日期比原计划推迟了。 不能及时准备好测试数据不能及时准备好测试数据90风险管理的过程:风险管理的过程:识别风险识别风险 列举在工作中可能遇到的风险列举在工作中可能遇到的风险 评估风险评估风险针对所列举出来的风险,对其发生的可能性、产针对所列举出来的风险,对其发生的可能性、产生的后果进行评估生的后果进行评估 制订对策制订对策 对于每个风险,制定对策使其发生概率减小。对于每个风险,制定对策使其发生概率减小。 跟踪风险跟踪风险 跟踪风险状态和对策执行情况,更新风险管理计跟踪风险状态和对策执
85、行情况,更新风险管理计划划 912.6 编写和审核测试计划编写和审核测试计划 由于测试的种类多、内容广并且时间分散,由于测试的种类多、内容广并且时间分散,并且不同的测试工作由不同的人员来执行,因此并且不同的测试工作由不同的人员来执行,因此一般把单元测试、集成测试、系统测试、验收测一般把单元测试、集成测试、系统测试、验收测试各阶段的试各阶段的“测试计划测试计划”分开写分开写。 “测试计划测试计划”的撰写的撰写宜早不宜迟宜早不宜迟,只要信息足,只要信息足够就可以提前起草,不要拖到快要测试时才开始够就可以提前起草,不要拖到快要测试时才开始写。写。 9293 2.6.1 2.6.1 编写系统测试计划文
86、档编写系统测试计划文档 测试计划是描述软件测试努力的目标、范测试计划是描述软件测试努力的目标、范围、方法和焦点的文档。完整的文档将有助于围、方法和焦点的文档。完整的文档将有助于测试组之外的人理解为什么要进行软件检测,测试组之外的人理解为什么要进行软件检测,并且如何进行检测。并且如何进行检测。 下面是一份测试计划模版下面是一份测试计划模版94标题。标题。确定软件的版本号。确定软件的版本号。 修订文档历史,包括作者、日期和批示。修订文档历史,包括作者、日期和批示。目录表。目录表。 文档的目的和适合的读者群。文档的目的和适合的读者群。测试的目的。测试的目的。软件产品概述。软件产品概述。相关文档列表,
87、例如:需求、设计文档、其他测试计相关文档列表,例如:需求、设计文档、其他测试计划等。划等。相关的标准或合法需求。相关的标准或合法需求。相关的命名规范和标识符规范。相关的命名规范和标识符规范。整个软件项目组织和人员,联系信息责任。整个软件项目组织和人员,联系信息责任。测试组织和人员联系信息,责任。测试组织和人员联系信息,责任。假设和依赖关系。假设和依赖关系。测试计划模版测试计划模版95 项目风险信息。项目风险信息。 测试优先级和焦点。测试优先级和焦点。 测试范围和限制。测试范围和限制。 测试提纲测试提纲对测试过程的一个分解,通过测试类型、对测试过程的一个分解,通过测试类型、 特点、功能性、过程、
88、系统、模块等。特点、功能性、过程、系统、模块等。 测试环境设置和配置问题。测试环境设置和配置问题。 数据库设置需求。数据库设置需求。 概述系统日志错误日志其他性能,有助于描述问概述系统日志错误日志其他性能,有助于描述问题的屏幕捕获工具等。题的屏幕捕获工具等。 有助于测试者跟踪问题根源的具体软硬件工具的论述。有助于测试者跟踪问题根源的具体软硬件工具的论述。 测试自动化的可能性和概述。测试自动化的可能性和概述。 使用的测试工具,包括版本、补丁等。使用的测试工具,包括版本、补丁等。 使用的项目测试度量。使用的项目测试度量。 测试计划模版测试计划模版96报告需求和测试可传递性。报告需求和测试可传递性。
89、 软件人口和出口准则。软件人口和出口准则。 初始的理性测试阶段和标准。初始的理性测试阶段和标准。 测试终止和重新开始的标准。测试终止和重新开始的标准。 人员安排。人员安排。 测试地点。测试地点。 用到的测试外的组织,他们的目的、责任、可传递性、用到的测试外的组织,他们的目的、责任、可传递性、联系人和协作问题。联系人和协作问题。 相关的财产、分类、安全性和许可证问题。相关的财产、分类、安全性和许可证问题。 附录附录词汇表、缩略语等。词汇表、缩略语等。 (例(例P254P254)测试计划模版测试计划模版972.6.2 单元测试计划表格单元测试计划表格98992.6.3 2.6.3 审核测试计划文档
90、审核测试计划文档 “测试计划测试计划”撰写完毕后应当请有关人员对撰写完毕后应当请有关人员对其审批其审批. .100一般来说,一般来说,“单元测试计划单元测试计划”需要设计需要设计主管和程序主管审批,主管和程序主管审批,“集成测试计划集成测试计划”需要项目主管和设计主管审批,需要项目主管和设计主管审批,“系系统测试计划统测试计划”需要项目经理、质量保障需要项目经理、质量保障部门主管、测试主管审批。部门主管、测试主管审批。 101小小 结结 本章介绍了本章介绍了如何制定测试计划如何制定测试计划。在制定测。在制定测试计划前,需要对软件需求进行了解和分析。另试计划前,需要对软件需求进行了解和分析。另外
91、,还需要对软件需求进行静态的测试。外,还需要对软件需求进行静态的测试。 在制定测试计划时,首先要在制定测试计划时,首先要确定测试策略确定测试策略。这包括了:这包括了:确定测试范围、选择测试方法、制定确定测试范围、选择测试方法、制定测试标准、选择自动化测试工具和编写测试软件测试标准、选择自动化测试工具和编写测试软件。自动化测试工具、编写测试软件并不是在每个软自动化测试工具、编写测试软件并不是在每个软件的测试中都是必需的。在确定测试范围的时候,件的测试中都是必需的。在确定测试范围的时候,要做到在保证测试质量的前提下,尽量减小测试要做到在保证测试质量的前提下,尽量减小测试范围。范围。102 接下去要
92、接下去要定义测试环境定义测试环境。对于绝大多数软。对于绝大多数软件来说,需要在各种环境中运行。如果把各种件来说,需要在各种环境中运行。如果把各种 可能的环境因素全部组合起来,将可能得到一个可能的环境因素全部组合起来,将可能得到一个天文数字。这个时候,软件测试人员就需要对测天文数字。这个时候,软件测试人员就需要对测试环境进行分析,从而选择出有限的测试环境组试环境进行分析,从而选择出有限的测试环境组合。合。 测试过程中,还会涉及到一些测试过程中,还会涉及到一些管理工作管理工作。对于缺陷的管理和对于测试工作流程的管理就是对于缺陷的管理和对于测试工作流程的管理就是其中典型的管理工作,在制定测试计划时,
93、需要其中典型的管理工作,在制定测试计划时,需要确定使用什么样的工具来进行相应的管理。确定使用什么样的工具来进行相应的管理。103 在测试计划阶段所进行的工作,都需要有在测试计划阶段所进行的工作,都需要有相应的文档来记录和描述,需要编写相应的文档来记录和描述,需要编写测试计划文测试计划文档档。单元测试、集成测试和系统测试的测试计划。单元测试、集成测试和系统测试的测试计划文档需要被不同的人员编写,一般是独立的文档,文档需要被不同的人员编写,一般是独立的文档,其需要完成时间也不一样。测试计划文档需要被其需要完成时间也不一样。测试计划文档需要被审核,只有被审核通过后,才能作为后续工作的审核,只有被审核通过后,才能作为后续工作的计划文件。计划文件。 要特别注意的是:所有完成的文档都必须要特别注意的是:所有完成的文档都必须保持及时的更新。否则,文档中描述的内容就会保持及时的更新。否则,文档中描述的内容就会和实际工作的偏差越来越大。和实际工作的偏差越来越大。104