免费智能真题库 > 历年试卷 > 信息系统项目管理师 > 2011年下半年 信息系统项目管理师 上午试卷 综合知识
  第2题      
  知识点:   测试阶段   瀑布模型   软件测试   生命周期   系统测试   系统测试阶段
  关键词:   测试阶段   瀑布模型   软件测试   软件生命周期   系统测试   测试   瀑布   生命周期        章/节:   信息系统项目的生命周期       

 
瀑布模型把软件生命周期划分为8个主要的阶段,其中(2)阶段定义的规划将成为软件测试中的系统测试阶段的目标。
 
 
  A.  问题的定义
 
  B.  可行性研究
 
  C.  软件需求分析
 
  D.  系统总体设计
 
 
 

 
  第7题    2008年上半年  
   27%
常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(7)适用于需求明确或很少变更的项目,(8)主要用来描述..
  第8题    2008年上半年  
   56%
常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。其中(7)适用于需求明确或很少变更的项目,(8)主要用来描述..
 
   知识点讲解    
   · 测试阶段    · 瀑布模型    · 软件测试    · 生命周期    · 系统测试    · 系统测试阶段
 
       测试阶段
        . 可靠性测试(含于集成测试、系统测试);
        . 排错;
        . 可靠性建模;
        . 可靠性评价;
        . 调整可靠性活动计划;
        . 收集可靠性数据;
        . 明确后续阶段的可靠性活动的详细计划;
        . 编制可靠性文档。
 
       瀑布模型
        瀑布模型也称为生命周期法,是结构化方法中最常用的开发模型,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。采用瀑布模型的软件过程如下图所示。
        
        软件生存周期的瀑布模型
        (1)软件计划(问题的定义及规划):主要确定软件的开发目标及其可行性。
        (2)需求分析:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。
        (3)软件设计:主要是指根据需求分析的结果,对整个软件系统进行设计,如系统框架设计和数据库设计等。软件设计一般分为总体设计(概要设计)和详细设计。
        (4)程序编码:将软件设计的结果转换成计算机可运行的程序代码。在程序编写中必须要制定统一的、符合标准的编写规范,以保证程序的可读性和易维护性,提高程序的运行效率。
        (5)软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
        (6)软件维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件可能会不能继续适应用户的要求,这时如果要延续软件的使用寿命,就必须对软件进行维护。
        瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。瀑布模型的本质是“一次通过”,即每个活动只做一次,最后得到软件产品,也称做“线性顺序模型”或者“传统生命周期”,其过程是从上一项活动接收该项活动的工作对象并作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,然后作为输出传给下一项活动。同时对该项活动实施的工作进行评审,若其工作得到确认,则继续下一项活动,否则返回前项,甚至更前项的活动进行返工。
        瀑布模型有利于大型软件开发过程中人员的组织与管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。然而软件开发的实践表明,上述各项活动之间并非完全是自上而下的,而是呈线性图式,因此,瀑布模型存在严重的缺陷。
        (1)由于开发模型呈线性,所以当开发成果尚未经过测试时,用户无法看到软件的效果。这样,软件与用户见面的时间间隔较长,也增加了一定的风险。
        (2)在软件开发前期未发现的错误传到后面的开发活动中时,可能会扩散,进而可能会导致整个软件项目开发失败。
        (3)在软件需求分析阶段,完全确定用户的所有需求是比较困难的,甚至可以说是不太可能的。
        :瀑布模型适用于需求明确或很少变更的项目。
 
       软件测试
        测试是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动。
        软件测试是针对一个程序的行为,在有限测试用例集合上动态验证软件是否达到预期的行为。
        软件测试过程如下:
        (1)拟定测试计划。
        (2)编制测试大纲。
        (3)设计和生成测试用例。
        (4)实施测试。
        (5)生成测试报告。
        软件测试方法:
        .人工测试:采用人工方式进行测试,目的是通过对程序静态结构的检查,找出编译时不能发现的错误。人工测试包括个人复查、抽查和会审等。
        .机器测试:把设计好的测试用例作用于被测程序,比较测试结果和预期结果是否一致。机器测试包括黑盒测试(功能测试)和白盒测试(结构测试)。
        软件测试伴随软件开发和维护过程,通常可以在概念上划分为以下三个阶段:
        .单元测试:也称为模块测试,在模块编写完成且无编译错误后就可以进行。
        .集成测试:也称为组装测试,就是把模块按系统设计说明书的要求组合起来进行测试。
        .系统测试:是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种组装和确认测试。其目的是通过与系统需求相比较,发现所开发的系统与用户需求不符合的地方。
 
       生命周期
        IT服务生命周期由规划设计(Planning&Design)、部署实施(Implementing)、服务运营(Operation)、持续改进(Improvement)和监督管理(Supervision)5个阶段组成,简称“PIOIS”。
        (1)规划设计:从客户业务战略出发,以需求为中心,参照ITSS对IT服务进行全面系统的战略规划和设计,为IT服务的部署实施做好准备,以确保提供满足客户需求的IT服务。
        (2)部署实施:在规划设计基础上,依据ITSS建立管理体系、部署专用工具及服务解决方案。
        (3)服务运营:根据IT服务部署情况,依据ITSS,采用过程方法,全面管理基础设施、服务流程、人员和业务连续性,实现业务运营与IT服务运营的全面融合。
        (4)持续改进:根据IT服务运营的实际情况,定期评审IT服务满足业务运营的情况,以及IT服务本身存在的缺陷,提出改进策略和方案,并对IT服务进行重新规划设计和部署实施,以提高IT服务质量。
        (5)监督管理:本阶段主要依据ITSS对IT服务质量进行评价,并对IT服务供方的服务过程、交付结果实施监督和绩效评估。
 
       系统测试
        系统测试将软件与整个系统的硬件、外设、支持软件、数据和人员等结合起来,以需求规格说明为依据,在实际运行环境下进行测试。系统测试过程分为计划与准备、执行、返工与回归测试3个阶段,系统测试一般要完成功能测试、性能测试、恢复测试、安全测试、强度测试以及其他限制条件的测试。
        系统测试由独立测试小组在测试组长的监督下进行,测试组长主要负责保证在质量控制和监督下使用测试技术执行系统测试。系统测试过程由一个独立的测试观察员来监控测试工作。
               负载测试
               负载测试是通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。
               负载测试的加载方式通常有如下几种。
               (1)一次性加载。一次性加载某个数量的用户,在预定的时间段内持续运行。例如,在早晨上班的时间访问网站或登录网站的时间非常集中,基本属于扁平负载模式。
               (2)递增加载。有规律地逐渐增加用户,每几秒增加一些新用户,交错上升。借助这种负载方式的测试,容易发现性能的拐点,即性能瓶颈。
               (3)高低突变加载。某个时间用户数量很大,突然降到很低,过一段时间,又突然加到很高,反复几次。借助这种负载方式的测试,容易发现资源释放和内存泄露等问题。
               (4)随机加载方式。由随机算法自动生成某个数量范围内变化的、动态的负载,这种方式可能是和实际情况最为接近的一种负载方式。虽然不容易模拟系统运行出现的瞬时高峰期,但可以模拟系统长时间的运行过程的状态。
               压力测试
               压力测试又称为强度测试,是在强负载(加大数据量、大量并发用户等)下的测试,用于查看应用系统在峰值使用情况下的操作行为,目的是发现系统的功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
               微软测试实践经验表明,如果软件产品通过72小时压力测试,则在72小时后出现问题的可能性微乎其微。所以,72小时成为微软产品压力测试的时间标志。
               负载测试与压力测试是两个很容易混淆的概念。负载测试是通过逐步增加系统负载,测试其变化,看最后在满足性能的情况下,系统最多能接受多大负载的测试。压力测试是在满足性能的情况下,能使系统处于失效的状态,通俗来说,就是发现在什么条件下,系统的性能会变得不可接受。
               压力测试的一般步骤如下:
               ①进行简单多任务测试。
               ②简单压力缺陷修正后,增加系统的压力直到系统崩溃。
               因此,负载压力测试的主要目的是度量应用系统的性能和扩展性。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现的问题对系统性能进行优化。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
               可靠性测试
               软件可靠性是软件质量的一个重要标志。美国电气和电子工程师协会(IEEE)将软件可靠性定义为:系统在特定的环境下,在给定的时间内无故障地运行的概率。软件可靠性涉及软件的性能、功能、可用性、可服务性、可安装性,以及可维护性等多方面特性,是对软件在设计、生产以及在它所预定环境中具有所需功能的置信度的一个度量。
               可靠性测试一般伴随着强壮性测试,是评估软件在运行时的可靠性,通过测试确认平均无故障时间(Mean Time to Failure,MTTF)、故障发生前平均工作时间(Mean-Time-To-First-Failure,MTTFF)或因故障而停机的时间(Mean Time To Repairs,MTTR)在一年中应不超过多少时间。可靠性测试强调随机输入,并通过模拟系统实现,很难通过实际系统的运行来实现。
               安全性测试
               安全性测试是测试系统在应付非授权的内部/外部访问、非法侵入或故意的损坏时的系统防护能力,检验系统有能力使可能存在的内/外部的伤害或损害的风险限制在可接受的水平内。可靠性通常包括安全性,但是软件的可靠性不能完全取代软件的安全性。安全性还涉及到数据加密、保密和存取权限等多个方面。
               安全性测试需要设计一些测试用例试图突破系统的安全保密措施,检验系统是否有安全保密漏洞,验证系统的保护机制是否能够在实际中不受到非法的侵入。在安全测试过程中,测试者扮演成试图攻击系统的角色,尝试获取系统密码,利用能够瓦解任何防守的客户软件攻击系统;或者把系统“制服”,使别人无法访问。
               安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。破坏系统保护机构的主要方法有以下几种:
               (1)正面攻击或从侧面、背面攻击系统中易受损坏的那些部分。
               (2)以系统输入为突破口,利用输入的容错性进行正面攻击。
               (3)申请和占用过多的资源压垮系统,以破坏安全措施,从而进入系统。
               (4)故意使系统出错,利用系统恢复的过程,窃取用户口令及其他有用的信息。
               (5)通过浏览残留在计算机各种资源中的垃圾(无用信息),以获取如口令、安全码和译码关键字等信息。
               (6)浏览全局数据,期望从中找到进入系统的关键字。
               (7)浏览那些逻辑上不存在,但物理上还存在的各种记录和资料等。
               一般情况下,网络软件的安全评估包括以下情况;
               (1)检验和测试网络软件中涉及数据传输各部分的配量对安全的影响。
               (2)会话跟踪是否足够。
               (3)是否正确使用了加密技术。
               (4)变量限制的设定。
               (5)在服务器端执行程序中的安全漏洞。
               (6)HTML源码中是否有敏感的信息或没有必须出现的信息。
               兼容性/配置测试
               兼容性/配置测试用于测试软件与先前发布过的版本、有依赖关系的外部软件、运行的系统的各种版本和硬件平台的不同配置的兼容情况。
               可以从如下几个方面进行兼容性测试。
               (1)检查版本是否兼容。检查新版本操作习惯与老版本是否兼容,目的是使老版本的用户很快地适应新版本的变化。
               (2)检查数据格式是否兼容。数据格式有许多种形式,如文件格式、网络协议和共享数据等。例如,通信协议软件版本升级后,检查升级版本和老版本的通信协议是否一致等。
               (3)检查系统调用的兼容性。检查系统的哪些功能依赖于系统调用,是否属于某个平台或版本独有,是否在不同平台上有差异。
               (4)检查是否支持操作系统、数据库系统、硬件和软件平台。配置测试用例设计主要指软硬件环境配置的测试用例,检查计算机系统内各个设备或各种资源之间的相互关联和功能分配中的错误。
               容错性测试
               容错性测试是检查软件在异常条件下自身是否具有防护性措施或者灾难恢复手段。如当系统出错时,能否在指定时间间隔内修正错误并重新启动。可以把容错性测试看作是由系统异常处理测试和恢复测试组成的。
               可用性测试
               可用性是指系统正常运行的能力和用户接受的程度,一般用如下公式表示。
               可用性=平均正常工作时间/(平均正常工作时间+平均修复时间)
               影响可用性的因素有如下几个:
               (1)不充分的测试。
               (2)更改管理问题。
               (3)缺少在线监视和分析。
               (4)操作错误。
               (5)弱编码。
               (6)与外部服务或应用程序的交互。
               (7)不同的操作条件(使用级别更改、峰值重载)。
               (8)异常事件(安全性失败、广播风暴)。
               (9)硬件故障(硬盘、控制器、网络设备、服务器、电源、内存和CPU)。
               (10)环境问题(电源、冷却、火、洪水、灰尘、自然灾害)。
               下面给出提高系统可用性的一些办法。
               (1)使用集群。集群是指将至少两个系统连接到一起,像一个系统那样工作。当某一系统出现失效时,集群提供即时故障转移服务。
               (2)使用网络负载平衡。当检测某服务器失败后,网络负载平衡自动将通信量重新分发给仍然运行的服务器。
               (3)使用服务级别协议。可用性指标的期望服务级别要求达到4个或5个“9”。例如,“该应用程序应每周运行7天,每天24小时,年可用性为99.99%”是指全年不能正常工作的时间仅仅只有52分钟,不足1个小时。
               (4)提供实时的监视。监视系统的工作负荷和失败数据,实时监视对于发现趋势和改善服务至关重要。
               (5)使用数据备份,保证数据安全。
               (6)检查所有的安全计划。安全性是确保应用程序服务只对有权使用系统的用户可用,还意味着使得应用程序使用的所有分布式组件和资源受到保护。
               文档测试
               文档测试是指对软件开发、测试和维护过程中产生的所有文档的测试,包括对需求规格分析说明书、详细设计报告、系统设计报告、用户手册以及与系统相关的一切文档的审阅和评测。例如,系统需求分析和系统设计说明书中的错误将直接导致编码的错误,用户手册作为软件的一部分,将直接影响用户对系统的使用效果。
               文档测试强调文档的表述应该清楚、准确,主要包含:
               .正确地按照文档描述的方法使用系统。
               .测试每一个提示和建议信息。
               .使用文档作为测试用例的来源。
               .测试每一个在线帮助的超链接。
               .测试每条语句。
               .测试文档中提供的每一个样例。
               .把缺陷写入缺陷跟踪库。
               .检查所有的错误信息。
 
       系统测试阶段
        UML模型可作为测试阶段的依据。系统的测试通常分为单元测试、集成测试、系统测试和验收测试几个不同级别。
        .单元测试是对几个类或一组类的测试,通常由程序员进行。
        .集成测试集成组件和类确认它们之间是否恰当的协作。
        .系统测试将系统当成一个黑箱,验证系统是否具备用户所要求的所有功能。
        .验收测试由客户完成,与系统测试类似,验证系统是否满足所有的需求。
        不同的测试小组使用不同的UML图作为测试依据:单元测试使用类图和类规格说明;集成测试使用组件图和合作图;系统测试使用用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。
   题号导航      2011年下半年 信息系统项目管理师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第2题    在手机中做本题