1.请解释什么是用例模型,用例图有哪些元素,用例描述需要描述哪些内容?
用例模型包括用例图和用例描述。用例图有角色、用例、关联和系统边界。用例描述需要描述用例名称、用例目的、参与者、用例的前提条件、用例的交互过程或者事件流、用例执行结果、用例的扩展、特殊需求等等。
2.软件测试与软件质量保证的区别是什么?
软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作的一个重要环节。质量保证(QA)的工作是通过预防、检查和改进来保证软件质量。测试虽然也与开发过程紧密相关,但它所关心的不是过程的活动,相对的是关心结果。
3.简述详细设计阶段的主要任务是什么
详细设计是将概要设计产生的功能模块进一步细化,形成可编程的程序模块,然后设计程序模块的内部细节,包括算法、数据结构以及各程序模块间的接口信息,并设计模块的单元测试计划。
4.简述项目管理的五个阶段。
启动、规划、执行、监控和收尾(结束)。
5.需求变更控制中应该注意什么
需求变更的确认、需求变更的反馈、相关干系人的通知。
6.什么是黑盒测试法,和白盒测试的区别是什么?
答:黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。在测试过程中,将软件看作一个不透明的黑盒子,不考虑软件内部结构和处理算法,只检测软件功能是否能按照软件需求说明书的要求正常使用。
区别:(1)定义不同:黑盒测试将软件看作一个不透明的黑盒子,不注重内部结构,白盒测试将其看作一个打开的盒子,注重内部结构及内容特性;
(2)测试对象不同:黑盒测试主要针对的是软件展示给用户的功能,多用于功能测试,白盒测试主要针对的是程序代码逻辑,多用于单元测试;
(3)测试方式不同:白盒测试是穷举路径测试,黑盒测试是穷举输入测试。
(4)测试目的不同:黑盒测试的目的是检测是否有不正确或遗漏的功能,而白盒测试的目的是通过在不同点检查软件程序的状态,确定实际状态是否与与其状态一致。
7.什么是软件测试?
答:在规定条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
8. 在ATM系统中的“取款”用例,可以用事件流表述如下:(1)用户插入银行卡。 (2)输入密码。 (3)输入提款金额。(4)(5)说出其他情况。(题目省略)
银行卡无法识别;密码错误 ;输入金额不符合要求 ;余额不足;取款机中现金不足
9.什么是架构的设计模式?常见的设计模式有哪些?
是在软件架构上针对特定上下文件解决常见问题的通用、可复用的解决方案。
分层模式、微内核架构模式、事件驱动架构、微服务软件架构等。
10.什么是软件架构?进行软件架构设计的主要目的是什么?
是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。
主要目的:是为了解决软件系统复杂度带来的问题。
11.简述类和类之间的关系有哪些,并举例说明。
继承关系(又称泛化)、实现关系、依赖关系、关联关系、聚合关系、组合关系。
举例:(1)聚合关系,表示类间的关系是整体与部分的关系,例如汽车由引擎、轮胎以及其他零件组成;
(2)组合关系:一种更强的聚合关系,对象A包含对象B,对象B离开对象A没有实际意义;
(3)依赖关系:对象间最弱的一种关联方式,是临时性的关联;
(4)关联关系:对象之间一种引用关系,比如客户类与订单类之间的关系;
(5)实现关系:指的是一个class类实现interface接口的功能;
(6)继承关系:指一个类继承另一个类的功能,并可以增加自己的新功能,例如父与子。
12.从软件用户对软件的实际需求来看,常见的需求有哪些种类?
功能性需求、非功能性需求、设计约束
13.软件生命周期有哪些阶段?
问题定义、需求分析、软件设计、软件开发、软件测试、运行维护
14.需求获取的方式有哪些,请简要描述?
用户访谈、用户调查、现场观摩、文档考古、建立联合分析小组、原型法、模型驱动、基于上下文的方法。
15.请举例描述一种你熟悉的面向对象设计原则?
单一职责原则:一个类只负责一个功能领域中的相应职责。单一职责原则是实现高内聚、低耦合的指导方针,它是最简单但又最难以运用的原则。
16.请举例描述一种你熟悉的设计模式?
单例模式:确保某一个类只有一个实例,并且提供一个全局访问点;
单例模式的主要优点就是节约系统资源、提高了系统效率,同时也能够严格控制客户对它的访问。也许就是因为系统中只有一个实例,这样就导致了单例类的职责过重,违背了“单一职责原则”,同时也没有抽象类,所以扩展起来有一定的困难。
17.常用的软件测试方法有哪些?
黑盒测试、白盒测试、回归测试、性能测试、安全测试、兼容性测试
18.请描述什么是单元测试,其作用是什么?
是指对软件中的最小可测试单元进行检查和验证。
19.什么是测试驱动开发?
测试驱动开发是指在编写实现代码之前先写测试代码的开发方式。
20.什么是敏捷开发?
敏捷开发一种以用户的需求进化为核心、迭代、循序渐进的开发方法。
21.什么是结对编程?
结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一人输入代码,而另一人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员。
22.什么事软件危机?你觉得如何避免软件危机?
软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
避免:(1)使用好的软件开发技术和方法;(2)要有良好的组织、严密的管理,各类人员协同配合,共同完成任务;(3)使用好的软件开发工具,提高软件生产率;(4)建立严格的文档资料,重视软件开发过程的阶段评审。