西北师范大学
软件测试课后作业
作者:刘恩
学号:[1**********]7 班级:13届软件一班
软件测试课程作业
姓名:刘恩学号:[1**********]7
习题一
1. 选择题
(1)C 下列关于导致软件质量缺陷的原因描述中不正确的是(程序员编码水平低下是导致软件缺陷的最主要原因)。
(2)D 缺陷产生的原因是(交流不充分及沟通不畅、软件需求的变更、软件开发工具的缺陷;软件的复杂性、软件项目的时间压力;程序开发人员的错误、软件项目文档的缺乏)。
2. 判断题
(1)缺乏有力的方法学指导和有效的开发工具的支持,往往是产生软件危机的原因之一。(√)
(2)目前的绝大多数软件都不适合于快速原型技术。(×) (3)在程序运行之前没办法评估其质量。(×) (4)下列哪些活动是项目?
探索火星生命迹象。(√) 向部门经理进行月工作汇报。(×) 开发新版本的操作系统。(√) 每天的卫生保洁。(×) 组织超级女声决赛。(√) 一次集体婚礼。(√)
3. 简答题
(1)软件:程序+数据+文档
软件经历的发展阶段:
第一阶段 程序设计阶段 20世纪50年代初期至60年代中期; 第二阶段 程序系统阶段 20世纪60年代中期至70年代末期; 第三阶段 软件工程阶段 20世纪70年代中期至80年代中期; 第四阶段 C/S体系结构,即客户端/服务器体系结构 80年代中期至今。
(2)软件质量与软件测试的关系:
软件测试是以评价一个程序或者关系属性为目标的任何一种活动,是对软件质量的度量。测试是手段,质量是目的。 (3)软件质量框架定义及内容:
1>前提:说明了软件框架的适用范围以及适合的环境。 2>价值观:说明了软件质量框架中强调的价值。
3>结构:定义了软件质量框架的组成部分以及软件质量框架和开发过程之间的关系。 4>优秀实践:通过具体、实际的分析、举例,深入阐述了软件质量框架的价值观和结构。 (4)CMM 定义:软件能力成熟度模型,用来定义和评价软件公司开发过程的成熟度,为提高软件质量提供指导。
CMM 内容:该模型为软件企业的过程能力提供了一个阶梯式的进化框架,分为5级(初始级、可重复级、已定义级、已管理级以及优先级)。
CMMI 与CMM 的关系:
1>CMMI的覆盖领域很多,到目前为止包括软件工程(SW-CMM ), 系统工程(SE-CMM ),集成的产品和过程开发(IPPD-CMM )和采购(SS-CMM );
2>CMMI有两种表示方法,一种是与CMM 一样的阶段式表现方法(把CMMI 中的若干个过程区域分为5个成熟度级别),另一种是连续式的表现方法(将CMMI 中国城区域分为四大类:过程管理、项目管理、工程以及支持);
3>CMM2级有6个关键过程区域,在CMMI 中增加了一个:度量与分析,CMM4级有2个关键过程区域,在CMMI 中也是2个,但名称与内容有所改变,在CMM5级中3个KPA ,在CMM1中合并了,改为2个。
(5)软件测试与软件开发的关系:
1〉没有软件开发就没有软件测试,软件开发为软件测试提供实验的对象; 2>都是软件生命周期的重要组成部分; 3>都是软件过程中的重要活动;
4>软件测试是保证软件开发产物质量的重要手段。
习题二
1. 选择题
(1)C 软件测试按照技术划分为(性能测试、负载测试、压力测试;恢复测试、安全测试、兼容测试)。
(2)B 软件测试的目的是(发现软件开发中出现的错误)。
(3)A,D,B 软件测试定义(代码方面:单元测试、集成测试、系统测试、验收测试;理论方面:负载测试、动态测试、静态测试;测试方面:黑盒测试、压力测试、回归测试、负载测试、恢复测试、安全性测试、兼容性测试、内存泄露测试、比较测试等)。
2. 判断题
(1) Beta测试是验收测试的一种。(√)
(2) 尽量用公共过程或子程序去代替重复的代码段。(√) (3) 测试是为了验证该软件已正确地实现了用户的要求。(×) (4) 发现错误多的程序模块,残留在模块中的错误也越多。(√) (5) 尽量采用复合的条件测试,以避免嵌套的分支结构。(√)
3. 简答题
(1)软件测试目的:软件测试是为了发现软件中存在的错误,证明软件软件有错,以最少的时间和人力找出软件中潜在的各种错误与缺陷。 (2)软件测试注意事项:
1>应该把“尽早地和不断地进行软件测试”做为软件开发者的座右铭; 2>严防寄生虫现象; 3>严防杀虫剂现象;
4>并非所有的软件缺陷都能恢复; 5>难以说清的软件缺陷;
6>测试用例的设计; 7>软件测试的充分性准则。
(3)软件测试按照执行主题划分,可以分为α测试(开发者测试)、β测试(用户测试)和第三方测试。
(4)V 模型与W 模型的优缺点
V 模型:
优:反映了测试活动与开发活动的关系,清楚描述了测试的各个阶段和开发过程各阶段的关系。
缺:开发后进行测试,忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。
W 模型:
优:测试与开发同步进行,有利于尽早发现问题。
缺:上一阶段结束,才开始下一阶段工作,无法支持迭代开发模型。 (5)测试用例定义及属性
1>定义:对一项特定的软件产品进行测试任务的描述,体现为测试方案、方法、 技术和策略等。测试用例的内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
2>属性:优先级、目标性、关联性、阶段性、状态性、代表性、时效性。
习题三
1. 选择题
(1)B (软件测试最基础环节:单元测试)。
(2)D (在软件开发各个阶段,与需求分析、设计、编码相对应的软件测试为:确认测试、组装测试、单元测试)。
(3)B (单元测试的测试对象是:程序模块)。
(4)A (在单元测试中,用于代替被调用模块的是:桩模块)。 (5)D (α测试是验收测试的一种)。
(6)D (β测试是在软件公司外部展开的测试,由非专业的测试人员执行的测试)。
2. 简答题
(1)软件测试的生命周期:测试计划,测试设计,测试开发,测试执行和测试评估。 (2)α测试和β测试的区别:α测试和β测试都是验收测试的内容,α测试又称为开发者测试,是在开发环境下或者公司内部的用户在模拟实际操作环境下,由用户参与的测试。其测试目的是主要是评价软件产品的功能、可使用性、可靠性、性能等,特别是对于软件界面和使用方式的测试。
β测试,又称为用户测试,是在实际环境下进行的测试。与α测试不同的是,在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告,开发者在综合用户的报告之后做出修改,最后将软件产品交付给全体用户使用。β测试着重于产品的支持性,包括文档、客户培训和支持产品生产能力。只有当α测试达到一定的可靠程度时,才能开始β测试。 (3)单元测试:
1>定义:单元测试是在软件开发过程中进行的最低级别的测试活动,其测试对象是软件设计的最小单位。
2>主要任务:5个,分别是模块接口、局部数据结构、边界条件、独立的路径和错误处理。
(4)集成测试:
1〉方法:两种,分别是增量式测试方法和非增量式测试方法,其中增量式测试方法又可
以分为自顶向下增量式测试、自底向上增量式测试和三明治集成测试(核心先行)。
2〉集成测试和单元测试的区别:单元测试一般采用白盒测试技术,用于测试每个程序模块的错误。经过单元测试之后,每个模块都能单独工作。集成测试(组装测试)采用灰盒测试技术,用于测试各个组件之间的逻辑关系是否正确,在单元测试结束之后进行,采用桩驱动,是根据模块之间的依赖接口的关系图进行的测试。
(5)系统测试:系统测试是以规格说明书作为依据,将整个软件系统与计算机硬件、外设、支持软件、数据和人员等其他系统元素结合起来,在实际运行环境下,对计算机系统进行的测试。系统测试采用黑盒测试技术,根据需求分析时确定的标准检验软件是否满足功能、行为、性能和系统协调性等方面的要求。系统测试的目标不是要找出软件故障,而是要证明系统的性能。
(6)回归测试与一般测试的不同:
1〉测试用例的新旧:一般测试根据系统规格说明书和测试计划进行,测试用例都是新的。而回归测试可能是更改了的规格说明书、修改过的程序和需要更新的测试计划,测试用例往往都是旧的。
2〉测试范围:一般测试目标是检测整个程序的正确性,而回归测试目标是检测被修改的相
关部分正确性以及系统原有功能的整合。、
3〉时间分配:一般测试所需时间通常是在软件开发之前预算,而回归测试所需的时间(尤
其是修正性的回归测试)往往不包含在整个产品进度表。
4〉完成时间:由于回归测试只需要测试程序的一部分,完成时间通常比一般测试时间少。
5〉执行频率:回归测试在一个系统的生命周期内往往要进行多次进行,一旦系统经过修改
就需要进行回归测试。因此,回归测试的执行频率要远远高于一般测试。
习题四
1. 选择题
(1)B (黑盒测试用例设计技术不包括等价类划分、因果图法、边界值分析法、错误推测法、判定表驱动法)
(2)A (在黑盒测试中,边值分析经常与其他方法结合起来使用)
(3)C (等价类划分完成后,就可得出等价类表,它是确定测试用例的基础) (4)B (在设计测试用例时,边界值分析是用得最多的一种黑盒测试方法) (5)D (在黑盒测试中,着重检查输入条件组合的测试用例设计方法是因果图法) (6)D (除了测试程序外,黑盒测试还适用于对需求分析阶段的软件文档节进行测试) (7)A (由因果图转换出来的判定表是确定测试用例的基础)
2. 判断题
(1)用黑盒测试时,测试用例是根据程序内部逻辑结构设计的。(×) (2)黑盒测试方法中最有效的是因果图法。(×)
(3)对于连锁分支结构,若有n 个判定语句,则有2n 条路径(√) (4)尽量采用复合的条件测试,以避免嵌套的分支结构。 (√)
(5)GOTO 语句概念简单,使用方便,在某些情况下,保留GOTO 语句反而能使写出的程序更加简洁。(√)
3.简答题
(1) 等价类的划分原则:
1〉如果输入条件规定了取值范围或值的个数,则可以确定一个有效等价类和两个无效等价类(例:规定了x 的取值范围为1-99之间的整数,则有效等价类为199);
2〉如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确定一个有效等价类和一个无效等价类(例:若x=a等价类有效,则x 不等于a 时无效);
3〉如果输入条件是一个bool 变量,则可以确定一个有效等价类和一个无效等价类(例:若x=Ture为有效等价类,则x=False为无效等价类);
4> 如果规定了输入数组的一组值(假定n 个),而且程序要对每个输入值分别处理,则可以确立一个有效等价类和一个无效等价类(例:x={1,2,3}为有效等价类,反之则为无效等价类);
5〉如果规定了输入数据必须遵守的规定,则可以确定一个有效等价类和一个无效等价类(例:符合规则的为有效等价类,不符合规则的为无效等价类);
6〉如果确知已划分的等价类中各个元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。(例:输入A 或B 或C 有效且处理方式不同则应该将其进一步划分为A 、B 、C 三个等价类)。 (2)边界值的设计原则:
1>如果输入条件规定了值的范围,则应取刚到达这个范围的边界的值,以及刚过此范围边界的值作为测试输入数据;
2>如果输入条件规定了值的个数,则有最大个数、最小个数、比最大个数多1、比最小个数少1的数作为测试数据;
3>根据规格说明的每一个输出条件使用原则1>、2>选择输入数据;
4>如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合中的第一个元素与最后一个元素作为测试用例);
5>如果程序中使用了一个内部数据结构,则应选择这个内部数据结构的边界上的值作为测试用例;
6>分析规格说明,找出其他可能的边界条件。 函数f(x,y,z)的测试用例图如下:
(3)三角形类型的等价类划分测试用例:
(4)日期函数的决策表测试用例: 假设Year 的日期范围为1900-2500
习题五
1. 选择题
(1)D 以下不属于白盒测试的是(等价类划分)。 (2)D 以下不属于逻辑覆盖的是(基本路径)。 (3)B McCabe建议模块规模应满足:V (G )
(4)C 关于逻辑覆盖说法错误的是(满足路径覆盖也一定满足条件组合覆盖)。 (5)C (因果图)方法根据输出对输入的依赖关系设计测试用例。
(7)A 使用白盒测试方法时,确定测试数据应根据(程序的内部逻辑)和指定的覆盖标准。
(8)C 白盒测试的优点是(可按软件内部结构测试) 。
2. 简答题
(1)白盒测试:白盒测试是把测试对象看做一个打开的盒子,允许测试人员利用程序内
部的逻辑结构及有关信息,设计或选择测试用例,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。 白盒测试与黑盒测试的区别:
1>测试内容不同(白盒测试测试的是程序的内部逻辑结构,而黑盒测试测试的是功能需求)。
2>测试方法不同(白盒测试采用的方法有逻辑覆盖、路径分析、数据流测试、程序插桩,而黑盒测试采用的方法有等价类划分、边界值分析、因果图和场景法)。
(2)语句覆盖是最弱的逻辑覆盖原因:
语句覆盖对一些控制结构不敏感,不能发现判断中逻辑运算符的错误,覆盖率很低。 (3)条件覆盖不一定包含判定覆盖:
条件覆盖是使每个判断中每个条件的可能取值至少满足一次,即只能保证每个条件 至少有一次为真,而不考虑所有的判定结果。
(4)采用白盒测试进行测试时,测试用例覆盖路径的种类有以下几种: 1>语句覆盖 2>判定覆盖
3>条件覆盖 4>条件判定覆盖 5>修正条件判定覆盖 他们之间的关系为:
1>语句覆盖是最弱的逻辑覆盖 2>判定覆盖不一定包含条件覆盖 3>条件覆盖不一定包含判定覆盖
4>条件判定覆盖能同时满足条件、判定两种覆盖标准。 (5)转化后的控制流图为:
习题六
1.判断题
(1)负载测试是验证系统在资源超负荷情况下的表现。(√) (2)所有软件必须进行某种程度的兼容性测试。(√) (3)以消除瓶颈为目的的测试是负载测试。(×) 2.简答题
(1) 解释下列名词概念:
1>响应时间:对请求作出响应所需要的时间(例:网络传输时间、应用延迟
时间、数据库延迟时间和呈现时间)。
2>并发用户数:对系统发出请求或者进行操作的多个用户。 3>吞吐量:在一次性能测试过程中网络上传输数据量的总和。
4>性能计数器:描述服务器或操作系统性能的一些数据指标,具有“监控和分 析”的作用。
5>休眠时间:又称思考时间,指用户请求的时间间隔。
6>点击率:每秒钟用户向Web 服务器提交的HTTP 请求数,作为Web 应用特有 指标。
(2) 负载测试与压力测试异同点如下: 同:都是在强负载的其情况下进行测试。
异:测试目的不同。负载测试是通过模拟实际软件系统所承受的负载条件、改
变系统负载大小和负载方式来发现系统中所存在的问题。而压力测试是在强负载的情况下,通过查看应用系统在峰值使用情况下的状态来发现系统的某功能隐患、系统是否具有良好的容错能力和可恢复能力。
(3) 可靠性测试:评估软件在运行时的可靠性的测试。(例:通过测试确
认平
均无故障时间、故障发生前平均工作时间或因故障而停机的时间在一年中不应该超过多少时间。)
(4) 安全性测试:测试系统在应付非授权的内部/外部访问、非法侵入或故
意
的损坏时的系统防护能力,检验系统有能力使可能存在的内部/外部的伤害或损害的风险限制在可接受的水平内。
安全性测试与可靠性测试的区别:可靠性测试通常包括安全性,但是软件的可
靠性不能完全取代软件的安全性,安全性可能涉及数据加密、保密、存取权限等多个方面。
(5) Web测试策略:包括用户界面测试、链接测试、表单测试、兼容性测
试、
网络配置测试、负载测试以及安全测试。
习题七
1. 简答题
(1) 汇聚类:有些类的说明中使用对象,但是实际上从不和这些对象进行
协作。
协作类:不是汇聚类的非原始类就是协作类。协作类是指在一个或多个操作中使用其他对象的并将其作为实现中不可缺少的一部分。
如何测试汇聚类和协作类:协作类测试必须在参与交互的类的环境中进行测试,需要创建对象之间交互的环境。
(2) 类测试的主要方法包括结构性测试与功能性测试。类测试的层次主要
有方
法内测试与方法间测试。
(3) OOA测试阶段可以划分为五个方面,分别是对象测试、结构测试、主
题测
试、属性和实例关联测试以及服务和消息关联测试。
(4)软件测试的模型有V 模型、W 模型、H 模型、X 模型以及前置模型。 (5)测试抽象类的方法以及优缺点:
1>封装性影响测试:优:限制了外界对于对象的可视性与操作性,降低了类与
其它程序各部分之间的依赖,使得程序模块化,避免外界对类的不合理操作,防止了错误的扩散。缺:类的内部属性和状态对外界不可见,只能通过自身方法获得,给类测试时用例执行是否处于预期状态的判断带来困难。
2>继承性影响测试:优:继承由扩展、覆盖、特例化三种基本机制实现,有利于
代码的复用。缺:错误传播概率高。
3>多态性影响测试:优:多态促成了子类型替换,使得向父类对象发送的消息
也允许向子类发送。缺:由于其不确定性,使得测试用例的选取难度增加。
习题八
1. 填空题
(1) 嵌入式系统同通用计算机系统相比有以下特点:实时性、嵌入性、与
外部
环境交互的反应性、专用性、体积小、依赖性、并发处理。
(2) 嵌入式软件测试工具划分为纯软件测试工具、纯硬件测试工具、软硬
结合
的测试工具三类。
(3)常用的纯软件测试工具有Logiscope 、CoverageScope 等。 (4)嵌入式软件的测试策略有目标代理、交叉调试。
(5)嵌入式软件的测试四个阶段是:单元测试、集成测试、系统测试、硬件软 件集成测试。 2. 简答题
(1)嵌入式软件:嵌入在硬件中的操作系统和开发工具软件。 (2)嵌入式软件特点以及对嵌入式软件测试的影响:
1〉实时性对测试的影响
嵌入式软件对时间测试分为静态时间分析和动态时间分析两种方法。 静态时间分析:静态时间分析就是不执行程序,而通过分析程序结构来预估程序执行时间的方法。静态分析可确定程序在最坏情况下的执行时间,即程序在最大执行时间是否满足时间约束。
动态时间分析:动态实时检测就是通过执行程序来测试程序的时间特性。在线仿真器ICE 、指令仿真器和插桩是三种最长用的方法。
2〉嵌入性对测试的影响
嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理/逻辑连接,解决数据信息的传输问题。嵌入式软件虽然运行在目标机上,但必须对目标环境进行测试。
3〉反应性对测试的影响
反应式系统在任何时刻都要对可能出现的事件作出适当反应。“激励-响应”反应式系统输入事件各种序列的组合给测试工作带来困难,如何选取测试用例成为反应式软件的关键问题之一。
(3)嵌入式软件测试的关键技术:关键技术有静态测试技术和动态测试技术。 (4)嵌入式软件的测试策略:主要有交叉调试、目标代理等方式。 (5)嵌入式软件测试工具主要有3类,分别是纯软件测试工具、纯硬件测试工具以及软硬结合的测试工具。
习题九
1. 简答题
(1) 软件测试管理内容:
软件测试管理体系一般包括如下6个步骤:
1〉识别软件测试所需的过程及其应用,即测试计划、测试设计、测试实施、 配置管理、资源管理、测试管理;
2〉确定这些过程的顺序及相互作用,前一个的输出作为后一个的输入。其中,
配置管理和资源管理作为支撑性的过程。
3〉确定这些过程所需要的准则和方法,制定6个过程所需要的文档。 4〉确保所需要的资源和信息,并对6个过程进行检测。 5〉监视、测量和分析这些过程。 6〉实施必要的过程改进措施。
(2)测试文档作用:根据所起作用的不同,测试文档可以分为前置作业文档和
后置作业文档。前置作业文档可以使接下来将要进行的软件测试流程更加流畅和规范。后置作业文档主要包括缺陷报告和分析总结报告。缺陷报告要求测试人员简洁、
清晰地把问题以文档形式报告给管理层和判断是否进行修复的小组,使得到所需要的全部信息。测试分析报告应表明经过测试证实了软件具有的功能以及它的缺陷和限制,并给出评价的结论性意见。该意见既是对软件质量的评价,也是决定软件能否交付给用户使用的一个依据。
主要的软件测试文档有测试计划、测试设计规格说明、测试规程规格说明、测
试日志、测试缺陷报告和测试总结报告等。 (3) 如何理解测试人员的不同角色划分:
软件测试过程组织可将测试人员划分为测试主管、测试组组长、测试分析员与测试者四类。
1〉测试主管:负责与开发组联系,保证单元测试的顺利进行;负责与观察测试员联系,接收有关没有正确遵循测试过程的测试项目的报告;负责向公司内的高级主管或领导报告。
2〉测试组组长:负责为测试分析员与测试者分配任务,按照预定的计划监控
他们的工作进度,建立和维护测试项目文件系统,保证产生测试项目相关资料(测试计划文档、测试规范说明文档)。
3〉测试分析员:负责设计和实现自动化测试的一个或多个脚本,协助测试组
组长生成测试规格说明文档。
4〉测试者:主要负责执行由测试分析员建的测试脚本,并负责解释测试用例
结果并将结果记录到文档中。 (4)缺陷管理的主要内容:
1〉对缺陷的描述应该包含可追踪信息。
2〉对缺陷的描述应该包含缺陷的基本信息(例:缺陷状态、缺陷标题、缺陷严重程度和紧急程度、缺陷提交和提交日期、缺陷所属、缺陷解决人、解决时间和结果、缺陷处理人、处理最终时间和处理结果、缺陷确认人、确认时间和结果。)。
3>对缺陷的描述应该包含缺陷的详细描述。
(5)软件过程的质量管理评估标准主要有ISO 9000系列、CMM/CMMI以及ISO 15504过程评估三大体系。
西北师范大学
软件测试课后作业
作者:刘恩
学号:[1**********]7 班级:13届软件一班
软件测试课程作业
姓名:刘恩学号:[1**********]7
习题一
1. 选择题
(1)C 下列关于导致软件质量缺陷的原因描述中不正确的是(程序员编码水平低下是导致软件缺陷的最主要原因)。
(2)D 缺陷产生的原因是(交流不充分及沟通不畅、软件需求的变更、软件开发工具的缺陷;软件的复杂性、软件项目的时间压力;程序开发人员的错误、软件项目文档的缺乏)。
2. 判断题
(1)缺乏有力的方法学指导和有效的开发工具的支持,往往是产生软件危机的原因之一。(√)
(2)目前的绝大多数软件都不适合于快速原型技术。(×) (3)在程序运行之前没办法评估其质量。(×) (4)下列哪些活动是项目?
探索火星生命迹象。(√) 向部门经理进行月工作汇报。(×) 开发新版本的操作系统。(√) 每天的卫生保洁。(×) 组织超级女声决赛。(√) 一次集体婚礼。(√)
3. 简答题
(1)软件:程序+数据+文档
软件经历的发展阶段:
第一阶段 程序设计阶段 20世纪50年代初期至60年代中期; 第二阶段 程序系统阶段 20世纪60年代中期至70年代末期; 第三阶段 软件工程阶段 20世纪70年代中期至80年代中期; 第四阶段 C/S体系结构,即客户端/服务器体系结构 80年代中期至今。
(2)软件质量与软件测试的关系:
软件测试是以评价一个程序或者关系属性为目标的任何一种活动,是对软件质量的度量。测试是手段,质量是目的。 (3)软件质量框架定义及内容:
1>前提:说明了软件框架的适用范围以及适合的环境。 2>价值观:说明了软件质量框架中强调的价值。
3>结构:定义了软件质量框架的组成部分以及软件质量框架和开发过程之间的关系。 4>优秀实践:通过具体、实际的分析、举例,深入阐述了软件质量框架的价值观和结构。 (4)CMM 定义:软件能力成熟度模型,用来定义和评价软件公司开发过程的成熟度,为提高软件质量提供指导。
CMM 内容:该模型为软件企业的过程能力提供了一个阶梯式的进化框架,分为5级(初始级、可重复级、已定义级、已管理级以及优先级)。
CMMI 与CMM 的关系:
1>CMMI的覆盖领域很多,到目前为止包括软件工程(SW-CMM ), 系统工程(SE-CMM ),集成的产品和过程开发(IPPD-CMM )和采购(SS-CMM );
2>CMMI有两种表示方法,一种是与CMM 一样的阶段式表现方法(把CMMI 中的若干个过程区域分为5个成熟度级别),另一种是连续式的表现方法(将CMMI 中国城区域分为四大类:过程管理、项目管理、工程以及支持);
3>CMM2级有6个关键过程区域,在CMMI 中增加了一个:度量与分析,CMM4级有2个关键过程区域,在CMMI 中也是2个,但名称与内容有所改变,在CMM5级中3个KPA ,在CMM1中合并了,改为2个。
(5)软件测试与软件开发的关系:
1〉没有软件开发就没有软件测试,软件开发为软件测试提供实验的对象; 2>都是软件生命周期的重要组成部分; 3>都是软件过程中的重要活动;
4>软件测试是保证软件开发产物质量的重要手段。
习题二
1. 选择题
(1)C 软件测试按照技术划分为(性能测试、负载测试、压力测试;恢复测试、安全测试、兼容测试)。
(2)B 软件测试的目的是(发现软件开发中出现的错误)。
(3)A,D,B 软件测试定义(代码方面:单元测试、集成测试、系统测试、验收测试;理论方面:负载测试、动态测试、静态测试;测试方面:黑盒测试、压力测试、回归测试、负载测试、恢复测试、安全性测试、兼容性测试、内存泄露测试、比较测试等)。
2. 判断题
(1) Beta测试是验收测试的一种。(√)
(2) 尽量用公共过程或子程序去代替重复的代码段。(√) (3) 测试是为了验证该软件已正确地实现了用户的要求。(×) (4) 发现错误多的程序模块,残留在模块中的错误也越多。(√) (5) 尽量采用复合的条件测试,以避免嵌套的分支结构。(√)
3. 简答题
(1)软件测试目的:软件测试是为了发现软件中存在的错误,证明软件软件有错,以最少的时间和人力找出软件中潜在的各种错误与缺陷。 (2)软件测试注意事项:
1>应该把“尽早地和不断地进行软件测试”做为软件开发者的座右铭; 2>严防寄生虫现象; 3>严防杀虫剂现象;
4>并非所有的软件缺陷都能恢复; 5>难以说清的软件缺陷;
6>测试用例的设计; 7>软件测试的充分性准则。
(3)软件测试按照执行主题划分,可以分为α测试(开发者测试)、β测试(用户测试)和第三方测试。
(4)V 模型与W 模型的优缺点
V 模型:
优:反映了测试活动与开发活动的关系,清楚描述了测试的各个阶段和开发过程各阶段的关系。
缺:开发后进行测试,忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。
W 模型:
优:测试与开发同步进行,有利于尽早发现问题。
缺:上一阶段结束,才开始下一阶段工作,无法支持迭代开发模型。 (5)测试用例定义及属性
1>定义:对一项特定的软件产品进行测试任务的描述,体现为测试方案、方法、 技术和策略等。测试用例的内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
2>属性:优先级、目标性、关联性、阶段性、状态性、代表性、时效性。
习题三
1. 选择题
(1)B (软件测试最基础环节:单元测试)。
(2)D (在软件开发各个阶段,与需求分析、设计、编码相对应的软件测试为:确认测试、组装测试、单元测试)。
(3)B (单元测试的测试对象是:程序模块)。
(4)A (在单元测试中,用于代替被调用模块的是:桩模块)。 (5)D (α测试是验收测试的一种)。
(6)D (β测试是在软件公司外部展开的测试,由非专业的测试人员执行的测试)。
2. 简答题
(1)软件测试的生命周期:测试计划,测试设计,测试开发,测试执行和测试评估。 (2)α测试和β测试的区别:α测试和β测试都是验收测试的内容,α测试又称为开发者测试,是在开发环境下或者公司内部的用户在模拟实际操作环境下,由用户参与的测试。其测试目的是主要是评价软件产品的功能、可使用性、可靠性、性能等,特别是对于软件界面和使用方式的测试。
β测试,又称为用户测试,是在实际环境下进行的测试。与α测试不同的是,在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告,开发者在综合用户的报告之后做出修改,最后将软件产品交付给全体用户使用。β测试着重于产品的支持性,包括文档、客户培训和支持产品生产能力。只有当α测试达到一定的可靠程度时,才能开始β测试。 (3)单元测试:
1>定义:单元测试是在软件开发过程中进行的最低级别的测试活动,其测试对象是软件设计的最小单位。
2>主要任务:5个,分别是模块接口、局部数据结构、边界条件、独立的路径和错误处理。
(4)集成测试:
1〉方法:两种,分别是增量式测试方法和非增量式测试方法,其中增量式测试方法又可
以分为自顶向下增量式测试、自底向上增量式测试和三明治集成测试(核心先行)。
2〉集成测试和单元测试的区别:单元测试一般采用白盒测试技术,用于测试每个程序模块的错误。经过单元测试之后,每个模块都能单独工作。集成测试(组装测试)采用灰盒测试技术,用于测试各个组件之间的逻辑关系是否正确,在单元测试结束之后进行,采用桩驱动,是根据模块之间的依赖接口的关系图进行的测试。
(5)系统测试:系统测试是以规格说明书作为依据,将整个软件系统与计算机硬件、外设、支持软件、数据和人员等其他系统元素结合起来,在实际运行环境下,对计算机系统进行的测试。系统测试采用黑盒测试技术,根据需求分析时确定的标准检验软件是否满足功能、行为、性能和系统协调性等方面的要求。系统测试的目标不是要找出软件故障,而是要证明系统的性能。
(6)回归测试与一般测试的不同:
1〉测试用例的新旧:一般测试根据系统规格说明书和测试计划进行,测试用例都是新的。而回归测试可能是更改了的规格说明书、修改过的程序和需要更新的测试计划,测试用例往往都是旧的。
2〉测试范围:一般测试目标是检测整个程序的正确性,而回归测试目标是检测被修改的相
关部分正确性以及系统原有功能的整合。、
3〉时间分配:一般测试所需时间通常是在软件开发之前预算,而回归测试所需的时间(尤
其是修正性的回归测试)往往不包含在整个产品进度表。
4〉完成时间:由于回归测试只需要测试程序的一部分,完成时间通常比一般测试时间少。
5〉执行频率:回归测试在一个系统的生命周期内往往要进行多次进行,一旦系统经过修改
就需要进行回归测试。因此,回归测试的执行频率要远远高于一般测试。
习题四
1. 选择题
(1)B (黑盒测试用例设计技术不包括等价类划分、因果图法、边界值分析法、错误推测法、判定表驱动法)
(2)A (在黑盒测试中,边值分析经常与其他方法结合起来使用)
(3)C (等价类划分完成后,就可得出等价类表,它是确定测试用例的基础) (4)B (在设计测试用例时,边界值分析是用得最多的一种黑盒测试方法) (5)D (在黑盒测试中,着重检查输入条件组合的测试用例设计方法是因果图法) (6)D (除了测试程序外,黑盒测试还适用于对需求分析阶段的软件文档节进行测试) (7)A (由因果图转换出来的判定表是确定测试用例的基础)
2. 判断题
(1)用黑盒测试时,测试用例是根据程序内部逻辑结构设计的。(×) (2)黑盒测试方法中最有效的是因果图法。(×)
(3)对于连锁分支结构,若有n 个判定语句,则有2n 条路径(√) (4)尽量采用复合的条件测试,以避免嵌套的分支结构。 (√)
(5)GOTO 语句概念简单,使用方便,在某些情况下,保留GOTO 语句反而能使写出的程序更加简洁。(√)
3.简答题
(1) 等价类的划分原则:
1〉如果输入条件规定了取值范围或值的个数,则可以确定一个有效等价类和两个无效等价类(例:规定了x 的取值范围为1-99之间的整数,则有效等价类为199);
2〉如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确定一个有效等价类和一个无效等价类(例:若x=a等价类有效,则x 不等于a 时无效);
3〉如果输入条件是一个bool 变量,则可以确定一个有效等价类和一个无效等价类(例:若x=Ture为有效等价类,则x=False为无效等价类);
4> 如果规定了输入数组的一组值(假定n 个),而且程序要对每个输入值分别处理,则可以确立一个有效等价类和一个无效等价类(例:x={1,2,3}为有效等价类,反之则为无效等价类);
5〉如果规定了输入数据必须遵守的规定,则可以确定一个有效等价类和一个无效等价类(例:符合规则的为有效等价类,不符合规则的为无效等价类);
6〉如果确知已划分的等价类中各个元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。(例:输入A 或B 或C 有效且处理方式不同则应该将其进一步划分为A 、B 、C 三个等价类)。 (2)边界值的设计原则:
1>如果输入条件规定了值的范围,则应取刚到达这个范围的边界的值,以及刚过此范围边界的值作为测试输入数据;
2>如果输入条件规定了值的个数,则有最大个数、最小个数、比最大个数多1、比最小个数少1的数作为测试数据;
3>根据规格说明的每一个输出条件使用原则1>、2>选择输入数据;
4>如果程序的规格说明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合中的第一个元素与最后一个元素作为测试用例);
5>如果程序中使用了一个内部数据结构,则应选择这个内部数据结构的边界上的值作为测试用例;
6>分析规格说明,找出其他可能的边界条件。 函数f(x,y,z)的测试用例图如下:
(3)三角形类型的等价类划分测试用例:
(4)日期函数的决策表测试用例: 假设Year 的日期范围为1900-2500
习题五
1. 选择题
(1)D 以下不属于白盒测试的是(等价类划分)。 (2)D 以下不属于逻辑覆盖的是(基本路径)。 (3)B McCabe建议模块规模应满足:V (G )
(4)C 关于逻辑覆盖说法错误的是(满足路径覆盖也一定满足条件组合覆盖)。 (5)C (因果图)方法根据输出对输入的依赖关系设计测试用例。
(7)A 使用白盒测试方法时,确定测试数据应根据(程序的内部逻辑)和指定的覆盖标准。
(8)C 白盒测试的优点是(可按软件内部结构测试) 。
2. 简答题
(1)白盒测试:白盒测试是把测试对象看做一个打开的盒子,允许测试人员利用程序内
部的逻辑结构及有关信息,设计或选择测试用例,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。 白盒测试与黑盒测试的区别:
1>测试内容不同(白盒测试测试的是程序的内部逻辑结构,而黑盒测试测试的是功能需求)。
2>测试方法不同(白盒测试采用的方法有逻辑覆盖、路径分析、数据流测试、程序插桩,而黑盒测试采用的方法有等价类划分、边界值分析、因果图和场景法)。
(2)语句覆盖是最弱的逻辑覆盖原因:
语句覆盖对一些控制结构不敏感,不能发现判断中逻辑运算符的错误,覆盖率很低。 (3)条件覆盖不一定包含判定覆盖:
条件覆盖是使每个判断中每个条件的可能取值至少满足一次,即只能保证每个条件 至少有一次为真,而不考虑所有的判定结果。
(4)采用白盒测试进行测试时,测试用例覆盖路径的种类有以下几种: 1>语句覆盖 2>判定覆盖
3>条件覆盖 4>条件判定覆盖 5>修正条件判定覆盖 他们之间的关系为:
1>语句覆盖是最弱的逻辑覆盖 2>判定覆盖不一定包含条件覆盖 3>条件覆盖不一定包含判定覆盖
4>条件判定覆盖能同时满足条件、判定两种覆盖标准。 (5)转化后的控制流图为:
习题六
1.判断题
(1)负载测试是验证系统在资源超负荷情况下的表现。(√) (2)所有软件必须进行某种程度的兼容性测试。(√) (3)以消除瓶颈为目的的测试是负载测试。(×) 2.简答题
(1) 解释下列名词概念:
1>响应时间:对请求作出响应所需要的时间(例:网络传输时间、应用延迟
时间、数据库延迟时间和呈现时间)。
2>并发用户数:对系统发出请求或者进行操作的多个用户。 3>吞吐量:在一次性能测试过程中网络上传输数据量的总和。
4>性能计数器:描述服务器或操作系统性能的一些数据指标,具有“监控和分 析”的作用。
5>休眠时间:又称思考时间,指用户请求的时间间隔。
6>点击率:每秒钟用户向Web 服务器提交的HTTP 请求数,作为Web 应用特有 指标。
(2) 负载测试与压力测试异同点如下: 同:都是在强负载的其情况下进行测试。
异:测试目的不同。负载测试是通过模拟实际软件系统所承受的负载条件、改
变系统负载大小和负载方式来发现系统中所存在的问题。而压力测试是在强负载的情况下,通过查看应用系统在峰值使用情况下的状态来发现系统的某功能隐患、系统是否具有良好的容错能力和可恢复能力。
(3) 可靠性测试:评估软件在运行时的可靠性的测试。(例:通过测试确
认平
均无故障时间、故障发生前平均工作时间或因故障而停机的时间在一年中不应该超过多少时间。)
(4) 安全性测试:测试系统在应付非授权的内部/外部访问、非法侵入或故
意
的损坏时的系统防护能力,检验系统有能力使可能存在的内部/外部的伤害或损害的风险限制在可接受的水平内。
安全性测试与可靠性测试的区别:可靠性测试通常包括安全性,但是软件的可
靠性不能完全取代软件的安全性,安全性可能涉及数据加密、保密、存取权限等多个方面。
(5) Web测试策略:包括用户界面测试、链接测试、表单测试、兼容性测
试、
网络配置测试、负载测试以及安全测试。
习题七
1. 简答题
(1) 汇聚类:有些类的说明中使用对象,但是实际上从不和这些对象进行
协作。
协作类:不是汇聚类的非原始类就是协作类。协作类是指在一个或多个操作中使用其他对象的并将其作为实现中不可缺少的一部分。
如何测试汇聚类和协作类:协作类测试必须在参与交互的类的环境中进行测试,需要创建对象之间交互的环境。
(2) 类测试的主要方法包括结构性测试与功能性测试。类测试的层次主要
有方
法内测试与方法间测试。
(3) OOA测试阶段可以划分为五个方面,分别是对象测试、结构测试、主
题测
试、属性和实例关联测试以及服务和消息关联测试。
(4)软件测试的模型有V 模型、W 模型、H 模型、X 模型以及前置模型。 (5)测试抽象类的方法以及优缺点:
1>封装性影响测试:优:限制了外界对于对象的可视性与操作性,降低了类与
其它程序各部分之间的依赖,使得程序模块化,避免外界对类的不合理操作,防止了错误的扩散。缺:类的内部属性和状态对外界不可见,只能通过自身方法获得,给类测试时用例执行是否处于预期状态的判断带来困难。
2>继承性影响测试:优:继承由扩展、覆盖、特例化三种基本机制实现,有利于
代码的复用。缺:错误传播概率高。
3>多态性影响测试:优:多态促成了子类型替换,使得向父类对象发送的消息
也允许向子类发送。缺:由于其不确定性,使得测试用例的选取难度增加。
习题八
1. 填空题
(1) 嵌入式系统同通用计算机系统相比有以下特点:实时性、嵌入性、与
外部
环境交互的反应性、专用性、体积小、依赖性、并发处理。
(2) 嵌入式软件测试工具划分为纯软件测试工具、纯硬件测试工具、软硬
结合
的测试工具三类。
(3)常用的纯软件测试工具有Logiscope 、CoverageScope 等。 (4)嵌入式软件的测试策略有目标代理、交叉调试。
(5)嵌入式软件的测试四个阶段是:单元测试、集成测试、系统测试、硬件软 件集成测试。 2. 简答题
(1)嵌入式软件:嵌入在硬件中的操作系统和开发工具软件。 (2)嵌入式软件特点以及对嵌入式软件测试的影响:
1〉实时性对测试的影响
嵌入式软件对时间测试分为静态时间分析和动态时间分析两种方法。 静态时间分析:静态时间分析就是不执行程序,而通过分析程序结构来预估程序执行时间的方法。静态分析可确定程序在最坏情况下的执行时间,即程序在最大执行时间是否满足时间约束。
动态时间分析:动态实时检测就是通过执行程序来测试程序的时间特性。在线仿真器ICE 、指令仿真器和插桩是三种最长用的方法。
2〉嵌入性对测试的影响
嵌入式软件测试的一个重要问题是建立宿主机与目标机之间的物理/逻辑连接,解决数据信息的传输问题。嵌入式软件虽然运行在目标机上,但必须对目标环境进行测试。
3〉反应性对测试的影响
反应式系统在任何时刻都要对可能出现的事件作出适当反应。“激励-响应”反应式系统输入事件各种序列的组合给测试工作带来困难,如何选取测试用例成为反应式软件的关键问题之一。
(3)嵌入式软件测试的关键技术:关键技术有静态测试技术和动态测试技术。 (4)嵌入式软件的测试策略:主要有交叉调试、目标代理等方式。 (5)嵌入式软件测试工具主要有3类,分别是纯软件测试工具、纯硬件测试工具以及软硬结合的测试工具。
习题九
1. 简答题
(1) 软件测试管理内容:
软件测试管理体系一般包括如下6个步骤:
1〉识别软件测试所需的过程及其应用,即测试计划、测试设计、测试实施、 配置管理、资源管理、测试管理;
2〉确定这些过程的顺序及相互作用,前一个的输出作为后一个的输入。其中,
配置管理和资源管理作为支撑性的过程。
3〉确定这些过程所需要的准则和方法,制定6个过程所需要的文档。 4〉确保所需要的资源和信息,并对6个过程进行检测。 5〉监视、测量和分析这些过程。 6〉实施必要的过程改进措施。
(2)测试文档作用:根据所起作用的不同,测试文档可以分为前置作业文档和
后置作业文档。前置作业文档可以使接下来将要进行的软件测试流程更加流畅和规范。后置作业文档主要包括缺陷报告和分析总结报告。缺陷报告要求测试人员简洁、
清晰地把问题以文档形式报告给管理层和判断是否进行修复的小组,使得到所需要的全部信息。测试分析报告应表明经过测试证实了软件具有的功能以及它的缺陷和限制,并给出评价的结论性意见。该意见既是对软件质量的评价,也是决定软件能否交付给用户使用的一个依据。
主要的软件测试文档有测试计划、测试设计规格说明、测试规程规格说明、测
试日志、测试缺陷报告和测试总结报告等。 (3) 如何理解测试人员的不同角色划分:
软件测试过程组织可将测试人员划分为测试主管、测试组组长、测试分析员与测试者四类。
1〉测试主管:负责与开发组联系,保证单元测试的顺利进行;负责与观察测试员联系,接收有关没有正确遵循测试过程的测试项目的报告;负责向公司内的高级主管或领导报告。
2〉测试组组长:负责为测试分析员与测试者分配任务,按照预定的计划监控
他们的工作进度,建立和维护测试项目文件系统,保证产生测试项目相关资料(测试计划文档、测试规范说明文档)。
3〉测试分析员:负责设计和实现自动化测试的一个或多个脚本,协助测试组
组长生成测试规格说明文档。
4〉测试者:主要负责执行由测试分析员建的测试脚本,并负责解释测试用例
结果并将结果记录到文档中。 (4)缺陷管理的主要内容:
1〉对缺陷的描述应该包含可追踪信息。
2〉对缺陷的描述应该包含缺陷的基本信息(例:缺陷状态、缺陷标题、缺陷严重程度和紧急程度、缺陷提交和提交日期、缺陷所属、缺陷解决人、解决时间和结果、缺陷处理人、处理最终时间和处理结果、缺陷确认人、确认时间和结果。)。
3>对缺陷的描述应该包含缺陷的详细描述。
(5)软件过程的质量管理评估标准主要有ISO 9000系列、CMM/CMMI以及ISO 15504过程评估三大体系。