1、ISTQBISTQB基础知识基础知识ISTQB CTFL简介简介ISTQB与与CSTQB简介简介nISTQB简介n国际软件测试认证委员会ISTQB(International Software Testing Qualification Board)于2002年在英国成立。nISTQB是国际唯一权威的软件测试资质认证机构,现有包括美国、德国、英国、法国、日本等47个成员国。n中国软件测试认证委员会(CSTQB)在2006年成为ISTQB的正式成员。nISTQB培训与认证体系nISTQB-Certified Tester培训及认证体系分为三个级别:n基础级/Foundation Leveln高级
2、/Advanced Level:3年以上测试工作经验n专家级/Expert Level:5年以上测试工作经验n培训者获得基础级证书后,可申请参加更高级别的培训和认证考试,并获得相应证书。CSTQB FL CSTQB FL 培训内容培训内容课程模块课程模块模块内容模块内容第一部分:测试的基础知识测试的基本原则 基本的测试过程 测试的理念 第二部分:软件生命周期中的测试软件开发模型 测试级别 测试类型维护测试 第三部分:静态技术评审的测试过程 工具支持的静态分析 第四部分:测试设计技术黑盒技术 白盒技术 基于经验的技术 第五部分:测试管理测试的组织结构 测试计划的估算 测试进度监控 配置管理 风险
3、和测试第六部分:测试的工具支持测试工具的类型 高效率使用工具 组织中工具的引入 ISTQB CTFL认证考试认证考试n考试形式n闭卷笔试n考试卷包含40道单选选择题(给定的答案中只有一项是正确的)n考试时间为1小时n分数达到65%以上(26题以上含26题)通过考试n考试内容与比例章节名称章节名称题目数量级别数量百分比百分比K1K2 K3测试的基础知识743018%软件生命周期中的测试642016%静态技术32107%测试设计技术1242629%测试管理833221%测试的工具43109%软件测试基础软件测试基础目录目录n 为什么需要软件测试为什么需要软件测试n 什么是测试什么是测试n 软件测试
4、的目的与原则软件测试的目的与原则n 软件测试过程软件测试过程软件测试术语(软件测试术语(1 1)n术语n错误 Error,Mistaken缺陷 Defect,Bug,Faultn失效 Failure n说明n程序员可能会犯错误,由此在程序或文档中产生缺陷。n如果执行了代码中的缺陷,软件将可能无法实现应该实现的功能或者产生了不应该实现的结果,由此产生失效。n软件、系统或者文档中的缺陷可能导致失效,但是并不是所有的缺陷都会导致失效。n缺陷的产生是因为程序员容易犯错误,可能是因为时间压力,复杂的代码,架构复杂,技术变更,或者系统交互等引起的。n失效也可能是环境条件引起的。例如,辐射,磁场,电场,污染
5、导致硬件故障。或者由于改变了硬件的条件,对软件的执行产生影响。n软件系统的失效不可能是老化或磨损引起的。软件测试术语(软件测试术语(2 2)n错误error是广义的概念。错误是人为的原因导致一个不正确的结果。它可以是程序内的内部错误,也可能是文档内的错误。n缺陷是错误的具体表现,可以是不正确的文档,程序段,指令或数据定义,它们可能会引起一个外部的失效(failure)。nbug,defect和fault同义。因为存在的缺陷(defect)而导致软件的运行失败叫失效。n失效是缺陷在执行测试软件时的外部反映。失效是(规范说明)期望的值与实际(观察到)的值存在偏差。例如系统的不正确的反应,崩溃,死机
6、等。n当缺陷引起了运行错误或对用户产生了消极影响时,它就被称为失效。对缺陷最大的担心就是它会转变为失效,而失效将会对用户产生损害。n有一些缺陷可能永远也不会转变为失效,但有时一个缺陷又可能会引起上百万的失效。n缺陷可以通过静态测试发现,而失效只能通过动态测试发现。什么是测试?什么是测试?n测试包含:n测试执行之前和之后的一些活动,包括计划与控制、选择测试条件、设计与执行测试用例,检查测试结果、评估出口准则、报告测试过程及被测系统、在一个测试阶段完成后要进行测试结束和总结工作。n测试同时也包括文档的评审(包括源代码)和执行静态分析。n测试分为动态分析和静态分析两种手段软件测试的总体目标软件测试的
7、总体目标n总体目标n发现缺陷n获取对产品质量的信心n提供用于决策的信息n预防缺陷早期测试开发阶段的测试运行阶段的测试静态测试组件测试集成测试系统测试验收测试非功能测试维护测试预防缺陷发现缺陷建立信心提供信息不同测试阶段的测试目的不同测试阶段的测试目的n软件需求阶段对文档的静态测试是为了预防缺陷n在开发阶段执行的测试(组件测试、集成测试和系统测试),测试的主要目的可能是尽可能的使软件失效,从而发现和修改尽可能多缺陷。n在验收测试中,主要目的可能是用来确认系统是否按照预期工作的,从而在系统是否满足系统需求方面得到信心。n在有的情况,测试的主要目的可能是对软件的质量进行评估(不是为了修改缺陷),从而
8、为利益相关人提供这样的信息:在给定时间内发布系统版本是否存在风险?n在运行测试阶段,测试的主要目标可能是为了评估系统的特征,比如可靠性或可用性等。n维护测试通常是为了验证在变更开发过程中是否有新的错误引入。测试和调试的区别测试和调试的区别n调试(Debug)和测试(Test)是两个不同的概念。n测试n测试可以发现由于软件缺陷引起的失效。n测试员执行测试。n调试n调试是一种开发活动,用来识别引起缺陷的原因,修改代码以及验证是否正确的修改了软件的缺陷。n开发人员执行调试。n关系n开发人员调试后的软件需要测试员进行确认测试,确认修改的代码已经解决了失效问题。n开发人员除了调试,也执行某些类型的测试软
9、件测试的原则软件测试的原则1.所有的软件测试都应追溯到用户需求2.应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭 3.完全测试是不可能的,测试需要适可而止4.测试只能证明软件存在错误而不能证明软件没有错误 5.充分注意测试中的缺陷群集现象6.程序员应避免检查自己的程序(测试独立性)7.测试的“杀虫剂”效应 所有的软件测试都应追溯到用户需求所有的软件测试都应追溯到用户需求n从根本上讲,判断软件现象是否是缺陷的依据是是否满足用户需求n显性需求显性需求n隐性需求隐性需求n软件的目的是使用户完成预定的任务,并满足用户的需求n软件测试所揭示的缺陷和错误使软件达不到用户的目标,满足不了用户需求
10、 尽早地和不断地进行软件测试尽早地和不断地进行软件测试n在软件或系统开发生命周期中,测试活动应该尽可能早的介入,并且应该将关注点放在已经定义的测试目标(test objective)上 n早期发现和修改缺陷成本最小n每个软件Build都应该被测试,而不是等到最后一个Build才进行测试n经验数据示例穷尽测试是不可能的穷尽测试是不可能的n测试是有计划的,产品要发布,市场不允许无限期测试n被测试软件复杂,需要测试的内容很多n测试预算和资源有限,测试需要适可而止n除了小型项目,进行完全(各种输入和前提条件的组合)的测试是不现实的。n通过运用风险管理(Risk management)和不同系统功能的测
11、试优先级,来确定测试的关注点,从而替代穷尽测试 测试显示缺陷的存在测试显示缺陷的存在 n测试只能表明软件存在缺陷,不能说明软件不存在缺陷n测试可以减少软件中存在缺陷的可能性,但即使测试没有发现任何缺陷,也不能证明软件或系统是完全正确的n由于软件测试不能穷尽测试,因此,经过测试的软件仍然含有未知的缺陷 缺陷的群集现象缺陷的群集现象n版本发布前进行的测试所发现的大部分缺陷和软件运行失效是由于少数软件模块引起的 n如果发现某一程序模块似乎比其他程序模块有更多的错误倾向,则应当花费较多的时间和代价测试这个程序模块。测试的独立性测试的独立性n人为心理因素,人们认为揭露自己程序中的问题总不是一件愉快的事,
12、不愿否认自己的工作n由于思维定势,人们难于发现自己的错误n程序员应该避免全部测试自己的程序和文档n为达到测试目的,应由客观、公正、严格的独立的测试部门或者独立的第三方测试机构进行测试测试的测试的“杀虫剂杀虫剂”效应效应n同样的测试用例一遍一遍重复进行测试,最后将不再能够发现新的缺陷n为了克服这种杀虫剂悖论,测试用例需要经常性的评审和修改n需要不断增加新的不同的测试用例来测试软件或系统的不同部分,从而发现潜在的更多的缺陷n重复测试、不间断测试、更新测试内容和测试用例 软件测试的基本过程软件测试的基本过程n软件测试计划和控制n测试分析和设计n测试实施和执行n退出测试的标准n测试报告n测试结束活动
13、开始结束测试计划跟踪控制分析与设计实现与执行评估与报告完成测试测试计划测试进度表测试设计规格说明测试用例规格说明测试规程规格说明测试日志/事件报告.测试总结报告软件测试计划和控制软件测试计划和控制n定义nANSI/IEEE软件测试文档标准829-1983将测试计划定义为:“一个叙述了预定的测试活动的范围、途径、资源及进度安排的文档。它确认了测试项、被测特征、测试任务、人员安排,以及任何偶发事件的风险。”n作用n借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。n内容n指明测试范围、方法
14、、资源,以及相应测试活动的时间进度安排表。n包含测试目标、项目概述、组织形式、角色及职责、测试对象、测试通过和失败的标准(测试何时结束、度量的尺度如何、度量的评价标准等)、测试挂起的标准及恢复的必要条件、测试任务的安排、应交付的测试工作产品、工作量估计等。n特点n一般开始于软件需求分析结束阶段软件测试计划内容与实例软件测试计划内容与实例n计划内容n测试项目概述n需要测试的功能n不需要测试的功能n测试策略n测试中断与恢复的规定n测试完成后需要提交的内容n测试环境的设置n测试人员的工作分配n测试人员的能力与培训n测试进度表n测试风险n计划实例n简单的测试计划n复杂测试计划n附录A:测试计划模板软件
15、测试控制软件测试控制n利用事先定义的度量评估和分析测试结果n监督和记录:n测试进度n测试的覆盖状况n测试的结束条件n是否偏离计划n确定是否需要采取纠正措施n确定是否需要更改原计划n对测试计划的执行进行反馈软件测试分析和设计软件测试分析和设计n不同阶段的分析和设计依据不同n在组件(单元)测试阶段分析的依据是详细设计规约n在集成测试阶段分析的依据是概要设计规约n在系统测试阶段分析的依据是需求分析规约n在分析过程中规约不是惟一的依据,由于软件开发过程中的文档可能不是十分的完整,这就要求测试分析人员从其他方面进行分析作为补充。软件测试分析和设计软件测试分析和设计n对测试依据(需求、结构、设计、接口)进
16、行评审/分析,为对所有测试点设计测试用例做好准备n以测试分析为基础并结合软件测试方法和技术进行测试设计n从产品原型分析角度出发,与当事人交流和沟通(开发者和用户等)n对需求和测试对象的可测试性进行评价n在分析测试对象、规约说明、测试对象间的关系和结构的基础上,确定测试条件(例如验证需求)以及所需的测试数据n使用测试策略内规定的测试方法设计逻辑测试用例(测试用例的架构)n测试用例的设计应该从逻辑测试用例到实际测试用例的设计过程,设计用例的多少应该充分考虑测试子系统或模块在整个系统中的重要性,用例的设计同时要考虑用例执行应该具备的前提条件设计测试环境,包括必要的基本设施和工具n测试设计包括测试用例
17、设计、测试工具设计或选择、测试脚本设计、测试缺陷管理工具设计或选择,测试管理模板设计n测试用例设计是测试设计的重要内容,黑盒、白盒、灰盒测试用例设计n从软件的流程图、功能点、状态图、use-case图等方面进行测试用例的设计n细化测试进度表测试的实现与执行测试的实现与执行n测试的实现(Implementation)n从测试条件具体到可执行的测试用例(即从逻辑测试用例到实际的测试用例),以及必要的测试件(文档和工具)n借助于测试准则,确定测试期望结果n根据风险判定测试用例的优先级n生成测试数据n测试对象的输入值和状态值以及期望值,或在运行有关的测试用例后的期望结果n建立和检查测试环境,以确保配置
18、的正确性n构建测试台(Test bed)和编写测试自动化脚本n组合成测试套件(Test suites)/测试序列(多个单个测试用例形成的逻辑集),并完成测试规程(Test procedure)n测试套件是用于被测组件/系统的一组测试用例。在这些测试用例中,一个测试用例的后置条件(Post condition)常作为下一个测试的前置条件(Precondition)测试的实施与执行测试的实施与执行n测试的准备n测试环境的准备(软件、硬件、网络)n测试对象是否按照规定构建并准备完毕,测试程序、测试脚本是否准备完毕n缺陷管理系统和测试文档是否准备完毕n测试辅助件的准备:测试驱动器和测试桩、测试模拟器及
19、测试工具等。测试的实施与执行测试的实施与执行n测试的执行n测试某个软件组合或系统并产生实际结果的过程n按照测试计划和测试规约说明执行手动测试的测试用例和自动测试的测试用例n比较实际的和期望的结构,分析期望和实际结果偏差的原因(测试对象和测试件的错误等)n提交事件(Incidents),即在测试过程中出现的,并且在此后还需要检查或者关注的事件n记录n测试结果(测试日期、时间、测试人员、输入的测试数据和期望值、测试对象的ID标识/版本号,测试工具和测试方法,测试结果和后续动作包括测试缺陷报告和修改测试用例),如果可能给出错误的原因,记录特殊情况。n如有必要,补充新的测试用例n执行确认测试和回归测试
20、,用于确认错误更改是否有效,或者执行已经更改的测试用例n测试日志n即关于测试执行的按时间顺序的详细记录测试退出的标准测试退出的标准 n测试退出的标准n计划中的测试用例是否执行完毕n是否达到功能、语句等计划的覆盖指标n继续测试发现缺陷的数量减少低于度量标准等n满足测试计划中的测试退出标准 n测试评估n对每个测试阶段都要进行评估是否达到测试退出的标准n对测试记录评估,判断测试是否达到了测试计划规定的测试退出准则n达到测试退出准则后,才进入下一个测试阶段n评价是否需要继续执行进一步的测试或者需要更改已经定义好的测试退出准则。例如,准则无法执行或者资源有限(费用、时间和人员)无法达到n每个测试阶段结束
21、后提供对被测系统和测试过程当前状况的评价n给相关决策人员提交测试报告(包括测试活动和测试结果的文档,在规定的测试退出准则下的测试运行的评估)测试结束活动测试结束活动 n测试结束的条件n当一个软件产品正式上线应用后n当开发(或测试)达到一个里程碑(Milestone)n一个维护版本结束时n测试结束活动的内容n检查是否所有计划的交付物都产生并交付了,或者产生交付了哪些n事件报告的完成(缺陷报告,偏差报告.)n为仍然存在的错误/偏差提供变更需求n系统验收的文档n测试结果分析,测试总结,测试信息和数据备份(测试规约说明书、数据、测试日志等)n对测试发现的缺陷进行统计分类并分析原因n制定的测试计划和实际的计划执行的差距并分析原因,哪些事件或风险没预料到,总结好的经验等n分析每个测试活动的计划和实施之间的偏差,并判断原因n统计测试结果与测试开销的关系n软件、硬件、文档和邮件的备份、销毁和退还