基于模型的测试综述 2016年1月
摘要 面向对象软件开发应用越来越广泛,自动化测试也随之被程序员认可和接受,随之而来的就是基于UML的软件开发技术的大范围普及和基于模型的软件测试技术的普遍应用。基于模型的测试是软件编码阶段的主要测试方法之一,具有测试效率高、排除逻辑复杂故障测试效果好等特点。本文描述了基于模型的测试的模型以及建模标准,并介绍基于模型的测试的基本过程以及支持工具,同时通过七个维度对基于模型的测试方法进行描述。最后分析基于模型的测试的优缺点并列举了应用案例。 关键词:软件测试,基于模型的测试,软件模型,测试工具
目录 摘要................................................ I 1 引言 (2) 2 基于模型的测试、模型以及建模标准 (2) 2.1基于模型的测试 (2) 2.2基于模型的测试的模型 (3) 2.3建模标准 (4) 3 基于模型的测试的基本过程及支持工具 (5) 3.1基于模型的测试的基本过程 (5) 3.2支持工具 (6) 4 分类 (7) 4.1 模型主体 (7) 4.2 模型冗余程度 (7) 4.3 模型特征 (7) 4.4 模型表示法 (7) 4.5 测试用例选择标准 (8) 4.6 测试用例生成技术 (8) 4.7 联机、脱机测试用例生成 (9) 5 基于模型的测试的工具Spec Explorer (9) 5.1 Spec Explorer (9) 5.2 连接测试用例和待测系统 (9) 5.3 静态模型和实例模型 (11) 6 基于模型的测试的优缺点 (11) 参考文献 (13)
软件评测基础知识 软件测试基本概念 软件质量与软件测试:软件测试是软件质量保证工作的一个重要环节。软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作中的一个重要环节。质量保证(QA)的工作是通过预防、检查与改进来保证软件的质量,它所关注的是软件质量的检查和测量。软件测试所关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。 软件测试定义:软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行的查错(包括代码执行活动与人工活动)。软件测试是为了发现错误而执行程序的过程。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序的错误。是在软件投入运行前,对软件需求分析、软件设计规格说明和软件编码的最终复审,是软件质量保证的关键步骤。 软件测试目的:(1)测试是一个为了寻找错误而运行程序的过程;(2)一个好的测试用例是指很可能找到迄今为止未发现的错误的用例;(3)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。 软件测试的目标是能够以耗费最少时间与最小工作量找出软件系统中潜在的各种错误与缺陷。 测试只能证明程序中错误的存在,但不能证明程序中没有错误。 软件测试原则:(1)尽早地并不断地进行软件测试;(2)程序员或程序设计机构应避免测试自己设计的程序;(3)测试前应当设定合理的测试用例;(4)测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据;(5)在对程序修改之后要进行回归测试;(6)充分注意测试中的群集现象;(7)妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为软件的维护提供方便;(8)应当对每一个测试结果做全面检查;(9)严格执行测试计划,排除测试的随意性。 软件测试对象:软件的测试不仅仅是程序的测试,软件的测试应贯穿于整个软件生命同期中。在软件定义阶段产生的可行性报告、项目实施计划、软件需求说明书或系统功能说明书,在软件开发阶段产生的概要测试说明书、详细设计说明书,以及源程序等都是软件测试的对象。 软件测试过程模型:V模型、W模型、H模型。 软件测试模型的使用:在实际软件测试的实施过程中,应灵活地运用各种模型的优点,通常可以在W 模型的框架下,运用H模型的思想进行独立的测试。当有变更发生时,按X模型和前置模型的思想进行处理。同时,将测试和开发紧密结合,寻找恰当的就绪点开始测试,并反复进行迭代测试,以达到按期完成预定的目标。 软件问题分类:软件错误、软件缺陷、软件故障、软件失效。 软件测试类型: 按开发阶段分:单元测试、集成测试、确认测试(有效性测试)、系统测试 确认测试、验收测试 按测试实施组织分:开发方测试(验证测试或alpha测试)、用户测试(beta)、第三方测试(独立测试) 按测试方式分:动态测试、静态测试 按测试技术分:白盒测试、黑盒测试、灰盒测试 软件测试过程:用黑盒法设计基本的测试方案,再利用白盒法补充一些必要的测试方案。可以用以下策略结合各种方法: (1)在任何情况下都应该使用边界值分析的方法; (2)必要时用等价划分法补充测试方案; (3)必要时用错误推测法补充测试方案; (4)如果在程序的功能说明中含有输入条件的组合,最好在一开始就用因果图法,然后再按以上(1)、(2)、(3)步进行。 (5)对照程序逻辑,检查已设计出的设计方案。可以根据对程序可靠性的要求采用不同的逻辑覆盖标
软件功能性测试的21种故障模型 测试的目标是要发现错误,因此在编写测试用例的时候也要遵循这个目标,尽量在软件的最薄弱环节多编写测试用例。虽然测试时有很多单个输入变量、多个输入变量的组合,但优秀的软件测试人员不会依靠运气,他们有着丰富的经验和直觉,可以从中找到哪些是需要进行测试的,哪些不需要测试,哪些操作可能会引起软件失效。把这些测试人员的经验和直觉尽量归纳和固化,就形成了一些故障模型。故障模型指明了故障是如何以及为什么会在软件执行时引起软件失效。在测试过程中,我们可以按照这些故障模型所提供的缺陷类型和寻找该类缺陷的方法找到尽量多的缺陷。 1 输入非法数据 1.1缺陷产生原因 开发人员通常用以下3种技术来处理非法输入: ? 防止不正确的输入进入被测软件。过滤掉不正确的输入,只允许合法输入通过界面。? 输入了不正确的数据后,软件提示错误信息,拒绝不正确的输入。 ? 允许不正确的输入进入系统并进行处理,软件失效时调用异常处理程序,显示一些错误信息。 可见开发人员除了编写主要的功能代码外,还必须编写对非法输入的检查代码,这些代码经常被遗忘,或者编写完这部分代码后,开发人员很少认真检查,导致处理非法输入经常出错。 1.2如何发现这类问题 进行测试时从输入值的属性出发,一般考虑以下三点: ? 输入类型:键入无效的类型常会产生错误信息。 ? 输入长度:对于字符型,键入太多的字符常会引出错误信息。边界值:输入边界值或超过边界值的数据。 1.3测试方法小结 ? 应用场合:GUI的输入。 ? 测试方法:分别从输入数据的类型、长度、边界值等方面进行考虑。 ? 测试信息检查: l 错误信息和错误要一致。 l 错误信息的内容为空,用户不知道为什么出错。 l 显示的错误信息是给开发人员调试使用的,例如“Error 5-unknown data”,开发人员可以通过该信息很容易找到错误类型,但是用户根本不明白,不知道做错了什么。 ? 测试知识储备:牢记各基本数据类型的边界值。
软件测试过程模型 发布时间: 2010-7-27 11:02 作者: 未知来源: 51Testing软件测试网采编 字体: 小中大| 上一篇下一篇| 打印| 我要投稿| 每周一问,答贴有奖 目前主流的开发模型主要有:瀑布模型、原型模型、螺旋模型、增量模型、渐进模型、快速软件开发(RAD)以及Rational统一过程(RUP)等,这些模型对于软件开发过程具有很好的指导作用,但是,非常遗憾的是,在这些过程方法中,并没有充分强调测试的价值,也没有给测试以足够的重视,利用这些模型无法更好地指导测试实践。软件测试是与软件开发紧密相关的一系列有计划的系统性的活动,显然软件测试也需要测试模型去指导实践。下面对主要的模型做一些简单的介绍。 V模型 V模型是最具有代表意义的测试模型。在传统的开发模型中,比如瀑布模型,人们通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成后的一个阶段,尽管有时测试工作会占用整个项目周期的一半的时间,但是有人仍然认为测试只是一个收尾工作,而不是主要过程。V模型的推出就是对此种认识的改进。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系,如模型图中所示,图中的箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。 V模型的软件测试策略既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。 V模型指出,单元和集成测试是验证程序设计,开发人员和测试组应检测程序的执行是否满足软件设计的要求;系统测试应当验证系统设计,检测系统功能、性能的质量特性是否达到系统设计的指标;由测试人员和用户进行软件的确认测试和验收测试,追溯软件需求说明书进行测试,以确定软件的实现是否满
一、选择题: 1.模块的耦合度描述了___D___。 A.模块内各种元素结合的程度B.模块内多个功能之间的接口 C.模块之间公共数据的数量D.模块之间相互关联的程度 2.内聚是一种指标,表示一个模块_B_____。 A.代码优化的程度B.代码功能的集中程度 C.完成任务时及时程度D.为了与其他模块连接所要完成的工作量3.在UNIX操作系统中,把输入/输出设备看作是__D____。 A.普通文件B.目录文件C.索引文件D.特殊文件4.“
基于模型的分时段软件测试工具TPT TPT是针对嵌入式系统的基于模型的测试工具,特别是针对控制系统的软件功能测试。TPT支持所有的测试过程:包括测试建模、测试执行、测试评估以及测试报告的生成。 TPT软件由于首创地使用分时段测试(Time Partition Testing),使得控制系统的软件测试技术得以极大提升;同时由于TPT软件支持众多业内主流的工具平台和测试环境,能够更好地利用客户已有的投资,实现各种异构环境下的自动化测试;针对MATLAB/Simulink/Stateflow以及TargetLink,TPT提供了全方位的支持进行模型测试。 PikeTec公司是全球知名的基于模型的嵌入式系统测试工具TPT的软件供应商,总部位于德国柏林,其创始人均在戴姆勒公司拥有十多年的嵌入式软件开发经验。TPT产品曾被评为2005年戴姆勒最佳创新软件,并在戴姆勒、大众、奥迪、保时捷、通用等汽车整车厂及多家零部件企业(如博世、大陆、海拉)中得到广泛应用,如戴姆勒的多个车型的混合动力车的动力总成、电池管理控制器的测试,博世的汽油机和柴油机控制系统测试等。(请登录PikeTec的TPT产品了解更多产品详情。) 北汇信息作为PikeTec的中国合作伙伴,将帮助中国客户借助TPT提升嵌入式控制系统的开发效率。 分时段测试方法 分时段测试(Time Partition Testing)是一种采用分时段对软件进行测试和验证的测试方法,主要被用于嵌入式系统中基于模型的模块测试、集成测试、系统测试和回归测试。 通常软件测试的一种分类是静态测试和动态测试。静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。例如QAC C/C++、Logiscope等软件都属于静态测试工具。
软件测试的目的:第一是确认软件的质量,其一方面是确认软件做了你所期望做的事情,另一方面是确认软件以正确的方式来做了这个事情。 第二是提供信息,比如提供给开发人员或程序经理的回馈信息,为风险评估所准备的信息。 第三软件测试不仅是在测试软件软件产品本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此,软件测试的第三个目的是保证整个软件开发过程是高质量的。 测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具,这些产品主要是MercuryInteractive(MI)、Segue、IBM Rational、Compuware和Empirix等公司的产品,而MI公司的产品占了主流。白盒测试工具白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具:直接对代码进行分析,不需要运行代码,也不需要对代码编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态测试工具的代表有:Telelogic公司的Logiscope 软件;PR公司的PRQA软件。动态测试工具:动态测试工具与静态
测试工具不同,动态测试工具的一般采用"插桩"的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。其与静态测试工具最大的不同就是动态测试工具要求被测系统实际运行。动态测试工具的代表有:Compuware公司的DevPartner软件;Rational公司的Purify系列等。黑盒测试工具黑盒测试工具适用于黑盒测试的场合,黑盒测试工具包括功能测试工具和性能测试工具。黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。黑盒测试工具的代表有:Rational公司的TeamTest、Robot;Compuware公司的QACenter。性能测试工具专用于性能测试的工具包括有:Radview公司的WebLoad;Microsoft公司的WebStress等工具;针对数据库测试的TestBytes;对应用性能进行优化的EcoScope等工具。MercuryInteractive的LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。测试管理工具测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。
黑盒测试主要是为了发现以下错误: 1、是否有不正确或遗漏的功能? 2、在接口上,输入能否正确地接受?能否输出正确的结果? 3、是否有数据结构错误或外部信息(例如数据文件)访问错误? 4、性能上是否满足要求? 5、是否有初始化或终止性错误? 黑盒测试用例方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交实验设计法、功能图法。 等价类划分法:把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例,每一类的代表性数据在测试的作用等价于这一类中的其他值。 边界值分析法:对输入或输出的边界值进行测试,通常边界值分析法是作为等价类划分的补充,其测试用例来自等价类的边界。 错误分析法:基于经验和直觉推测程序中可能存在的错误,从而对有针对性的设计测试用例的方法。 因果图法:利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。 判定表驱动法:判定表是分析和表达多逻辑条件下执行不同操作的。 正交实验法:从大量的数据中挑选适量的,有代表性的点,从而合理地安排实验的一种科学测试方法。 功能图法:由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来描述,一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能。 折叠LR函数: lr_start_transaction 为性能分析标记事务的开始 lr_end_transaction 为性能分析标记事务的结束 lr_rendezvous 在Vuser 脚本中设置集合点 lr_think_time 暂停Vuser 脚本中命令之间的执行 lr_end_sub_transaction 标记子事务的结束以便进行性能分析
目前主流的测试工具主要有以下5类: 1.负载压力测试工具 这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系统行为和性能的自动化测试工具。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 2.功能测试工具 通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够到预期的功能并正常运行。 3.白盒测试工具 白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。动态测试工具一般采用“插桩”的方式,在代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。它与静态测试工具最大的不同是,动态测试工具要求被测系统实际运行。 4.测试管理工具 一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT 人员通过一个中央数据仓库,在不同地方就能交互信息。 5.测试辅助工具 这些工具本身并不执行测试,例如它们可以生成测试数据,为测试提供数据准备。 参加完“2005年IT测试技术研讨会”以后,谢常君对软件测试和网络测试的主流厂商和产品有了更全面的了解。不过最让他高兴的是结识了一批企业的代表和专家。 一个阳光明媚的下午,谢常君约上某位专家在一个咖啡馆会面。“非常谢谢你能前来,我这次约你出来是希望你可以给我一些专业的建议。”谢常君说,“我们公司近期可能需要采购一些测试工具,但是我们对此了解不多,希望你可以帮我们。”接下来,这位专家就首先从测试工具的分类开始讲起…… IT测试工具集锦 Radview TestView系列 Radview公司的TestView系列Web性能测试工具和WebLoad Analyzer性能分析工具,旨在测试Web应用和Web服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻击性,并且能够在测试的同时分析问题原因和定位故障点。 整套Web性能测试和分析工具包含两个相对独立的子系统:Web性能测试子系统Web 性能分析子系统。其中Web性能测试子系统包含3个模块:TestView Manager、WebFT以及WebLoad。Web性能分析子系统只有WebLoad Analyzer。 左图表达了在一个完整的测试系统中,TestView Manager用来定制、管理各种测试活动;WebLoad模拟多个用户行为进行测试,所测试的是系统性能,容量,稳定性和抗攻击性;
软件测试基础教程 测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 一、测试的分类: 从测试方法的角度分为: (1)手工测试:不使用任何测试工具,根据事先设计好的测试用例来运行系统,测试各功能模块。 (2)自动化测试:利用测试工具,通过编写测试脚本和输入测试数据,自动运行测试程序。目前最常用的自动化测试工具是基于GUI的自动化测试工具,基本原理都是录制、回放技术。 > 从整体的角度分为: (1)单元测试:是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。一般包括逻辑检查、结构检查、接口检查、出错处理、代码注释、输入校验、边界值检查。单元测试的依据是系统的详细设计;一般由项目组开发人员自己 完成。 (2)集成测试:在单元测试的基础上,将所有模块按照设计要求组装进行测试。一般包括逻辑关系检查、数据关系检查、业务关系检查、模块间接口检查、外部接口检查。 (3)系统测试:系统测试是在所有单元、集成测试后,对系统的功能及性能的总体测试。 (4)确认测试:模拟用户运行的业务环境,运用黑盒测试方法,验证软件系统是否满足用户需求或软件需求说明书中指明的软件特性(功能、非功能)上的。 从测试原理上分为: . (1)白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 (2)黑盒测试:是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时, 把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它 只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。 黑盒测试方法主要有等价类划分、边界值分析、因—果图、错误推测法。 A、等价类划分:是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子 集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试 用例设计方法。 B、边界值分析:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是 发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错 误。 C、错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的 方法。错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特 殊情况,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的 错误。以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据 和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错 误的情况。可选择这些情况下的例子作为测试用例。
软件测试流程方案 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT
软件测试流程实施方案1.流程的意义 从一个软件企业的长远发展来看,如果要提高产品的质量首先应当从流程抓起,规范软件产品的开发过程。这是一个软件企业从小作坊的生产方式向集成化规范化的大公司迈进的必经之路,也是从根本上解决质量问题,提高工作效率的一个关键手段。 软件产品的开发同其它产品(如汽车)的生产有着共同特性,即需要按一定的过程来进行生产。在工业界,流水线生产方式被证明是一种高效的,且能够比较稳定的保证产品质量的一种方式。通过这种方式,不同的人员被安排在流程的不同位置,最终为着一个目标共同努力,这样可以防止人员工作间的内耗,极大的提供工作效率。并且由于其过程来源于成功的实例,因此其最终的产品质量能够满足过程所设定的范围。软件工程在软件的发展过程中吸取了这个经验并把它应用到了软件开发中,这就形成了软件工程过程,简单的说就是开发流程。 不管我们做哪件事情,都有一个循序渐进的过程,从计划到策略到实现。软件流程就是按照这种思维来定义我们的开发过程,它根据不同的产品特点和以往的成功经验,定义了从需求到最终产品交付的一整套流程。流程告诉我们该怎么一步一步去实现产品,可能会有那些风险,如何去避免风险等等。由于流程来源于成功的经验,因此,按照流程进行开发可以使得我们少走弯路,并有效的提高产品质量,提高用户的满意度。 目前流行的流程方法有很多种,如瀑布模型、螺旋模型、RUP模型、IPD流程等,不同的过程模型适合于不同类型的项目。 2.测试工作流程图 测试工作总体流程图
[模拟] 软件测试过程和管理(二) 选择题 第1题: 下列哪个不是测试环境的组成要素______。 A.软、硬件 B.技术文档 C.测试工具 D.网络环境 参考答案:B 第2题: 以下活动中,不属于测试计划的内容是______。 A.为测试各项活动制定一个实现可行的综合的计划 B.确定测试过程中每个测试阶段的测试完成标准 C.识别测试活动中各种风险,并给出风险应对措施 D.分析测试需求,并制定测试方案 参考答案:D 第3题: 下列有关测试过程抽象模型的描述中正确的是______。 A.V模型指出,软件测试要尽早准备,尽早执行,只要某个测试达到了准备就绪点,测试执行活动就可开展 B.W模型强调,测试伴随着整个软件开发周期同步进行,而且测试的对象不仅仅是程序,需求、设计也同样需要测试 C.H模型指出,单元测试和集成测试应检测程序的执行是否满足软件设计的要求 D.X模型提出针对完整的程序进行集成的编码和测试 参考答案:B 第4题: 下列哪个选项不属于测试计划要达到的目标______。 A.为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的
对象、范围、方法、进度和预期结果 B.为项目实施建立一个组织模型,并定义测试项目中每个角色的责任和工作内容 C.为测试执行活动设计测试方案,编制测试用例 D.确定测试需要的时间和资源,以保证其可获得性和有效性 参考答案:C 第5题: 下列有关软件测试设计的说法中,正确的是______。 A.测试方案应考虑是否可行、是否有效和是否能够达到预期的测试目标 B.基于判定表的测试用例设计方法是白盒测试用例设计方法 C.测试方案设计中可以忽略软件系统的实际使用环境 D.测试开发不是测试用例设计的工作内容 参考答案:A 第6题: 下列有关测试项目结束与定稿测试报告的说法中,正确的是______。 A.测试执行完成,测试人员向测试负责人提交测试报告后,测试项目就可以结束了 B.对当前软件产品存在的缺陷进行逐个分析,认定剩余缺陷对产品质量无重大影响后,即可定稿测试报告 C.审查测试全过程,检查测试计划和内容无遗漏后,即可定稿测试报告 D.当所有测试计划内容完成,测试覆盖率达到要求及产品质量达到定义的标准,即可定稿测试报告 参考答案:D 第7题: 下列哪项工作与软件缺陷管理和追踪无关______。 A.对缺陷应该包含的信息条目、状态分类等进行完善设计 B.通过软件系统自动发送通知给相关开发和测试人员,使缺陷得到及时处理 C.对测试用例的执行结果进行记录和追踪 D.通过一些历史曲线和统计曲线来分析和预测未来的缺陷发展情况 参考答案:C
功能测试中故障模型的建立 1. 概述 故障模型是软件测试的基础,也是一个判断测试方法是否成熟的重要标志。在测试的过程中,要确保每一个目标状态都被测试,那么测试必须是系统的;为了最终定位软件缺陷,所以测试必须是集中的;测试需要使用大量的测试用例和重复性测试,因此测试必须是自动的。若要满足上述三个测试条件,我们必须建立故障模型。 故障模型是将测试人员的经验和直觉尽量归纳和固化,使得可以重复使用。领测国际通过理解软件在做什么,来猜测可能出错的地方,并应用故障模型有目的地使它暴露缺陷。它具有一定的形式和足够的信息对错误进行预测,因此对测试人员来说,构造一个准确的故障模型,是选择测试策略、设计测试用例和测试执行的基础。在建立故障模型时,希望故障模型在框架上是通用的,但是建立具体的故障模型时一定要针对具体的软件类型、应用环境、甚至开发工具才有意义。一个成熟的故障模型必须具备下列条件: 1)该模型是符合实际的:大多数系统中存在的故障都可以用该模型来表示; 2)模型下的故障个数是可容忍的:模型下的故障个数一般和系统的规模是成线性关系; 3)模型下的故障是可以测试的:存在一个算法,利用该算法可以检测模型中的每一个故障。 本文将从软件的功能和技术特点出发,如软件的输入、输出、数据以及处理等,分析在软件功能测试过程中,我们通常应建立的故障模型及按照故障模型所提供的缺陷类型寻找尽量多的缺陷。
2. 输入型故障模型 主要是对用户的各种输入进行建模,因为用户的输入是无法预期的,可能的组合状态也是千变万化。软件功能除了能让正确的输入得到正确的输出之外,还必须对非法和不合逻辑的输入进行处理,防止因数据异常造成不可挽回的错误。典型的建模方法有: 1)使用非法数据:从输入数据的类型、长度、边界值等方面考虑,测试软件是否允许不正确的输入进入系统并进行处理,是否有错误处理代码,代码是否正确。 2)使用默认值输入:检测软件中所使用的变量是否初始化,是否将非法数据默认为合法边界内的某个合理值。 3)使用特殊字:检测软件是否正确处理了特殊字符和数据类型。 4)使用使缓冲区溢出的合法输入:输入超过允许的最大长度的数据,检测软件是否检查字符串/缓冲区的边界。 5)使用可能产生错误的合法输入组合:测试多个输入值的组合,确认这些值的组合是否会互相影响而引起软件失效。 6)重复输入相同的合法输入序列:检测软件是否考虑了循环处理的边界。 3. 输出型故障模型 软件的输出通常是最直观也是用户最关注的,输出型故障模型就是从软件输出角度出发,分析造成故障的可能原因。例如通过一个正确的输入在不同情况下产生不同输出的情况可以对输入和输出的关系进行进一步验证;可采用列举等方法,强制软件产生不符合业务背景知识的无效的输出,从而进行处理,规避不必要的错误;强制修改输出的属性、
软件测试过程管理-考题-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
一、软件测试过程管理 1. 关于软件测试模型,描述正确的是(C) A. V模型测试的对象就是程序本身,测试与开发可以同一阶段进行 B. W模型测试的对象是程序,需求、设计等,可以支持迭代的开发模型 C. H模型软件测试过程活动完全独立,贯穿产品整个生命周期,与其他流程并发地进行。 D. X模型是事先计划再进行测试。 2. 制定测试计划的步骤:(D) A. 确定项目管理机制预计测试工作量测试计划评审 B. 确定测试范围确定测试策略确定测试标准、预计测试工作量 C. 确定测试构架确定项目管理机制预计测试工作量测试计划评审 D. 确定测试范围确定测试策略确定测试标准确定测试构架确定项目管理机制预计测试工作量测试计划评审 3、编写测试计划的目的是:(ABC)(多选) A、使测试工作顺利进行 B、使项目参与人员沟通更舒畅 C、使测试工作更加系统化 D、软件工程以及软件过程的需要 E、软件过程规范化的要求 F、控制软件质量 4、某公司采用的软件开发过程通过了CMM2认证,表明该公司(C)。 A. 开发项目成效不稳定,管理混乱 B. 对软件过程和产品质量建立了定量的质量目标 C. 建立了基本的项目级管理制度和规程,可对项目的成本、进度进行跟踪和控制 D. 可集中精力采用新技术新方法,优化软件过程 5. (B )可以作为软件测试结束的标志。 A.使用了特定的测试用例B.错误强度曲线下降到预定的水平C.查出了预定数目的错误D.按照测试计划中所规定的时间进行了测试 6.软件测试计划的内容应包括(D)。 A. 测试目的、背景 B. 被测软件的功能、输入和输出 C. 测试内容和评价标准 D. 以上全部 7.下面不属于软件测试过程中的输入类的是(B)。 A. 软件配置 B. 测试用例 C. 测试配置 D. 测试工具 8. 下列不属于测试需求分析阶段的输入的是(A)。 A. 软件测试的方法与规范 B. 软件需求规格说明 C. 软件测试计划 D.软件设计说明
测试管理工具大全 测试管理工具大全软件测试类工具现列举如下,并非百分百全面,仅供测试同行参考: 测试管理工具 厂商工具名称 * HP Quality Center (TestDirector) 备注:Mercury公司原主打产品TestDirector于2003年开始迁移到J2EE 平台,重构了整个软件的开发,因融入了Mercury BTO理念,继而重新命名为Quality Center,它是Mercury BAC平台的重要组成部分。2006年后是HP Quality Center。时至今日,仍然为业内最强大、使用最广泛的测试管理工具之一,可与QTP、Winrunner、Loadrunner等集成,也与MS Office、IBM Rational等产品集成。 * IBM Rational TestManager 备注:原Rational产品中专业对软件测试资源进行管理的强大工具。包括测试用例管理、测试执行管理、测试脚本和报告管理等。另外可与Robot结合做性能测试,更可以和RFT、RFP、CC、CQ等集成使用。 * IBM Rational Quality Manager 备注:IBM2008年推出的新产品,是完全可以与HP Quality Center媲美的软件测试管理工具。包括测试计划、工作流、任务跟踪和统计分析等功能。 * Micro Focus QADirector 备注:原Compuware公司产品,是业内强大的软件测试资源和过程管理工具,虽然市场不大,但是可以和IBM Rational TestManager比较,与原Compuware 产品集成紧密。 * Micro Focus SilkCentral Test Manager 备注:原Segue产品,被Borland收购后又被Micro Focus收购。是业内强大的软件测试资源和过程管理工具,可以和IBM Rational TestManager比较,与原Segue产品集成紧密。 * Parasoft ConcerTo
软件测试必备基础知识 一、基本概念 软件测试 在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成 过程的文档、数据以及程序进行测试 软件测试的目的 发现程序中存在的错误发现程序中存在的错误,而不是证明程序无错误。一个好的测试用例在于它能发现至今尚未发现的错误。一个成功的测试则是发现了至今未发现的错误。开始我们认为做测试无非是为了证明我们编的程序是无错误的,那是大错特错了。因为bug会因时间不同,条件不同而出现。永远无法证明我们的程序是绝对正确的。 为反馈信息做准备为开发者或软件项目经理提供反馈信息,以及为风险评估所准备的信息 软件测试的原则 所有的测试都应追溯到用户需求。因为软件的目的是使用户完成预定的任务,满足其 需求,而软件测试揭示软件的缺陷和错误,一旦修正这些错误就能更好地满足用户需求。 应尽早地和不断地进行软件测试。由于软件的复杂性和抽象性,在软件生命周期各阶 段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把 它贯穿到软件开发的各个阶段去。在需求分析和设计阶段就应开始进行测试工作,编写相 应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽 早发现和预防错误,杜绝某些缺陷和错误,提高软件质量,测试工作进行得越早,越有利 于提高软件的质量,这是预防性测试的基本原则。 在有限的时间和资源下进行完全测试,找出软件所有的错误和缺陷是不可能的,软件 测试不能无限进行下去,应适时终止。因为,测试输入量大、输出结果多、路径组合太多,用有限的资源来达到完全测试是不现实的。
测试只能证明软件存在错误而不能证明软件没有错误。测试是无法显示潜在的错误和缺陷,继续进一步错误可能还会找到其它错误和缺陷。 充分关注测试中的集群现象。在测试的程序段中,若发现的错误数目多,则残存在其中的错误也越多,因此应当花较多的时间和代价测试那些具有更多错误数目的程序模块。 程序员应避免检查自己的程序。考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作;另一方面,由于思维定势,自己难以发现自己的错误。因此,测试一般由独立的测试部门或第三方机构进行。 尽量避免测试的随意性。软件测试是有组织、有计划、有步骤的活动,要严格按照测试计划进行,要避免测试的随意性。 软件测试对象 程序开发过程中的各个文档、源程序、目标程序及数据 软件测试的模型 V模型 从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。 V模型问题: "测试是开发之后的一个阶段,"测试的对象就是程序本身。 "实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。 "整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度 W模型相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。 W模型也有局限性。W模型和V
1)什么是软件测试? 软件测试是通过手工或自动化的手段运行或测试被测试对象是否满足对应的需求;被测对象包括需求分析、设计规格说明书、系统编码等;在测试过程中,要根据相应的规格说明书设计一组测试用例,通过对测试用例的执行来发现系统中相应的错误从而保证软件质量的一项活动。 2)软件生命周期是什么? 1项目规划 2需求定义分析 3软件设计 4程序编码 5软件测试 6运行维护 2)软件测试的目的是什么? 1发现系统的错误 2验证系统是否满足需求 3保证产品质量 4改进开发流程 3)软件缺陷(bug)与软件错误(error)的区别与联系? 区别:软件缺陷是存在于软件之中的不希望或不可接受的偏差,而软件错误是由于人为的原因产生的错误。软件缺陷是在软件中抽象存在的,而错误是人为的问题。联系:由于人为的错误,在设计或编码过程中的失误,导致了软件内部的缺陷,人为的错误是引发软件缺陷的直接原因,一个软件错误必然引发多个软件缺陷。 4)软件测试如何改进开发流程? 软件测试和软件开发是不同的两个过程,但是通过软件测试发现软件的缺陷,然后通过缺陷的分析确定错误产生的原因从而发现软件开发过程中存在的缺陷,同时通过对测试结果的分析整理,还可以修正软件开发规则。因此,软件测试在一定程度上可以改进软件开发流程。 5)分析“软件测试没有什么技术含量,只是点击按钮,对系统进行操作吗?” 分析:在上述问题中之所以出现这样的言论,是对软件测试理解的片面性和对软件测试理解的偏激造成的。对于一个规范的软件测试过程包括了软件测试的计划、系统分析、测试设计、开发等技术。软件测试是一个发现软件缺陷的过程,要想发现软件缺陷必须对被测对象有足够的了解,而不是简单的对被测对象的执行,更不是单纯的“点击按钮”。这里边包含了如何设计测试场景、测试数据、测试执行等过程。同样的通过软件测试发现系统的问题,通过问题的改进可以提高软件产品的质量,赢得用户的口碑,从而提高产品的市场竞争力,提高公司的利益。因此软件测试是一项非常有意义的关系公司存亡的活动。 6)软件测试对象包括什么? 1需求规格说明书2概要设计规格说明书3详细设计规格说明书4源程序5系统6用户手册7帮助文档 7)主要的软件测试手段分别是什么,如何理解?
什么叫基于模型的设计? 为什么要基于模型的设计? 基于模型的设计过程中,需要做什么事情? 再问几个小问题: 模型验证是否必要? 模型验证有哪些工作可以做? 模型验证是否一定需要被控对象模型? 代码生成效率如何? 底层驱动是否要建模? Embedded Coder(以前的RTW Embedded Coder)支持哪些芯片? MIL、SIL、PIL、HIL的目的和实现方式? 如何定点化? 如何做代码集成? 什么叫基于模型的设计? 这是一个很大的话题,因为本人能力所限,仅讨论使用Simulink模型开发嵌入式软件的设计过程。也就是说,我只能聊基于模型的嵌入式软件设计。 我的理解是,通过对算法建模进行软件设计的过程,都可以叫基于模型的设计。 当然,如果仅限于算法建模,把Simulink/Stateflow当做Visio使用,而不去进行其他环节的工作,这样的基于模型设计是不完整的,可能对你的开发效率不会有很大的提升。 如果想通过基于模型的设计提升软件开发团队的开发效率,提高软件品质,我觉得至少有如下几点可以考虑: 算法建模 算法模型的验证 文档自动化 代码生成 代码和模型的等效性验证。 传统的开发过程中,我们有一个环节,需求捕获,也即,从系统需求分解出软件需求。 在基于模型的设计过程中,我们同样可以通过分析系统需求,获得软件需求。 当然,根据系统需求的详细程度,我们可以考虑是否要写专门的软件需求。 在基于模型的软件设计中,我们主要关心的是系统的功能需求,或者说可以通过软件实现的功能需求。如果这部分需求在系统需求文档里已经有非常清楚的定义,那么我们可以以系统需求文档作为依据建立模型。 当然,如果系统需求不是足够清楚,那我们有必要编写专门的软件需求文档。 如果不考虑Simulink/Stateflow的应用上的问题,也就是说,如果我们都是熟练的Simulink/Stateflow用户,那么建模过程的主要工作是需求分析,通俗点讲,需求弄清楚了,建模也就是非常简单的事情了。 当然,建模的时候,要考虑未来的验证、实现以及后期维护的问题。 我个人的体会,这个阶段,不要着急建模,一定要先弄清需求,另外,建模的时候,模型架构非常重要。