每日打卡题11-15答案
11、【2013年真题】 难度:一般
基于RUP的软件过程是一个迭代过程。一个开发周期包括初始、细化、构建和移交四个阶段,每次通过这四个阶段就会产生一代软件,其中建立完善的架构是 (1) 阶段的任务。采用迭代式开发, (2) 。
(1)A.初始 B.细化 C.构建 D.移交
(2)A.在每一轮迭代中都要进行测试与集成
B.每一轮迭代的重点是对特定的用例进行部分实现
C.在后续迭代中强调用户的主动参与
D.通常以功能分解为基础
答案:(1)B (2)A
解析:
RUP中的软件过程在时间上被分解为4个顺序的阶段,分别是初始阶段、细化阶段、构建阶段和移交阶段。
初始阶段的任务是为系统建立业务模型并确定项目的边界。细化阶段的任务是分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。在构建阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品。移交阶段的重点是确保软件对最终用户是可用的。
基于RUP的软件过程是一个迭代过程,通过初始、细化、构建和移交4个阶段就是一个开发周期,每次经过这4个阶段就会产生一代产品,在每一轮迭代中都要进行测试与集成。
12、【2013年真题】 难度:一般
某系统中的文本显示类(TextView)和图片显示类(PictureView)都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条或者带有黑色边框,或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加3个类。那么采用设计模式 (1) 可实现该需求,其优点是 (2) 。
(1)A.外观 B.单体 C.装饰 D.模板方法
(2)A.比静态继承具有更大的灵活性 B.提高已有功能的重复使用性
C.可以将接口与实现相分离 D.为复杂系统提供了简单接口
答案:(1)C (2)A
解析:
装饰(Decorator)模式可以再不修改对象外观和功能的情况下添加或者删除对象功能。它可以使用一种对客户端来说是透明的方法来修改对象的功能,也就是使用初始类的子类实例对初始对象进行授权。装饰模式还为对象动态地添加了额外的重任,这样就在不使用静态继承的情况下,为修改对象功能提供了灵活的选择。
在以下情况中,应该使用装饰模式:
•想要在单个对象中动态并且透明地添加责任,而这样并不会影响其他对象;
•想要在以后可能要修改的对象中添加责任;
•当无法通过静态子类化实现扩展时。
13、【2013年真题】 难度:一般
以下关于自顶向下开发方法的叙述中,正确的是 。
A.自顶向下过程因为单元测试而比较耗费时间
B.自顶向下过程可以更快地发现系统性能方面的问题
C.相对于自底向上方法,自顶向下方法可以更快地得到系统的演示原型
D.在自顶向下的设计中,如发现了一个错误,通常是因为底层模块没有满足其规格说明(因为高层模块已经被测试过了)
答案:C
解析:
自顶向下方法是一种决策策略。软件开发涉及作什么决策、如何决策和决策顺序等决策问题。
自顶向下方法在任何时刻所作的决定都是当时对整个设计影响最大的那些决定。如果把所有决定分组或者分级,那么决策顺序是首先作最高级的决定,然后依次地作较低级的决定。同级的决定则按照随机的顺序或者按别的方法。一个决策的级别是看它距离要达到的最终目的(因此是软件的实际实现)的远近程度。从问题本身来看,或是由外(用户所见的)向内(系统的实现)看,以距离实现近的决定为低级决定,远的为高级决定。
在这个自顶向下的过程中,一个复杂的问题(任务)被分解成若干个较小较简单的问题(子任务),并且一直继续下去,直到每个小问题(子任务)都简单到能够直接解决(实现)为止。
自顶向下方法的优点是:
•可为企业或机构的重要决策和任务实现提供信息。
•支持企业信息系统的整体性规划,并对系统的各子系统的协调和通信提供保证。
•方法的实践有利于提高企业人员整体观察问题的能力,从而有利于寻找到改进企业组织的途径。
自顶向下方法的缺点是:
•对系统分析和设计人员的要求较高。
•开发周期长,系统复杂,一般属于一种高成本、大投资的工程。
•对于大系统而言,自上而下的规划对于下层系统的实施往往缺乏约束力。
•从经济角度来看,很难说自顶向下的做法在经济上市合算的。
14、【2013年真题】 难度:一般
以下关于白盒测试方法的叙述中,错误的是 。
A.语句覆盖要求设计足够多的测试用例,使程序中每条语句至少被执行一次
B.与判定覆盖相比,条件覆盖增加对符合判定情况的测试,增加了测试路径
C.判定/条件覆盖准则的缺点是未考虑条件的组合情况
D.组合覆盖要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合最多出现一次
答案:D
解析:
白盒测试也称为结构测试,主要用于软件单元测试阶段,测试人员按照程序内部逻辑结构设计测试用例,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试方法主要有控制流测试、数据流测试和程序变异测试等。
控制流测试根据程序的内部逻辑结构设计测试用例,常用的技术是逻辑覆盖。主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖等。
语句覆盖是指选择足够多的测试用例,使得运行这些测试用例时,被测程序的每个语句至少执行一次。
判定覆盖也称为分支覆盖,它是指不仅每个语句至少执行一次,而且每个判定的每种可能的结果(分支)都至少执行一次。
条件覆盖是指不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取得各种可能的结果。
条件/判定覆盖同时满足判定覆盖和条件覆盖。它的含义是选取足够的测试用例,使得判定表达式中每个条件的所有可能结果至少出现一次,而且每个判定本身的所有可能结果也至少出现一次。
条件组合覆盖是指选取足够的测试用例,使得每个判定表达式中条件结果的所有可能组合至少出现一次。
修正的条件/判定覆盖。需要足够的测试用例来确定各个条件能够影响到包含的判定结果。
路径覆盖是指选取足够的测试用例,使得程序的每条可能执行到的路径都至少经过一次(如果程序中有环路,则要求每条环路路径至少经过一次)。
15、【2013年真题】 难度:难
以下关于面向对象软件测试的叙述中,正确的是 。
A.在测试一个类时,只要对该类的每个成员方法都进行充分的测试就完成了对该类充分的测试
B.存在多态的情况下,为了达到较高的测试充分性,应对所有可能的绑定都进行测试
C.假设类B是类A的子类,如果类A已经进行了充分的测试,那么在测试类B时不必测试任何类B继承自类A的成员方法
D.对于一棵继承树上的多个类,只有处于叶子节点的类需要测试
答案::B
解析:
面向对象系统的测试目标与传统信息系统的测试目标是一致的,但面向对象系统的测试策略与传统结构化系统的测试策略有很大的不同,这主要体现在两个方面,分别是测试的焦点从模块移向了类,以及测试的视角扩大到了分析和设计模型。
与传统的结构化系统相比,面向对象系统具有三个明显特征,即封装性、继承性与多态性。封装性决定了面向对象系统的测试必须考虑到信息隐蔽原则对测试的影响,以及对象状态与类的测试序列,因此在测试一个类时,仅对该类的每个方法进行测试是不够的;继承性决定了面向对象系统的测试必须考虑到继承对测试充分性的影响,以及误用引起的错误;多态性决定了面向对象系统的测试必须考虑到动态绑定对测试充分性的影响、抽象类的测试以及误用对测试的影响。