




已阅读5页,还剩72页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
测试报告编写指南摘要 测试报告是把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。本文提供测试报告模板以及如何编写的实例指南。 关键字 测试报告 缺陷 正文 测试报告是测试阶段最后的文档产出物,优秀的测试经理应该具备良好的文档编写能力,一份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果分析。下面以通用的测试报告模板为例,详细展开对测试报告编写的具体描述。part 首页0.1页面内容: 密级 通常,测试报告供内部测试完毕后使用,因此密级为中,如果可供用户和更多的人阅读,密级为低,高密级的测试报告适合内部研发项目以及涉及保密行业和技术版权的项目。 xxxx项目/系统测试报告 报告编号 可供索引的内部编号或者用户要求分布提交时的序列号 部门经理 _项目经理_ 开发经理_测试经理_ xxx公司 xxxx单位 (此处包含用户单位以及研发此系统的公司) xxxx年xx月xx日 0.2格式要求: 标题一般采用大体字(如一号),加粗,宋体,居中排列 副标题采用大体小一号字(如二号)加粗,宋体,居中排列 其他采用四号字,宋体,居中排列 0.3版本控制: 版本 作者 时间 变更摘要 新建/变更/审核 part 引言部分 1.1编写目的 本测试报告的具体编写目的,指出预期的读者范围。 实例:本测试报告为xxx项目的测试报告,目的在于总结测试阶段的测试以及分析测试结果,描述系统是否符合需求(或达到xxx功能目标)。预期参考人员包括用户、测试人员、开发人员、项目管理者、其他质量管理人员和需要阅读本报告的高层经理。 提示:通常,用户对测试结论部分感兴趣,开发人员希望从缺陷结果以及分析得到产品开发质量的信息,项目管理者对测试执行中成本、资源和时间予与重视,而高层经理希望能够阅读到简单的图表并且能够与其他项目进行同向比较。此部分可以具体描述为什么类型的人可参考本报告xxx页xxx章节,你的报告读者越多,你的工作越容易被人重视,前提是必须让阅读者感到你的报告是有价值而且值得浪费一点时间去关注的。 1.2项目背景 对项目目标和目的进行简要说明。必要时包括简史,这部分不需要脑力劳动,直接从需求或者招标文件中拷贝即可。 1.3系统简介 如果设计说明书有此部分,照抄。注意必要的框架图和网络拓扑图能吸引眼球。 1.4术语和缩写词 列出设计本系统/项目的专用术语和缩写语约定。对于技术相关的名词和与多义词一定要注明清楚,以便阅读时不会产生歧义。 1.5参考资料 1需求、设计、测试用例、手册以及其他项目文档都是范围内可参考的东东。 2测试使用的国家标准、行业指标、公司规范和质量手册等等 part 测试概要 测试的概要介绍,包括测试的一些声明、测试范围、测试目的等等,主要是测试情况简介。(其他测试经理和质量人员关注部分) 2.1测试用例设计 简要介绍测试用例的设计方法。例如:等价类划分、边界值、因果图,以及用这类方法(3-4句)。 提示:如果能够具体对设计进行说明,在其他开发人员、测试经理阅读的时候就容易对你的用例设计有个整体的概念,顺便说一句,在这里写上一些非常规的设计方法也是有利的,至少在没有看到测试结论之前就可以了解到测试经理的设计技术,重点测试部分一定要保证有两种以上不同的用例设计方法。 2.2测试环境与配置 简要介绍测试环境及其配置。 提示:清单如下,如果系统/项目比较大,则用表格方式列出 数据库服务器配置 cpu: 内存: 硬盘:可用空间大小 操作系统: 应用软件: 机器网络名: 局域网地址: 应用服务器配置 . 客户端配置 . 对于网络设备和要求也可以使用相应的表格,对于三层架构的,可以根据网络拓扑图列出相关配置。 2.3测试方法(和工具) 简要介绍测试中采用的方法(和工具)。 提示:主要是黑盒测试,测试方法可以写上测试的重点和采用的测试模式,这样可以一目了然的知道是否遗漏了重要的测试点和关键块。工具为可选项,当使用到测试工具和相关工具时,要说明。注意要注明是自产还是厂商,版本号多少,在测试报告发布后要避免大多工具的版权问题。 part 测试结果及缺陷分析 整个测试报告中这是最激动人心的部分,这部分主要汇总各种数据并进行度量,度量包括对测试过程的度量和能力评估、对软件产品的质量度量和产品评估。对于不需要过程度量或者相对较小的项目,例如用于验收时提交用户的测试报告、小型项目的测试报告,可省略过程方面的度量部分;而采用了cmm/iso或者其他工程标准过程的,需要提供过程改进建议和参考的测试报告主要用于公司内部测试改进和缺陷预防机制则过程度量需要列出。 3.1测试执行情况与记录 描述测试资源消耗情况,记录实际数据。(测试、项目经理关注部分) 3.1.1测试组织 可列出简单的测试组架构图,包括: 测试组架构 (如存在分组、用户参与等情况) 测试经理(领导人员) 主要测试人员 参与测试人员 3.1.2测试时间 列出测试的跨度和工作量,最好区分测试文档和活动的时间。数据可供过程度量使用。 例如 xxx子系统/子功能 实际开始时间实际结束时间 总工时/总工作日 任务 开始时间 结束时间 总计 合计 对于大系统/项目来说最终要统计资源的总投入,必要时要增加成本一栏,以便管理者清楚的知道究竟花费了多少人力去完成测试。 测试类型 人员成本 工具设备 其他费用 总计 在数据汇总时可以统计个人的平均投入时间和总体时间、整体投入平均时间和总体时间,还可以算出每一个功能点所花费的时/人。 用时人员 编写用例 执行测试 总计 合计 这部分用于过程度量的数据包括文档生产率和测试执行率。 生产率人员 用例/编写时间 用例/执行时间 平均 合计 3.1.3测试版本 给出测试的版本,如果是最终报告,可能要报告测试次数回归测试多少次。列出表格清单则便于知道那个子系统/子模块的测试频度,对于多次回归的子系统/子模块将引起开发者关注。 3.2覆盖分析 3.2.1需求覆盖 需求覆盖率是指经过测试的需求/功能和需求规格说明书中所有需求/功能的比值,通常情况下要达到100的目标。 需求/功能(或编号) 测试类型 是否通过 备注 ypnn/a 根据测试结果 ,按编号给出每一测试需求的通过与否结论。p表示部分通过,n/a表示不可测试或者用例不适用。实际上,需求跟踪矩阵列出了一一对应的用例情况以避免遗漏,此表作用为传达需求的测试信息以供检查和审核。 需求覆盖率计算 y项/需求总数 100 3.2.2测试覆盖 需求/功能(或编号) 用例个数 执行总数 未执行 未/漏测分析和原因 实际上,测试用例已经记载了预期结果数据,测试缺陷上说明了实测结果数据和与预期结果数据的偏差;因此没有必要对每个编号在此包含更详细的说明的缺陷记录与偏差,列表的目的仅在于更好的查看测试结果。 测试覆盖率计算 执行数/用例总数 100 3.2缺陷的统计与分析 缺陷统计主要涉及到被测系统的质量,因此,这部分成为开发人员、质量人员重点关注的部分。 3.3.1缺陷汇总 被测系统 系统测试 回归测试 总计 合计 按严重程度 严重 一般 微小 按缺陷类型 用户界面 一致性 功能 算法 接口 文档 用户界面 其他 按功能分布 功能一 功能二 功能三 功能四 功能五 功能六 功能七 最好给出缺陷的饼状图和柱状图以便直观查看。俗话说一图胜千言,图标能够使阅读者迅速获得信息,尤其是各层面管理人员没有时间去逐项阅读文章。 图例 3.3.2缺陷分析 本部分对上述缺陷和其他收集数据进行综合分析 缺陷综合分析 缺陷发现效率 缺陷总数/执行测试用时 可到具体人员得出平均指标 用例质量 缺陷总数/测试用例总数 100 缺陷密度 缺陷总数/功能点总数 缺陷密度可以得出系统各功能或各需求的缺陷分布情况,开发人员可以在此分析基础上得出那部分功能/需求缺陷最多,从而在今后开发注意避免并注意在实施时予与关注,测试经验表明,测试缺陷越多的部分,其隐藏的缺陷也越多。 测试曲线图 描绘被测系统每工作日/周缺陷数情况,得出缺陷走势和趋向 重要缺陷摘要 缺陷编号 简要描述 分析结果 备注 3.3.3残留缺陷与未解决问题 残留缺陷 编号:bug号 缺陷概要:该缺陷描述的事实 原因分析:如何引起缺陷,缺陷的后果,描述造成软件局限性和其他限制性的原因 预防和改进措施:弥补手段和长期策略 未解决问题 功能/测试类型: 测试结果:与预期结果的偏差 缺陷:具体描述 评价:对这些问题的看法,也就是这些问题如果发出去了会造成什么样的影响 part 测试结论与建议 报告到了这个部分就是一个总结了,对上述过程、缺陷分析之后该下个结论,此部分为项目经理、部门经理以及高层经理关注,请清晰扼要的下定论。 4.1测试结论 1 测试执行是否充分(可以增加对安全性、可靠性、可维护性和功能性描述) 2 对测试风险的控制措施和成效 3 测试目标是否完成 4 测试是否通过 5 是否可以进入下一阶段项目目标 4.2建议 1对系统存在问题的说明,描述测试所揭露的软件缺陷和不足,以及可能给软件实施和运行带来的影响 2可能存在的潜在缺陷和后续工作 3对缺陷修改和产品设计的建议 4对过程改进方面的建议 测试报告的内容大同小异,对于一些测试报告而言,可能将第四和第五部分合并,逐项列出测试项、缺陷、分析和建议,这种方法也比较多见,尤其在第三方评测报告中,此份报告模板仅供参考。进行可用性测试的8个指南引言:在专业的web设计圈,可用性测试会议已经成为任何重点项目的一个基本组成部分。对于关注品牌发展和产品开发的人群来来说,可用性测试是提供获取网站目标人群的反馈意见的宝贵机会,并且应该尽早开始.但是你怎样才能从这些可用性测试会议中收获最多的东西呢?1. 选择你的课题正如任何市场研究项目,结果和你需要测试的人一样,不要以你自己公司的人或者朋友以及家人作为测试人群。可以去任何一家市场研究公司或者临时代理机构和他们沟通关于这个课题的参与者。确定市场研究公司不会提供公司的名称或任何其它细节,从而避免这些东西影响参与者的判断。2.可用性测试前期就如生命中的任何事情,第一印象是最关键的,每个参与者必须很放松。记住,可用性测试会议室通常是一个极端人造的环境,并且最有益和最具信息的结果就是,我们希望他们他们的行为就像他们在家里或者办公室里一样。为如何到达可用性测试场所提供清晰的指引,必要的话,在当地会见这些参与者。不要使用诸如“可用性测试”或者“市场调查”这样的术语,因为这些会干扰参与者并使他们紧张。同样,确保参与者知道可用性测试时间需要多久,希望他们执行的任务类型是什么。在最开始的问候和欢迎酒之后,通常会签署一些法定的条款。 这些用最通俗易懂的的英文来书写是很重要的,并且要尽可能的简短。最后一件事是任何一个紧张的可用性测试项目需要的,就是给一份类似他们签署的东西的合同。对于他们来说,你想要的全部就是保证这些测试是完全保密的,并且在测试过程中,作为我们测试结果的一部分允许生成数据。所以告诉他们这些。3.可用性测试的开始在进入到关键任务之前,先让使用者熟悉环境,告诉他们网站的名称和url,并且询问他们他们所喜欢的网站的类型是什么以及他们希望从他们喜欢的网站获得什么信息或者需求,从而来获得反馈。将他们使用的任何术语和语句都做下笔记,这并不仅仅代表你正在认真地对待他们的反馈,而且对于关键的功能性和导航性的可用标签可以提供有用的东西。其次,让他们看看他们所测试的网站,在他们熟悉网站之前度量他们最初的印象。4.选择任务设定任务对于一个新网站的成功是至关重要的,例如:(某电子商务网站).购买东西.付钱.联系顾客记住,你并不是在寻找自我信息。网站的建立是有原因的-你的目标观众是不是在做你希望他们做的事情?询问用户来建议任务也是一个很好的主意,虽然这会给出他们期望和需求的另一种暗示,但是这可能建议了新的功能性和优先性。5.怎样来写任务如果你给定他们一定的情节而不是指令,人们趋向于更自然的行为。当给定他们任务时,你可能会使用这样的句子“事件a已经发生,你现在需要马上拨打公司电话-找到电话号码”。这比“找到网站的联系我们的部分”要好得多。6.提出任务一个事件只给参与者一个任务,这样会让他们更快或者改变他们到达测试的路径。如果使用者从测试外部需要进行用户输入(例如:一个email地址让他们输入密码进入网站),在给他们提出的任务的表格中给出他们这些输入项。者将给整个过程的所有元素提供有用的反馈,而不是简化网站。7.在可用性测试过程中如何执行记住正在测试的网站非常重要,不仅是你或者课题,而且包括任何你获取的有价值的反馈-确保参与者也要知道这一点。如果他们什么也做不了,要让他们确信这不是他们的错。在整个测试过程中你必须保持安静并且视而不见。你不能通过提供线索,暗示方向或他们所说或所作事情的反应来改变测试结果,年给出的所有反馈都必须中立的。不要摇头或发怒,但是可以诱惑!唯一你能说话的时间就是帮助参与者给出他们的观点或者阐明的时候给予一个响应,如果存有疑惑,那就闭嘴!让投资者参与项目,客户通常很难在测试过程中保持沉默,如果你的客户想在场,把他们安排在另一间有声音和视频连接的房间.8.可用性测试之后在完成所有的测试之后,你应当汇集尽可能多的信息,询问对网站的整体印象将使你能够判断是否已达到预期的期望,而不管参与者对于客户或者网站的观点在这个过程中是否发生了改变。经常的询问建议-这不仅证明你对他们想法的价值的认同,而且能更好的洞察网站如何才能更好的支持用户。最后,询问参与者他们所能记住的网站的结构和功能。清晰的回忆将会确认网站结构的逻辑性并帮助识别任何你可能忽略的分类标签.个人理解:1,清晰明了,为什么要做这个测试,测试的目的性,和最后得到的结果。如果是和外部参与的话请注意保密性和尽量减少由于外部的参与而对结果样本的影响.2,有关前期准备的一些细节上的准备.3,暖场和模拟用户环境等任务前期的动作.4,回应第一步,理解和设计用户参与测试的测试任务以及完成.5,在模拟和设计用户虚拟任务过程中的注意事项.6,对于虚拟任务的执行.7,过程控制,和注意事项.8,测试后期的处理.个人认为,此文章更多的是提供了一个测试的思路,而实际的状况却是千百万化的,每个网站的目的性和用户,以及前期的习惯的培养和养成都是不同的。此文的价值和意义更多的在于是提供了思路和流程性发散的建议,而不是一个模式的套路。测试能力成熟度模型在衡量软件企业的是研发和管理能力的是cmm以及后面推出的cmmi,很多公司通过cmm的各个级别的认证,为企业承接项目添加了砝码,而对于软件测试行业来说,还没有出现一个认证机构,测评一个从事软件测试项目的企业具有的能力。其实在几年前,已经推出的tmm(testing maturity model),而我个人认为使用tcmm(testing capability maturity model)更为合适,tcmm也分为五级。下面我们就看看是如何划分的,来评判一下各位同仁自己所在的公司,所在的级别。tcmm level 1:initial(初始级)测试处于一个混乱的状态,还不能把测试同调试分开,在编码完成后才进行测试工作,测试和调试交叉在一起,目的就是发现软件中的bug。测试的目的是表明程序没有错。软件产品发布后没有质量保证。缺乏测试相应的测试资源、例如专职测试人员和测试工具,测试人员没有经过培训。这种类型的公司属于这个阶段,处于这个阶段的公司在测试中缺乏成熟的测试目标,测试处于可无可有的地位。 tcmm level 2:phase definition(阶段定义级)测试同调试分开且把测试作做为编码后的一个阶段。尽管测试别看做是一个有计划的行为,但是由于测试的不成熟仅在编码后制定测试计划,因为测试完全是针对于源代码的。处于这个级别的公司测试的首要目的就是验证软件符合需求,会采用基本的测试技术和方法,由于测试处于软件生命周期的末尾环节,导致出现很多无法弥补的质量问题。另外,在需求和设计阶段产生的很多问题被引入到编码中,但基于源代码的测试导致产生了很多的问题无法解决。tcmm level 3:integration(集成级)测试不再是编码后的一个阶段,而是把测试贯穿在整个软件生命周期中。就象软件测试领域的v模型,在需求阶段软件测试就介入了,测试是建立在满足用户或客户的需求上,根据需求设计测试用例和作为测试的依据。处于这个级别的公司测试工作由具有独立的部门负责,测试部门与开发部门分开,独立开展工作。测试部门有自己的技术培训并且有测试工具辅助进行测试工作。尽管处于这个阶段的公司认识到了评审在质量控制中的重要性,但是并没有建立起有效的评审制度,还不能在软件生命周期的各个阶段实施评审制度。没有建立起质量控制和质量度量标准。 tcmm level 4:management and measurement(管理和度量级)测试是一个度量和质量控制过程。在软件生命周期中评审作为测试和软件质量控制的一部分,被测试的软件产品标准包括可靠性、可用性和可维护性等。在测试项目中设计的测试用例别保存在测试用例数据库中便于重用和回归测试。使用缺陷管理系统管理软件缺陷并划分缺陷的级别。但是处于这个阶段的公司还没有建立起缺陷预防机制,且缺乏自动地对测试中产生的数据进行收集和分析的手段。tcmm level 5:optimization(优化级)具有缺陷预防和质量控制的能力。建立tcmm4基础上的测试公司已经建立起测试规范和流程,测试是受控的和被管理的。而达到tcmm5的公司,则坚决贯彻落实测试规范和流程且不断地进行测试过程改进,在实践中运用缺陷预防和质量控制措施。整个测试过程是被以往经验所驱动的,且是可信任和可靠的。选择和评估测试工具存在一个既定的流程。测试工具支持测试用例的运行和管理,辅助设计用例和维护测试相关资料,缺陷收集和分析,为缺陷预防和质量控制提供支持。看了上面对于测试能力成熟度模型的分析,我们不难看出,目前我们国内从事软件测试的公司所处的级别,很多公司还处于2级或3级,这虽然与现在软件测试还是一个尚未成熟的行业有关,测试技术和测试工具还在发展之中,各个公司都在摸索阶段,从事测试外包的公司会好一些,这些公司为微软、ibm、motorala等公司提供测试服务,基本上是按照委托方的要求或带领下进行测试工作,而国内做软件产品和承接软件开项目的公司,虽然有的建立了独立的测试团队,制定了测试规范和测试流程或者评审制度,但是测试工作还是在摸索阶段,现在是百家争鸣、百花齐放的阶段,除了引入国外的测试理论之外,目前国内也有很多人在研究测试理论,但是还没有出来领军人物。很多公司做软件测试时,几乎大多没有现成的经验可参考,所以目前急需建立软件测试的行业标准,推动测试行业的发展,让测试有依据可查。测试与改错编程大师说:“任何一个程序,无论它多么小,总存在着错误。”初学者不相信大师的话,他问:“如果一个程序小得只执行一个简单的功能,那会怎样?”“这样的一个程序没有意义,”大师说,“但如果这样的程序存在的话,操作系统最后将失效,产生一个错误。”但初学者不满足,他问:“如果操作系统不失效,那么会怎样?”“没有不失效的操作系统,”大师说,“但如果这样的操作系统存在的话,硬件最后将失效,产生一个错误。”初学者仍不满足,再问:“如果硬件不失效,那么会怎样?”大师长叹一声道:“没有不失效的硬件。但如果这样的硬件存在的话,用户就会想让那个程序做一件不同的事,这件事也是一个错误。”没有错误的程序世间难求。james 1999错误是一种严重的程序缺陷。测试的目的是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,以期提高软件的质量。但关于测试与改错实在没有什么高明的方法值得大书特书,也不能表现出程序员的聪明才智。相反地,它们带来了更多的牢骚与痛苦。因此在教学和开发实践中,测试与改错总是被当作万般无奈的工作踢到角落里。医生可以把他的错误埋葬在地下了事,但程序员不能。我们必须要学会测试与改错,并且把测试与改错工作做好。7.1 对测试的理解测试的道理并不深奥,计算机专业人员都应该明白。但就是这么简单的事,计算机专业的博士们也未必都已经理解。有一天,一位比我聪明,编程比我快,学习能力比我强的计算机专业博士生恭恭敬敬地请我坐好,并且史无前例地削了苹果请我吃,为的是向我请教“软件工程”问题。你必定以为这位仁兄好学之极。非也,我和他同事三年来从未探讨过“软件工程”问题。只因为他明天要去应聘,参加面试,生怕被人问倒,就央我当晚为他恶补一把“软件工程”。他还特地问我“什么是白盒测试和黑盒测试?应该由谁来执行?”(有公司曾经这样面试应聘者)当我解释完测试的道理时,他叹了一口气说:“这些玩意儿我读大学十年来都没搞过,怎么能讲得出道理来。唉,就去碰碰运气吧。”我有“兔死狐悲”的感觉。我们这一群博士生三年来尽干些自欺欺人的事,到毕业时学问既不深也不博。个个意志消沉,老气横秋。长此以往,总有一天招聘会的大门前将贴出标语“博士与狗不得入内”。以下是关于测试的几个重要观念。7.1.1 测试的目的测试的目的是为了发现尽可能多的缺陷。这里缺陷是一种泛称,它可以指功能的错误,也可以指性能低下,易用性差等等。测试总是先假设程序中存在缺陷,再通过执行程序来发现并最终改正缺陷。理解测试的目的是个很重要的意识问题。如果说测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地选用一些不易暴露错误的测试示例。这样的测试是虚假的。目前高校的科技成果鉴定会普遍存在类似的虚假现象。我在读硕士时就亲身经历过这样的事。我们的项目是研究集成电路制造过程中的成品率问题。当时国内大多数工厂的集成电路成品率只有百分之几,我编写的示例程序可以将集成电路的成品率优化到98%。示例效果是如此的好,以致一位评委(某厂的总工程师)不无讽刺地说:“采用你们的成果,我们可要发大财了。”这个项目就轻易地通过了鉴定,并且不久后获得了电子工业部科技进步二等奖。这就象在考试时通过作弊取得了好成绩而被表扬。我那时尚且纯真,羞愧之余,不禁对高校科研成果的水平和真实性大失所望(现在我已不再失望,因为很少抱希望)。一个成功的测试示例在于发现了至今尚未发现的缺陷。测试并不仅是个技术问题,更是个职业道德问题。7.1.2 测试的心理要求测试主要是由人而不是由机器执行,这就不免与心理因素相关。为了测试的真实性,对测试的心理要求是“无情”。这似乎太残酷了。开发人员不能很好地测试自己的程序是因为做不到无情。而测试人员如果做到了无情却会引起开发人员的愤怒,遭人白眼。尽管已经明白了测试的目的是为了发现尽可能多的缺陷,但当测试人员真的发现了一堆缺陷时,却不可乐颠颠地跑去恭喜那个倒霉的开发者,否则会打架的。7.1.3 测试的真理测试只能证明缺陷存在,而不能证明缺陷不存在。这个真理告诉我们,对于一个复杂的系统而言,无论采取什么样的测试手段都不能证明缺陷已经不复存在。“彻底地测试”只是一种理想。在实践中,测试要考虑时间、费用等限制,不允许无休止地测试。7.1.4 测试与质量的关系测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。所以说,软件的高质量是设计出来的,而不是靠测试修补出来的。7.2 测试人员的选择测试需要开发人员参与吗?测试需要独立的测试小组吗?测试需要用户参与吗?让我们先看一看microsoft公司关于测试的经验教训,再回答上述问题。7.2.1 microsoft公司的经验教训在80年代初期,microsoft公司的许多软件产品出现了“bug”。比如,在1981年与ibm pc机一起推出的basic软件,用户在用“.1”(或者其他数字)除以10时,就会出错。在fortran软件中也存在破坏数据的“bug”。由此激起了许多采用microsoft操作系统的pc厂商的极大不满,而且很多个人用户也纷纷投诉。microsoft公司的经理们发觉很有必要引进更好的内部测试与质量控制方法。但是遭到很多程序设计师甚至一些高级经理的坚决反对,他们固执地认为在高校学生、秘书或者外界合作人士的协助下,开发人员可以自己测试产品。在1984年推出mac机的multiplan(电子表格软件)之前,microsoft曾特地请arthur anderson咨询公司进行测试。但是外界公司一般没有能力执行全面的软件测试。结果,一种相当厉害的破环数据的“bug”迫使microsoft公司为它的万多名用户免费提供更新版本,代价是每个版本10美元,一共化了20万美元,可谓损失惨重。痛定思痛后,microsoft公司的经理们得出一个结论:如果再不成立独立的测试部门,软件产品就不可能达到更高的质量标准。ibm和其它有着成功的软件开发历史的公司便是效法的榜样。但microsoft公司并不照搬ibm的经验,而是有选择地采用了一些看起来比较先进的方法,如独立的测试小组,自动测试以及为关键性的构件进行代码复查等。microsoft公司的一位开发部门主管戴夫穆尔回忆说:“我们清楚不能再让开发部门自己测试了。我们需要有一个单独的小组来设计测试,运行测试,并把测试信息反馈给开发部门。这是一个伟大的转折点。”但是有了独立的测试小组后,并不等于万事大吉了。自从microsoft公司在1984年与1986年之间扩大了测试小组后,开发人员开始“变懒”了。他们把代码扔在一边等着测试,忘了唯有开发人员自己才能阻止错误的发生、防患于未来。此时,microsoft公司历史上第二次大灾难降临了。原定于1986年月发行的mac机的word 3.0,千呼万唤方于1987年2月问世。这套软件竟然有700多处错误,有的错误可以破坏数据甚至摧毁程序。一下子就使microsoft名声扫地。公司不得不为用户免费提供升级版本,费用超过了100万美元。cusumano 19957.2.2 测试人员的分工从microsoft公司的教训中可知,公司内部对产品的测试(称为测试),需要开发人员与独立的测试小组共同参与。开发人员应该执行“白盒”测试,即测试源程序的逻辑结构以及实现细节(“白盒”是指看得见程序的内部结构)。而独立测试小组应该执行“黑盒”测试,即按照规格说明来测试程序是否符合要求(“黑盒”是指看不见程序的内部结构)。比如在测试一个模块时,“白盒”测试方法要对模块的所有代码进行单步跟踪测试。而“黑盒”测试方法只需测试模块的接口是否符合要求,它关心程序的外部表现而不是内部的实现细节。小型的软件公司可能没有条件设立独立的测试小组,也有可能测试小组人员不多而忙不过来。这时,可以让开发小组的成员相互测试对方的程序。这里要强调的是,测试不能依赖于开发人员或者测试小组中的任意一方,必须是双方共同参与。“白盒测试”必须由开发者自己执行,因为别的测试人员无法了解到程序的内部实现细节。而“黑盒测试”必须由独立的测试人员执行,因为开发者难以做到客观、公正。开发者在测试自己的程序时存在一些弊病:(1)开发者对自己的程序印象深刻,并总以为是正确的(自信是应该的)。倘若在设计时就存在理解错误,或因不良的编程习惯而流下隐患,那么他本人很难发现这类错误。(2)开发者对程序的功能、接口十分熟悉,他自己几乎不可能因为使用不当而引发错误,这与大众用户的情况不太相似,所以自己测试程序难以具备典型性。(3)程序设计有如艺术设计,开发者总是喜欢欣赏程序的成功之处,而不愿看到失败之处。让开发者去做“蓄意破坏”的测试,就象杀自己的孩子一样难以接受。即便开发者非常诚实,但“珍爱程序”的心理让他在测试时不知不觉地带入了虚假成份。软件产品正式发行前,在公司外部邀请一些用户对产品进行测试,称为测试。测试的涉及面最广,最能反映用户的真实愿望,但花费的时间最长,不好控制。一般地,软件公司与测试人员之间有一种互利的协议。即测试人员无偿地为软件公司作测试,定期递交测试报告,提出批评与建议。而软件公司将向测试人员免费赠送或者以很大的优惠价格发行软件的正式版本。7.3 测试的主要内容与常用方法有一次文学考试,问高尔基是哪国人。一考生乐极而吟:“尔基啊尔基,你若不姓高,我怎知你是中国人。”这是一种瞎猜法。如果这种方法用于软件测试,人累死也测不出什么结果来。不论是对软件的模块还是整个系统,总有共同的内容要测试,如正确性测试,容错性测试,性能与效率测试,易用性测试,文档测试等。“白盒测试”是指开发人员从程序内部对上述内容进行测试,而“黑盒测试”是指独立的测试人员从程序外部对上述内容进行测试。很多软件工程教材讲述了各种各样的测试方法并例举了不少示例pressman 1997 sommerville 1992 杨文龙 1997。本节简明地讲述常用的测试方法及其道理。7.3.1 正确性测试正确性测试又称功能测试,它检查软件的功能是否符合规格说明。由于正确性是软件最重要的质量因素,所以其测试也最重要。基本的方法是构造一些合理输入,检查是否得到期望的输出。这是一种枚举方法。倘若枚举空间是无限的,那可惨了,还不如回家种土豆有盼头。测试人员一定要设法减少枚举的次数,否则没好日子过。关键在于寻找等价区间,因为在等价区间中,只需用任意值测试一次即可。等价区间的概念可表述如下:记(a, b)是命题f(x) 的一个等价区间,在(a, b)中任意取x1进行测试。如果f (x1) 错误,那么f (x) 在整个(a, b)区间都将出错。如果f (x1) 正确,那么f (x) 在整个(a, b)区间都将正确。上述测试方法称为等价测试,来源于人们的直觉与经验,可令测试事半功倍。还有一种有效的测试方法是边界值测试。即采用定义域或者等价区间的边界值进行测试。因为程序员容易疏忽边界情况,程序也“喜欢”在边界值处出错。例如测试 的一段程序。凭直觉等价区间应是(0, 1)和(1, +)。可取x=0.5以及x=2.0进行等价测试。再取 x=0以及x=1进行边界值测试。有一些复杂的程序,我们难以凭直觉与经验找到等价区间和边界值,这时枚举测试就相当有难度。在用“白盒测试”方式进行正确性测试时,有个额外的好处:如果测试发现了错误,测试者(开发人员)马上就能修改错误。越早改正错误,付出的代价就越低。所以大多数软件公司要求程序员在写完程序时,马上执行基于单步跟踪的“白盒测试”。7.3.2 容错性测试容错性测试是检查软件在异常条件下的行为。容错性好的软件能确保系统不发生无法意料的事故。比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:(1)输入错误的数据类型,如“猴”年“马”月。(2)输入定义域之外的数值,上海人常说的“十三点”也算一种。粗暴一些的容错性测试俗称“大猩猩”测试,除了不能拳打脚踢嘴咬,什么招术都可以使出来。这里我举不出例子,因为我没有对程序粗暴过,并且这辈子也不打算学会粗暴。7.3.3 性能与效率测试性能与效率测试主要是测试软件的运行速度和对资源的利用率。有时人们关心测试的“绝对值”,如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”,如某个软件比另一个软件快多少倍。在获取测试的“绝对值”时,我们要充分考虑并记录运行环境对测试的影响。例如计算机主频,总线结构和外部设备都可能影响软件的运行速度;若与多个计算机共享资源,软件运行可能慢得像蜗牛爬行。在获取测试的“相对值”时,我们要确保被测试的几个软件运行于完全一致的环境中。硬件环境的一致性比较容易做到(用同一台计算机即可)。但软件环境的因素较多,除了操作系统,程序设计语言和编译系统对软件的性能也会产生较大的影响。如果是比较几个算法的性能,就要求编程语言和编译器也完全一致。性能与效率测试中很重要的一项是极限测试,因为很多软件系统会在极限测试中崩溃。例如,连续不停地向服务器发请求,测试服务器是否会陷入死锁状态不能自拔;给程序输入特别大的数据,看看它是否吃得消。7.3.4 易用性测试易用性测试没有一个量化的指标,主观性较强。调查表明,当用户不理解软件中的某个特性时,大多数人首先会向同事、朋友请教。要是再不起作用,就向产品支持部门打电话。只有30%的用户会查阅用户手册。cusumano 1995一般认为,如果用户不翻阅手册就能使用软件,那么表明这个软件具有较好的易用性。7.3.5 文档测试文档测试主要检查文档的正确性、完备性和可理解性。好多人甚至不知道文档是软件的一个组成部分。正确性是指不要把软件的功能和操作写错,也不允许文档内容前后矛盾。完备性是指文档不可以“虎头蛇尾”,更不许漏掉关键内容。有些学生在证明数学题时,喜欢用“显然”两字蒙混过关。文档中很多内容对开发者可能是“显然”的,但对用户而言不见得都是“显然”的。文档不可以写成散文、诗歌或者侦探、言情小说,要让大众用户看得懂,能理解。很多程序员能编写出好程序,却写不出清晰的文档。不要说自己以前语文学得差,现在已没救了,找借口不是办法。没有人天生就能写出好程序,都是练出来的。同理,若第一次写不好文档,就多写几次文档,慢慢地就会写出好文档来。我上大学前不会说普通话,不会写作文,现在我极能说会写,当个秘书或书记已绰绰有余。7.4 改 错在软件测试时如果发现了错误,必须请程序员改错,否则测试工作就白干了。改错是个大悲大喜的过程,一天之内可以让人在悲伤的低谷和喜悦的颠峰之间跌荡起伏。如果改过上万个程序错误,那么少男少女们不必经历失恋的挫折也能变得成熟起来。我从大三开始真正接受改错的磨练,已记不清楚多少次汗流浃背、湿透板凳。改不了错误时,恨不得撞墙。改了错误时,比女孩子朝我笑笑还开心。在做本科毕业设计时,一天夜里,一哥们流窜到我的实验室,哈不拢嘴地对我嚷嚷:“你知道什么叫茅塞顿开吗?”我象白痴似的摇摇头。他说:“今天我化了十几个小时没能干掉一个错误,刚才我去了厕所五分钟,一切都解决了。”他还用那没洗过的手拉我,一定要请我吃“肉夹馍”。那得意劲儿仿佛同时谈了两个女朋友。在本节,我要替程序员们总结关于改错的几点思想方法:(1)要有勇气。东北有个林场工人,工作勤奋,一人能干几个人的活。前三十年是伐树劳模,受到周总理的接见。忽有一天醒悟过来,觉得自己太对不起森林,决心补救错误。后三十年成了植树劳模,受到朱总理的接见。此大勇也。程序中的错误只有开发者自己才能找出并改掉。如果因畏惧而拖延,会让你终日心情不定,食无味,睡不香。所以长痛不如短痛,要集中精力对付错误。(2)不可蛮干。都说急中生智,我不信。我认为大多数人着急了就会蛮干,早把“智”丢到脑后。不仅人如此,动物也如此。我们经常看到,蜜蜂或者苍蝇想从玻璃窗中飞出,它们会顶着玻璃折腾几个小时,却不晓得从旁边轻轻松松地飞走。我原以为蜜蜂和苍蝇长得太小,视野有限,以致看不见近在咫尺的逃生之窗,所以只好蛮干。可是有一天夜里,有只麻雀飞进我的房间,它的逃生方式竟然与蜜蜂一模一样。我用灯光照着那扇打开的窗户为其引路,并向它打手势,对它说话,均无济于事。它是到天亮后才飞走的,这一宿我俩都没息好。(3)找出错误的根源。有人问阿凡提:“我肚子痛,应该用什么药?”阿凡提说:“应该用眼药水,因为你眼睛不好,吃了脏东西才肚子痛。”我们应该运用归纳、推理等方法尽早确定错误的根源。(4)在改错之后一定要马上进行重新测试,以免引入新的错误。有人在马路上捡到钱包后得意忘形,不料自己却被汽车撞倒。改了一个程序错误固然是喜事,但要防止乐极生悲。更加严格的要求是:不论原有程序是否绝对正确,只要对此程序作过改动(哪怕是微不足道的),都要进行重新测试。7.5 小 结优秀的程序员敢于声称自己的代码没有错误,这种自信让人羡慕不已。一个错误自身也许很微小,但是程序存在错误这件事很严重。能否做好测试与改错工作,思想认识和办事态度是最关键的。程序员应该把测试当成份内之事,不要依赖于外界的“黑盒测试”。“黑盒测试”就象通过提问题来判断一个人是否是个疯子,但无法知道他为什么成了疯子。让程序员对所有的代码执行单步跟踪测试听起来很费时间,但习惯了你就感觉不到有什么不方便。单步跟踪测试将使你以后的日子更轻松。程序出了错误一定要改错,但是“编写优质无错”的程序才是根本的解决之道。在此,我竭力建议大家阅读steve maguire著的writing clean code : microsoft techniques for developing bug-free c programs(有中文译本,maguire 1993)。我深受此书的教诲,获益非浅。软件测试度量的切身体会控制限36的制定遵守是切比雪夫不等式,具体见笔记和书。有了理论基础。有一个想法,x的平均值不按照树上的求发,完全按照概率的算法,算出来的结果式不是更科学。即,按照概率书上直接求数学期望和方差的方法。不知道能不能算先进。理论依据到是有的,就是也还是大数定理。度量中遇到的问题:1. 收集测试用例文档页数不科学。因为在测试小组编写测试用例是在excel下面,基本上一个用例的编写占用一格。因此,考察测试文档的有效性跟测试用例的有效性雷同,所以文档的数量度量不再考虑。开题报告中的问题:1.偏题。论文研究的主要目的是促进研发。方法,找测试、开发、产品质量的关系。从测试度量角度,度量测试,度量开发,度量产品质量。实施度量活动的一些经验教训:1.必须获得高层领导的支持,这是实施度量计划的基础2.成立专门的数据分析小组,成立可以由组织层的数据分析人员和项目经理构成3.在度量开展之前必须定义度量目标4.3级中,由于大量文档的使用,软件工程室个人的效率会有比较大的下降。因此,充分利用工具来减轻手工劳动强度将有利于软件开发过程的运用于推广。5.度量系统的能力,是和组织软件过程成熟度关系密切。因此,在软件过程还不成熟、混乱的情况下,需要制定简单可行的度量计划。随着软件过程的逐步成熟,再根据需要逐步提高质量系统的能力。6.长期来看,必须把过程管理建立在数据的基础上,即使对于cmm2级来说,尽早的积累数据,也是非常有用的。一点想法,可以将度量分析出来的稳定可控的数据作为评测工作的标准。实际操作步骤1.确定当前的评审数据值在控制图上的位置。2.如果缺陷密度出于ucl和lcl之内,这就意味着被评审对象的质量可以被接受,修改后可以进入下游活动3.如果缺陷密度高于ucl,这就意味着被评审的对象的质量不能被接受,采取的措施是修改后重新评审4.如果缺陷密度低于lcl,这就意味着被评审对象中发现了过少的缺陷,这有两种可能:(1)评审效率太低,需要重新评审;(2)被评审的质量可能由于某种原因,特别高,这种情况下就不必再评审了。在第四中情况下,评审小组需要结合自己的经验来判断是否需要重新评审。在执行过程改进之后,比如开展同行评审主席培训,可以使用一个过程改进因子,比如开展这项培训可以提高同行评审对象质量20。这样,就可以获得新的过程能力:均值(新)均值(旧)(120)ucl(新)ucl(旧)(120)lcl(新)lcl(旧)(120)然后,将培训后开展的培训数据点,打在新的控制图上,观察点的位置。如果大量点落在均值之上,说明培训的效果没有达到预计的提高20的目标,即高估了培训的效果。这时就要根据新的数据来重新获得过程能力。如果大量点落在均值之下,说明培训的效果达到并超过预计的提高20的目标,即低估了培训效果,这时也要根据新的数据点来重新获得过程能力。总之,只要新的数据点出现明显异常或者某种模态,就说明过程处于失去控制状态,需要做进一步的调查来了解实事和真相。软件过程模型和标准1.目标/问题/度量模型gqm(goal/question/metric)2.统计过程控制模型spc(statistical process control)3.iso/iec 15939 是一个有关软件度量过程的国际标准4.实用软件度量模型psm(practical software measurement)是对iso/iec 15939的具体实现。其描述了2个模型:度量过程模型mpm(measurement process model)和度量信息模型mim(measurement information model),模型基于plan-do-check-act管理方式软件度量概念从1968年被正式。软件度量的实质是将软件的属性数量化。软件度量的主要建模方法:其中统计方法类中主要是回归分析(以多元线性回归较常用)basili所提出的目标/问题/度量(goal/question/metrics,g/q/m)模型,针对性强灵活
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间管理课件案例
- 小学电子积木课件
- 天猫客服售前培训
- 珠海LP周报2025版丨千亿LP参与的教育培训合同披露
- 2025版南京市二手房买卖合同附物业管理及房屋验收条款
- 2025版个人教育培训机构合伙经营协议范本
- 二零二五年园林绿化苗木种植项目合作协议书
- 二零二五年度厨具租赁服务合同
- 二零二五版数据中心布线项目工程合同
- 高三试卷:四川省雅安市2024-2025学年高三上学期11月零诊试题数学试卷
- 二手车寄售合同
- YS/T 285-2012铝电解用预焙阳极
- 皮肤、伤口、造口护理(临床护理实践指南)
- 防范化解露天矿山安全生产风险
- 新员工安全培训试题2
- 2022年中原出版传媒投资控股集团有限公司招聘笔试题库及答案解析
- TSG 81-2022 场(厂)内专用机动车辆安全技术规程
- 水利水电工程建筑物技术讲座课件
- 代课教师聘用合同(5篇)
- 光学课程设计望远镜系统结构参数设计说明
- 2022年软件项目实施方案书模板(投标版)(完整版)
评论
0/150
提交评论