12 14

发布时间 2023-12-14 23:57:43作者: 你好,幸会

1.软件基础知识

瀑布模型:

 

 

  

 我感觉整个《软件工程》书的布局就是按照瀑布模型来的,上面右图少个运维。

 

2.UML图

2.1 用例图 UseCase Diagram

 用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。

从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。

 

 

 

2.2 类图 Class Diagram

    用户根据用例图抽象成类,描述类的内部结构和类与类之间的关系,是一种静态结构图。 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。

    各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

 

 

 

例子:

 

 

 

2.3 时序图 Sequence Diagram

时序图:描述了对象之间消息发送的先后顺序,强调时间顺序。

时序图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。

 

 

 

2.4 活动图 Activity Diagram 

 主要是注意:开始结束、分叉汇合

   

  

 

3. 设计模式 Design Pattern

几种主要的Java设计模式:

Design Pattern [ X ] —— OOP七大原则 + 23种设计模式

Design Pattern [1] —— 单例模式 Singleton

Design Pattern [2] —— 工厂模式 +抽象工厂模式 Factory

Design Pattern [3] —— 建造者模式 Builder

Design Pattern [4] —— 原型模式 Prototype

Design Pattern [5] —— 观察者模式 Observer / 发布订阅模式

Design Pattern [6] —— 代理模式 Proxy

Design Pattern [7] —— 适配器模式 Adapter

 

 

  

  

 

 

 

 

 

4. 软件测试方法

1.        软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试

2.        白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。

白盒测试技术一般可被分为静态分析和动态分析两类技术。

2.1 静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。

2.2 动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插桩等。

白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。

白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。

3.        黑盒测试又叫功能测试,这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。

在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。

4.        灰盒测试:白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。灰盒测试就是这类界于白盒测试和黑盒测试之间的测试。

最常见的灰盒测试是集成测试。

5.        静态测试:是一种不通过执行程序而进行测试的技术。它的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

6.        动态测试:包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。

单元测试属于白盒测试范畴;集成测试属于灰盒测试范畴;系统测试属于黑盒测试范畴。

 

 

 

 

 

 

回到顶部

二、软件工程测试题(参考百度文库)

 

单项选择题

 

1.瀑布模型的存在问题是( B  )

   A.用户容易参与开发          B.缺乏灵活性

   C.用户与开发者易沟通        D.适用可变需求

解析:瀑布模型各个阶段的划分完全固定、模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求的变化,缺乏灵活性。

 

2.下列哪个阶段不属于软件生存周期的三大阶段(C )。

   A、计划阶段                      B、开发阶段

   C、编码阶段                      D、维护阶段

解析:软件的生存周期包括:计划阶段、开发阶段、维护阶段。编码是开发阶段的一部分。

 

3.在设计测试用例时,(  A    )是用得最多的一种黑盒测试方法。

A. 等价类划分    B. 边界值分析     C. 因果图       D. 判定表

解析:等价类划分是一种典型的黑盒测试方法。等价类划分是指分步骤把海量的测试用例集减得很小但过程同样有效。也就是说,选取足够小测试用例,发现更多软件缺陷。

 

解析:深度为3,宽度为3。A的扇出为3,t的扇入为2。     题目考察模块化编程中,各个函数的调用关系。  扇入:该模块被调用的次数,扇入大,说明该模块的复用性好;扇出:该模块调用其他模块的个数,扇出大,说明该模块的业务逻辑复杂。一般设计高扇入合理扇出(3到4)的函数。

 

 

5.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。

对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:( A )

 A.模块化的根据  B.逐步求精的根据  C.抽象的根据   D.信息隐藏和局部化的根据

解析:从 E(P1+P2)> E(P1)+E(P2)看出:整体的复杂性大于局部之和,所以需要模块化降低耦合带来的复杂性。

 

6.下列哪个图是N-S图(盒图)的构件(   C   )。

 解析:A是PAD图,B是流程图,C是盒图,D是PAD图。

 

 

填空题

 

1.  软件生存周期一般可分为__________、可行性研究、__________、设计编码、__________、运行与维护阶段。

