大学课程软件工程测试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、简答题:
1、什么是软件危机?产生软件危机的原因?怎样消除?
答:软件危机:是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品
的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:
①软件的规模越来越大,结构越来越复杂。②软件开发管理困难而复杂。③软件开发费用不
断增加。
④软件开发技术落后。⑤生产方式落后。⑥开发工具落后,生
产率提高缓慢。
包含两方面的问题:⑴如何开发软件,以满足对软件日益增长的需求;⑵如何维护数量不断膨胀
的已有软件。
软件危机典型表现:
(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现
象经常发生。
(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5) 软件通常没有适当的文档资
料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
2、什么是软件工程?包括哪些容?
答:软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。
软件工程的容:
1)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。
2)软件开发管理:软件管理学、软件经济学、软件心理学。
软件工程的目标:是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:①付出较
低的开发成本;②面到要求的软件功能;③取得较好的软件性能;④开发的软件易
于移植;⑤需要较低的维护费用;⑥能按时完成开发任务,及时交付使用;⑦开发的
软件可靠性高;
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工
程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、
确认以及维护等活动。
软件工程的框架可概括为:①目标、②过程和③原则。
软件工程的原则:是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
基本原理:⑴用分阶段的生命周期计划严格管理;⑵坚持进行阶段评审;⑶实行严格的产品控
制;
⑷采用现代程序设计技术;⑸结果应能清楚地审查;⑹开发小组的人员应该少而精;
⑺承认不断改进软件工程实践的必要性;(工程化的方法开发软件基本原理)
软件工程方法学:软件工程包括技术和管理两方面的容,是技术与管理紧密结合所形成的工程学科。
软件工程方法学包括:①传统方法学(结构化型)和②面向对象方法学。
面向对象的要点:①把对象作为融合了数据及在数据上的操作行为的统一的软件构件。②把所
有对象都划分成类。③按子类与父类的关系,把类组成一个层次结构。④对象彼此之
间仅能通过传递消息互相联系。
软件工程方法学三要素是:①方法;②工具;③过程。
3、软件生命周期由哪三个时期组成,又划分为哪8个阶段?
答:软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。软件生命周期是由:⑴软件定义时期;⑵软件开发时期;⑶软件维护时期三个时期组成的。又划分为:①
问题定义、②可行性研究、③需求分析、④总体设计、⑤详细设计、⑥编码和单元测试、
⑦综合测试、⑧维护八个阶段。
1、问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
4、什么是白盒测试法?什么是黑盒测试法?
答:白盒测试:所谓白盒测试就是在知道产品部工作过程或程序部结构和处理过程的前提下,检验产品部动作是否按照规格说明书的规定正常进行或按照程序部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作的测试方法.因此白盒测试又称为结构测试或逻辑测试。
从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:⑴语句覆盖;⑵判定覆盖;
⑶条件覆盖;⑷判定/条件覆盖;⑸条件组合覆盖;⑹点覆盖;⑺边覆盖;⑻路径覆盖。
黑盒测试:所谓黑盒测试是指在完全不考虑程序的部结构和处理过程的前提下,在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接受输入数据产生正确的输出信息,并且保持外部信息的完整性.因此,又称为功能测试。特点:等价类划分、边界值分析、因果图、错误推测。
优点 1. 基本上不用人管着,如果程序停止运行了一般就是被测试程序crash了
2. 设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因
缺点 1. 结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴
2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作
3. 就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。