D.测试活动可能发生在系统渐进的每一阶段
14、下列关于面向对象软件集成测试的说法中,正确的是()。 ···························· (D) A.大突凷集成是一种渐增式集成 B.自底向上集成不必编写驱动代码
C.自顶向下集成不必编写测试桩代码
D.夹层式集成可以从底层和顶层同时开始向上和向下集成 15、C/B(客户机——服务器)集成的优点不包括()。 ······································ (D)A.避免了一次性集成的风险 B.有利于软件扩充和构件复用
C.测试可控制和可重复 D.测试驱动代码和测试桩代码的成本较低 16、面向对象软件单元测试中,模态类测试基于()生成测试用例。 ···················· (A)A.状态图 B.用例图 C.协作图 D.对象图 17、()增强了面向对象软件的灵活性,却同时使得程序内“同一”函数的行为复杂化,测试时不得不考虑对于不同类型参数具体执行的代码和产生的行为。 ······················· (C) A.封装性 B.继承性 C.多态性 D.抽象性 18、()降低了面向对象软件的数据被任意修改和读/写的可能性,减少了传统测试中对数据非法操作的测试。······················································································· (A) A.封装性 B.继承性 C.多态性 D.重用性 19、()提高了面向对象软件程序代码的重用性,但也加大了错误传播的概率。······· (B) A.封装性 B.继承性 C.多态性 D.虚拟性
20、面向对象软件的单元测试中,测试的焦点从过程构件(模块)移向了()。······· (C) A.方法 B.属性 C.类 D.关系
21、面向对象软件的单元测试中,测试的视角从程序模型扩大到()。 ··················· (C) A.分析模型 B.设计模型 C.分析和设计模型 D.用户模型 22、面向对象设计软件的测试活动不包括()。 ················································· (D) A.设计模型本身的测试 B.设计模型与分析模型的一致性测试 C.设计模型对编程的支持 D.设计模型是否满足用户需求 二、论述题:
1、简述类树层次的测试。 2、简述分布集成。
3、论述针对类间连接的测试。
答案解析 1、[答案]:B
[解析]: 在面向对象的软件中,由于成员方法对成员变量的依赖性,成员方法的许多功能需要在不同的实例状态下才能展示出来,因此对类的每个成员方法都进行充分的测试并不意味着完成了对该类的充分测试,选项A错误。在父类已进行充分测试的情况下,仍需测试子类所继承父类的成员方法,选项C错误。对于一棵继承树上的多个类,只测试处于叶节点的类是不充分的,选项D错误。在存在多态的情况下,不仅应对静态绑定进行测试,还应对所有可能的动态绑定进行测试,选项B正确。 2、[答案]:A
[解析]:测试面向对象软件时,为了测试类的一个成员方法,需要在调用该方法之前先调用一系列其他方法使其相应的实例达到合适的状态,此时测试用例不仅仅调用一个成员方法,选项B错误。虽然在测试面向对象软件时不能简单地对一个类的各个成员方法进行测试,但并不排斥单个方法的测试,选项C错误。继承是面向对象软件的重要特征,面向对象软
件测试当然要考虑对继承关系的测试,选项C错误。由于面向对象软件的封装性、继承性与多态性,面向对象软件的测试与传统软件测试的方法有着很大的区别,传统软件的白盒测试准则不能不加改变地照搬到面向对象软件的测试之中,选项A正确。 3、[答案]:C
[解析]:面向对象的开发模型突破了传统的瀑布模型,将开发分为面向对象的分析(OOA)、面向对象的设计(OOD)和面向对象的编程(OOP)三个过程。针对这种开发模型,结合传统测试步骤的划分,可以构造出面向对象软件测试的复合模型:从测试活动看,面向对象软件测试可以分为面向对象分析的测试、面向对象设计的测试和面向对象编程的测试;从测试内容看,面向对象软件测试可以分为面向对象的单元测试、面向对象的集成测试和面向对象的系统测试。通常,面向对象的单元测试与集成测试可纳入面向对象编程的测试活动,而面向对象的系统测试可单独作为一个活动。因此,可将面向对象软件测试分为面向对象分析的测试、面向对象设计的测试、面向对象编程的测试和面向对象的系统测试活动。选项A、B、D均错误,选项C正确。 4、[答案]:D
[解析]:面向对象的软件开发过程通常是一个迭代与渐进的过程,其测试活动也是迭代与渐进的。测试活动实际上只是一系列相关测试任务的集合,时间上并不一定是连贯的。测试活动之间,也是相互交错而非首尾相接的。一般情况下,在系统渐进的每一步,都应循环地执行各个测试活动中的某些任务。也就是说,面向对象软件的测试实际上是一个螺旋式上长升的过程。因此,选项A、B、C均错误,选项D正确。 5、[答案]:D
[解析]:面向对象的软件,“单元”变成了封装的类,甚至是一个类族,单元测试的意义也发生了较大变化。面向对象软件的单元测试包括方法层次的测试、类层次的测试及类树层次的测试,多个相互协作的类树的测试属于面向对象集成测试考虑的范畴。 6、[答案]:C
[解析]:面向对象软件很难对单个成员方法进行充分的测试,具有良好封装性的类成为单元测试的基本对象。类层次的测试主要包括不变式边界测试、模态类测试与非模态类测试,递归函数测试属于方法层次的测试。 7、[答案]:B
[解析]:大突击集成就是将系统的所有组成成分一次集成在一起进行测试,只有在整个软件的可靠性有了基本保障时才可以考虑大突击集成测试,选项A错误。自底向上集成需要开发大量的测试驱动代码,自向下集成需要开发大量的测试桩代码,选项B正确。与自底向上集成和自顶向下集成相比,在类间主要协作关系可以明确辨识而且每个功能只需要少数类协作即可完成的前提下,协作集成具有相当的优势,而当协作关系比较复杂时,协作集成的测试通常是不充分和不完备的,选项C错误。高频集成是指在软件开发过程中频繁地将新开发出来的代码与已经通过测试的代码集成测试,一般采用冒烟测试的方式,但并不是以自底向上集成为基础的,选项D错误。 8、[答案]:C [解析]:大突击集成是一种非渐增式集成,而自底向上集成与自顶向下集成均为渐增式集成,选项A错误。自底向上集成需要开发大量的测试驱动代码,自顶向下集成需要开发大量的测试桩代码,两者难于比较,选项B错误。协作集成是指在集成测试时针对系统完成的功能,将可以相互协作完成特定系统功能的类集成在一起进行测试,选项C正确。基于集成集中了大突击集成、自底向上集成和自顶向下集成的优点,而对三者的缺点也进行了控制,但由于局部采用了大突击集成策略,导致某些接口测试不充分,选项D错误。 9、[答案]:D
[解析]:针对类间连接的测试主要包括类关联的多重性测试、受控异常测试、往返场景测试和模态机测试。等价类划分测试和基于判定表的测试属于方法层次的测试,不变式边界测试属于类层次的测试。选项A、B、C均错误,选项D正确。 10、[答案]:B
[解析]:类关联的多重性测试关注的重点是与连接关系有关的增删改操作,但也应注意连接的实现方式,因为特定的实现会隐含特定的多重性,选项A错误。受控异常测试有时需要编写异常模拟程序用来产生这些异常,以便测试到异常的处理代码,选项C错误。往返场景测试可以不基于代码而基于顺序图,从而使测试人员在设计测试用例时更关注类间的交互关系和控制结构,选项D错误,模态机测试实际上是把多个类看做一个大的模态类,而且该类遵循一个全局的状态转换图,选项B正确。 11、[答案]:D
[解析]:系统测试通常包括功能测试、性能测试、标准符合性测试、兼容性测试、易用性测试和文档测试等。 12、[答案]:D
[解析]:面向对象软件具有3个明显特征:封装性、继承性与多态性。 13、[答案]:C
[解析]:面向对象的软件开发过程通常是一个迭代与渐进的过程,其测试活动也是迭代与渐进的。测试活动实际上只是一系列相关测试任务的集合,时间上并不一定是连贯的。测试活动之间,也是相互交错而非首尾相接的。一般情况下,在系统渐进的每一步,都应循环地执行各个测试活动中的某些任务。也就是说,面向对象软件的测试实际上是一个螺旋式上升过程。
14、[答案]:D
[解析]:夹层式集成在集成时可以底层或顶层开始,每次向上或向下集成新的一层;也可以从底层和顶层同时开始向上和向下集成,最后集成某一中间层。 15、[答案]:D
[解析]:C/S集成的优点:
(1)避免了一次性集成的风险;
(2)集成次序没有大的约束,可结合风险或功能优先级决定集成次序; (3)有利于软件扩充和构件复用; (4)测试可控制和可重复。 16、[答案]:A
[解析]:模态类测试只针对一个类,该类遵循一个全局的状态转换图。 17、[答案]:C
[解析]:多态性增强了面向对象软件的灵活性,却同时使得程序内“同一”函数的行为复杂化,测试时不得不考虑对于不同类型参数具体执行的代码和产生的行为。 18、[答案]:A
[解析]:封装性是对数据的隐藏,外界只能通过对象的操作来访问或修改对象的数据,从而降低了数据被任意修改和读/写的可能性,减少了传统测试中对数据非法操作的测试。 19、[答案]:B
[解析]:继承性使得程序代码的重用性显著提高,但也加大了错误传播的概率。 20、[答案]:C
[解析]:面向对象软件测试的总体目标是以最小的工作量发现最多的错误,与传统软件测试的目标是一致的,但面向对象软件测试的策略与传统软件测试有很大不同。其一,测试的焦点从过程构件(模块)移向了类;其二,测试的视角扩大到了分析和设计模型。
21、[答案]:C [解析]:同20题。 22、[答案]:D
[解析]:对于一般的设计模型,可以从以下几方面测试:
(1)设计模型本身的测试;
(2)设计模型与分析模型的一致性测试; (3)设计模型对编程的支持。 二、论述题 参考答案:
1、面向对象软件的继承性与多态性使得子类的测试不仅要考虑其自身的成员变量与成员方法,还应考虑其父类和祖先类的影响。类树层次的测试主要包括:
(1)多态服务测试。在对子类进行测试时,从其父类测试用例集(如果已存在)中选取涉及多态方法的测试用例,并把子类的实例当做父类的实例进行测试。
(2)展开测试。将子类自身定义的成员方法和成员变量,以及从父类和祖先类继承来的成员方法和成员变量组成一个新类,并对其进行测试。
2、对于没有专门的服务器层、由许多并发运行且没有专门控制轨迹的构件所组成的分布式系统,可采用分布式集成测试策略,用于测试权耦合的同级构件的交互关系。常用的集成顺序有以下几种:
(1)风险驱动。 (2)反风险驱动。 (3)依赖性驱动。 (4)优先级驱动。
分布式集成的优缺点:类似于C/S集成。 分布式集成的适用范围:分布式软件系统。
3、集成策略确定之后,还需关注如何充分测试类间的各种连接。
(1)类关联的多重性测试:在面向对象的软件中,类间的关联关系存在多重性方面的限制,多重性测试关注的重点是与连接关系有关的增、删、改操作,通常可考虑可能会导致多重性限制被破坏的调用序列构成的测试用例。测试时还应注意连接的实现方式,因为特定的实现会隐含特定的多重性。
(2)受控异常测试:面向对象的软件允许出现异常情况时控制流跳转到特定的位置。由于异常的抛出和异常的接收可以被放在不同的类中,实际上形成了类间隐含的控制依赖关系,测试时需要尽可能地覆盖这些隐式的依赖关系。有时需要编写异常模拟程序用来产生这些异常,以便测试到异常的处理代码。
(3)往返场景测试:在面向对象的软件中, 一段代码可能用于多个场景,充分的测试应该保证该段代码在每个场景的测试中都得到完全的覆盖。往返场景测试就是把与实现特定场景相联系的代码抽取出来,针对这些代码设计具有完全覆盖的测试用例集。往返场景测试可以不基于代码而基于顺序图,从而使测试人员在设计测试用例时更关注类间的交互关系和控制结构。
(4)模态机测试:模态机测试类似于类层次的模态类测试,但模态类测试只针对一个类,而模态机测试则针对多个类,实际上是把多个类看做一个大的模态类,而且该类遵循一个全局的状态转换图。
第十章:Web应用测试
一、选择题:
1、以下关于Web应用软件测试的说法中错误的是()。 ····································· (B) A.数据完整性测试是Web应用软件数据层测试的一项重要内容 B.内容测试是Web应用软件易用性测试的一项重要内容 C.表单测试是Web应用软件功能测试的一项重要内容
D.客户端内容安全性的测试是Web应用软件性测试的一项重要内容 2、以下不属于Web应用软件表示层测试关注的范畴的一项是()。 ······················ (D) A.排版结构的测试 B.链接结构的测试
C.浏览器兼容性的测试 D.应用服务器兼容性的测试
3、在Web应用软件的分层测试策略中,下列不是测试关注的层次的一项是()。 ···· (C) A.数据层 B.业务层 C.服务层 D.表示层
4、下面关于Web应用软件测试的说法中,正确的是()。 ·································· (A) A.Cookie测试是Web应用软件功能测试的重要内容
B.对于没有使用数据库的Web应用软件,不需要进行性能测试 C.链接测试是Web应用软件易用性测试的重要内容
D.Web应用软件安全性测试仅关注Web应用软件是否能够防御网络攻击 5、以下不属于Web应用软件特点的一项是()。 ·············································· (C) A.内容驱动 B.演化频繁 C.性能要求较高 D.基于无连接协议 二、论述题:
1、论述面向对象软件的继承性与多态性对测试的影响。 2、简述如何测试分布式系统。
3、集成策略确定之后,还需关注哪些方面?
答案解析 1、[答案]:B
[解析]: 数据完整性和大数据量数据库性能测试是Web应用软件数据层测试的内容之一,A说法正确:Web应用的测试策略包括内容测试和易用性测试,但这两种测试是独立的,B说法不正确;链接测试、表单测试和Cookie测试是Web功能测试的3个方面,C说法正确;Web应用软件安全性测试包括服务器端的内容安全性、客户端的内容安全性和Cookie安全性3个方面,D说法正确。 2、[答案]:D
[解析]:Web应用软件表示层关注排版结构的测试、链接结构的测试、客户端程序的测试和浏览器兼容性测试;应用服务器兼容性的测试并不在关注范畴内。 3、[答案]:C
[解析]:Web应用分为表示层、业务层和数据层,服务层是业务层的具体分解,不属于软件分层测试策略范畴。 4、[答案]:A
[解析]:Web应用功能测试包括链接测试、表单测试和Cookie测试,答案A正确;性能测试的主要对象并不局限于带有数据库的Web应用,没有数据库的Web应用同样需要进行性能测试,答案B错误;Web应用软件易用性测试主要包括安装测试、功能易用性测试和用户界面测试,链接测试属于功能测试的范畴,答案C不正确;Web安全性测试包括测试服务器端的内容安全性、客户端的内容安全性、Cookie的安全性和日志功能,网络攻击防范属于服务器端安全的范畴之一,仅做到这一点是不够的,因此答案D错误。 5、[答案]:C