答案:问题定义    需求分析    测试

 

2. 大型软件测试包括__________、__________、确认测试和驱动测试四个步骤。

答案:单元测试    集成测试

 

3.将下面的关系按继承关系、聚集关系或普通关联进行分类。

小汽车---------Tesla  Model S跑车   __________     答案:  继承   

小汽车---------驾驶员                     __________     答案: 普通关联 

班级------------学生                        __________     答案: 聚集   

   

判断题

1.软件生存周期是从软件开始开发到开发结束的整个时期。(  ×  )

解析:软件生命周期包含3大阶段: 计划阶段、开发阶段、维护阶段。 开发只是其中一个阶段。

2.扇出是一个模块直接调用的模块数目,一般推荐的扇出为3或4。(  √   )

解析:扇出是一个模块调用其他模块的数目,如果扇出过大,说明该模块的业务逻辑复杂,一般增加调用层数来降低扇出。

3.耦合用于衡量一个模块内部的各个元素彼此结合的紧密程度。(  × )

解析:内聚衡量模块内部紧密程度,耦合衡量模块之间的紧密程度。

4.软件测试的目的是证明程序没有错误。                             (   × )

解析:软件测试一般达到一定程度就结束了,A、B类核心代码100%无缺陷,C、D、E类缺陷允许存在一些。

 

简答题

 

1.  软件生命期各阶段的任务是什么?

 答:软件生命期分为7个阶段:(阶段划分言之有理即可,也可以不是这7个阶段)
(1、问题定义:要解决的问题是什么

(2、可行性研究:确定问题是否值得解,技术可行性、经济可行性、操作可行性

(3、需求分析:系统必须做什么

(4、总体设计:系统如何实现,包括系统设计和结构设计

(5、详细设计:具体实现设计的系统

(6、实现:编码和测试

(7、运行维护:保证软件正常运行。

 

 

 2.     软件危机产生的原因是什么?

答:软件危机的原因:

a)     软件不同与硬件,是逻辑部件;

b)     软件规模庞大,逻辑结构复杂;

c)     软件开发人员和管理人员只重视设计程序而轻视用户的需求分析,导致最后研制出的软件产品无法满足用户的需求;

d)     软件设计技术和管理技术落后,没有统一的软件质量管理规范;

e)     在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。

 

 3.     面向对象方法的优点有哪些?

答:面向对象方法学的优点:

(1)多角度模拟客观世界;

(2)具有较高的稳定性;

(3)重用性好;

(4)适合开发大型软件。

 

 

4.  什么是白盒测试?什么是黑盒测试?

答:白盒测试又称为结构测试,它的前提条件是可以看成将程序放在一个透明的白盒子中,也就是完全了解了软件系统的结构和整个处理过程。

黑盒测试又称为功能测试,它把程序看成是一个不透明的黑盒子,完全不去考虑程序的内部结构和处理过程。

 

5.  简述软件质量三要素及其具体包括的内容。

答:软件质量要素可以分为三类,

第一类要素表现软件的运行特征,包括正确性、可靠性、有效性、安全性和可用性;

第二类要素表现软件承受修改的能力,包括可维护性、灵活性和可测试性;

第三类要素表现软件对新环境的适应程度,包括可移植性、可重用性和可互操作性。

 

 

 

应用题

 

一、某一新闻管理系统主要用来发布新闻,管理员只需要一个,登录后可以 在后台发布新闻。任何人可以浏览新闻,浏览者可以注册成为系统会员,注册后 可对新闻进行评论。管理员在后台可以对新闻、评论、注册会员进行管理,如修改、删除。

请画出该新闻管理系统的用例图:

 

 

二、输入三整数,判断是否构成三角形,如构成三角形,则输出三条边的值,否则输出”不能构成三角形”. 

(1)用程序流程图表示该问题的算法;

(2)计算程序复杂度(路径个数);

(3)设计路径覆盖的测试用例。

 

答案:

(1)程序流程图:

 

 

 

 (2)

 

 

 

 

 (3)